diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a5dbd02..b6530bd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: matrix: node-version: [18.x, 20.x, 22.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - os: [windows-latest, ubuntu-latest, macos-13] + os: [windows-latest, ubuntu-latest, macos-14] steps: - name: Checkout uses: actions/checkout@v4 @@ -50,7 +50,7 @@ jobs: fail-fast: false matrix: matlab-version: [R2021b, R2022a, R2022b, R2023a, R2023b, R2024a, latest] - os: [windows-latest, ubuntu-latest, macos-13] + os: [windows-latest, ubuntu-latest, macos-14] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 95c33f6..5177d3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.3.8] - 2026-01-08 + +Added: +- Support for using the pause button to pause in the debugger (Addresses [mathworks/MATLAB-extension-for-vscode#263](https://github.com/mathworks/MATLAB-extension-for-vscode/issues/263)) +- Improvements to symbol renaming, symbol highlighting, find references, and go to definitions as a result of advanced MATLAB program file indexing (Addresses [mathworks/MATLAB-extension-for-vscode#94](https://github.com/mathworks/MATLAB-extension-for-vscode/issues/94)) + +Fixed: +- Changes the default value of `MATLAB.defaultEditor` to `true` +- Resolves issues with the `savepath` function by ensuring that MATLAB language server files are not saved to the MATLAB search path (Addresses [mathworks/MATLAB-extension-for-vscode#299](https://github.com/mathworks/MATLAB-extension-for-vscode/issues/299)) +- Resolves potential crashes when breakpoints are set +- Applied patches for CVE-2025-15284, CVE-2025-64718, and CVE-2025-64756 + ## [1.3.7] - 2025-11-12 ### Fixed diff --git a/matlab/+matlabls/+internal/computeCodeData.p b/matlab/+matlabls/+internal/computeCodeData.p index 3dbc83f..64a2bc1 100644 Binary files a/matlab/+matlabls/+internal/computeCodeData.p and b/matlab/+matlabls/+internal/computeCodeData.p differ diff --git a/matlab/+matlabls/+internal/getSectionData.p b/matlab/+matlabls/+internal/getSectionData.p new file mode 100644 index 0000000..9d53a06 Binary files /dev/null and b/matlab/+matlabls/+internal/getSectionData.p differ diff --git a/matlab/+matlabls/+utils/makeRange.m b/matlab/+matlabls/+utils/makeRange.m new file mode 100644 index 0000000..a298ba2 --- /dev/null +++ b/matlab/+matlabls/+utils/makeRange.m @@ -0,0 +1,12 @@ +function range = makeRange (lineStart, charStart, lineEnd, charEnd) + % Creates a matrix representing a range with line and character positions. + % This is structured as [lineStart, charStart, lineEnd, charEnd]. + % + % This does not create a struct in LSP format to boost performance - It + % is significantly faster to create a matrix than a struct, especially + % when called for many ranges within the document. + + % Copyright 2025 The MathWorks, Inc. + + range = [lineStart, charStart, lineEnd, charEnd]; +end diff --git a/matlab/+matlabls/+utils/preventSavingFolderToPath.m b/matlab/+matlabls/+utils/preventSavingFolderToPath.m new file mode 100644 index 0000000..f356d9f --- /dev/null +++ b/matlab/+matlabls/+utils/preventSavingFolderToPath.m @@ -0,0 +1,23 @@ +function preventSavingFolderToPath (folder) + % Prevents the provided folder from being saved to the MATLAB path + % when the `addpath` function is called. + % + % If `folder` represents a semicolon-delimited list of paths (e.g. + % from `genpath`), each path is added to the excluded list. + + % Copyright 2025 The MathWorks, Inc. + folders = strsplit(folder, ';'); + for f = folders + if strlength(f) > 0 + doPreventSavePath(f) + end + end +end + +function doPreventSavePath (folder) + if isMATLABReleaseOlderThan('R2024a') + matlab.internal.language.ExcludedPathStore.getInstance.setExcludedPathEntry(folder); + else + matlab.internal.path.ExcludedPathStore.addToCurrentExcludeList(folder); + end +end diff --git a/matlab/initmatlabls.m b/matlab/initmatlabls.m index 7bebf48..e66d9c7 100644 --- a/matlab/initmatlabls.m +++ b/matlab/initmatlabls.m @@ -8,8 +8,9 @@ function initmatlabls (outFile) disp('matlabls: Beginning initialization') fprintf('matlabls: matlabroot is \n%s\n', matlabroot) - % Ensure the language server code is on the path + % Ensure the language server code is on the path, but cannot be saved to the path folder = fileparts(mfilename('fullpath')); + matlabls.utils.preventSavingFolderToPath(genpath(folder)); % Shadow necessary functions matlabls.setupShadows(folder); diff --git a/package-lock.json b/package-lock.json index 4af4f63..7504562 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "matlab-language-server", - "version": "1.3.7", + "version": "1.3.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "matlab-language-server", - "version": "1.3.7", + "version": "1.3.8", "license": "MIT", "dependencies": { "@vscode/debugadapter": "^1.56.0", @@ -914,6 +914,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -948,6 +949,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -1332,6 +1334,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1362,6 +1365,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1612,22 +1616,23 @@ } }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -1642,11 +1647,40 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -1694,6 +1728,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001663", "electron-to-chromium": "^1.5.28", @@ -1718,7 +1753,6 @@ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, - "peer": true, "dependencies": { "semver": "^7.0.0" } @@ -1727,6 +1761,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1735,6 +1770,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -1761,6 +1797,22 @@ "node": ">= 0.4" } }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2090,6 +2142,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2454,6 +2507,7 @@ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -2600,7 +2654,6 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, - "peer": true, "dependencies": { "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" @@ -2620,7 +2673,6 @@ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "peer": true, "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -2636,7 +2688,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -2646,6 +2697,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", @@ -2807,6 +2859,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", "dev": true, + "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2835,7 +2888,6 @@ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "peer": true, "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -2854,7 +2906,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "peer": true, "engines": { "node": ">=10" } @@ -3003,38 +3054,39 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -3083,14 +3135,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/express/node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -3636,6 +3680,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -3733,6 +3778,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -4194,9 +4240,9 @@ } }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "dependencies": { "argparse": "^2.0.1" @@ -4694,9 +4740,10 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5052,11 +5099,12 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -5125,19 +5173,49 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -5382,7 +5460,8 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/sax": { "version": "1.4.1", @@ -5498,6 +5577,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -5564,14 +5644,69 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -6102,6 +6237,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6274,6 +6410,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", "dev": true, + "peer": true, "dependencies": { "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", @@ -6320,6 +6457,7 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, + "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", diff --git a/package.json b/package.json index 954869a..3dc443c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matlab-language-server", - "version": "1.3.7", + "version": "1.3.8", "description": "Language Server for MATLAB code", "main": "./src/index.ts", "bin": "./out/index.js", diff --git a/src/debug/MatlabDebugAdaptor.ts b/src/debug/MatlabDebugAdaptor.ts index d69563b..96bcc8a 100644 --- a/src/debug/MatlabDebugAdaptor.ts +++ b/src/debug/MatlabDebugAdaptor.ts @@ -423,10 +423,18 @@ export default class MatlabDebugAdaptor { try { await this._waitForPendingBreakpointsRequest(); } catch (e) { + this.sendResponse(response); return; } - const canonicalizedPath = await this._getCanonicalPath(source.path); + let canonicalizedPath : string; + try { + canonicalizedPath = await this._getCanonicalPath(source.path); + } catch (e) { + this.sendResponse(response); + return; + } + const pathToSetOrClear = this._mapToPFile(canonicalizedPath, true); const newBreakpoints: BreakpointInfo[] = (args.breakpoints != null) @@ -763,6 +771,7 @@ export default class MatlabDebugAdaptor { } protected pauseRequest (response: DebugProtocol.PauseResponse, args: DebugProtocol.PauseArguments, request?: DebugProtocol.Request): void { + this._mvm.pauseInDebugger(); this.sendResponse(response); } diff --git a/src/indexing/DocumentIndexer.ts b/src/indexing/DocumentIndexer.ts index fc53850..adb75f7 100644 --- a/src/indexing/DocumentIndexer.ts +++ b/src/indexing/DocumentIndexer.ts @@ -1,4 +1,4 @@ -// Copyright 2022 - 2024 The MathWorks, Inc. +// Copyright 2022 - 2025 The MathWorks, Inc. import { TextDocument } from 'vscode-languageserver-textdocument' import Indexer from './Indexer' @@ -13,7 +13,10 @@ const INDEXING_DELAY = 500 // Delay (in ms) after keystroke before attempting to export default class DocumentIndexer { private readonly pendingFilesToIndex = new Map() - constructor (private readonly indexer: Indexer) {} + constructor ( + private readonly indexer: Indexer, + private readonly fileInfoIndex: FileInfoIndex + ) {} /** * Queues a document to be indexed. This handles debouncing so that @@ -67,7 +70,7 @@ export default class DocumentIndexer { this.clearTimerForDocumentUri(uri) await this.indexer.indexDocument(textDocument) } - if (!FileInfoIndex.codeDataCache.has(uri)) { + if (!this.fileInfoIndex.codeInfoCache.has(uri)) { await this.indexer.indexDocument(textDocument) } } diff --git a/src/indexing/FileInfoIndex.ts b/src/indexing/FileInfoIndex.ts index b4b172c..383d947 100644 --- a/src/indexing/FileInfoIndex.ts +++ b/src/indexing/FileInfoIndex.ts @@ -1,556 +1,537 @@ // Copyright 2022 - 2025 The MathWorks, Inc. -import { Position, Range } from 'vscode-languageserver' -import { isPositionGreaterThan, isPositionLessThanOrEqualTo } from '../utils/PositionUtils' +import { Range } from 'vscode-languageserver' +import Logger from '../logging/Logger' +import { URI } from 'vscode-uri' + +// NOTE: Things like "variable definitions" and "function references" refer +// to whether the *first component* of an identifier, not the entity +// referred to by the identifier as a whole, is a variable or function + +/** + * Representation of a file's code data + */ +export interface CodeInfo { + package: string + sections: RawSectionInfo[] + classReferences: RawNamedRange[] + globalScope: GlobalScope + hasClassInfo: boolean + classDefFolder?: string + errorInfo?: string +} /** - * Defines the structure of the raw data retrieved from MATLABĀ®. + * Representation of the global scope of a file */ -export interface RawCodeData { - classInfo: CodeDataClassInfo - functionInfo: CodeDataFunctionInfo[] - packageName: string - references: CodeDataReference[] - sections: CodeDataSectionInfoRaw[] - errorInfo: CodeDataErrorInfo | undefined +interface GlobalScope { + variableDefinitions: RawIdentifier[] + variableReferences: RawIdentifier[] + functionOrUnboundReferences: RawFunctionOrUnboundIdentifier[] + globals: string[] + classScope?: ClassDefinition + functionScopes: FunctionDefinition[] } -interface CodeDataErrorInfo { - message: string +interface NamedScope { + declarationNameId: RawNamedRange + range: RangeArray + isPublic: boolean } /** - * Contains raw information about the file's class data + * Representation of a class definition */ -interface CodeDataClassInfo { - isClassDef: boolean // Whether or not the file represents a class definition - hasClassInfo: boolean // Whether or not the file contains data related to a class (could be a class definition, or within a classdef folder) - name: string - range: CodeDataRange - declaration: CodeDataRange - properties: CodeDataMemberInfo[] - enumerations: CodeDataMemberInfo[] - propertiesBlocks: CodeDataMemberInfo[] - enumerationsBlocks: CodeDataMemberInfo[] - methodsBlocks: CodeDataMemberInfo[] - methods: CodeDataMemberInfo[] - classDefFolder: string - baseClasses: string[] +interface ClassDefinition extends NamedScope { + baseClasses: RawNamedRange[] + propertiesBlocks: RawNamedRange[] + enumerationsBlocks: RawNamedRange[] + methodsBlocks: RawNamedRange[] + properties: RawScopedNamedRange[] + enumerations: RawScopedNamedRange[] + nestedScopes: FunctionDefinition[] } /** - * Section data of MATLAB. Sections are groupings formed in MATLAB using %% comments. + * Representation of a function */ -interface CodeDataSectionInfoRaw { - title: string - range: CodeDataRange - isExplicit: boolean +interface FunctionDefinition extends NamedScope { + isPrototype: boolean + variableDefinitions: RawIdentifier[] + variableReferences: RawIdentifier[] + functionOrUnboundReferences: RawFunctionOrUnboundIdentifier[] + globals: string[] + nestedScopes: FunctionDefinition[] + isConstructor: boolean + isStaticMethod: boolean + inputArgs: string[] + outputArgs: string[] } -interface CodeDataSectionInfo { - title: string - range: Range - isExplicit: boolean -} +/**** Define "Raw" interfaces to define the structure coming from `computeCodeData` ****/ +type RangeArray = [startLine: number, startCharacter: number, endLine: number, endCharacter: number] -/** - * Contains raw information about a function - */ -interface CodeDataFunctionInfo { +interface RawNamedRange { name: string - range: CodeDataRange - parentClass: string + range: RangeArray +} + +interface RawIdentifier extends RawNamedRange { + components: RawNamedRange[] +} + +interface RawFunctionOrUnboundIdentifier extends RawIdentifier { + firstArgIdName?: string +} + +interface RawScopedNamedRange extends RawNamedRange { isPublic: boolean - declaration?: CodeDataRange // Will be undefined if function is prototype - variableInfo: CodeDataFunctionVariableInfo - globals: string[] - isPrototype: boolean } -/** - * Contains raw information about variables within a function - */ -interface CodeDataFunctionVariableInfo { - definitions: CodeDataReference[] - references: CodeDataReference[] +interface RawSectionInfo extends RawNamedRange { + isExplicit: boolean } -/** - * Represents a reference to a variable or function. The first element is the - * name of the variable. The second element is the range of that reference. - */ -type CodeDataReference = [string, CodeDataRange] +/**** Define standard interfaces which adhere to LSP ranges ****/ /** - * Represents members of a class (e.g. Properties or Enumerations) + * Represents a range associated with a name */ -interface CodeDataMemberInfo { +export interface NamedRange { name: string - range: CodeDataRange - parentClass: string - isPublic: boolean + range: Range } -/** - * Represents a range in the document. - * Line and column values are 1-based. - */ -interface CodeDataRange { - lineStart: number - charStart: number - lineEnd: number - charEnd: number +export interface Identifier extends NamedRange { + components: NamedRange[] } -export enum FunctionVisibility { - Public, - Private +export interface FunctionOrUnboundIdentifier extends Identifier { + firstArgIdName?: string } -/** - * Serves as an cache of data extracted from files - */ -class FileInfoIndex { - private static instance: FileInfoIndex +export interface ScopedNamedRange extends NamedRange { + isPublic: boolean +} - /** - * Maps document URI to the code data - */ - readonly codeDataCache = new Map() +export interface SectionInfo extends NamedRange { + isExplicit: boolean +} - /** - * Maps class name to class info - */ - readonly classInfoCache = new Map() +/**** Define conversion helper functions ****/ - public static getInstance (): FileInfoIndex { - if (FileInfoIndex.instance == null) { - FileInfoIndex.instance = new FileInfoIndex() - } +// These helper functions convert from "Raw" interfaces (which use +// simple arrays for ranges) to standard interfaces (which use LSP +// Range objects). - return FileInfoIndex.instance +function convertRange (rangeArr: RangeArray): Range { + return Range.create(rangeArr[0], rangeArr[1], rangeArr[2], rangeArr[3]) +} + +function convertNamedRange (rawNamedRange: RawNamedRange): NamedRange { + return { + name: rawNamedRange.name, + range: convertRange(rawNamedRange.range) } +} - /** - * Parses the raw data into a more usable form. Caches the resulting data - * in the code data index. - * - * @param uri The uri of the document from which the data was extracted - * @param rawCodeData The raw data - * @returns An object containing the parsed data - */ - parseAndStoreCodeData (uri: string, rawCodeData: RawCodeData): MatlabCodeData { - let parsedCodeData: MatlabCodeData - - if (rawCodeData.classInfo.hasClassInfo) { - let classInfo = this.classInfoCache.get(rawCodeData.classInfo.name) - if (classInfo == null) { - // Class not discovered yet - need to create info object - classInfo = new MatlabClassInfo(rawCodeData.classInfo, uri) - this.classInfoCache.set(classInfo.name, classInfo) - } else { - // Class already known - update data - classInfo.appendClassData(rawCodeData.classInfo, uri) - } - parsedCodeData = new MatlabCodeData(uri, rawCodeData, classInfo) - } else { - parsedCodeData = new MatlabCodeData(uri, rawCodeData) - } +function convertIdentifier (rawIdentifier: RawIdentifier): Identifier { + return { + name: rawIdentifier.name, + range: convertRange(rawIdentifier.range), + components: rawIdentifier.components.map(convertNamedRange) + } +} - // Store in cache - this.codeDataCache.set(uri, parsedCodeData) +function convertFunctionOrUnboundIdentifier (rawFunctionOrUnboundIdentifier: RawFunctionOrUnboundIdentifier): FunctionOrUnboundIdentifier { + return { + name: rawFunctionOrUnboundIdentifier.name, + range: convertRange(rawFunctionOrUnboundIdentifier.range), + components: rawFunctionOrUnboundIdentifier.components.map(convertNamedRange), + firstArgIdName: rawFunctionOrUnboundIdentifier.firstArgIdName + } +} - return parsedCodeData +function convertScopedNamedRange (rawScopedNamedRange: RawScopedNamedRange): ScopedNamedRange { + return { + name: rawScopedNamedRange.name, + range: convertRange(rawScopedNamedRange.range), + isPublic: rawScopedNamedRange.isPublic + } +} + +function convertSectionInfo (rawSectionInfo: RawSectionInfo): SectionInfo { + return { + name: rawSectionInfo.name, + range: convertRange(rawSectionInfo.range), + isExplicit: rawSectionInfo.isExplicit } } /** - * Class to contain info about a class + * Serves as a cache of data extracted from files */ -export class MatlabClassInfo { - readonly methods: Map - readonly properties: Map - readonly enumerations: Map - readonly propertiesBlocks: Map - readonly enumerationsBlocks: Map - readonly methodsBlocks: Map - - readonly name: string +class FileInfoIndex { + readonly codeInfoCache = new Map() // Maps URI to code info + private readonly classInfoMap = new Map() // Maps URI of classdef to class info + + parseAndStoreCodeInfo (uri: string, rawCodeInfo: CodeInfo): MatlabCodeInfo { + let associatedClassInfo: MatlabClassInfo | undefined = undefined + if (rawCodeInfo.hasClassInfo) { + try { + const associatedClassUri = this.getAssociatedClassUri(uri, rawCodeInfo) + associatedClassInfo = this.classInfoMap.get(associatedClassUri) + + if (!associatedClassInfo) { + associatedClassInfo = new MatlabClassInfo() + this.classInfoMap.set(associatedClassUri, associatedClassInfo) + } + } catch (e) { + Logger.error(`Error determining associated class URI for file ${uri}: ${e}`) + } + } - baseClasses: string[] - readonly classDefFolder: string + const parsedCodeInfo = new MatlabCodeInfo(uri, rawCodeInfo, associatedClassInfo) + this.codeInfoCache.set(uri, parsedCodeInfo) - range?: Range - declaration?: Range + return parsedCodeInfo + } - constructor (rawClassInfo: CodeDataClassInfo, public uri?: string) { - this.methods = new Map() - this.properties = new Map() - this.enumerations = new Map() - this.propertiesBlocks = new Map() - this.enumerationsBlocks = new Map() - this.methodsBlocks = new Map() + private getAssociatedClassUri (uri: string, rawCodeInfo: CodeInfo): string { + if (rawCodeInfo.globalScope.classScope) { + // Handle class definition + return uri + } else { + // Handle file in class folder + + // Find the URI of the class folder (%40 represents + // the @ sign) + const classFolderUriMatch = uri.match(/.*%40[a-zA-Z]\w*/) + // Find the name of the class within the part of + // the URI naming the class folder (%40 represents + // the @ sign) + const classNameMatch = uri.match(/%40([a-zA-Z]\w*)/) + if (classFolderUriMatch && classNameMatch) { + return `${classFolderUriMatch[0]}/${classNameMatch[1]}.m` + } else { + throw new Error(`Unable to determine associated class URI of file with URI: ${uri}`) + } + } + } +} - this.name = rawClassInfo.name +export class MatlabCodeInfo { + readonly package: string + readonly sections: SectionInfo[] + readonly classReferences: IdentifierMap = new Map() + readonly globalScopeInfo: MatlabGlobalScopeInfo + readonly classDefFolder?: string - this.baseClasses = rawClassInfo.baseClasses - this.classDefFolder = rawClassInfo.classDefFolder + constructor (readonly uri: string, rawCodeInfo: CodeInfo, readonly associatedClassInfo?: MatlabClassInfo) { + this.package = rawCodeInfo.package + this.classDefFolder = rawCodeInfo.classDefFolder ? URI.file(rawCodeInfo.classDefFolder).toString() : undefined + this.sections = rawCodeInfo.sections.map(convertSectionInfo) - if (rawClassInfo.isClassDef) { - this.range = convertRange(rawClassInfo.range) - this.declaration = convertRange(rawClassInfo.declaration) - } + parseClassReferences(rawCodeInfo.classReferences.map(convertNamedRange), this.classReferences) - this.parsePropertiesAndEnums(rawClassInfo) + this.globalScopeInfo = new MatlabGlobalScopeInfo(rawCodeInfo.globalScope, associatedClassInfo, this) } +} - /** - * Appends the new data to the existing class data. - * - * Specifically, when the new data represents the classdef file, information about - * the URI, base classes, and range/declaration are added to the existing data. - * - * @param rawClassInfo The raw class data being appended - * @param uri The document URI corresponding to the class data - */ - appendClassData (rawClassInfo: CodeDataClassInfo, uri?: string): void { - if (rawClassInfo.isClassDef) { - // Data contains class definition - this.uri = uri - this.baseClasses = rawClassInfo.baseClasses - this.range = convertRange(rawClassInfo.range) - this.declaration = convertRange(rawClassInfo.declaration) - - // Since this is the classdef, we'll update all members. Clear them out here. - this.enumerations.clear() - this.properties.clear() - this.methods.clear() - this.enumerationsBlocks.clear() - this.propertiesBlocks.clear() - this.methodsBlocks.clear() - this.parsePropertiesAndEnums(rawClassInfo) - } else { - // Data contains supplementary class info - nothing to do in this situation +export class MatlabGlobalScopeInfo { + readonly variables: IdentifierMap = new Map() + readonly globals: Set + readonly functionOrUnboundReferences: IdentifierMap = new Map() + readonly classScope?: MatlabClassInfo + readonly functionScopes = new Map() + + constructor (rawGlobalScopeInfo: GlobalScope, associatedClassInfo: MatlabClassInfo | undefined, readonly codeInfo: MatlabCodeInfo) { + if (rawGlobalScopeInfo.classScope) { + if (!associatedClassInfo) { + Logger.error('No associated class info for a global scope containing a class scope') + } else { + associatedClassInfo.addClassdefInfo(rawGlobalScopeInfo.classScope, this) + this.classScope = associatedClassInfo + } } - } + + this.globals = new Set(rawGlobalScopeInfo.globals) - /** - * Appends info about a method to the class's info. - * - * This will not replace info about a method's implementation with info about a method prototype. - * - * @param functionInfo The method's information - */ - addMethod (functionInfo: MatlabFunctionInfo): void { - // Only store the method if a non-prototype version of it is not - // already stored, as that will contain better information. - const name = functionInfo.name - const shouldStoreMethod = !functionInfo.isPrototype || (this.methods.get(name)?.isPrototype ?? true) - - if (shouldStoreMethod) { - this.methods.set(name, functionInfo) - } + this.parseFunctions(rawGlobalScopeInfo.functionScopes, associatedClassInfo) + parseVariableReferences(rawGlobalScopeInfo.variableReferences.map(convertIdentifier), this.variables) + parseVariableDefinitions(rawGlobalScopeInfo.variableDefinitions.map(convertIdentifier), this.variables) + parseFunctionOrUnboundReferences(rawGlobalScopeInfo.functionOrUnboundReferences.map(convertFunctionOrUnboundIdentifier), this.functionOrUnboundReferences) } - /** - * Creates a unique identifier for a symbol by combining its name and position - * @param name The name of the symbol - * @param range The CodeDataRange containing the position information - * @returns A string identifier in the format "name::lineStart:charStart" - */ - private createSymbolId(name: string, range: CodeDataRange): string { - return `${name}::${range.lineStart}:${range.charStart}`; - } + private parseFunctions (rawFunctionScopes: FunctionDefinition[], associatedClassInfo?: MatlabClassInfo): void { + rawFunctionScopes.forEach((rawFunctionInfo, index) => { + let parsedFunc: MatlabFunctionInfo - /** - * Parses information about the class's properties and enums from the raw data. - * - * @param rawClassInfo The raw class info - */ - private parsePropertiesAndEnums (rawClassInfo: CodeDataClassInfo): void { - rawClassInfo.properties.forEach(propertyInfo => { - const name = propertyInfo.name - this.properties.set(name, new MatlabClassMemberInfo(propertyInfo)) - }) - rawClassInfo.enumerations.forEach(enumerationInfo => { - const name = enumerationInfo.name - this.enumerations.set(name, new MatlabClassMemberInfo(enumerationInfo)) - }) - rawClassInfo.propertiesBlocks.forEach(propertiesInfo => { - const symbolId = this.createSymbolId(propertiesInfo.name, propertiesInfo.range) - this.propertiesBlocks.set(symbolId, new MatlabClassMemberInfo(propertiesInfo)) - }) - rawClassInfo.enumerationsBlocks.forEach(enumerationsInfo => { - const symbolId = this.createSymbolId(enumerationsInfo.name, enumerationsInfo.range) - this.enumerationsBlocks.set(symbolId, new MatlabClassMemberInfo(enumerationsInfo)) - }) - rawClassInfo.methodsBlocks.forEach(methodInfo => { - const symbolId = this.createSymbolId(methodInfo.name, methodInfo.range) - this.methodsBlocks.set(symbolId, new MatlabClassMemberInfo(methodInfo)) + // If this is the first function in a non-classdef file in a class folder, + // add its info to the associated class so that the class info will hold + // info about all the class's methods, even those outside the classdef file + if (index === 0 && associatedClassInfo && !this.classScope) { + parsedFunc = associatedClassInfo.addMethodInfo(rawFunctionInfo, this) + } else { + parsedFunc = new MatlabFunctionInfo(rawFunctionInfo, this) + } + + this.functionScopes.set(rawFunctionInfo.declarationNameId.name, parsedFunc) }) } } -/** - * Class to contain info about members of a class (e.g. Properties or Enumerations) - */ -export class MatlabClassMemberInfo { - readonly name: string +export type FunctionParentScope = MatlabGlobalScopeInfo | MatlabClassdefInfo | MatlabFunctionScopeInfo + +export class MatlabFunctionScopeInfo { + readonly declarationNameId: NamedRange readonly range: Range - readonly parentClass: string + readonly variables: IdentifierMap = new Map() + readonly globals: Set + readonly functionOrUnboundReferences: IdentifierMap = new Map() + readonly functionScopes = new Map() + readonly inputArgs: Set + readonly outputArgs: Set + + constructor (rawFunctionInfo: FunctionDefinition, readonly parentScope: FunctionParentScope, readonly functionInfo: MatlabFunctionInfo) { + this.declarationNameId = convertNamedRange(rawFunctionInfo.declarationNameId) + this.range = convertRange(rawFunctionInfo.range) + this.globals = new Set(rawFunctionInfo.globals) + this.inputArgs = new Set(rawFunctionInfo.inputArgs) + this.outputArgs = new Set(rawFunctionInfo.outputArgs) + + this.parseFunctions(rawFunctionInfo.nestedScopes) + parseVariableReferences(rawFunctionInfo.variableReferences.map(convertIdentifier), this.variables) + parseVariableDefinitions(rawFunctionInfo.variableDefinitions.map(convertIdentifier), this.variables) + parseFunctionOrUnboundReferences(rawFunctionInfo.functionOrUnboundReferences.map(convertFunctionOrUnboundIdentifier), this.functionOrUnboundReferences) + } - constructor (rawPropertyInfo: CodeDataMemberInfo) { - this.name = rawPropertyInfo.name - this.range = convertRange(rawPropertyInfo.range) - this.parentClass = rawPropertyInfo.parentClass + private parseFunctions (rawFunctionScopes: FunctionDefinition[]): void { + for (const rawFunctionInfo of rawFunctionScopes) { + const parsedFunc = new MatlabFunctionInfo(rawFunctionInfo, this) + this.functionScopes.set(rawFunctionInfo.declarationNameId.name, parsedFunc) + } } } -/** - * Class to contain info about functions - */ export class MatlabFunctionInfo { - name: string + isPublic: boolean + hasPrototypeInfo: boolean + isStaticMethod: boolean + isConstructor: boolean - range: Range - declaration: Range | null + functionScopeInfo?: MatlabFunctionScopeInfo - isPrototype: boolean + constructor (rawFunctionInfo: FunctionDefinition, parentScope: FunctionParentScope, readonly isMethod = false) { + this.isPublic = rawFunctionInfo.isPublic + this.hasPrototypeInfo = rawFunctionInfo.isPrototype + this.isStaticMethod = rawFunctionInfo.isStaticMethod + this.isConstructor = rawFunctionInfo.isConstructor - parentClass: string - isClassMethod: boolean - visibility: FunctionVisibility + if (!rawFunctionInfo.isPrototype) { + this.functionScopeInfo = new MatlabFunctionScopeInfo(rawFunctionInfo, parentScope, this) + } + } - variableInfo: Map + addAdditionalInfo (rawFunctionInfo: FunctionDefinition, parentScope: FunctionParentScope): void { + if (this.hasPrototypeInfo && rawFunctionInfo.isPrototype) { + return + } + if (this.functionScopeInfo && !rawFunctionInfo.isPrototype) { + return + } - constructor (rawFunctionInfo: CodeDataFunctionInfo, public uri: string) { - this.name = rawFunctionInfo.name + if (rawFunctionInfo.isPrototype) { + this.isPublic = rawFunctionInfo.isPublic + this.isStaticMethod = rawFunctionInfo.isStaticMethod + this.hasPrototypeInfo = true + } else { + this.functionScopeInfo = new MatlabFunctionScopeInfo(rawFunctionInfo, parentScope, this) + } + } +} - this.range = convertRange(rawFunctionInfo.range) - this.declaration = rawFunctionInfo.declaration != null ? convertRange(rawFunctionInfo.declaration) : null +export class MatlabClassdefInfo { + readonly declarationNameId: NamedRange + readonly range: Range + readonly isPublic: boolean + readonly baseClasses: NamedRange[] + readonly propertiesBlocks: NamedRange[] + readonly enumerationsBlocks: NamedRange[] + readonly methodsBlocks: NamedRange[] + + constructor (rawClassDefinition: ClassDefinition, readonly parentScope: MatlabGlobalScopeInfo, readonly classInfo: MatlabClassInfo) { + this.declarationNameId = convertNamedRange(rawClassDefinition.declarationNameId) + this.range = convertRange(rawClassDefinition.range) + this.isPublic = rawClassDefinition.isPublic + this.baseClasses = rawClassDefinition.baseClasses.map(convertNamedRange) + this.propertiesBlocks = rawClassDefinition.propertiesBlocks.map(convertNamedRange) + this.enumerationsBlocks = rawClassDefinition.enumerationsBlocks.map(convertNamedRange) + this.methodsBlocks = rawClassDefinition.methodsBlocks.map(convertNamedRange) + } +} - this.isPrototype = rawFunctionInfo.isPrototype +// May initially only have information from a file in a class folder - +// may not have come across the classdef file yet! +export class MatlabClassInfo { + readonly properties = new Map() + readonly enumerations = new Map() + readonly functionScopes = new Map() - this.parentClass = rawFunctionInfo.parentClass - this.isClassMethod = this.parentClass !== '' - this.visibility = rawFunctionInfo.isPublic ? FunctionVisibility.Public : FunctionVisibility.Private + classdefInfo?: MatlabClassdefInfo - this.variableInfo = new Map() - this.parseVariableInfo(rawFunctionInfo) + addClassdefInfo (rawClassdefInfo: ClassDefinition, parentScope: MatlabGlobalScopeInfo): void { + if (this.classdefInfo) { + return + } + + const classdefInfo = new MatlabClassdefInfo(rawClassdefInfo, parentScope, this) + + this.parseClassdefProperties(rawClassdefInfo.properties.map(convertScopedNamedRange)) + this.parseClassdefEnumerations(rawClassdefInfo.enumerations.map(convertScopedNamedRange)) + this.parseClassdefFunctions(rawClassdefInfo.nestedScopes, classdefInfo) + + this.classdefInfo = classdefInfo } - /** - * Parses information about variables within the function from the raw data. - * - * @param rawFunctionInfo The raw function info - */ - private parseVariableInfo (rawFunctionInfo: CodeDataFunctionInfo): void { - const variableInfo = rawFunctionInfo.variableInfo - const globals = rawFunctionInfo.globals - - variableInfo.definitions.forEach(varDefinition => { - const name = varDefinition[0] - const range = convertRange(varDefinition[1]) - - const varInfo = this.getOrCreateVariableInfo(name, globals) - varInfo.addDefinition(range) - }) + addMethodInfo (rawFunctionInfo: FunctionDefinition, parentScope: FunctionParentScope): MatlabFunctionInfo { + const methodName = rawFunctionInfo.declarationNameId.name + let methodInfo: MatlabFunctionInfo | undefined = this.functionScopes.get(methodName) - variableInfo.references.forEach(varReference => { - const name = varReference[0] - const range = convertRange(varReference[1]) + if (methodInfo) { + methodInfo.addAdditionalInfo(rawFunctionInfo, parentScope) + } else { + methodInfo = new MatlabFunctionInfo(rawFunctionInfo, parentScope, true) + this.functionScopes.set(methodName, methodInfo) + } - const varInfo = this.getOrCreateVariableInfo(name, globals) - varInfo.addReference(range) - }) + return methodInfo + } + + clear (): void { + this.properties.clear() + this.enumerations.clear() + this.functionScopes.clear() + + this.classdefInfo = undefined } - /** - * Attempts to retrieve an existing MatlabVariableInfo object for the requested variable. - * Creates a new instance if one does not already exist. - * - * @param name The variable's name - * @param globals The list of global variables - * @returns The MatlabVariableInfo object for the variable - */ - private getOrCreateVariableInfo (name: string, globals: string[]): MatlabVariableInfo { - let variableInfo = this.variableInfo.get(name) - if (variableInfo == null) { - const isGlobal = globals.includes(name) - variableInfo = new MatlabVariableInfo(name, isGlobal) - this.variableInfo.set(name, variableInfo) + private parseClassdefFunctions (rawFunctionScopes: FunctionDefinition[], classdefInfo: MatlabClassdefInfo): void { + for (const rawFunctionInfo of rawFunctionScopes) { + this.addMethodInfo(rawFunctionInfo, classdefInfo) } - return variableInfo } -} -/** - * Class to contain info about variables - */ -class MatlabVariableInfo { - readonly definitions: Range[] = [] - readonly references: Range[] = [] - - constructor (public name: string, public isGlobal: boolean) {} - - /** - * Add a definition for the variable - * - * @param range The range of the definition - */ - addDefinition (range: Range): void { - this.definitions.push(range) + private parseClassdefProperties (properties: ScopedNamedRange[]): void { + for (const propertyInfo of properties) { + this.properties.set(propertyInfo.name, propertyInfo) + } } - /** - * Add a reference for the variable - * - * @param range The range of the reference - */ - addReference (range: Range): void { - this.references.push(range) + private parseClassdefEnumerations (enums: ScopedNamedRange[]): void { + for (const enumInfo of enums) { + this.enumerations.set(enumInfo.name, enumInfo) + } } } -/** - * Class to contain info about an entire file - */ -export class MatlabCodeData { - readonly functions: Map - readonly references: Map - readonly sections: CodeDataSectionInfo[] - readonly packageName: string - errorMessage: string | undefined - - constructor (public uri: string, rawCodeData: RawCodeData, public classInfo?: MatlabClassInfo) { - this.functions = new Map() - this.references = new Map() - this.sections = [] - this.packageName = rawCodeData.packageName - this.errorMessage = undefined - this.parseFunctions(rawCodeData.functionInfo) - this.parseReferences(rawCodeData.references) - this.parseSectionInfo(rawCodeData.sections) - this.parseErrorInfo(rawCodeData.errorInfo) +export type FunctionContainer = + | MatlabGlobalScopeInfo + | MatlabFunctionScopeInfo + | MatlabClassInfo + +export interface ReferenceInfo { + references: T[] +} + +// for Identifiers with components: first component name -> reference info +// otherwise: name -> reference info +export type IdentifierMap> = Map + +function parseVariableReferences ( + references: Identifier[], variableMap: IdentifierMap +): void { + for (const ref of references) { + const variableInfo = getOrCreateIdentifierInfo( + variableMap, ref.components[0].name, MatlabVariableInfo + ) + variableInfo.addReference(ref) } +} - parseErrorInfo (errorInfo: CodeDataErrorInfo | undefined): void { - if (errorInfo === undefined) { - this.errorMessage = undefined - return - } - this.errorMessage = errorInfo.message +function parseVariableDefinitions ( + definitions: Identifier[], variableMap: IdentifierMap +): void { + for (const def of definitions) { + const variableInfo = getOrCreateIdentifierInfo( + variableMap, def.components[0].name, MatlabVariableInfo + ) + variableInfo.addDefinition(def) } +} - /** - * Whether or not the code data represents a class definition - */ - get isClassDef (): boolean { - return this.classInfo != null +function parseFunctionOrUnboundReferences ( + references: FunctionOrUnboundIdentifier[], functionOrUnboundReferenceMap: IdentifierMap +): void { + for (const ref of references) { + const referenceInfo = getOrCreateIdentifierInfo( + functionOrUnboundReferenceMap, ref.components[0].name, MatlabFunctionOrUnboundReferenceInfo + ) + referenceInfo.addReference(ref) } +} - /** - * Whether or not the code data represents a main classdef file. - * For @aclass/aclass.m this returns true - * For @aclass/amethod.m this returns false. - */ - get isMainClassDefDocument (): boolean { - return this.isClassDef && this.uri === this.classInfo?.uri +function parseClassReferences ( + references: NamedRange[], classReferenceMap: IdentifierMap +): void { + for (const ref of references) { + const referenceInfo = getOrCreateIdentifierInfo( + classReferenceMap, ref.name, MatlabClassReferenceInfo + ) + referenceInfo.addReference(ref) } +} - /** - * Finds the info for the function containing the given position. - * - * @param position A position in the document - * @returns The info for the function containing the position, or null if no function contains that position. - */ - findContainingFunction (position: Position): MatlabFunctionInfo | null { - let containingFunction: MatlabFunctionInfo | null = null - - for (const functionInfo of this.functions.values()) { - const start = functionInfo.range.start - const end = functionInfo.range.end - - // Check if position is within range - if (isPositionLessThanOrEqualTo(start, position) && isPositionGreaterThan(end, position)) { - if (containingFunction == null) { - containingFunction = functionInfo - } else { - // Prefer a narrower function if we already have a match (e.g. nested functions) - if (isPositionGreaterThan(start, containingFunction.range.start)) { - containingFunction = functionInfo - } - } - } - } +type Constructor = { new (): T } - return containingFunction +function getOrCreateIdentifierInfo> ( + identifierMap: IdentifierMap, key: string, IdentifierInfoFactory: Constructor +): T { + let identifierInfo: T | undefined = identifierMap.get(key) + if (!identifierInfo) { + identifierInfo = new IdentifierInfoFactory() + identifierMap.set(key, identifierInfo) } + return identifierInfo +} - /** - * Parses information about the file's functions. - * - * @param functionInfos The raw information about the functions in the file - */ - private parseFunctions (functionInfos: CodeDataFunctionInfo[]): void { - functionInfos.forEach(functionInfo => { - const fcnInfo = new MatlabFunctionInfo(functionInfo, this.uri) - this.functions.set(fcnInfo.name, fcnInfo) - - if (fcnInfo.isClassMethod) { - // Store the function info with the class as well - this.classInfo?.addMethod(fcnInfo) - } - }) +export class MatlabVariableInfo implements ReferenceInfo { + readonly definitions: Identifier[] = [] + readonly references: Identifier[] = [] + + addDefinition (identifier: Identifier): void { + this.definitions.push(identifier) } - /** - * Parses information about the file's variable and function references. - * - * @param references The raw information about the references in the file - */ - private parseReferences (references: CodeDataReference[]): void { - references.forEach(reference => { - const funcName = reference[0] - const range = convertRange(reference[1]) - - if (!this.references.has(funcName)) { - // First time seeing this reference - this.references.set(funcName, [range]) - } else { - this.references.get(funcName)?.push(range) - } - }) + addReference (identifier: Identifier): void { + this.references.push(identifier) } +} + +export class MatlabFunctionOrUnboundReferenceInfo implements ReferenceInfo { + readonly references: FunctionOrUnboundIdentifier[] = [] - /** - * Parse raw section info to the section and set to this.sections - * @param sectionsInfo Array of the section information of the file retrieved from MATLAB - */ - private parseSectionInfo (sectionsInfo: CodeDataSectionInfoRaw[]): void { - const sections = sectionsInfo.map((sectionInfo) => ({ - title: sectionInfo.title, - range: convertRange(sectionInfo.range), - isExplicit: sectionInfo.isExplicit - })) - this.sections.splice(0, 0, ...sections) + addReference (identifier: FunctionOrUnboundIdentifier): void { + this.references.push(identifier) } } -/** - * Converts from a CodeDataRange to a Range as expected by the language server APIs. - * - * @param codeDataRange The CodeDataRange - * @returns A Range corresponding to the inputted range - */ -function convertRange (codeDataRange: CodeDataRange): Range { - // When converting, need to change value from 1-based to 0-based - return Range.create( - codeDataRange.lineStart - 1, - codeDataRange.charStart - 1, - codeDataRange.lineEnd - 1, - codeDataRange.charEnd - 1 - ) +export class MatlabClassReferenceInfo implements ReferenceInfo { + readonly references: NamedRange[] = [] + + addReference (reference: NamedRange): void { + this.references.push(reference) + } } -export default FileInfoIndex.getInstance() +export default FileInfoIndex diff --git a/src/indexing/Indexer.ts b/src/indexing/Indexer.ts index 01fb8b4..fb86f8f 100644 --- a/src/indexing/Indexer.ts +++ b/src/indexing/Indexer.ts @@ -3,9 +3,8 @@ import { TextDocument } from 'vscode-languageserver-textdocument' import { URI } from 'vscode-uri' import MatlabLifecycleManager from '../lifecycle/MatlabLifecycleManager' -import FileInfoIndex, { MatlabCodeData, RawCodeData } from './FileInfoIndex' +import FileInfoIndex, { CodeInfo, MatlabClassInfo } from './FileInfoIndex' import * as fs from 'fs/promises' -import PathResolver from '../providers/navigation/PathResolver' import ConfigurationManager from '../lifecycle/ConfigurationManager' import MVM from '../mvm/impl/MVM' import Logger from '../logging/Logger' @@ -15,7 +14,7 @@ import * as FileNameUtils from '../utils/FileNameUtils' interface WorkspaceFileIndexedResponse { isDone: boolean filePath: string - codeData: RawCodeData + codeData: CodeInfo } export default class Indexer { @@ -24,7 +23,7 @@ export default class Indexer { constructor ( private readonly matlabLifecycleManager: MatlabLifecycleManager, private readonly mvm: MVM, - private readonly pathResolver: PathResolver + private readonly fileInfoIndex: FileInfoIndex ) {} /** @@ -38,15 +37,30 @@ export default class Indexer { return } - const rawCodeData = await this.getCodeData(textDocument.getText(), textDocument.uri) + const codeInfo = await this.getCodeInfo(textDocument.getText(), textDocument.uri) - if (rawCodeData === null) { + if (codeInfo === null) { return } - const parsedCodeData = FileInfoIndex.parseAndStoreCodeData(textDocument.uri, rawCodeData) + const existingAssociatedClassInfo: MatlabClassInfo | undefined = + this.fileInfoIndex.codeInfoCache.get(textDocument.uri)?.associatedClassInfo - void this.indexAdditionalClassData(parsedCodeData, textDocument.uri) + // if this file has previously contributed its info + // to parsed class info + if (existingAssociatedClassInfo) { + existingAssociatedClassInfo.clear() + + const parsedCodeInfo = this.fileInfoIndex.parseAndStoreCodeInfo(textDocument.uri, codeInfo) + + // Queue indexing for other files in @ class directory + const classDefFolder = parsedCodeInfo.classDefFolder + if (classDefFolder) { + this.indexFolders([classDefFolder]) + } + } else { + this.fileInfoIndex.parseAndStoreCodeInfo(textDocument.uri, codeInfo) + } } /** @@ -74,9 +88,11 @@ export default class Indexer { matlabConnection.unsubscribe(responseSub) } - // Convert file path to URI, which is used as an index when storing the code data - const fileUri = URI.file(fileResults.filePath).toString() - FileInfoIndex.parseAndStoreCodeData(fileUri, fileResults.codeData) + if (fileResults.codeData.errorInfo === undefined) { + // Convert file path to URI, which is used as an index when storing the code data + const fileUri = URI.file(fileResults.filePath).toString() + this.fileInfoIndex.parseAndStoreCodeInfo(fileUri, fileResults.codeData) + } }) try { @@ -119,13 +135,13 @@ export default class Indexer { const filePath = FileNameUtils.getFilePathFromUri(uri) const fileContentBuffer = await fs.readFile(filePath) const code = fileContentBuffer.toString() - const rawCodeData = await this.getCodeData(code, uri) + const codeInfo = await this.getCodeInfo(code, uri) - if (rawCodeData === null) { + if (codeInfo === null) { return } - FileInfoIndex.parseAndStoreCodeData(uri, rawCodeData) + this.fileInfoIndex.parseAndStoreCodeInfo(uri, codeInfo) } /** @@ -133,11 +149,10 @@ export default class Indexer { * * @param code The code being parsed * @param uri The URI associated with the code - * @param matlabConnection The connection to MATLABĀ® * * @returns The raw data extracted from the document */ - private async getCodeData (code: string, uri: string): Promise { + private async getCodeInfo (code: string, uri: string): Promise { const filePath = FileNameUtils.getFilePathFromUri(uri) const analysisLimit = (await ConfigurationManager.getConfiguration()).maxFileSizeForAnalysis @@ -154,41 +169,17 @@ export default class Indexer { return null } - return parse(response.result[0]) as RawCodeData + const codeInfo = parse(response.result[0]) as CodeInfo + + if (codeInfo.errorInfo === undefined) { + return codeInfo + } else { + return null + } } catch (err) { Logger.error('Error caught while parsing file:') Logger.error(err as string) return null } } - - /** - * Indexes any supplemental files if the parsed code data represents a class. - * This will index any other files in a @ directory, as well as any direct base classes. - * - * @param parsedCodeData The parsed code data - * @param matlabConnection The connection to MATLAB - * @param uri The document's URI - */ - private async indexAdditionalClassData (parsedCodeData: MatlabCodeData, uri: string): Promise { - if (parsedCodeData.classInfo == null) { - return - } - - // Queue indexing for other files in @ class directory - const classDefFolder = parsedCodeData.classInfo.classDefFolder - if (classDefFolder !== '') { - void this.indexFolders([classDefFolder]) - } - - // Find and queue indexing for parent classes - const baseClasses = parsedCodeData.classInfo.baseClasses - - baseClasses.forEach(async baseClass => { - const resolvedUri = await this.pathResolver.resolvePath(baseClass, uri) - if (resolvedUri !== '' && resolvedUri !== null) { - void this.indexFile(resolvedUri) - } - }) - } } diff --git a/src/indexing/SymbolSearchService.ts b/src/indexing/SymbolSearchService.ts index c45016c..03321d4 100644 --- a/src/indexing/SymbolSearchService.ts +++ b/src/indexing/SymbolSearchService.ts @@ -2,14 +2,17 @@ import { Location, Position, TextDocuments, Range } from 'vscode-languageserver' import { TextDocument } from 'vscode-languageserver-textdocument' -import FileInfoIndex, { FunctionVisibility, MatlabClassMemberInfo, MatlabCodeData, MatlabFunctionInfo } from './FileInfoIndex' +import FileInfoIndex, { + FunctionContainer, FunctionOrUnboundIdentifier, FunctionParentScope, + Identifier, IdentifierMap, MatlabClassdefInfo, MatlabClassInfo, MatlabCodeInfo, MatlabFunctionInfo, + MatlabFunctionScopeInfo, MatlabGlobalScopeInfo, MatlabVariableInfo, NamedRange, ReferenceInfo, ScopedNamedRange +} from './FileInfoIndex' import { Actions, reportTelemetryAction } from '../logging/TelemetryUtils' -import Expression from '../utils/ExpressionUtils' -import { getTextOnLine } from '../utils/TextDocumentUtils' import PathResolver from '../providers/navigation/PathResolver' import * as fs from 'fs/promises' import Indexer from './Indexer' -import * as FileNameUtils from '../utils/FileNameUtils' +import { URI } from 'vscode-uri' +import { isPositionWithinRange } from '../utils/PositionUtils' export enum RequestType { Definition, @@ -41,411 +44,1983 @@ export function reportTelemetry (type: RequestType, errorCondition = ''): void { reportTelemetryAction(action, errorCondition) } -class SymbolSearchService { - private static instance: SymbolSearchService - protected readonly DOTTED_IDENTIFIER_REGEX = /[\w.]+/ +//////////////////////// Public API /////////////////////////// - public static getInstance (): SymbolSearchService { - if (SymbolSearchService.instance == null) { - SymbolSearchService.instance = new SymbolSearchService() - } +export interface RefsAndDefsResult { + references: Location[] + definitions: Location[] +} - return SymbolSearchService.instance +/** + * Finds references of the identifier at a particular position in a document. + * + * References are found throughout the file the identifier is in; additionally, + * for class methods and properties, the files in an enclosing class folder are + * searched. An empty array is returned if the operation fails or if there is + * no (supported) identifier at the given position. + * + * Ranges in returned locations should not be modified. + * + * @param uri The URI of the document containing the position for which to find references + * @param position The position in the document for which to find references + * @param fileInfoIndex The file info index (which would contain the code data for the + * document at the given URI if it has been indexed) + * @param documentManager The document manager + * @param requestType The type of request being made (used for telemetry reporting) + * @returns Locations of the references for the identifier at the given position + */ +export function findReferences ( + uri: string, position: Position, fileInfoIndex: FileInfoIndex, documentManager: TextDocuments, + requestType: RequestType +): Location[] { + const refsParams = getScopedIdAndCodeInfo( + uri, position, fileInfoIndex, documentManager, requestType + ) + + if (refsParams == null) { + return [] } - /** - * Finds references of an expression. - * - * @param uri The URI of the document containing the expression - * @param position The position of the expression - * @param expression The expression for which we are looking for references - * @param documentManager The text document manager - * @param requestType The type of request - * @returns The references' locations - */ - findReferences (uri: string, position: Position, expression: Expression, documentManager: TextDocuments, requestType: RequestType): Location[] { - // Get code data for current file - const codeData = FileInfoIndex.codeDataCache.get(uri) + const [scopedId, codeInfo] = refsParams + + reportTelemetry(requestType) + return findRefsOrDefs(scopedId, codeInfo, ResultType.References) +} + +/** + * Finds definitions/write references of the identifier at a particular position in a document. + * + * Definitions are found throughout the file the identifier is in; additionally, + * for class methods and properties, the files in an enclosing class folder are + * searched. If no definitions of a class, function, or presumably unbound + * reference are found in these file(s), we try to find the declaration file on + * the MATLAB path and look for definitions in that file. When trying to find + * the declaration file in this manner, additional dotted identifier components + * beyond the one selected will be considered until a declaration is found. An + * empty array is returned if the operation fails or if there is no (supported) + * identifier at the given position. + * + * Ranges in returned locations should not be modified. + * + * @param uri The URI of the document containing the position for which to find definitions + * @param position The position in the document for which to find definitions + * @param fileInfoIndex The file info index (which would contain the code data for the + * document at the given URI if it has been indexed) + * @param documentManager The document manager + * @param pathResolver The path resolver + * @param indexer The indexer + * @param requestType The type of request being made (used for telemetry reporting) + * @returns Locations of the definitions for the identifier at the given position + */ +export async function findDefinitions ( + uri: string, position: Position, fileInfoIndex: FileInfoIndex, documentManager: TextDocuments, + pathResolver: PathResolver, indexer: Indexer, requestType: RequestType +): Promise { + const defsParams = getScopedIdAndCodeInfo( + uri, position, fileInfoIndex, documentManager, requestType + ) + + if (defsParams == null) { + return [] + } + + const [scopedId, codeInfo] = defsParams + + reportTelemetry(requestType) + + // First check within the current file's (and + // associated class info's) code data + const defsInCodeData: Location[] = findRefsOrDefs(scopedId, codeInfo, ResultType.Definitions) + + if (defsInCodeData.length > 0) { + return defsInCodeData + } + + // If no definitions are found in the current file/ + // associated class and the identifier type is able to + // be defined outside the file, look for definitions + // on the path + if (scopedId instanceof ClassReference || scopedId instanceof ScopedFunctionOrUnboundReference) { + return await findDefinitionsOnPathWithExpansion(scopedId, uri, pathResolver, indexer, fileInfoIndex) + } + + return [] +} + +/** + * Finds references and definitions of the identifier at a particular position in a document. + * + * References and definitions are found throughout the file the identifier is + * in; additionally, for class methods and properties, the files in an enclosing + * class folder are searched. Empty arrays are returned if the operation fails + * or if there is no (supported) identifier at the given position. + * + * The definitions returned are a subset of the references returned, where + * equality for two range objects is defined as whether they represent the same + * range, even if the objects do not have the same identity. + * + * Note that the path is not searched for definitions even if no definitions are + * found; use {@link findReferences} and {@link findDefinitions} separately if + * you want this definition finding behavior. + * + * Ranges in returned locations should not be modified. + * + * @param uri The URI of the document containing the position for which to find refs & defs + * @param position The position in the document for which to find refs & defs + * @param fileInfoIndex The file info index (which would contain the code data for the + * document at the given URI if it has been indexed) + * @param documentManager The document manager + * @param requestType The type of request being made (used for telemetry reporting) + * @returns References and definitions for the identifier at the given position + */ +export function findReferencesAndDefinitions ( + uri: string, position: Position, fileInfoIndex: FileInfoIndex, documentManager: TextDocuments, + requestType: RequestType +): RefsAndDefsResult { + const refsAndDefsParams = getScopedIdAndCodeInfo( + uri, position, fileInfoIndex, documentManager, requestType + ) + + if (refsAndDefsParams == null) { + return { references: [], definitions: [] } + } + + const [scopedId, codeInfo] = refsAndDefsParams + + reportTelemetry(requestType) + return findRefsOrDefs(scopedId, codeInfo, ResultType.All) +} + +/** + * Finds the selected identifier component at a particular position in a document. + * + * If the identifier containing the given position has individual component + * information (i.e., it is a variable, function, or presumably unbound reference), + * the named range for the selected component is returned; otherwise, the named + * range for the identifier as a whole is returned. + * + * The returned objects should not be modified. + * + * @param uri The URI of the document containing the position for which to find the selected identifier component + * @param position The position in the document for which to find the selected identifier component + * @param fileInfoIndex The file info index (which would contain the code data for the + * document at the given URI if it has been indexed) + * @param documentManager The document manager + * @returns The selected component of the identifier at the given position, or null if no identifier is found + */ +export function findSelectedIdentifierComponent ( + uri: string, position: Position, fileInfoIndex: FileInfoIndex, documentManager: TextDocuments, + requestType: RequestType +): NamedRange | null { + const result = getScopedIdAndCodeInfo( + uri, position, fileInfoIndex, documentManager, requestType + ) + + if (result == null) { + return null + } + + const [scopedId] = result + + if (scopedId instanceof ScopedVariableReference || scopedId instanceof ScopedFunctionOrUnboundReference) { + return scopedId.id.components[scopedId.selectedComponentIndex] + } else { + return scopedId.id + } +} + +//////////////////////// Finding identifier at cursor position ///////////////////////// + +/** + * Represents an identifier presumed to be a class reference based on + * its position/context within a code file. + */ +class ClassReference { + constructor ( + readonly id: NamedRange + ) {} +} + +/** + * Represents an identifier that is classified as a variable reference + * based on its position/context within a code file. It may actually + * represent a variable ("var" or "struct.field"), method call + * ("obj.fun"), or property ("obj.Prop"). + */ +class ScopedVariableReference { + constructor ( + readonly id: Identifier, + readonly selectedComponentIndex: number, + readonly scope: MatlabGlobalScopeInfo | MatlabFunctionScopeInfo + ) {} +} + +/** + * Represents an identifier that is classified as a function or + * unbound reference based on its position/context within a code file. + * It may actually represent a function call, presumably unbound + * identifier (possibly referring to a function or class defined in a + * different file), or method call. + */ +class ScopedFunctionOrUnboundReference { + constructor ( + readonly id: FunctionOrUnboundIdentifier, + readonly selectedComponentIndex: number, + readonly scope: MatlabGlobalScopeInfo | MatlabFunctionScopeInfo + ) {} +} + +/** + * Represents a function/method declaration identifier (like "fun" in + * "function fun"). + */ +class ScopedFunctionDeclarationId { + constructor ( + readonly id: NamedRange, + readonly declaredFunctionScope: MatlabFunctionScopeInfo + ) {} +} + +/** + * Represents a property declaration identifier (in a properties + * block of a class). + */ +class ScopedPropertyDeclarationId { + constructor ( + readonly id: ScopedNamedRange, readonly scope: MatlabClassdefInfo + ) {} +} + +type ScopedReference = + | ClassReference + | ScopedVariableReference + | ScopedFunctionOrUnboundReference + | ScopedFunctionDeclarationId + | ScopedPropertyDeclarationId + +type IdentifierScope = + | MatlabCodeInfo + | MatlabGlobalScopeInfo + | MatlabFunctionScopeInfo + | MatlabClassdefInfo + +/** + * Recursively searches a scope to find the info for the identifier at a given position. + * + * @param scope The scope to search for identifiers (recursively) + * @param position The position to find an identifier at + * @returns A scoped reference representing the identifier found, the scope the identifier + * is directly contained within (if it is not a class reference), and the selected + * component if applicable, or null if no identifier is found + */ +function getIdentifierAtPosition (scope: IdentifierScope | undefined, position: Position): ScopedReference | null { + if (scope === undefined) { + return null + } + + if (scope instanceof MatlabCodeInfo) { + const result = getIdentifierAtPosition(scope.globalScopeInfo, position) + if (result) return result + + // Class references are stored in the top-level + // code info regardless of scope + const classRef: NamedRange | null = searchIdentifierMap(scope.classReferences, position) + if (classRef) return new ClassReference(classRef) + } else if (scope instanceof MatlabClassdefInfo) { + const classInfo: MatlabClassInfo = scope.classInfo + + // Note: enums not currently supported + + for (const functionInfo of classInfo.functionScopes.values()) { + const functionScope = functionInfo.functionScopeInfo + + // Note: only check methods whose parent scope is a classdef - + // other methods are supplementary class methods defined in + // a different file + if (functionScope?.parentScope instanceof MatlabClassdefInfo + && isPositionWithinRange(position, functionScope.range) + ) { + return getIdentifierAtPosition(functionScope, position) + } + } + + const prop: ScopedNamedRange | null = searchReferences([...classInfo.properties.values()], position) + if (prop) return new ScopedPropertyDeclarationId(prop, scope) + } else { // global or function scope + if (scope instanceof MatlabGlobalScopeInfo) { + const classdef = scope.classScope?.classdefInfo + if (classdef && isPositionWithinRange(position, classdef.range)) { + return getIdentifierAtPosition(classdef, position) + } + } - if (codeData == null) { - // File not indexed - unable to look for references - reportTelemetry(requestType, 'File not indexed') - return [] + for (const functionInfo of scope.functionScopes.values()) { + const functionScope = functionInfo.functionScopeInfo + if (functionScope && isPositionWithinRange(position, functionScope.range)) { + return getIdentifierAtPosition(functionInfo.functionScopeInfo, position) + } } - const textDocument = documentManager.get(uri) + if (scope instanceof MatlabFunctionScopeInfo) { + if (isPositionWithinRange(position, scope.declarationNameId.range)) { + // We do not currently support functions with dots + // in their name (property access methods or + // namespace-class converter methods) + if (scope.declarationNameId.name.includes('.')) { + return null + } - if (textDocument == null) { - reportTelemetry(requestType, 'No document') - return [] + return new ScopedFunctionDeclarationId(scope.declarationNameId, scope) + } } - const line = getTextOnLine(textDocument, position.line) - const commentStart = line.indexOf('%') + const varRef: Identifier | null = searchIdentifierMap(scope.variables, position) + if (varRef) { + const selectedComponentIndex: number | null = getSelectedComponentIndex(varRef, position) + if (selectedComponentIndex != null) { + return new ScopedVariableReference(varRef, selectedComponentIndex, scope) + } else { + return null + } + } - if (commentStart > -1 && commentStart < position.character) { - // Current expression is in a comment - no references should be returned - return [] + const functionOrUnboundRef: FunctionOrUnboundIdentifier | null = searchIdentifierMap( + scope.functionOrUnboundReferences, position + ) + if (functionOrUnboundRef) { + const selectedComponentIndex: number | null = getSelectedComponentIndex(functionOrUnboundRef, position) + if (selectedComponentIndex != null) { + return new ScopedFunctionOrUnboundReference(functionOrUnboundRef, selectedComponentIndex, scope) + } else { + return null + } } + } + + return null +} - const referencesInCodeData = this.findReferencesInCodeData(uri, position, expression, codeData) +/** + * Searches an identifier map for a reference whose range contains the given cursor position. + * + * @param map The identifier map to search + * @param position The position to search for + * @returns The found reference or null if not found + */ +function searchIdentifierMap ( + map: IdentifierMap>, position: Position +): T | null { + for (const refInfo of map.values()) { + const searchResult = searchReferences(refInfo.references, position) + if (searchResult) return searchResult + } - reportTelemetry(requestType) + return null +} - if (referencesInCodeData != null) { - return referencesInCodeData +/** + * Searches a list of references for a reference whose range contains the given cursor position. + * + * @param refs The list of references to search + * @param position The position to search for + * @returns The found reference or null if not found + */ +function searchReferences (refs: T[], position: Position): T | null { + for (const ref of refs) { + if (isPositionWithinRange(position, ref.range)) { + return ref } + } - return [] + return null +} + +/** + * Determines the index of the component of a given identifier that contains the given cursor position. + * + * @param id The identifier containing the cursor position + * @param position The cursor position to check against each component's range + * @returns The index of the component that contains the position, or null if none do + */ +function getSelectedComponentIndex (id: Identifier, position: Position): number | null { + for (const [index, component] of id.components.entries()) { + if (isPositionWithinRange(position, component.range)) { + return index + } } + return null +} - /** - * Searches for references, starting within the given code data. If the expression does not correspond to a local variable, - * the search is broadened to other indexed files in the user's workspace. - * - * @param uri The URI corresponding to the provided code data - * @param position The position of the expression - * @param expression The expression for which we are looking for references - * @param codeData The code data which is being searched - * @returns The references' locations, or null if no reference was found - */ - private findReferencesInCodeData (uri: string, position: Position, expression: Expression, codeData: MatlabCodeData): Location[] | null { - // If first part of expression is targeted - look for a local variable - if (expression.selectedComponent === 0) { - const containingFunction = codeData.findContainingFunction(position) - if (containingFunction != null) { - const varRefs = this.getVariableDefsOrRefs(containingFunction, expression.unqualifiedTarget, uri, RequestType.References) - if (varRefs != null) { - return varRefs - } +/////////////////////// Finding refs & defs main function ////////////////// + +/** Designates whether the references, definitions, or both of the given scoped id should be returned */ +enum ResultType { + References, + Definitions, + All +} + +/** + * Finds references and/or definitions of an identifier. + * + * Use {@link getIdentifierAtPosition} to get the {@link scopedId} at a cursor + * position. References and definitions will only be found in the file whose code + * info is provided, unless the identifier is a class method or property, in which + * case references and definitions will be found in the associated class info. + * + * @param scopedId The scoped reference to find references and/or definitions for + * @param codeInfo The code info for the file containing the scoped reference + * @param resultType Determines whether to return references, definitions, or both + * @returns Locations of references, definitions, or both, depending on the {@link resultType} + */ +function findRefsOrDefs (scopedId: ScopedReference, codeInfo: MatlabCodeInfo, resultType: ResultType.References | ResultType.Definitions): Location[] +function findRefsOrDefs (scopedId: ScopedReference, codeInfo: MatlabCodeInfo, resultType: ResultType.All): RefsAndDefsResult +function findRefsOrDefs ( + scopedId: ScopedReference, codeInfo: MatlabCodeInfo, resultType: ResultType +): Location[] | RefsAndDefsResult { + if (scopedId instanceof ClassReference) { + return findClassRefsOrDefs(scopedId.id.name, codeInfo, resultType) + } else if (scopedId instanceof ScopedVariableReference) { + return findVarSourcedRefsOrDefs(scopedId, codeInfo, resultType) + } else if (scopedId instanceof ScopedFunctionOrUnboundReference) { + return findFunctionOrUnboundRefsOrDefs(scopedId, codeInfo, resultType) + } else if (scopedId instanceof ScopedFunctionDeclarationId) { + return findFunctionDeclarationRefsOrDefs(scopedId, codeInfo, resultType) + } else { // ScopedPropertyDeclarationId + return findPropertyDeclarationRefsOrDefs(scopedId, codeInfo, resultType) + } +} + +///////////////// Finding class refs & defs ////////////////////// + +/** + * Finds references and/or definitions of a ClassReference throughout a single file. + * + * The ClassReference is assumed to refer to a class. + * + * @param idName The name of the class to find references and/or definitions for + * @param codeInfo The code info for the file containing the class reference + * @param resultType Determines whether to return references, definitions, or both + * @returns Locations of references, definitions, or both, depending on the {@link resultType} + */ +function findClassRefsOrDefs (idName: string, codeInfo: MatlabCodeInfo, resultType: ResultType.References | ResultType.Definitions): Location[] +function findClassRefsOrDefs (idName: string, codeInfo: MatlabCodeInfo, resultType: ResultType.All): RefsAndDefsResult +function findClassRefsOrDefs (idName: string, codeInfo: MatlabCodeInfo, resultType: ResultType): Location[] | RefsAndDefsResult +function findClassRefsOrDefs ( + idName: string, codeInfo: MatlabCodeInfo, resultType: ResultType +): Location[] | RefsAndDefsResult { + const needRefs = resultType !== ResultType.Definitions + const needDefs = resultType !== ResultType.References + + const refs: NamedRange[] | undefined = needRefs ? [] : undefined + const defs: NamedRange[] | undefined = needDefs ? [] : undefined + + const classScope: MatlabClassInfo | undefined = codeInfo.globalScopeInfo?.classScope + const classDeclarationId: NamedRange | undefined = classScope?.classdefInfo?.declarationNameId + + if (classDeclarationId?.name === idName) { + // Note: The class declaration ID is included + // automatically in the class references + + defs?.push(classDeclarationId) + + // If classScope were undefined, classDeclarationId + // could not be defined + const probableConstructor: MatlabFunctionInfo | undefined = classScope!.functionScopes.get(idName) + + if (probableConstructor?.isConstructor) { + const constructorDeclarationId: NamedRange | undefined = probableConstructor.functionScopeInfo?.declarationNameId + if (constructorDeclarationId) { + // Constructor declaration names are not recorded + // in the class references map + refs?.push(constructorDeclarationId) + defs?.push(constructorDeclarationId) } } + } + + refs?.push(...(codeInfo.classReferences.get(idName)?.references ?? [])) + + return formatRefsOrDefsResult( + refs?.map(id => Location.create(codeInfo.uri, id.range)), + defs?.map(id => Location.create(codeInfo.uri, id.range)), + resultType + ) +} + +//////////////////// Finding property declaration refs & defs //////////////////// + +/** + * Finds references and/or definitions of a ScopedPropertyDeclarationId throughout a class. + * + * The ScopedPropertyDeclarationId always refers to a class property. + * + * @param scopedId The property declaration id to find references and/or definitions for + * @param codeInfo The code info for the file containing the property declaration id + * @param resultType Determines whether to return references, definitions, or both + * @returns Locations of references, definitions, or both, depending on the {@link resultType} + */ +function findPropertyDeclarationRefsOrDefs ( + scopedId: ScopedPropertyDeclarationId, codeInfo: MatlabCodeInfo, resultType: ResultType +): Location[] | RefsAndDefsResult { + const needRefs = resultType !== ResultType.Definitions + const needDefs = resultType !== ResultType.References + + let fileScopedRefs: FileScopedIdentifier[] | undefined = needRefs ? [] : undefined + let fileScopedDefs: FileScopedIdentifier[] | undefined = needDefs ? [] : undefined + + sweepAndAccumulatePropertyRefsOrDefs(fileScopedRefs, fileScopedDefs, scopedId.scope.classInfo, scopedId.id.name) + + return dottedPropertyIdentifierNarrowCombineAndFormat( + fileScopedRefs, fileScopedDefs, Location.create(codeInfo.uri, scopedId.id.range), scopedId, resultType + ) +} - // Check for functions in file - const functionDeclaration = this.getFunctionDeclaration(codeData, expression.fullExpression) - if (functionDeclaration != null && functionDeclaration.visibility === FunctionVisibility.Private) { - // Found a local function. Look through this file's references - return codeData.references.get(functionDeclaration.name)?.map(range => Location.create(uri, range)) ?? [] +//////////////////// Finding function declaration refs & defs //////////////////// + +/** + * Finds references and/or definitions of a ScopedFunctionDeclarationId. + * + * The ScopedFunctionDeclarationId may refer to a function or a method. If it refers to + * a function, references and/or definitions will be found throughout the file. If it + * refers to a method, references and/or definitions will be found throughout the + * associated class. + * + * @param scopedId The function declaration id to find references and/or definitions for + * @param codeInfo The code info for the file containing the function declaration id + * @param resultType Determines whether to return references, definitions, or both + * @returns Locations of references, definitions, or both, depending on the {@link resultType} + */ +function findFunctionDeclarationRefsOrDefs ( + scopedId: ScopedFunctionDeclarationId, codeInfo: MatlabCodeInfo, resultType: ResultType +): Location[] | RefsAndDefsResult { + if (scopedId.declaredFunctionScope.functionInfo.isConstructor) { + return findClassRefsOrDefs(scopedId.id.name, codeInfo, resultType) + } + + const isMethod = scopedId.declaredFunctionScope.functionInfo.isMethod + + const needRefs = resultType !== ResultType.Definitions + + const fileScopedRefs: FileScopedIdentifier[] | undefined = needRefs ? [] : undefined + + const defs: Location[] = [Location.create(codeInfo.uri, scopedId.id.range)] + + if (fileScopedRefs) { + if (isMethod) { + sweepAndAccumulateFunctionlikeReferencesEntry( + fileScopedRefs, codeInfo.associatedClassInfo!, scopedId.id.name, FunctionlikeType.Method, + scopedId.declaredFunctionScope.functionInfo.isStaticMethod + ) + } else { + sweepAndAccumulateFunctionlikeReferencesEntry( + fileScopedRefs, functionParentScopeToFunctionContainer(scopedId.declaredFunctionScope.parentScope), + scopedId.id.name, FunctionlikeType.Function + ) } + } - // Check other files - const refs: Location[] = [] + return dottedFunctionlikeIdentifierNarrowCombineAndFormat(fileScopedRefs, defs, scopedId, isMethod, resultType) +} + +///////////////////// Finding function or unbound refs & defs ///////////////////// +// (the first component of the selected identifier +// is a function or unbound reference) + +/** + * Finds references and/or definitions of a ScopedFunctionOrUnboundReference. + * + * The ScopedFunctionOrUnboundReference may refer to a function, a presumably unbound + * reference, or a method. If it refers to a function or a presumably unbound + * reference, references and/or definitions will be found throughout the file. If it + * refers to a method, references and/or definitions will be found throughout the + * associated class. + * + * @param scopedId The function or unbound reference to find references and/or definitions for + * @param codeInfo The code info for the file containing the function or unbound reference + * @param resultType Determines whether to return references, definitions, or both + * @returns Locations of references, definitions, or both, depending on the {@link resultType} + */ +function findFunctionOrUnboundRefsOrDefs ( + scopedId: ScopedFunctionOrUnboundReference, codeInfo: MatlabCodeInfo, resultType: ResultType +): Location[] | RefsAndDefsResult { + const needRefs = resultType !== ResultType.Definitions + + const fileScopedRefs: FileScopedIdentifier[] | undefined = needRefs ? [] : undefined + const defs: Location[] = [] + + const refsOrDefsType = accumulateFunctionOrUnboundRefsOrDefsNoDefFound( + fileScopedRefs, defs, scopedId.scope, scopedId.id, codeInfo, false, false + ) + + return dottedFunctionlikeIdentifierNarrowCombineAndFormat( + fileScopedRefs, defs, scopedId, refsOrDefsType === FunctionlikeType.Method, resultType + ) +} - for (const [, fileCodeData] of FileInfoIndex.codeDataCache) { - if (fileCodeData.functions.get(expression.fullExpression)?.visibility === FunctionVisibility.Private) { - // Skip files with other local functions - continue +/** + * Accumulates the references and/or definitions of a function or unbound identifier. + * + * This function does not take into account dotted identifier narrowing. + * + * Important notes: + * - This function traverses the code info tree *upwards*. The initial call should have + * {@link scopedId} set to the scope containing the function or unbound identifier. The + * scope will expand as needed from there to get all references and/or definitions + * throughout the full scope necessary (the file if referring to a function or a + * presumably unbound identifier, or the associated class if referring to a method). + * - The function/method declaration id is not accumulated into the references array. This + * identifier, accumulated into the definitions array, should be added as a reference by + * the caller if needed. + * + * @param fileScopedRefs Array to accumulate references in, or undefined if references are not needed + * (see above) + * @param defs Array to accumulate definitions in + * @param currentScope The current scope in the traversal (see above) + * @param id The function or unbound identifier to find references and/or definitions for + * @param codeInfo The code info for the file containing the identifier + * @param firstArgIdDeclarationFound Whether a declaration for the identifier's first argument id has + * been found (should initially be false; used to help determine whether the identifier could be + * a method call) + * @param presumedClassInstanceFound Whether the identifier's first argument id has been found to be + * a presumed class instance (should initially be false; used to help determine whether the + * identifier could be a method call) + * @returns Whether the identifier refers to a function, presumably unbound identifier, or method + */ +function accumulateFunctionOrUnboundRefsOrDefsNoDefFound ( + fileScopedRefs: FileScopedIdentifier[] | undefined, defs: Location[], currentScope: FunctionParentScope, + id: FunctionOrUnboundIdentifier, codeInfo: MatlabCodeInfo, firstArgIdDeclarationFound: boolean, + presumedClassInstanceFound: boolean +): FunctionlikeType { + if (currentScope instanceof MatlabGlobalScopeInfo) { + return accumulateFunctionOrUnboundRefsOrDefsNoDefFoundGlobalScope( + fileScopedRefs, defs, currentScope, id, codeInfo, presumedClassInstanceFound + ) + } else if (currentScope instanceof MatlabClassdefInfo) { + return accumulateFunctionOrUnboundRefsOrDefsNoDefFoundGlobalScope( + fileScopedRefs, defs, currentScope.parentScope, id, codeInfo, presumedClassInstanceFound + ) + } else { // MatlabFunctionScopeInfo + const declarationId: NamedRange | undefined = + currentScope.functionScopes.get(id.components[0].name)?.functionScopeInfo?.declarationNameId + + // If the function is declared in the current scope + if (declarationId) { + defs.push(Location.create(codeInfo.uri, declarationId.range)) + + if (fileScopedRefs) { + sweepAndAccumulateFunctionlikeReferencesEntry( + fileScopedRefs, currentScope, id.components[0].name, FunctionlikeType.Function + ) } - const varRefs = fileCodeData.references.get(expression.fullExpression) - if (varRefs != null) { - varRefs.forEach(range => refs.push(Location.create(fileCodeData.uri, range))) + + return FunctionlikeType.Function + } else { + // If it is possible for the identifier to be a + // function-syntax method call + if (id.firstArgIdName && !firstArgIdDeclarationFound) { + if (isDirectPresumedClassInstance(id.firstArgIdName, currentScope)) { + // If we are in a method's top-level scope + // and the first argument of the identifier/call + // is determined to be a presumed class instance, + // we mark presumedClassInstanceFound as true so + // we know the identifier might be a method call + firstArgIdDeclarationFound = true + presumedClassInstanceFound = true + } else { + if (functionScopeHasShadowingDeclaration(currentScope, id.firstArgIdName, true)) { + // If the first arg id is in a shadowing declaration + // (function parameter or global declaration) that + // does not make it a presumed class instance, it + // is no longer possible for it to be designated a + // presumed class instance - e.g., if a method + // establishes obj as a presumed class instance, a + // nested function declaring obj as a parameter will + // shadow the presumed class instance, so if we find + // the nested function's parameter declaration while + // traversing up we will need to ignore the method's + // parameter declaration when we encounter it later + firstArgIdDeclarationFound = true + } + } } + + return accumulateFunctionOrUnboundRefsOrDefsNoDefFound( + fileScopedRefs, defs, currentScope.parentScope, id, codeInfo, firstArgIdDeclarationFound, presumedClassInstanceFound + ) } - return refs } +} - /** - * Gets the definition/references of a variable within a function. - * - * @param containingFunction Info about a function - * @param variableName The variable name for which we are looking for definitions or references - * @param uri The URI of the file - * @param requestType The type of request (definition or references) - * @returns The locations of the definition(s) or references of the given variable name within the given function info, or null if none can be found - */ - getVariableDefsOrRefs (containingFunction: MatlabFunctionInfo, variableName: string, uri: string, requestType: RequestType): Location[] | null { - const variableInfo = containingFunction.variableInfo.get(variableName) +/** + * Helper for {@link accumulateFunctionOrUnboundRefsOrDefsNoDefFound} to handle + * the case where {@link currentScope} is a global scope. + */ +function accumulateFunctionOrUnboundRefsOrDefsNoDefFoundGlobalScope ( + fileScopedRefs: FileScopedIdentifier[] | undefined, defs: Location[], currentScope: MatlabGlobalScopeInfo, + id: FunctionOrUnboundIdentifier, codeInfo: MatlabCodeInfo, presumedClassInstanceFound: boolean +): FunctionlikeType { + const declarationId: NamedRange | undefined = + currentScope.functionScopes.get(id.components[0].name)?.functionScopeInfo?.declarationNameId + + let sweepFunctionlikeType: FunctionlikeType + + // Note that local function calls take precedence + // over function-syntax method calls + if (declarationId) { + defs.push(Location.create(codeInfo.uri, declarationId.range)) + + sweepFunctionlikeType = FunctionlikeType.Function + } else { + let referencedMethod: MatlabFunctionInfo | undefined + + if (presumedClassInstanceFound) { + referencedMethod = currentScope.codeInfo.associatedClassInfo?.functionScopes.get(id.components[0].name) + } - if (variableInfo == null) { - return null + // Static methods cannot be called using function syntax. + // Constructor calls are considered class references when + // in the classdef file, but should be treated as unbound + // references if in a supplementary method file. + if (referencedMethod && !referencedMethod.isStaticMethod && !referencedMethod.isConstructor) { + const methodScopeInfo: MatlabFunctionScopeInfo | undefined = referencedMethod.functionScopeInfo + if (methodScopeInfo) { + defs.push(Location.create(getUri(methodScopeInfo), methodScopeInfo.declarationNameId.range)) + } + + sweepFunctionlikeType = FunctionlikeType.Method + } else { + sweepFunctionlikeType = FunctionlikeType.Unbound } + } - const varInfoRanges = requestType === RequestType.Definition ? variableInfo.definitions : variableInfo.references + if (fileScopedRefs) { + sweepAndAccumulateFunctionlikeReferencesEntry( + fileScopedRefs, + sweepFunctionlikeType === FunctionlikeType.Method ? codeInfo.associatedClassInfo! : currentScope, + id.components[0].name, sweepFunctionlikeType, false + ) + } + + return sweepFunctionlikeType +} + +////////////////// Finding var refs & defs ///////////////////// +// (the first component of the selected identifier is a +// variable reference) + +/** + * Finds references and/or definitions of a ScopedVariableReference. + * + * The ScopedVariableReference may refer to a variable (including structs), a + * method, or a class property. If it refers to a variable, references and/or + * definitions will be found throughout the file. If it refers to a method or + * class property, references and/or definitions will be found throughout the + * associated class. + * + * @param scopedId The variable reference to find references and/or definitions for + * @param codeInfo The code info for the file containing the variable reference + * @param resultType Determines whether to return references, definitions, or both + * @returns Locations of references, definitions, or both, depending on the {@link resultType} + */ +function findVarSourcedRefsOrDefs ( + scopedId: ScopedVariableReference, codeInfo: MatlabCodeInfo, resultType: ResultType +): Location[] | RefsAndDefsResult { + const rawResult: VarSourcedRefsOrDefs = findVarSourcedRefsOrDefsHelper(scopedId, codeInfo, resultType) + + switch (rawResult.type) { + case VarSourcedReferenceType.Method: + return dottedFunctionlikeIdentifierNarrowCombineAndFormat( + rawResult.refs, rawResult.defs, scopedId, true, resultType + ) + case VarSourcedReferenceType.Property: + return dottedPropertyIdentifierNarrowCombineAndFormat( + rawResult.refs, rawResult.defs, rawResult.declaration, scopedId, resultType + ) + case VarSourcedReferenceType.Variable: + const needRefs = resultType !== ResultType.Definitions + const needDefs = resultType !== ResultType.References + + let refs: Location[] | undefined + let defs: Location[] | undefined + + if (needRefs) { + refs = dottedIdentifierNarrow( + rawResult.refs!, scopedId.id.components, scopedId.selectedComponentIndex, false + ) + } - return varInfoRanges.map(range => { - return Location.create(uri, range) - }) + if (needDefs) { + defs = dottedIdentifierNarrow( + rawResult.defs!, scopedId.id.components, scopedId.selectedComponentIndex, false + ) + } + + return formatRefsOrDefsResult(refs, defs, resultType) } +} - /** - * Searches for info about a function within the given code data. - * - * @param codeData The code data being searched - * @param functionName The name of the function being searched for - * @returns The info about the desired function, or null if it cannot be found - */ - getFunctionDeclaration (codeData: MatlabCodeData, functionName: string): MatlabFunctionInfo | null { - let functionDecl = codeData.functions.get(functionName) - if (codeData.isClassDef && (functionDecl == null || functionDecl.isPrototype)) { - // For classes, look in the methods list to better handle @folders - functionDecl = codeData.classInfo?.methods.get(functionName) ?? functionDecl +enum VarSourcedReferenceType { + Variable, + Method, + Property +} + +interface VarSourcedVariableRefsOrDefs { + type: VarSourcedReferenceType.Variable + refs?: FileScopedIdentifier[] + defs?: FileScopedIdentifier[] +} + +interface VarSourcedMethodRefsOrDefs { + type: VarSourcedReferenceType.Method + refs?: FileScopedIdentifier[] + defs: Location[] +} + +interface VarSourcedPropertyRefsOrDefs { + type: VarSourcedReferenceType.Property + refs?: FileScopedIdentifier[] + defs?: FileScopedIdentifier[] + declaration: Location +} + +type VarSourcedRefsOrDefs = + | VarSourcedVariableRefsOrDefs + | VarSourcedMethodRefsOrDefs + | VarSourcedPropertyRefsOrDefs + +/** + * Helper for {@link findVarSourcedRefsOrDefs} that returns a raw result. + * + * Take note of the following for the raw result: + * - Dotted identifier narrowing is not taken into account. + * - If {@link scopedId} refers to a method, the method declaration id is not returned + * in the references array. This identifier, returned in the definitions array, + * should be added as a reference by the caller if needed. + * - If {@link scopedId} refers to a property, the property declaration id is not returned + * in the references or definitions array. This identifier, returned separately as + * the declaration, should be added as a reference/definition by the caller if needed. + */ +function findVarSourcedRefsOrDefsHelper ( + scopedId: ScopedVariableReference, codeInfo: MatlabCodeInfo, resultType: ResultType +): VarSourcedRefsOrDefs { + const needRefs = resultType !== ResultType.Definitions + + // Note: We always need to look for defs if the var + // sourced reference type is Method, because we + // will need to add the method declaration into + // the references array (the parsed code data's + // function and unbound references does not include + // function declarations) + const needDefsVariableOrProperty = resultType !== ResultType.References + + const firstComponentName: string = scopedId.id.components[0].name + + if (scopedId.scope instanceof MatlabGlobalScopeInfo) { + if (scopedId.scope.globals.has(firstComponentName)) { + return getGlobalVarRefsOrDefs(codeInfo, firstComponentName, needRefs, needDefsVariableOrProperty) + } else { + return getScriptLevelVarRefsOrDefs( + scopedId.scope, firstComponentName, codeInfo.uri, needRefs, needDefsVariableOrProperty + ) } + } else { // MatlabFunctionScopeInfo + // Unless we find a shadowing declaration (function + // parameter or global declaration), the goal is to + // determine the widest function scope that is an + // ancestor of the original identifier's scope and + // which contains a definition of the identifier; + // this is where we need to start the sweep for + // refs/defs + + let sweepSourceScope: MatlabFunctionScopeInfo = scopedId.scope + + for (let currentScope: FunctionParentScope = scopedId.scope; + currentScope instanceof MatlabFunctionScopeInfo; + currentScope = currentScope.parentScope) + { + if (functionScopeHasShadowingDeclaration(currentScope, firstComponentName, true)) { + if (isDirectPresumedClassInstance(firstComponentName, currentScope) && scopedId.selectedComponentIndex > 0) { + const potentialClassMemberName = scopedId.id.components[1].name + + const referencedProperty: NamedRange | undefined = + codeInfo.associatedClassInfo?.properties.get(potentialClassMemberName) + + if (referencedProperty) { + return getVarSourcedPropertyRefsOrDefs( + Location.create( + getUri(codeInfo.associatedClassInfo!.classdefInfo!), + referencedProperty.range + ), potentialClassMemberName, codeInfo, needRefs, needDefsVariableOrProperty + ) + } - return functionDecl ?? null - } + const referencedMethod: MatlabFunctionInfo | undefined = + codeInfo.associatedClassInfo?.functionScopes.get(potentialClassMemberName) - /** - * Searches for info about a property within the given code data. - * - * @param codeData The code data being searched - * @param propertyName The name of the property being searched for - * @returns The info about the desired property, or null if it cannot be found - */ - getPropertyDeclaration (codeData: MatlabCodeData, propertyName: string): MatlabClassMemberInfo | null { - if (codeData.classInfo == null) { - return null + if (referencedMethod && !referencedMethod.isConstructor) { + return getVarSourcedMethodRefsOrDefs( + referencedMethod, potentialClassMemberName, codeInfo, needRefs + ) + } + } + + if (currentScope.globals.has(firstComponentName)) { + return getGlobalVarRefsOrDefs(codeInfo, firstComponentName, needRefs, needDefsVariableOrProperty) + } + + // If the variable is declared as a function parameter + // or global variable, this shadows any variable at a + // broader scope, so if we're not looking for property, + // method, or global variable refs/defs, start the + // sweep for refs/defs at the current scope + + sweepSourceScope = currentScope + break + } + + if ((currentScope.variables.get(firstComponentName)?.definitions.length ?? 0) > 0) { + sweepSourceScope = currentScope + } } - return codeData.classInfo.properties.get(propertyName) ?? null + return getVarRefsOrDefsFromFunctionSweep( + sweepSourceScope, firstComponentName, codeInfo.uri, needRefs, needDefsVariableOrProperty + ) } +} - /** - * Finds the definition(s) of an expression. - * - * For DocumentHighlight requests, only the file containing the expression will be - * searched. For all other request types, the entire workspace and the MATLAB path - * will be searched. - * - * @param uri The URI of the document containing the expression - * @param position The position of the expression - * @param expression The expression for which we are looking for the definition - * @param pathResolver The path resolver - * @param indexer The workspace indexer - * @param requestType The type of request - DocumentHighlight requests will only return - * definitions in the file referenced by `uri` - * @returns The definition location(s) - */ - async findDefinitions (uri: string, position: Position, expression: Expression, pathResolver: PathResolver, - indexer: Indexer, requestType: RequestType): Promise { - - // Get code data for current file - const codeData = FileInfoIndex.codeDataCache.get(uri) +/** + * Finds the references and/or definitions of a variable reference referring to a class property. + * + * The references and definitions will not include the property declaration, which will + * be returned separately. Dotted identifier narrowing is not taken into account. + * + * @param propertyDeclaration The location of the property's declaration + * @param propertyName The name of the property to find references and/or definitions for + * @param codeInfo The code info for the file containing the original variable reference + * @param needRefs Whether to collect references to the property + * @param needDefs Whether to collect definitions of the property + * @returns Information about the property's declaration and references and/or definitions + */ +function getVarSourcedPropertyRefsOrDefs ( + propertyDeclaration: Location, propertyName: string, codeInfo: MatlabCodeInfo, needRefs: boolean, needDefs: boolean +): VarSourcedPropertyRefsOrDefs { + const fileScopedRefs: FileScopedIdentifier[] | undefined = needRefs ? [] : undefined + const fileScopedDefs: FileScopedIdentifier[] | undefined = needDefs ? [] : undefined + + sweepAndAccumulatePropertyRefsOrDefs(fileScopedRefs, fileScopedDefs, codeInfo.associatedClassInfo!, propertyName) + + return { + type: VarSourcedReferenceType.Property, + refs: fileScopedRefs, + defs: fileScopedDefs, + declaration: propertyDeclaration + } +} + +/** + * Finds the references and/or definitions of a variable reference referring to a method. + * + * The references will not include the method declaration, which will be returned as a + * definition. Dotted identifier narrowing is not taken into account. + * + * @param methodInfo The method's function info + * @param methodName The name of the method to find references and/or definitions for + * @param codeInfo The code info for the file containing the original variable reference + * @param needRefs Whether to collect references to the method + * @returns Information about the method's definitions and, optionally, references + */ +function getVarSourcedMethodRefsOrDefs ( + methodInfo: MatlabFunctionInfo, methodName: string, codeInfo: MatlabCodeInfo, + needRefs: boolean +): VarSourcedMethodRefsOrDefs { + const fileScopedRefs: FileScopedIdentifier[] | undefined = needRefs ? [] : undefined + const defs: Location[] = [] + + const methodScopeInfo = methodInfo.functionScopeInfo + + if (methodScopeInfo) { + defs.push(Location.create(getUri(methodScopeInfo), methodScopeInfo.declarationNameId.range)) + } + + if (fileScopedRefs) { + sweepAndAccumulateFunctionlikeReferencesEntry( + fileScopedRefs, codeInfo.associatedClassInfo!, methodName, FunctionlikeType.Method, + methodInfo.isStaticMethod + ) + } - if (codeData == null) { - // File not indexed - unable to look for definition - reportTelemetry(requestType, 'File not indexed') - return [] + return { + type: VarSourcedReferenceType.Method, + refs: fileScopedRefs, + defs: defs + } +} + +/** + * Finds the references and/or definitions of a variable reference referring to a non-global, script-level variable. + * + * Dotted identifier narrowing is not taken into account. + * + * @param scope The global scope containing the variable reference + * @param firstComponentName The name of the first component of the variable reference to find + * references and/or definitions for + * @param uri The URI of the file containing the variable reference + * @param needRefs Whether to collect references to the variable + * @param needDefs Whether to collect definitions of the variable + * @returns Information about the variable's references and/or definitions + */ +function getScriptLevelVarRefsOrDefs ( + scope: MatlabGlobalScopeInfo, firstComponentName: string, uri: string, needRefs: boolean, needDefs: boolean +): VarSourcedVariableRefsOrDefs { + const res: VarSourcedVariableRefsOrDefs = { type: VarSourcedReferenceType.Variable } + + if (needRefs) { + res.refs = getFileScopedReferencesForFirstComponentName(scope.variables, firstComponentName, uri) + } + + if (needDefs) { + res.defs = getFileScopedVariableDefinitionsForFirstComponentName(scope.variables, firstComponentName, uri) + } + + return res +} + +/** + * Finds the references and/or definitions of a variable reference referring to a non-global, function-scoped variable. + * + * Dotted identifier narrowing is not taken into account. + * + * @param sweepSourceScope The function scope for which all of its nested scopes in which the variable + * is not shadowed by a function parameter or global declaration can contain references to the + * variable, and no other scopes can contain references to the variable + * @param firstComponentName The name of the first component of the variable reference to find + * references and/or definitions for + * @param uri The URI of the file containing the variable reference + * @param needRefs Whether to collect references to the variable + * @param needDefs Whether to collect definitions of the variable + * @returns Information about the variable's references and/or definitions + */ +function getVarRefsOrDefsFromFunctionSweep ( + sweepSourceScope: MatlabFunctionScopeInfo, firstComponentName: string, uri: string, needRefs: boolean, + needDefs: boolean +): VarSourcedVariableRefsOrDefs { + const fileScopedRefs: FileScopedIdentifier[] | undefined = needRefs ? [] : undefined + const fileScopedDefs: FileScopedIdentifier[] | undefined = needDefs ? [] : undefined + + sweepAndAccumulateVarRefsOrDefs(fileScopedRefs, fileScopedDefs, sweepSourceScope, firstComponentName, uri) + + return { + type: VarSourcedReferenceType.Variable, + refs: fileScopedRefs, + defs: fileScopedDefs + } +} + +/** + * Finds the references and/or definitions of a variable reference referring to a global variable. + * + * Dotted identifier narrowing is not taken into account. + * + * @param codeInfo The code info for the file containing the variable reference + * @param firstComponentName The name of the first component of the variable reference to find + * references and/or definitions for + * @param needRefs Whether to collect references to the variable + * @param needDefs Whether to collect definitions of the variable + * @returns Information about the variable's references and/or definitions + */ +function getGlobalVarRefsOrDefs ( + codeInfo: MatlabCodeInfo, firstComponentName: string, needRefs: boolean, needDefs: boolean +): VarSourcedVariableRefsOrDefs { + const fileScopedRefs: FileScopedIdentifier[] | undefined = needRefs ? [] : undefined + const fileScopedDefs: FileScopedIdentifier[] | undefined = needDefs ? [] : undefined + + sweepAndAccumulateGlobalVarRefsOrDefs( + fileScopedRefs, fileScopedDefs, codeInfo.globalScopeInfo, firstComponentName, codeInfo.uri, false + ) + + return { + type: VarSourcedReferenceType.Variable, + refs: fileScopedRefs, + defs: fileScopedDefs + } +} + +/** + * Accumulates the references and/or definitions of a variable reference referring to a non-global, function-scoped variable. + * + * This function "sweeps" down from the given scope, accumulating references and definitions from + * that scope and any nested scopes in which the variable is not shadowed by a function parameter + * or global declaration. + * + * Dotted identifier narrowing is not taken into account. + * + * @param refs Array to accumulate references in, or undefined if references are not needed + * @param defs Array to accumulate definitions in, or undefined if definitions are not needed + * @param scope The scope to sweep from + * @param firstComponentName The name of the first component of the variable reference to find + * references and/or definitions for + * @param uri The URI of the file containing the variable reference + */ +function sweepAndAccumulateVarRefsOrDefs ( + refs: FileScopedIdentifier[] | undefined, defs: FileScopedIdentifier[] | undefined, scope: MatlabFunctionScopeInfo, + firstComponentName: string, uri: string +): void { + refs?.push(...getFileScopedReferencesForFirstComponentName(scope.variables, firstComponentName, uri)) + defs?.push(...getFileScopedVariableDefinitionsForFirstComponentName(scope.variables, firstComponentName, uri)) + + for (const nestedFunction of scope.functionScopes.values()) { + const nestedFunctionScope = nestedFunction.functionScopeInfo + if (nestedFunctionScope && !functionScopeHasShadowingDeclaration(nestedFunctionScope, firstComponentName, true)) { + sweepAndAccumulateVarRefsOrDefs(refs, defs, nestedFunctionScope, firstComponentName, uri) + } + } +} + +/** + * Accumulates the references and/or definitions of a variable reference referring to a global variable. + * + * This function "sweeps" down from the given scope (which should initially be the global + * scope) and accumulates only those references/definitions in the current scope and nested + * scopes where the first component name of the variable in question is considered global. + * + * Dotted identifier narrowing is not taken into account. + * + * @param refs Array to accumulate references in, or undefined if references are not needed + * @param defs Array to accumulate definitions in, or undefined if definitions are not needed + * @param scope The scope to sweep from (should initially be the global scope containing the + * variable reference) + * @param firstComponentName The name of the first component of the variable reference to find + * references and/or definitions for + * @param uri The URI of the file containing the variable reference + * @param declaredGlobalInFunction Whether {@link firstComponentName} has been declared global + * in a parent function scope (should initially be false) + */ +function sweepAndAccumulateGlobalVarRefsOrDefs ( + refs: FileScopedIdentifier[] | undefined, defs: FileScopedIdentifier[] | undefined, scope: FunctionContainer, + firstComponentName: string, uri: string, declaredGlobalInFunction: boolean +): void { + if (scope instanceof MatlabGlobalScopeInfo) { + if (scope.globals.has(firstComponentName)) { + refs?.push(...getFileScopedReferencesForFirstComponentName(scope.variables, firstComponentName, uri)) + defs?.push(...getFileScopedVariableDefinitionsForFirstComponentName(scope.variables, firstComponentName, uri)) } - reportTelemetry(requestType) + if (scope.classScope) { + sweepAndAccumulateGlobalVarRefsOrDefs( + refs, defs, scope.classScope, firstComponentName, uri, declaredGlobalInFunction + ) + } + } else if (scope instanceof MatlabFunctionScopeInfo) { + if (!declaredGlobalInFunction) { + if (scope.globals.has(firstComponentName)) { + declaredGlobalInFunction = true + } + } else { + // It is not possible to declare a variable global + // in a function, shadow it with a nested function + // parameter, and then declare it global again in + // a subsequent nested function + if (functionScopeHasShadowingDeclaration(scope, firstComponentName, false) + && !scope.globals.has(firstComponentName)) + { + return + } + } - // First check within the current file's code data - const definitionInCodeData = this.findDefinitionInCodeData(uri, position, expression, codeData) + if (declaredGlobalInFunction) { + refs?.push(...getFileScopedReferencesForFirstComponentName(scope.variables, firstComponentName, uri)) + defs?.push(...getFileScopedVariableDefinitionsForFirstComponentName(scope.variables, firstComponentName, uri)) + } + } - if (definitionInCodeData != null) { - return definitionInCodeData + // For MatlabGlobalScopeInfo, MatlabClassInfo, or MatlabFunctionScopeInfo + for (const functionInfo of scope.functionScopes.values()) { + if (functionInfo.functionScopeInfo) { + sweepAndAccumulateGlobalVarRefsOrDefs( + refs, defs, functionInfo.functionScopeInfo, firstComponentName, uri, declaredGlobalInFunction + ) } + } +} + +//////////////////// Finding property references & definitions //////////////////// +// (can be called from var-sourced refs/defs (if the +// selected identifier is a dot-syntax property reference) +// or property declaration refs/defs) + +/** + * Accumulates all references and/or definitions of a property in a given class. + * + * The property declaration is not accumulated into the references or definitions. + * Dotted identifier narrowing is not taken into account. + * + * @param refs Array to accumulate references in, or undefined if references are not needed + * @param defs Array to accumulate definitions in, or undefined if definitions are not needed + * @param classInfo The class in which the property is defined + * @param propertyName The name of the property to find references and/or definitions for + */ +function sweepAndAccumulatePropertyRefsOrDefs ( + refs: FileScopedIdentifier[] | undefined, defs: FileScopedIdentifier[] | undefined, classInfo: MatlabClassInfo, + propertyName: string +): void { + for (const method of classInfo.functionScopes.values()) { + const methodFunctionScopeInfo: MatlabFunctionScopeInfo | undefined = method.functionScopeInfo - if (requestType === RequestType.DocumentHighlight) { - return [] + if (methodFunctionScopeInfo) { + const presumedClassInstanceName: string | null = getDirectPresumedClassInstanceName(methodFunctionScopeInfo) + + if (presumedClassInstanceName) { + sweepAndAccumulatePropertyRefsOrDefsFunctionScope( + refs, defs, methodFunctionScopeInfo, propertyName, presumedClassInstanceName + ) + } } + } +} - // Check the MATLAB path - const definitionOnPath = await this.findDefinitionOnPath(uri, position, expression, pathResolver, indexer) +/** + * Accumulates the references and/or definitions of a property in a given function scope and its nested scopes. + * + * This function "sweeps" down from the given scope, accumulating all references and + * definitions to the property from that scope and any nested scopes. + * + * Dotted identifier narrowing is not taken into account. + * + * @param refs Array to accumulate references in, or undefined if references are not needed + * @param defs Array to accumulate definitions in, or undefined if definitions are not needed + * @param scope The scope to sweep from; should have a method scope with a presumed class + * instance name as an ancestor + * @param propertyName The name of the property to find references and/or definitions for + * @param presumedClassInstanceName The name established as a presumed class instance name by + * the method scope that {@link scope} is a descendant of + */ +function sweepAndAccumulatePropertyRefsOrDefsFunctionScope ( + refs: FileScopedIdentifier[] | undefined, defs: FileScopedIdentifier[] | undefined, scope: MatlabFunctionScopeInfo, + propertyName: string, presumedClassInstanceName: string +): void { + if (!scope.functionInfo.isMethod && functionScopeHasShadowingDeclaration(scope, presumedClassInstanceName, true)) { + return + } - if (definitionOnPath != null) { - return definitionOnPath + const scopeUri = getUri(scope) + + refs?.push( + ...getFileScopedReferencesForFirstComponentName( + scope.variables, presumedClassInstanceName, scopeUri, (id: Identifier) => ( + id.components.length >= 2 && id.components[1].name === propertyName + ) + ) + ) + + defs?.push( + ...getFileScopedVariableDefinitionsForFirstComponentName( + scope.variables, presumedClassInstanceName, scopeUri, (id: Identifier) => ( + id.components.length >= 2 && id.components[1].name === propertyName + ) + ) + ) + + for (const nestedFunction of scope.functionScopes.values()) { + if (nestedFunction.functionScopeInfo) { + sweepAndAccumulatePropertyRefsOrDefsFunctionScope( + refs, defs, nestedFunction.functionScopeInfo, propertyName, presumedClassInstanceName + ) } - - // If not on path, may be in user's workspace - return this.findDefinitionInWorkspace(uri, expression) } +} + +//////////////////// Finding function-like references ////////////////////// +// (i.e., finding the references of an existing function, +// an existing method, or an unbound identifier; can be +// called from var-sourced refs (if the selected identifier +// is a dot-syntax method call), function or unbound refs, +// or function declaration refs) + +interface FileScopedIdentifier { + uri: string + identifier: Identifier +} + +enum FunctionlikeType { + Function, + Unbound, // presumably unbound reference (could actually refer to a function or class defined in a different file) + Method +} + +interface FunctionlikeTypeParamsFunctionOption { + type: FunctionlikeType.Function + initialCall: boolean /** Whether this is the initial call to a sweepAndAccumulateFunctionlikeReferences helper */ +} +interface FunctionlikeTypeParamsUnboundOption { + type: FunctionlikeType.Unbound + shadowingMethodFound: boolean /** Whether a method has been found that could potentially shadow certain references */ + presumedClassInstanceName: string | undefined /** Any name considered a presumed class instance */ +} + +interface FunctionlikeTypeParamsMethodOption { + type: FunctionlikeType.Method /** - * Searches the given code data for the definition(s) of the given expression - * - * @param uri The URI corresponding to the provided code data - * @param position The position of the expression - * @param expression The expression for which we are looking for the definition - * @param codeData The code data which is being searched - * @returns The definition location(s), or null if no definition was found + * Whether identifiers that appear to be function-syntax + * references to the method should be skipped, either + * because a function with the same name was found that + * can shadow the method for function-syntax calls or + * because the method is static */ - private findDefinitionInCodeData (uri: string, position: Position, expression: Expression, codeData: MatlabCodeData): Location[] | null { - // If first part of expression targeted - look for a local variable - if (expression.selectedComponent === 0) { - const containingFunction = codeData.findContainingFunction(position) - if (containingFunction != null) { - const varDefs = this.getVariableDefsOrRefs(containingFunction, expression.unqualifiedTarget, uri, RequestType.Definition) - if (varDefs != null) { - return varDefs - } + skipFunctionSyntaxReferences: boolean + presumedClassInstanceName: string | undefined /** Any name considered a presumed class instance */ +} + +type FunctionlikeTypeParams = + | FunctionlikeTypeParamsFunctionOption + | FunctionlikeTypeParamsUnboundOption + | FunctionlikeTypeParamsMethodOption + +/** + * Entry point for accumulating the references of a function, presumably unbound reference, or method. + * + * Dotted identifier narrowing is not taken into account. + * + * @param fileScopedRefs The array to accumulate references into + * @param scope The scope to start the sweep at: + * - For {@link functionlikeType} = {@link FunctionlikeType.Function}, this should be the parent + * scope of the scope of the function being *referred to* by the identifier to find references + * for + * - For {@link functionlikeType} = {@link FunctionlikeType.Unbound}, this should be the global + * scope containing the original presumably unbound identifier to find references for + * - For {@link functionlikeType} = {@link FunctionlikeType.Method}, this should be the + * associated class containing the method being referred to + * @param idFirstComponentName The first component name of the entity referred to by the identifier + * to find references for (NOT the first component name of the identifier to find references for) + * - e.g., if finding references to a method "fun" this should always be "fun", regardless of + * whether the original identifier/identifier's expression was "fun(obj)" or "obj.fun" + * - e.g., if finding references to a presumably unbound reference "a.b.c" this should be "a" + * @param functionlikeType The type of function-like entity referred to by the identifier to find + * references for (function, presumably unbound reference, or method); for Function or Method, + * the function/method must already have been verified to actually exist (in the file for + * Function or in the associated class for Method; if it does not exist, Unbound should be used + * instead) + * @param isStaticMethod Whether the entity referred to by the identifier to find references for is + * a static method + */ +function sweepAndAccumulateFunctionlikeReferencesEntry ( + fileScopedRefs: FileScopedIdentifier[], scope: FunctionContainer, idFirstComponentName: string, + functionlikeType: FunctionlikeType, isStaticMethod?: boolean +): void { + let tp: FunctionlikeTypeParams + + switch (functionlikeType) { + case FunctionlikeType.Function: + tp = { + type: functionlikeType, + initialCall: true } + break + case FunctionlikeType.Unbound: + tp = { + type: functionlikeType, + shadowingMethodFound: false, + presumedClassInstanceName: undefined + } + break + case FunctionlikeType.Method: + tp = { + type: functionlikeType, + skipFunctionSyntaxReferences: !!isStaticMethod, + presumedClassInstanceName: undefined + } + break + } + + if (scope instanceof MatlabGlobalScopeInfo) { + sweepAndAccumulateFunctionlikeReferencesGlobalScope(fileScopedRefs, scope, idFirstComponentName, tp) + } else if (scope instanceof MatlabFunctionScopeInfo) { + sweepAndAccumulateFunctionlikeReferencesFunctionScope(fileScopedRefs, scope, idFirstComponentName, tp) + } else { // MatlabClassInfo + sweepAndAccumulateFunctionlikeReferencesClass(fileScopedRefs, scope, idFirstComponentName, tp) + } +} + +/** + * Helper for {@link sweepAndAccumulateFunctionlikeReferencesEntry} to handle the case + * where {@link scope} is a global scope. + * + * @param tp Holds different parameters needed by the algorithm depending on the + * {@link FunctionlikeType} of the entity referred to by the original identifier + * to find references for; see {@link FunctionlikeTypeParamsFunctionOption} and + * {@link FunctionlikeTypeParamsUnboundOption} for details. (In this helper, the + * {@link FunctionlikeType} should be {@link FunctionlikeType.Function} or + * {@link FunctionlikeType.Unbound}) + */ +function sweepAndAccumulateFunctionlikeReferencesGlobalScope ( + fileScopedRefs: FileScopedIdentifier[], scope: MatlabGlobalScopeInfo, idFirstComponentName: string, + tp: FunctionlikeTypeParams +): void { + if (tp.type === FunctionlikeType.Unbound) { + const potentialShadowingMethod = + scope.codeInfo.associatedClassInfo?.functionScopes.get(idFirstComponentName) + + if (potentialShadowingMethod && !potentialShadowingMethod.isStaticMethod + && !potentialShadowingMethod.isConstructor) + { + tp.shadowingMethodFound = true } + } + + const scopeUri = getUri(scope) + fileScopedRefs.push( + ...getFileScopedReferencesForFirstComponentName( + scope.functionOrUnboundReferences, idFirstComponentName, scopeUri + ) + ) + + if (scope.classScope) { + sweepAndAccumulateFunctionlikeReferencesClass( + fileScopedRefs, scope.classScope, idFirstComponentName, + tp.type === FunctionlikeType.Function ? {...tp, initialCall: false} : {...tp} + ) + } - // Check for functions in file - let functionDeclaration = this.getFunctionDeclaration(codeData, expression.fullExpression) - if (functionDeclaration != null) { - return [this.getLocationForFunctionDeclaration(functionDeclaration)] + for (const functionInfo of scope.functionScopes.values()) { + if (functionInfo.functionScopeInfo) { + sweepAndAccumulateFunctionlikeReferencesFunctionScope( + fileScopedRefs, functionInfo.functionScopeInfo, idFirstComponentName, + tp.type === FunctionlikeType.Function ? {...tp, initialCall: false} : {...tp} + ) } + } +} - // Check for definitions within classes - if (codeData.isClassDef && codeData.classInfo != null) { - // Look for methods/properties within class definitions (e.g. obj.foo) - functionDeclaration = this.getFunctionDeclaration(codeData, expression.last) - if (functionDeclaration != null) { - return [this.getLocationForFunctionDeclaration(functionDeclaration)] - } +/** + * Helper for {@link sweepAndAccumulateFunctionlikeReferencesEntry} to handle the case + * where {@link scope} is a function scope. + * + * @param tp Holds different parameters needed by the algorithm depending on the + * {@link FunctionlikeType} of the entity referred to by the original identifier + * to find references for; see {@link FunctionlikeTypeParamsFunctionOption}, + * {@link FunctionlikeTypeParamsUnboundOption}, and + * {@link FunctionlikeTypeParamsMethodOption} for details + */ +function sweepAndAccumulateFunctionlikeReferencesFunctionScope ( + fileScopedRefs: FileScopedIdentifier[], scope: MatlabFunctionScopeInfo, idFirstComponentName: string, + tp: FunctionlikeTypeParams +): void { + // Check shadowing + if (scope.functionScopes.has(idFirstComponentName)) { + if (tp.type === FunctionlikeType.Unbound || (tp.type === FunctionlikeType.Function && !tp.initialCall)) { + return + } + if (tp.type === FunctionlikeType.Method) { + tp.skipFunctionSyntaxReferences = true + } + } - // Look for possible properties - if (expression.selectedComponent === 1) { - const propertyDeclaration = this.getPropertyDeclaration(codeData, expression.last) - if (propertyDeclaration != null) { - const propertyRange = Range.create(propertyDeclaration.range.start, propertyDeclaration.range.end) - const uri = codeData.classInfo.uri - if (uri != null) { - return [Location.create(uri, propertyRange)] - } + // Update presumed class instance name + if (tp.type === FunctionlikeType.Unbound || tp.type === FunctionlikeType.Method) { + if (!tp.presumedClassInstanceName) { + tp.presumedClassInstanceName = getDirectPresumedClassInstanceName(scope) ?? undefined + } else { + if (functionScopeHasShadowingDeclaration(scope, tp.presumedClassInstanceName, true)) { + if (tp.type === FunctionlikeType.Method) { + return } + tp.presumedClassInstanceName = undefined } } + } - return null + let functionSyntaxCallFilterPredicate: (id: FunctionOrUnboundIdentifier) => boolean + switch (tp.type) { + case FunctionlikeType.Function: + functionSyntaxCallFilterPredicate = () => true + break + case FunctionlikeType.Unbound: + functionSyntaxCallFilterPredicate = (id) => ( + !tp.shadowingMethodFound || !id.firstArgIdName || (id.firstArgIdName !== tp.presumedClassInstanceName) + ) + break + case FunctionlikeType.Method: + functionSyntaxCallFilterPredicate = (id) => ( + !!id.firstArgIdName && (id.firstArgIdName === tp.presumedClassInstanceName) + ) + break } - /** - * Gets the location of the given function's declaration. If the function does not have - * a definite declaration, provides a location at the beginning of the file. For example, - * this may be the case for built-in functions like 'plot'. - * - * @param functionInfo Info about the function - * @returns The location of the function declaration - */ - private getLocationForFunctionDeclaration (functionInfo: MatlabFunctionInfo): Location { - const range = functionInfo.declaration ?? Range.create(0, 0, 0, 0) - return Location.create(functionInfo.uri, range) + const scopeUri = getUri(scope) + + // Function-syntax calls + if (!(tp.type === FunctionlikeType.Method && tp.skipFunctionSyntaxReferences)) { + fileScopedRefs.push( + ...getFileScopedReferencesForFirstComponentName( + scope.functionOrUnboundReferences, idFirstComponentName, scopeUri, functionSyntaxCallFilterPredicate + ) + ) } - /** - * Searches the MATLAB path for the definition of the given expression - * - * @param uri The URI of the file containing the expression - * @param position The position of the expression - * @param expression The expression for which we are looking for the definition - * @param matlabConnection The connection to MATLAB - * @param pathResolver The path resolver - * @param indexer The workspace indexer - * @returns The definition location(s), or null if no definition was found - */ - private async findDefinitionOnPath (uri: string, position: Position, expression: Expression, pathResolver: PathResolver, indexer: Indexer): Promise { - const resolvedUri = await pathResolver.resolvePath(expression.targetExpression, uri) + // Dot-syntax calls + if (tp.type === FunctionlikeType.Method && tp.presumedClassInstanceName) { + fileScopedRefs.push( + ...getFileScopedReferencesForFirstComponentName( + scope.variables, tp.presumedClassInstanceName, scopeUri, (id: Identifier) => ( + id.components.length >= 2 && id.components[1].name === idFirstComponentName + ) + ) + ) + } - if (resolvedUri === '' || resolvedUri === null) { - // Not found - return null + for (const nestedFunction of scope.functionScopes.values()) { + if (nestedFunction.functionScopeInfo) { + sweepAndAccumulateFunctionlikeReferencesFunctionScope( + fileScopedRefs, nestedFunction.functionScopeInfo, idFirstComponentName, + tp.type === FunctionlikeType.Function ? {...tp, initialCall: false} : {...tp} + ) } + } +} - // Ensure URI is not a directory. This can occur with some packages. - const fileStats = await fs.stat(FileNameUtils.getFilePathFromUri(resolvedUri)) - if (fileStats.isDirectory()) { - return null +/** + * Helper for {@link sweepAndAccumulateFunctionlikeReferencesEntry} to handle the case + * where {@link scope} is a class. + * + * @param tp Holds different parameters needed by the algorithm depending on the + * {@link FunctionlikeType} of the entity referred to by the original identifier + * to find references for; see {@link FunctionlikeTypeParamsFunctionOption}, + * {@link FunctionlikeTypeParamsUnboundOption}, and + * {@link FunctionlikeTypeParamsMethodOption} for details + */ +function sweepAndAccumulateFunctionlikeReferencesClass ( + fileScopedRefs: FileScopedIdentifier[], scope: MatlabClassInfo, idFirstComponentName: string, + tp: FunctionlikeTypeParams +): void { + for (const method of scope.functionScopes.values()) { + const methodFunctionScopeInfo: MatlabFunctionScopeInfo | undefined = method.functionScopeInfo + if (!methodFunctionScopeInfo) { + continue + } + + // If we are looking for function or unbound references, the + // original identifier must have been in a classdef file, and + // we only want to consider method scopes in that same file in + // that case + if (tp.type === FunctionlikeType.Method || methodFunctionScopeInfo.parentScope instanceof MatlabClassdefInfo) { + if (tp.type === FunctionlikeType.Function) { + tp.initialCall = false + } + + if (tp.type === FunctionlikeType.Method) { + const potentialShadowingLocalFunction: MatlabFunctionInfo | undefined = + getGlobalScope(methodFunctionScopeInfo).functionScopes.get(idFirstComponentName) + + if (potentialShadowingLocalFunction && !potentialShadowingLocalFunction.isMethod) { + tp.skipFunctionSyntaxReferences = true + } + } + + sweepAndAccumulateFunctionlikeReferencesFunctionScope( + fileScopedRefs, methodFunctionScopeInfo, idFirstComponentName, {...tp} + ) } + } +} - if (!FileInfoIndex.codeDataCache.has(resolvedUri)) { - // Index target file, if necessary - await indexer.indexFile(resolvedUri) +//////////////////// Dotted identifier narrowing ///////////////////// + +/** + * Performs dotted identifier narrowing on a collection of identifiers. + * + * @param unnarrowedIds The collection of identifiers representing the unnarrowed + * references or definitions of a source identifier + * @param adjustedScopedIdComponents The components of the source identifier, with + * the first component of a dot-syntax method or property reference omitted + * @param adjustedSelectedComponentIndex The index of the selected component in + * {@link adjustedScopedIdComponents} + * @param areMethodOrPropertyRefs Whether the references are of a method or class property (regardless + * of source identifier) + * @returns Locations of the final references or definitions + */ +function dottedIdentifierNarrow ( + unnarrowedIds: FileScopedIdentifier[], adjustedScopedIdComponents: NamedRange[], + adjustedSelectedComponentIndex: number, areMethodOrPropertyRefs: boolean +): Location[] { + const finalLocations: Location[] = [] + + for (const ref of unnarrowedIds) { + let adjustedRefComponents: NamedRange[] + + if (areMethodOrPropertyRefs && ref.identifier.components.length > 1) { + adjustedRefComponents = ref.identifier.components.slice(1) + } else { + adjustedRefComponents = ref.identifier.components } - const codeData = FileInfoIndex.codeDataCache.get(resolvedUri) + if (adjustedRefComponents.length > adjustedSelectedComponentIndex) { + let isMatch = true - // Find definition location within determined file - if (codeData != null) { - const definition = this.findDefinitionInCodeData(resolvedUri, position, expression, codeData) + for (let i = 1; i <= adjustedSelectedComponentIndex; i++) { + if (adjustedRefComponents[i].name !== adjustedScopedIdComponents[i].name) { + isMatch = false + break + } + } - if (definition != null) { - return definition + if (isMatch) { + finalLocations.push(Location.create(ref.uri, adjustedRefComponents[adjustedSelectedComponentIndex].range)) } } + } + + return finalLocations +} - // If a definition location cannot be identified, default to the beginning of the file. - // This could be the case for builtin functions which don't actually have a definition in a .m file (e.g. plot). - return [Location.create(resolvedUri, Range.create(0, 0, 0, 0))] +/** + * Finalizes the references and definitions of a function-like entity. + * + * Performs dotted identifier narrowing, adds the declaration into the references list + * if necessary, and formats the results. + * + * @param refs The collection of identifiers representing the unnarrowed references + * of a source identifier, or undefined if references are not needed + * @param defs The collection of identifiers representing the unnarrowed definitions + * of a source identifier + * @param scopedId The source identifier of which references and/or definitions were + * collected + * @param areForMethod Whether the references are of a method (regardless of source + * identifier) + * @param resultType Determines whether to return references, definitions, or both + * @returns Locations of the final references, definitions, or both, depending on + * the {@link resultType} + */ +function dottedFunctionlikeIdentifierNarrowCombineAndFormat ( + refs: FileScopedIdentifier[] | undefined, defs: Location[], + scopedId: ScopedVariableReference | ScopedFunctionOrUnboundReference | ScopedFunctionDeclarationId, + areForMethod: boolean, resultType: ResultType +): Location[] | RefsAndDefsResult { + let finalRefs: Location[] | undefined + let finalDefs: Location[] + + let adjustedScopedIdComponents: NamedRange[] + let adjustedSelectedComponentIndex: number + + if (scopedId instanceof ScopedFunctionDeclarationId) { + adjustedScopedIdComponents = [scopedId.id] + adjustedSelectedComponentIndex = 0 + } else if (areForMethod && scopedId.id.components.length > 1) { + adjustedScopedIdComponents = scopedId.id.components.slice(1) + adjustedSelectedComponentIndex = scopedId.selectedComponentIndex - 1 + } else { + adjustedScopedIdComponents = scopedId.id.components + adjustedSelectedComponentIndex = scopedId.selectedComponentIndex } - /** - * Searches the (indexed) workspace for the definition of the given expression. These files may not be on the MATLAB path. - * - * @param uri The URI of the file containing the expression - * @param expression The expression for which we are looking for the definition - * @returns The definition location(s). Returns an empty array if no definitions found. - */ - private findDefinitionInWorkspace (uri: string, expression: Expression): Location[] { - const expressionToMatch = expression.fullExpression + if (adjustedSelectedComponentIndex === 0) { + finalDefs = defs + } else { + finalDefs = [] + } - for (const [fileUri, fileCodeData] of FileInfoIndex.codeDataCache) { - if (uri === fileUri) continue // Already looked in the current file + if (refs) { + finalRefs = dottedIdentifierNarrow( + refs, adjustedScopedIdComponents, adjustedSelectedComponentIndex, areForMethod + ) - let match = fileCodeData.packageName === '' ? '' : fileCodeData.packageName + '.' + finalRefs.push(...finalDefs) + } - if (fileCodeData.classInfo != null) { - const classUri = fileCodeData.classInfo.uri - if (classUri == null) continue + return formatRefsOrDefsResult(finalRefs, finalDefs, resultType) +} - // Check class name - match += fileCodeData.classInfo.name - if (expressionToMatch === match) { - const range = fileCodeData.classInfo.declaration ?? Range.create(0, 0, 0, 0) - return [Location.create(classUri, range)] - } +/** + * Finalizes the references and definitions of a class property. + * + * Performs dotted identifier narrowing, adds the declaration into the references + * and definitions lists if necessary, and formats the results. + * + * @param refs The collection of identifiers representing the unnarrowed references + * of a source identifier, or undefined if references are not needed + * @param defs The collection of identifiers representing the unnarrowed definitions + * of a source identifier, or undefined if definitions are not needed + * @param declaration The location of the declaration of the property for which + * references and/or definitions were collected + * @param scopedId The source identifier of which references and/or definitions were + * collected + * @param resultType Determines whether to return references, definitions, or both + * @returns Locations of the final references, definitions, or both, depending on + * the {@link resultType} + */ +function dottedPropertyIdentifierNarrowCombineAndFormat ( + refs: FileScopedIdentifier[] | undefined, defs: FileScopedIdentifier[] | undefined, declaration: Location, + scopedId: ScopedVariableReference | ScopedPropertyDeclarationId, resultType: ResultType +): Location[] | RefsAndDefsResult { + let finalRefs: Location[] | undefined + let finalDefs: Location[] | undefined + + let adjustedScopedIdComponents: NamedRange[] + let adjustedSelectedComponentIndex: number + + if (scopedId instanceof ScopedPropertyDeclarationId) { + adjustedScopedIdComponents = [scopedId.id] + adjustedSelectedComponentIndex = 0 + } else { // ScopedVariableReference + // If we looked for property refs/defs from a variable + // reference, the selected component index must be >= 1 + // and the first component must be a presumed class + // instance + adjustedScopedIdComponents = scopedId.id.components.slice(1) + adjustedSelectedComponentIndex = scopedId.selectedComponentIndex - 1 + } - // Check properties - const matchedProperty = this.findMatchingClassMember(expressionToMatch, match, classUri, fileCodeData.classInfo.properties) - if (matchedProperty != null) { - return matchedProperty - } + if (refs) { + finalRefs = dottedIdentifierNarrow( + refs, adjustedScopedIdComponents, adjustedSelectedComponentIndex, true + ) - // Check enums - const matchedEnum = this.findMatchingClassMember(expressionToMatch, match, classUri, fileCodeData.classInfo.enumerations) - if (matchedEnum != null) { - return matchedEnum - } - } + if (adjustedSelectedComponentIndex === 0) { + finalRefs.push(declaration) + } + } - // Check functions - for (const [funcName, funcData] of fileCodeData.functions) { - const funcMatch = (match === '') ? funcName : match + '.' + funcName + if (defs) { + finalDefs = dottedIdentifierNarrow( + defs, adjustedScopedIdComponents, adjustedSelectedComponentIndex, true + ) - // Need to ensure that a function with a matching name should also be visible from the current file. - if (expressionToMatch === funcMatch && this.isFunctionVisibleFromUri(uri, funcData)) { - const range = funcData.declaration ?? Range.create(0, 0, 0, 0) - return [Location.create(funcData.uri, range)] - } + if (adjustedSelectedComponentIndex === 0) { + finalDefs.push(declaration) + } + } + + return formatRefsOrDefsResult(finalRefs, finalDefs, resultType) +} + +/////////////////////// Finding definitions on path using PathResolver //////////////////// + +type ScopedOutsideReference = ClassReference | ScopedFunctionOrUnboundReference + +async function findDefinitionsOnPathWithExpansion ( + scopedId: ScopedOutsideReference, sourceUri: string, pathResolver: PathResolver, indexer: Indexer, + fileInfoIndex: FileInfoIndex +): Promise { + let definitionUri: string | null = null + let currentComponentIndex: number + + if (scopedId instanceof ClassReference) { + definitionUri = await findDefinitionUriOnPath(scopedId.id.name, sourceUri, pathResolver) + } else { // ScopedFunctionOrUnboundReference + for (currentComponentIndex = scopedId.selectedComponentIndex; + currentComponentIndex < scopedId.id.components.length; + currentComponentIndex++) + { + const expressionToResolve: string = scopedId.id.components.slice(0, currentComponentIndex + 1) + .map(component => component.name) + .join('.') + + definitionUri = await findDefinitionUriOnPath(expressionToResolve, sourceUri, pathResolver) + + if (definitionUri) { + break } } + } + if (!definitionUri) { return [] } - /** - * Finds the class member (property or enumeration) in the given map which matches to given expression. - * - * @param expressionToMatch The expression being compared against - * @param matchPrefix The prefix which should be attached to the class members before comparison - * @param classUri The URI for the current class - * @param classMemberMap The map of class members - * @returns An array containing the location of the matched class member, or null if one was not found - */ - private findMatchingClassMember (expressionToMatch: string, matchPrefix: string, classUri: string, classMemberMap: Map): Location[] | null { - for (const [memberName, memberData] of classMemberMap) { - const match = matchPrefix + '.' + memberName - if (expressionToMatch === match) { - return [Location.create(classUri, memberData.range)] - } + let unqualifiedDefinitionsTarget: string + + if (scopedId instanceof ClassReference) { + unqualifiedDefinitionsTarget = scopedId.id.name.substring(scopedId.id.name.lastIndexOf('.') + 1) + } else { // ScopedFunctionOrUnboundReference + unqualifiedDefinitionsTarget = scopedId.id.components[currentComponentIndex!].name + } + + const defLocations: Location[] | null = await findDefinitionsFromOutsideFile( + unqualifiedDefinitionsTarget, definitionUri, indexer, fileInfoIndex + ) + + if (defLocations) { + return defLocations + } + + // If a specific definition location cannot be identified, + // default to the beginning of the file. This could be the case + // for builtin functions which don't actually have a definition + // in a .m file (e.g. plot). + return [Location.create(definitionUri, Range.create(0, 0, 0, 0))] +} + +async function findDefinitionUriOnPath ( + expressionToResolve: string, sourceUri: string, pathResolver: PathResolver +): Promise { + const resolvedUri: string | null = await pathResolver.resolvePath(expressionToResolve, sourceUri) + + if (resolvedUri) { + // Ensure URI is not a directory. This can occur with some packages. + const fileStats = await fs.stat(URI.parse(resolvedUri).fsPath) + if (!fileStats.isDirectory()) { + return resolvedUri + } + } + + return null +} + +async function findDefinitionsFromOutsideFile ( + unqualifiedDefinitionsTarget: string, definitionUri: string, indexer: Indexer, fileInfoIndex: FileInfoIndex +): Promise { + if (!fileInfoIndex.codeInfoCache.has(definitionUri)) { + // Index target file, if necessary + await indexer.indexFile(definitionUri) + } + + const defFileCodeInfo = fileInfoIndex.codeInfoCache.get(definitionUri) + + // Find definition location(s) within determined file + if (defFileCodeInfo) { + const defLocations: Location[] = + findClassRefsOrDefs(unqualifiedDefinitionsTarget, defFileCodeInfo, ResultType.Definitions) + + if (defLocations.length > 0) { + return defLocations + } + + const matchingFunction: MatlabFunctionInfo | undefined = + defFileCodeInfo.globalScopeInfo.functionScopes.get(unqualifiedDefinitionsTarget) + + if (matchingFunction?.isPublic && matchingFunction.functionScopeInfo) { + return [Location.create( + definitionUri, matchingFunction.functionScopeInfo.declarationNameId.range + )] } + } + + return null +} +///////////////////////////////// Helpers ///////////////////////////////// + +function getScopedIdAndCodeInfo ( + uri: string, position: Position, fileInfoIndex: FileInfoIndex, documentManager: TextDocuments, requestType: RequestType +): [ScopedReference, MatlabCodeInfo] | null { + const codeInfo: MatlabCodeInfo | undefined = fileInfoIndex.codeInfoCache.get(uri) + if (codeInfo == null) { + reportTelemetry(requestType, 'File not indexed') return null } - /** - * Determines whether the given function should be visible from the given file URI. - * The function is visible if it is contained within the same file, or is public. - * - * @param uri The file's URI - * @param funcData The function data - * @returns true if the function should be visible from the given URI; false otherwise - */ - private isFunctionVisibleFromUri (uri: string, funcData: MatlabFunctionInfo): boolean { - return uri === funcData.uri || funcData.visibility === FunctionVisibility.Public + const textDocument = documentManager.get(uri) + if (textDocument == null) { + reportTelemetry(requestType, 'No document') + return null + } + + const scopedId: ScopedReference | null = getIdentifierAtPosition(codeInfo, position) + if (scopedId == null) { + if (requestType !== RequestType.DocumentHighlight) { + reportTelemetry(requestType, 'Target is not an identifier') + } + return null + } + + return [scopedId, codeInfo] +} + +function getGlobalScope (scope: FunctionParentScope): MatlabGlobalScopeInfo { + if (scope instanceof MatlabGlobalScopeInfo) { + return scope + } + + return getGlobalScope(scope.parentScope) +} + +function getUri (scope: FunctionParentScope): string { + return getGlobalScope(scope).codeInfo.uri +} + +function functionScopeHasShadowingDeclaration ( + scope: MatlabFunctionScopeInfo, firstComponentName: string, checkForGlobals: boolean +): boolean { + return scope.inputArgs.has(firstComponentName) + || scope.outputArgs.has(firstComponentName) + || (checkForGlobals && scope.globals.has(firstComponentName)) +} + +function isDirectPresumedClassInstance (firstComponentName: string, functionScope: MatlabFunctionScopeInfo): boolean { + return firstComponentName === getDirectPresumedClassInstanceName(functionScope) +} + +function getDirectPresumedClassInstanceName (functionScope: MatlabFunctionScopeInfo): string | null { + const functionInfo = functionScope.functionInfo + + if (functionInfo.isMethod && !functionInfo.isStaticMethod) { + if (functionInfo.isConstructor) { + const [firstOutputArgName] = functionScope.outputArgs + return firstOutputArgName + } else { + const [firstInputArgName] = functionScope.inputArgs + return firstInputArgName + } + } + + return null +} + +function getFileScopedReferencesForFirstComponentName ( + identifierMap: IdentifierMap>, firstComponentName: string, uri: string, + identifierFilterPredicate?: (id: T) => boolean +): FileScopedIdentifier[] { + return getFileScopedIdentifiersForFirstComponentName( + identifierMap, firstComponentName, uri, (idInfo) => idInfo.references, identifierFilterPredicate + ) +} + +function getFileScopedVariableDefinitionsForFirstComponentName ( + identifierMap: IdentifierMap, firstComponentName: string, uri: string, + identifierFilterPredicate?: (id: Identifier) => boolean +): FileScopedIdentifier[] { + return getFileScopedIdentifiersForFirstComponentName( + identifierMap, firstComponentName, uri, (varInfo) => varInfo.definitions, identifierFilterPredicate + ) +} + +function getFileScopedIdentifiersForFirstComponentName, IdentifierT extends Identifier> ( + identifierMap: IdentifierMap, firstComponentName: string, uri: string, + identifierInfoToIdentifiersMapper: (idInfo: IdentifierInfoT) => IdentifierT[], + identifierFilterPredicate: (id: IdentifierT) => boolean = () => true +): FileScopedIdentifier[] { + const identifierInfo: IdentifierInfoT | undefined = identifierMap.get(firstComponentName) + + if (!identifierInfo) { + return [] + } + + return identifierInfoToIdentifiersMapper(identifierInfo) + .filter(identifierFilterPredicate) + .map(id => ({ + uri, + identifier: id + })) +} + +function functionParentScopeToFunctionContainer (functionParentScope: FunctionParentScope): FunctionContainer { + if (functionParentScope instanceof MatlabClassdefInfo) { + return functionParentScope.classInfo } + return functionParentScope } -export default SymbolSearchService.getInstance() +function formatRefsOrDefsResult ( + refs: Location[] | undefined, defs: Location[] | undefined, resultType: ResultType +): Location[] | RefsAndDefsResult { + switch (resultType) { + case ResultType.References: + return refs! + case ResultType.Definitions: + return defs! + case ResultType.All: + return { references: refs!, definitions: defs! } + } +} diff --git a/src/licensing/gui/package-lock.json b/src/licensing/gui/package-lock.json index 45cd272..29b3e75 100644 --- a/src/licensing/gui/package-lock.json +++ b/src/licensing/gui/package-lock.json @@ -112,6 +112,7 @@ "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", @@ -1827,6 +1828,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -1850,6 +1852,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -2304,7 +2307,6 @@ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -2315,7 +2317,6 @@ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2340,7 +2341,6 @@ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -2357,7 +2357,6 @@ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -2394,7 +2393,6 @@ "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -2410,7 +2408,6 @@ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=12.22" }, @@ -2425,8 +2422,7 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -3181,8 +3177,7 @@ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -3505,8 +3500,7 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/@vitejs/plugin-react": { "version": "4.3.4", @@ -3700,7 +3694,6 @@ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -3721,7 +3714,6 @@ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3764,8 +3756,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "Python-2.0", - "peer": true + "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.0", @@ -3773,7 +3764,6 @@ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "dequal": "^2.0.3" } @@ -4072,6 +4062,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", @@ -4151,7 +4142,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -4535,8 +4525,7 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.4", @@ -4933,7 +4922,6 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -5365,7 +5353,6 @@ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -5379,7 +5366,6 @@ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -5397,7 +5383,6 @@ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -5414,7 +5399,6 @@ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -5433,7 +5417,6 @@ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -5535,16 +5518,14 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fast-shallow-equal": { "version": "1.0.0", @@ -5595,7 +5576,6 @@ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -5622,7 +5602,6 @@ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -5640,7 +5619,6 @@ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -5655,8 +5633,7 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/for-each": { "version": "0.3.5", @@ -5712,8 +5689,7 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -5845,7 +5821,6 @@ "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5867,7 +5842,6 @@ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -5948,8 +5922,7 @@ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/has-bigints": { "version": "1.1.0", @@ -6143,7 +6116,6 @@ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -6161,7 +6133,6 @@ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.19" } @@ -6183,7 +6154,6 @@ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6469,7 +6439,6 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -7012,12 +6981,10 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -7031,6 +6998,7 @@ "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "cssstyle": "^4.1.0", "data-urls": "^5.0.0", @@ -7084,24 +7052,21 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", @@ -7138,7 +7103,6 @@ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "json-buffer": "3.0.1" } @@ -7149,7 +7113,6 @@ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -7173,7 +7136,6 @@ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -7210,8 +7172,7 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", @@ -7450,8 +7411,7 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/node-fetch": { "version": "2.7.0", @@ -7621,7 +7581,6 @@ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "wrappy": "1" } @@ -7632,7 +7591,6 @@ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -7669,7 +7627,6 @@ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -7686,7 +7643,6 @@ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -7710,7 +7666,6 @@ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -7737,7 +7692,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -7748,7 +7702,6 @@ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -7886,7 +7839,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8.0" } @@ -7897,7 +7849,6 @@ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -7913,7 +7864,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -7974,6 +7924,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -7988,6 +7939,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -8069,6 +8021,7 @@ "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "object-assign": "^4.1.1", "prop-types": "^15.6.2", @@ -8154,6 +8107,7 @@ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.9.2" } @@ -8373,7 +8327,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -8404,7 +8357,6 @@ "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -9104,7 +9056,6 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" }, @@ -9176,11 +9127,10 @@ } }, "node_modules/test-exclude/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -9217,8 +9167,7 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/throttle-debounce": { "version": "2.3.0", @@ -9281,6 +9230,7 @@ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -9415,7 +9365,8 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "license": "0BSD", + "peer": true }, "node_modules/tsutils": { "version": "3.21.0", @@ -9446,7 +9397,6 @@ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -9460,7 +9410,6 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=10" }, @@ -9674,7 +9623,6 @@ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "punycode": "^2.1.0" } @@ -9692,6 +9640,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -9805,6 +9754,7 @@ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -9818,6 +9768,7 @@ "integrity": "sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/expect": "3.0.5", "@vitest/mocker": "3.0.5", @@ -10069,7 +10020,6 @@ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -10180,8 +10130,7 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/ws": { "version": "8.18.0", @@ -10235,7 +10184,6 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, diff --git a/src/lifecycle/ConfigurationManager.ts b/src/lifecycle/ConfigurationManager.ts index 57c85a4..2f699eb 100644 --- a/src/lifecycle/ConfigurationManager.ts +++ b/src/lifecycle/ConfigurationManager.ts @@ -81,7 +81,7 @@ export class ConfigurationManager { maxFileSizeForAnalysis: 0, signIn: false, prewarmGraphics: true, - defaultEditor: false + defaultEditor: true } this.globalSettings = { diff --git a/src/lifecycle/MatlabCommunicationManager.js b/src/lifecycle/MatlabCommunicationManager.js index 98eb58e..3d83d98 100644 --- a/src/lifecycle/MatlabCommunicationManager.js +++ b/src/lifecycle/MatlabCommunicationManager.js @@ -1 +1 @@ -((()=>{var _0x5ceca3={0x3d7:(_0x5deea3,_0x57b408,_0x375848)=>{'use strict';var _0xaa1a91=_0x375848(-0x2d*0x18+-0x12ac+0x3392*0x1),_0x8c1abd=[];function _0x968cc3(){this['task']=null,this['domain']=null;}_0x5deea3['exports']=function(_0x65d907){var _0x1c9583;(_0x1c9583=_0x8c1abd['length']?_0x8c1abd['pop']():new _0x968cc3())['task']=_0x65d907,_0x1c9583['domain']=process['domain'],_0xaa1a91(_0x1c9583);},_0x968cc3['prototype']['call']=function(){this['domain']&&this['domain']['enter']();var _0x5f4922=!(-0xa*-0x29c+0x4ed+0x1f05*-0x1);try{this['task']['call'](),_0x5f4922=!(0x6d8+-0x163e+0xf67),this['domain']&&this['domain']['exit']();}finally{_0x5f4922&&_0xaa1a91['requestFlu'+'sh'](),this['task']=null,this['domain']=null,_0x8c1abd['push'](this);}};},0x1cae:(_0x453f0d,_0x298f1f,_0x1a4d3f)=>{'use strict';var _0x49de5a,_0x582509='function'==typeof setImmediate;function _0x38748a(_0x1bf4d8){_0x2d37dd['length']||(_0x4d13f3(),_0x40fc4f=!(0x7*-0xa4+0x7db+-0x35f)),_0x2d37dd[_0x2d37dd['length']]=_0x1bf4d8;}_0x453f0d['exports']=_0x38748a;var _0x2d37dd=[],_0x40fc4f=!(0x221a+-0x66*0x1f+-0x15bf),_0x42d56c=-0x8*0x296+-0x1*-0xf3a+0x1*0x576,_0x3b5966=0x949*-0x3+-0x2133+-0x2087*-0x2;function _0x2b738d(){for(;_0x42d56c<_0x2d37dd['length'];){var _0x109efe=_0x42d56c;if(_0x42d56c+=0x15*-0x17b+-0x1*-0xcf7+-0x60b*-0x3,_0x2d37dd[_0x109efe]['call'](),_0x42d56c>_0x3b5966){for(var _0x4c6cfd=0x9*0x9+0xad*-0xc+0x69*0x13,_0x43636f=_0x2d37dd['length']-_0x42d56c;_0x4c6cfd<_0x43636f;_0x4c6cfd++)_0x2d37dd[_0x4c6cfd]=_0x2d37dd[_0x4c6cfd+_0x42d56c];_0x2d37dd['length']-=_0x42d56c,_0x42d56c=0x257*0x6+0x2*-0x5e+-0xd4e*0x1;}}_0x2d37dd['length']=-0x10f7*-0x2+0x2179+0x5*-0xd7b,_0x42d56c=0x1ae5+-0xd5c+0x181*-0x9,_0x40fc4f=!(0x1c*0xd4+0x13c1+-0x2af0);}function _0x4d13f3(){var _0x23ae4d=process['domain'];_0x23ae4d&&(_0x49de5a||(_0x49de5a=_0x1a4d3f(-0x101*-0xa+0x1*-0x1b23+0x1d78)),_0x49de5a['active']=process['domain']=null),_0x40fc4f&&_0x582509?setImmediate(_0x2b738d):process['nextTick'](_0x2b738d),_0x23ae4d&&(_0x49de5a['active']=process['domain']=_0x23ae4d);}_0x38748a['requestFlu'+'sh']=_0x4d13f3;},0x923:(_0x29740a,_0x1bd619,_0x4688ae)=>{var _0x2f0398=('0123456789'+'abcdefghij'+'klmnopqrst'+'uvwxyz')['split'](''),_0x339374=_0x4688ae(-0x1*0x898+-0x2476+0x4854),_0x17de6c=_0x4688ae(0x4aa*0xe+-0x1*0x27e3+0xc6a);_0x29740a['exports']=function(_0x4c0798,_0x3bdb01){if(_0x4c0798=_0x4c0798||0x10d*0xb+-0x1398+0x889,(_0x3bdb01=_0x3bdb01||0x23*-0x29+0x281+0x32a)<0xd*0x9e+0x1657*-0x1+0xe53||_0x3bdb01>0x60e+0x9a7*0x1+-0xf91)throw new Error('radix\x20argu'+'ment\x20must\x20'+'be\x20between'+'\x202\x20and\x2036');for(var _0x37758d=Math['ceil'](_0x4c0798*Math['log'](0x1*-0xdbb+0x198+-0xc25*-0x1)/Math['log'](_0x3bdb01)),_0x4e5460=_0x339374['randomByte'+'s'](_0x4c0798),_0x455ec4=new _0x17de6c(_0x4e5460),_0x309dd9='';_0x309dd9['length']<_0x37758d;)_0x309dd9+=_0x2f0398[_0x455ec4['generate'](_0x3bdb01)];return _0x309dd9;};},0x108b:(_0x184434,_0x5a95cd,_0x39ac32)=>{'use strict';var _0x25b9ea=_0x39ac32(0xc83+-0x4*0x7ca+-0x2*-0xda0)['Stream'],_0x537222=_0x39ac32(-0x95*0x43+0x2fa*0x4+-0x3e56*-0x1),_0x308cce=_0x39ac32(-0x771*0x5+-0x61*0x4a+0x49a2*0x1),_0xb278aa=_0x39ac32(0x1d4d+-0x1*0x1602+0x383*0x1),_0x25c19a=_0x39ac32(0x230c+-0x1*0x3349+0x2afb*0x1),_0x47554b=_0x39ac32(0x821*0x4+0x19*-0x162+0xbdb),_0x51cab8=_0x39ac32(0x7ef+-0xf74+0x2*0xe35),_0x27a9e7=function(_0x13746f,_0x48f9aa,_0x356ab0){this['writable']=!(0x89f+-0x16da+0xe3b*0x1),_0x356ab0=_0x356ab0||{},this['_stream']=_0x48f9aa['socket'],this['_ping']=_0x356ab0['ping']||this['DEFAULT_PI'+'NG'],this['_retry']=_0x356ab0['retry']||this['DEFAULT_RE'+'TRY'];var _0x50d3aa=_0x308cce['isSecureRe'+'quest'](_0x13746f)?'https:':'http:';this['url']=_0x50d3aa+'//'+_0x13746f['headers']['host']+_0x13746f['url'],this['lastEventI'+'d']=_0x13746f['headers']['last-event'+'-id']||'',this['readyState']=_0x25c19a['CONNECTING'];var _0x57a7c5=new _0xb278aa(),_0x2dea66=this;if(_0x356ab0['headers']){for(var _0x16f37b in _0x356ab0['headers'])_0x57a7c5['set'](_0x16f37b,_0x356ab0['headers'][_0x16f37b]);}if(this['_stream']&&this['_stream']['writable']){process['nextTick'](function(){_0x2dea66['_open']();}),this['_stream']['setTimeout'](-0x17ca+-0x95*-0x43+-0xf35),this['_stream']['setNoDelay'](!(-0xd7d+0x1699+-0x91c));var _0x400249='HTTP/1.1\x202'+'00\x20OK\x0d\x0aCon'+'tent-Type:'+'\x20text/even'+'t-stream\x0d\x0a'+'Cache-Cont'+'rol:\x20no-ca'+'che,\x20no-st'+'ore\x0d\x0aConne'+'ction:\x20clo'+'se\x0d\x0a'+_0x57a7c5['toString']()+'\x0d\x0aretry:\x20'+Math['floor']((0xdaa+0xa72+-0x1434*0x1)*this['_retry'])+'\x0d\x0a\x0d\x0a';this['_write'](_0x400249),this['_stream']['on']('drain',function(){_0x2dea66['emit']('drain');}),this['_ping']&&(this['_pingTimer']=setInterval(function(){_0x2dea66['ping']();},(-0x4a5+-0x192f+0x21bc)*this['_ping'])),['error','end']['forEach'](function(_0xba7cd8){_0x2dea66['_stream']['on'](_0xba7cd8,function(){_0x2dea66['close']();});});}};_0x537222['inherits'](_0x27a9e7,_0x25b9ea),_0x27a9e7['isEventSou'+'rce']=function(_0x4acae5){return'GET'===_0x4acae5['method']&&(_0x4acae5['headers']['accept']||'')['split'](/\s*,\s*/)['indexOf']('text/event'+'-stream')>=-0x549*0x5+0xd*-0x2d9+0x3f72;};var _0x149d1a={'DEFAULT_PING':0xa,'DEFAULT_RETRY':0x5,'_write':function(_0x47734b){if(!this['writable'])return!(-0x1*-0x913+-0x1355+0xa43);try{return this['_stream']['write'](_0x47734b,'utf8');}catch(_0x1a0d94){return!(-0x1edb+-0x254b*0x1+0x1*0x4427);}},'_open':function(){if(this['readyState']===_0x25c19a['CONNECTING']){this['readyState']=_0x25c19a['OPEN'];var _0x1e66ff=new _0x51cab8('open');_0x1e66ff['initEvent']('open',!(0x1f75+-0x10f1+-0xe83),!(-0x1b4b+0x1f5c+-0x410)),this['dispatchEv'+'ent'](_0x1e66ff);}},'write':function(_0x4fce35){return this['send'](_0x4fce35);},'end':function(_0x12c74f){void(-0x9a5+-0x7bb+0x1160)!==_0x12c74f&&this['write'](_0x12c74f),this['close']();},'send':function(_0x57a4b0,_0x5f0274){if(this['readyState']>_0x25c19a['OPEN'])return!(-0x2a2*-0x1+-0x14c1+0x122*0x10);_0x57a4b0=String(_0x57a4b0)['replace'](/(\r\n|\r|\n)/g,'$1data:\x20');var _0x2eeec0='';return(_0x5f0274=_0x5f0274||{})['event']&&(_0x2eeec0+='event:\x20'+_0x5f0274['event']+'\x0d\x0a'),_0x5f0274['id']&&(_0x2eeec0+='id:\x20'+_0x5f0274['id']+'\x0d\x0a'),_0x2eeec0+='data:\x20'+_0x57a4b0+'\x0d\x0a\x0d\x0a',this['_write'](_0x2eeec0);},'ping':function(){return this['_write'](':\x0d\x0a\x0d\x0a');},'close':function(){if(this['readyState']>_0x25c19a['OPEN'])return!(0xa85*-0x3+0x3*-0xb18+0x40d8);this['readyState']=_0x25c19a['CLOSED'],this['writable']=!(-0x11e0+-0xc11*-0x1+-0x2*-0x2e8),this['_pingTimer']&&clearInterval(this['_pingTimer']),this['_stream']&&this['_stream']['end']();var _0x46266c=new _0x51cab8('close');return _0x46266c['initEvent']('close',!(0x1*-0x1dc1+0x2*-0x4fa+0x27b6),!(0x1*0x1fe7+0x14d5*0x1+-0x34bb)),this['dispatchEv'+'ent'](_0x46266c),!(0x3d5+-0x953+-0x26*-0x25);}};for(var _0x15fb5e in _0x149d1a)_0x27a9e7['prototype'][_0x15fb5e]=_0x149d1a[_0x15fb5e];for(var _0x4df92b in _0x47554b)_0x27a9e7['prototype'][_0x4df92b]=_0x47554b[_0x4df92b];_0x184434['exports']=_0x27a9e7;},0x32d:(_0x330998,_0x1921c5,_0x1ada6c)=>{'use strict';var _0x580c3=_0x1ada6c(0x2c1*0x2+0x32a*-0x16+0x6359),_0x11575d=_0x1ada6c(-0x1da5+0x1459+-0x1f7*-0x9),_0x45d001=_0x1ada6c(0x8d+0x1*-0x111d+0x2b4e*0x1),_0x58f2ca=function(_0x371704,_0x343a15,_0x472eeb,_0x1ce64c,_0x30ab80){_0x30ab80=_0x30ab80||{},this['_stream']=_0x343a15,this['_driver']=_0x11575d['http'](_0x371704,{'maxLength':_0x30ab80['maxLength'],'protocols':_0x1ce64c});var _0x5b829f=this;if(this['_stream']&&this['_stream']['writable']){if(!this['_stream']['readable'])return this['_stream']['end']();var _0x396376=function(){_0x5b829f['_stream']['removeList'+'ener']('data',_0x396376);};this['_stream']['on']('data',_0x396376),_0x45d001['call'](this,_0x30ab80),process['nextTick'](function(){_0x5b829f['_driver']['start'](),_0x5b829f['_driver']['io']['write'](_0x472eeb);});}};_0x580c3['inherits'](_0x58f2ca,_0x45d001),_0x58f2ca['isWebSocke'+'t']=function(_0x1b627e){return _0x11575d['isWebSocke'+'t'](_0x1b627e);},_0x58f2ca['validateOp'+'tions']=function(_0x338431,_0x219367){_0x11575d['validateOp'+'tions'](_0x338431,_0x219367);},_0x58f2ca['WebSocket']=_0x58f2ca,_0x58f2ca['Client']=_0x1ada6c(0x8fa+-0x2*0x10eb+0x1feb),_0x58f2ca['EventSourc'+'e']=_0x1ada6c(-0x1*0x1682+-0x9*-0xa5+0x10a*0x20),_0x330998['exports']=_0x58f2ca;},0x1abe:(_0x1cf3b7,_0x33b3c5,_0x43fe30)=>{'use strict';var _0x31e7b4=_0x43fe30(-0x8f1*0x4+0x1123*0x1+-0x914*-0x3)['Stream'],_0x39a495=_0x43fe30(0xe0f*-0x2+-0x3581*-0x1+0x9dc),_0x37005a=_0x43fe30(-0x2133+-0x7c*-0x46+0x7ae),_0x3471e8=_0x43fe30(0xdf1*0x1+0x191f*-0x1+-0x14fb*-0x1),_0x6885c6=_0x43fe30(-0x11f5+0x1*0x574+0x2166),_0x2cd429=function(_0x35840a){_0x35840a=_0x35840a||{},_0x37005a['validateOp'+'tions'](_0x35840a,['headers','extensions','maxLength','ping','proxy','tls','ca']),this['readable']=this['writable']=!(-0x1df9+-0x1603*0x1+0x33fc);var _0x542e2e=_0x35840a['headers'];if(_0x542e2e){for(var _0x3a9ea0 in _0x542e2e)this['_driver']['setHeader'](_0x3a9ea0,_0x542e2e[_0x3a9ea0]);}var _0x31c759=_0x35840a['extensions'];_0x31c759&&[]['concat'](_0x31c759)['forEach'](this['_driver']['addExtensi'+'on'],this['_driver']),this['_ping']=_0x35840a['ping'],this['_pingId']=0x32*0x23+-0xa80+0x3aa,this['readyState']=_0x2cd429['CONNECTING'],this['bufferedAm'+'ount']=0x24db+-0x81a+-0x1cc1,this['protocol']='',this['url']=this['_driver']['url'],this['version']=this['_driver']['version'];var _0xeb4586=this;this['_driver']['on']('open',function(_0x296b08){_0xeb4586['_open']();}),this['_driver']['on']('message',function(_0x11a0f3){_0xeb4586['_receiveMe'+'ssage'](_0x11a0f3['data']);}),this['_driver']['on']('close',function(_0x97f344){_0xeb4586['_beginClos'+'e'](_0x97f344['reason'],_0x97f344['code']);}),this['_driver']['on']('error',function(_0x6462e9){_0xeb4586['_emitError'](_0x6462e9['message']);}),this['on']('error',function(){}),this['_driver']['messages']['on']('drain',function(){_0xeb4586['emit']('drain');}),this['_ping']&&(this['_pingTimer']=setInterval(function(){_0xeb4586['_pingId']+=0x1a4c*0x1+-0x2db*-0x5+-0xd86*0x3,_0xeb4586['ping'](_0xeb4586['_pingId']['toString']());},(-0x9b*0x3a+0x926+0x3bc*0x8)*this['_ping'])),this['_configure'+'Stream'](),this['_proxy']||(this['_stream']['pipe'](this['_driver']['io']),this['_driver']['io']['pipe'](this['_stream']));};_0x39a495['inherits'](_0x2cd429,_0x31e7b4),_0x2cd429['CONNECTING']=0x6c2+-0x1*0x926+0x264,_0x2cd429['OPEN']=-0x42f*-0x7+0x1817+-0x41b*0xd,_0x2cd429['CLOSING']=0x7*0x1ba+-0x1ece+0x12ba,_0x2cd429['CLOSED']=-0x228a+0x314*-0xc+0x477d*0x1,_0x2cd429['CLOSE_TIME'+'OUT']=-0x679b+-0x59*0x155+0x15358;var _0x4f6f6f={'write':function(_0xf63d70){return this['send'](_0xf63d70);},'end':function(_0x29173d){void(-0xf9*0x1b+-0x262f+0x4072)!==_0x29173d&&this['send'](_0x29173d),this['close']();},'pause':function(){return this['_driver']['messages']['pause']();},'resume':function(){return this['_driver']['messages']['resume']();},'send':function(_0x48adef){return!(this['readyState']>_0x2cd429['OPEN'])&&(_0x48adef instanceof Buffer||(_0x48adef=String(_0x48adef)),this['_driver']['messages']['write'](_0x48adef));},'ping':function(_0x3037ae,_0x5bddb7){return!(this['readyState']>_0x2cd429['OPEN'])&&this['_driver']['ping'](_0x3037ae,_0x5bddb7);},'close':function(_0x4a0816,_0x218661){if(void(0x2457+0x1f43+-0x439a)===_0x4a0816&&(_0x4a0816=-0x174d+0x6d9+0x145c),void(-0x442*-0x7+0x1502+-0x32d0)===_0x218661&&(_0x218661=''),0x20b1+-0x18a8+-0x421!==_0x4a0816&&(_0x4a0816<-0xc09+0x1483+0x5*0xa6||_0x4a0816>-0xc5*0xe+0x178+0x1cd5))throw new Error('Failed\x20to\x20'+'execute\x20\x27c'+'lose\x27\x20on\x20W'+'ebSocket:\x20'+'The\x20code\x20m'+'ust\x20be\x20eit'+'her\x201000,\x20'+'or\x20between'+'\x203000\x20and\x20'+'4999.\x20'+_0x4a0816+('\x20is\x20neithe'+'r.'));if(this['readyState']<_0x2cd429['CLOSING']){var _0x21e350=this;this['_closeTime'+'r']=setTimeout(function(){_0x21e350['_beginClos'+'e']('',-0x1c2*-0x8+0xe*-0x107+0x22*0x20);},_0x2cd429['CLOSE_TIME'+'OUT']);}this['readyState']!==_0x2cd429['CLOSED']&&(this['readyState']=_0x2cd429['CLOSING']),this['_driver']['close'](_0x218661,_0x4a0816);},'_configureStream':function(){var _0x1306db=this;this['_stream']['setTimeout'](-0x1847+-0x2cc*-0x8+-0x1*-0x1e7),this['_stream']['setNoDelay'](!(0x941+-0x2*-0x16f+0x6b*-0x1d)),['close','end']['forEach'](function(_0x200a98){this['_stream']['on'](_0x200a98,function(){_0x1306db['_finalizeC'+'lose']();});},this),this['_stream']['on']('error',function(_0xe88a2c){_0x1306db['_emitError']('Network\x20er'+'ror:\x20'+_0x1306db['url']+':\x20'+_0xe88a2c['message']),_0x1306db['_finalizeC'+'lose']();});},'_open':function(){if(this['readyState']===_0x2cd429['CONNECTING']){this['readyState']=_0x2cd429['OPEN'],this['protocol']=this['_driver']['protocol']||'';var _0x32dc30=new _0x6885c6('open');_0x32dc30['initEvent']('open',!(0x79c+0x87b*-0x2+-0x1df*-0x5),!(-0x1a9d*-0x1+0x8c7+-0x2363)),this['dispatchEv'+'ent'](_0x32dc30);}},'_receiveMessage':function(_0x45e5f0){if(this['readyState']>_0x2cd429['OPEN'])return!(-0xa9b+-0x20bc*-0x1+0x20*-0xb1);this['readable']&&this['emit']('data',_0x45e5f0);var _0x442693=new _0x6885c6('message',{'data':_0x45e5f0});_0x442693['initEvent']('message',!(0xdf*-0x29+0x42a+0x1f8e),!(-0x4*0x82+-0x379*0x2+-0xb*-0xd1)),this['dispatchEv'+'ent'](_0x442693);},'_emitError':function(_0x10055d){if(!(this['readyState']>=_0x2cd429['CLOSING'])){var _0x1fe04d=new _0x6885c6('error',{'message':_0x10055d});_0x1fe04d['initEvent']('error',!(0x1*0x2d8+-0x5f1+0x31a),!(-0x1bae+-0x20d0+0x3c7f)),this['dispatchEv'+'ent'](_0x1fe04d);}},'_beginClose':function(_0x5c354a,_0x2b8d3e){this['readyState']!==_0x2cd429['CLOSED']&&(this['readyState']=_0x2cd429['CLOSING'],this['_closePara'+'ms']=[_0x5c354a,_0x2b8d3e],this['_stream']&&(this['_stream']['destroy'](),this['_stream']['readable']||this['_finalizeC'+'lose']()));},'_finalizeClose':function(){if(this['readyState']!==_0x2cd429['CLOSED']){this['readyState']=_0x2cd429['CLOSED'],this['_closeTime'+'r']&&clearTimeout(this['_closeTime'+'r']),this['_pingTimer']&&clearInterval(this['_pingTimer']),this['_stream']&&this['_stream']['end'](),this['readable']&&this['emit']('end'),this['readable']=this['writable']=!(-0x2658+-0x3a5*-0x6+0x107b);var _0xe1795a=this['_closePara'+'ms']?this['_closePara'+'ms'][-0x1*0x162a+0x56e*0x4+0x6*0x13]:'',_0x472b1e=this['_closePara'+'ms']?this['_closePara'+'ms'][-0x2*0xe92+0x19c9+0xac*0x5]:-0x20a*0x4+0x1f61+-0x134b,_0x348367=new _0x6885c6('close',{'code':_0x472b1e,'reason':_0xe1795a});_0x348367['initEvent']('close',!(-0x91c+0x4a0*0x4+0x3*-0x321),!(0x1861+0x369+-0x1bc9)),this['dispatchEv'+'ent'](_0x348367);}}};for(var _0xcf4e03 in _0x4f6f6f)_0x2cd429['prototype'][_0xcf4e03]=_0x4f6f6f[_0xcf4e03];for(var _0x44c691 in _0x3471e8)_0x2cd429['prototype'][_0x44c691]=_0x3471e8[_0x44c691];_0x1cf3b7['exports']=_0x2cd429;},0x14e5:_0x3ca7b4=>{'use strict';var _0x4105ca=function(_0x3fd903,_0x44b834){for(var _0x4c781a in(this['type']=_0x3fd903,_0x44b834))this[_0x4c781a]=_0x44b834[_0x4c781a];};_0x4105ca['prototype']['initEvent']=function(_0xefb241,_0x1d7f55,_0x3bbb8c){this['type']=_0xefb241,this['bubbles']=_0x1d7f55,this['cancelable']=_0x3bbb8c;},_0x4105ca['prototype']['stopPropag'+'ation']=function(){},_0x4105ca['prototype']['preventDef'+'ault']=function(){},_0x4105ca['CAPTURING_'+'PHASE']=0x1527+0x1*-0x1bb8+-0x2*-0x349,_0x4105ca['AT_TARGET']=-0x1e12*0x1+-0xe2b+0xf1*0x2f,_0x4105ca['BUBBLING_P'+'HASE']=-0x15b9+-0x1860+0x2e1c,_0x3ca7b4['exports']=_0x4105ca;},0x9cd:(_0x513abb,_0x226a3c,_0xd74da9)=>{'use strict';var _0x591b52=_0xd74da9(-0x5a0+-0x2dd*0x7+0x2e90),_0x1ec05a={'onopen':null,'onmessage':null,'onerror':null,'onclose':null,'addEventListener':function(_0x18dd4b,_0x16a7b2,_0x4bb005){this['on'](_0x18dd4b,_0x16a7b2);},'removeEventListener':function(_0x48ab97,_0x829edc,_0x97a4d8){this['removeList'+'ener'](_0x48ab97,_0x829edc);},'dispatchEvent':function(_0x590f3f){_0x590f3f['target']=_0x590f3f['currentTar'+'get']=this,_0x590f3f['eventPhase']=_0x591b52['AT_TARGET'],this['on'+_0x590f3f['type']]&&this['on'+_0x590f3f['type']](_0x590f3f),this['emit'](_0x590f3f['type'],_0x590f3f);}};_0x513abb['exports']=_0x1ec05a;},0x70f:(_0x742799,_0x295978,_0x3b0b9a)=>{'use strict';var _0x44a18f=_0x3b0b9a(-0x2*-0xb18+-0x2b81+-0x16a*-0x28),_0x26ab0a=_0x3b0b9a(-0x2c48+0x28de*-0x1+0x1e59*0x4),_0x5adad1=_0x3b0b9a(0x4*-0x813+0x283*-0x9+0x497b),_0x4297a9=_0x3b0b9a(0x286+0x25de+-0x454*0x3),_0x187389=_0x3b0b9a(-0x9*-0x13f+-0x1*0x1d41+0x1a6d),_0x140ab1=_0x3b0b9a(0x32b1*0x1+0x1*-0xa49+-0x13e*0xb),_0x4bbb60=(_0x3b0b9a(0x1*0x2039+0x397+-0xeeb),{'http:':0x50,'https:':0x1bb,'ws:':0x50,'wss:':0x1bb}),_0x268eec=['https:','wss:'],_0x2979f9=function(_0x2d7c69,_0x3cf766,_0x574aa6){_0x574aa6=_0x574aa6||{},this['url']=_0x2d7c69,this['_driver']=_0x187389['client'](this['url'],{'maxLength':_0x574aa6['maxLength'],'protocols':_0x3cf766}),['open','error']['forEach'](function(_0xe9fb2e){this['_driver']['on'](_0xe9fb2e,function(){_0x2efe20['headers']=_0x2efe20['_driver']['headers'],_0x2efe20['statusCode']=_0x2efe20['_driver']['statusCode'];});},this);var _0x110130=_0x574aa6['proxy']||{},_0x10a31d=_0x4297a9['parse'](_0x110130['origin']||this['url']),_0x404382=_0x10a31d['port']||_0x4bbb60[_0x10a31d['protocol']],_0xcfd8af=_0x268eec['indexOf'](_0x10a31d['protocol'])>=0x543+-0x1*-0x423+-0x966*0x1,_0x355081=function(){_0x2efe20['_onConnect']();},_0x3c6023=_0x574aa6['net']||{},_0x495c80=_0x574aa6['tls']||{},_0x226755=_0x110130['origin']?_0x110130['tls']||{}:_0x495c80,_0x2efe20=this;_0x3c6023['host']=_0x226755['host']=_0x10a31d['hostname'],_0x3c6023['port']=_0x226755['port']=_0x404382,_0x495c80['ca']=_0x495c80['ca']||_0x574aa6['ca'],_0x226755['servername']=_0x226755['servername']||_0x10a31d['hostname'],this['_stream']=_0xcfd8af?_0x5adad1['connect'](_0x226755,_0x355081):_0x26ab0a['connect'](_0x3c6023,_0x355081),_0x110130['origin']&&this['_configure'+'Proxy'](_0x110130,_0x495c80),_0x140ab1['call'](this,_0x574aa6);};_0x44a18f['inherits'](_0x2979f9,_0x140ab1),_0x2979f9['prototype']['_onConnect']=function(){(this['_proxy']||this['_driver'])['start']();},_0x2979f9['prototype']['_configure'+'Proxy']=function(_0x4650c5,_0x43c426){var _0x4bd0a3,_0x299c14=_0x4297a9['parse'](this['url']),_0x1782a7=_0x268eec['indexOf'](_0x299c14['protocol'])>=-0x166a+-0x24ef+0x1*0x3b59,_0x313c66=this;if(this['_proxy']=this['_driver']['proxy'](_0x4650c5['origin']),_0x4650c5['headers']){for(_0x4bd0a3 in _0x4650c5['headers'])this['_proxy']['setHeader'](_0x4bd0a3,_0x4650c5['headers'][_0x4bd0a3]);}this['_proxy']['pipe'](this['_stream'],{'end':!(-0x3*-0xbbd+0xf46+-0x327c)}),this['_stream']['pipe'](this['_proxy']),this['_proxy']['on']('connect',function(){if(_0x1782a7){var _0x58b4bc={'socket':_0x313c66['_stream'],'servername':_0x299c14['hostname']};for(_0x4bd0a3 in _0x43c426)_0x58b4bc[_0x4bd0a3]=_0x43c426[_0x4bd0a3];_0x313c66['_stream']=_0x5adad1['connect'](_0x58b4bc),_0x313c66['_configure'+'Stream']();}_0x313c66['_driver']['io']['pipe'](_0x313c66['_stream']),_0x313c66['_stream']['pipe'](_0x313c66['_driver']['io']),_0x313c66['_driver']['start']();}),this['_proxy']['on']('error',function(_0x4b36af){_0x313c66['_driver']['emit']('error',_0x4b36af);});},_0x742799['exports']=_0x2979f9;},0x22bb:_0x4a4c07=>{_0x4a4c07['exports']={'TYPE_JSON':{'Content-Type':'applicatio'+'n/json;\x20ch'+'arset=utf-'+'8'},'TYPE_SCRIPT':{'Content-Type':'text/javas'+'cript;\x20cha'+'rset=utf-8'},'TYPE_TEXT':{'Content-Type':'text/plain'+';\x20charset='+'utf-8'}};},0xdf6:(_0x1c8102,_0x2dcde5,_0x29ff38)=>{'use strict';var _0xccb1c0=_0x29ff38(-0x1*-0xe9d+0x281*-0x4+-0x1*-0x694)['Buffer'],_0x32faf8=_0x29ff38(-0x668*-0x1+0x9ef*-0x5+0x4653),_0xd750ff=_0x29ff38(-0x1996+0x25d9+-0x1f*-0xb),_0xa94eaf=_0x29ff38(0x89*-0x1d+0xa*-0x19a+0x3af1),_0x3af8be=_0x29ff38(0x159*-0x11+0x37b+0x169b),_0x16952b=_0x3af8be['EventSourc'+'e'],_0x243040=_0x29ff38(-0x1c42+-0x6*0x39e+0x3a3b),_0x4abb0f=_0x29ff38(0x2*-0x6cd+-0xad*0x15+0x290e),_0x132592=_0x29ff38(0x1*0x3037+-0x1519+-0x257*-0x1),_0x280d32=_0x29ff38(0x1255+0x6f0*0x3+-0x9b9),_0x447c6a=_0x29ff38(0x2171*-0x1+0x13d*-0x5+0x1*0x3707),_0x204fa5=_0x29ff38(0x10df+-0x642+0x56f),_0x34fe3d=_0x29ff38(-0x12*-0x48+0x13*0x18b+-0x1*0x10ca),_0x3d46ab=_0x29ff38(-0x5c4+-0xd1e+-0x34*-0xdf),_0x53a061=_0x29ff38(-0x12*0x51+0x21ea+-0x14d7),_0x21c25e=_0x29ff38(0x1229*0x1+0x14e*-0xa+0x748),_0x47885d=_0x29ff38(0xe66+0x1*-0x4533+0x17e*0x3c),_0x2fc5b5=_0x29ff38(0xbf*0x7+-0x1e4b+0x2ec6),_0x11a139=_0x204fa5({'className':'NodeAdapte'+'r','DEFAULT_ENDPOINT':'/bayeux','SCRIPT_PATH':'faye-brows'+'er-min.js','VALID_JSONP_CALLBACK':/^[a-z_\$][a-z0-9_\$]*(\.[a-z_\$][a-z0-9_\$]*)*$/i,'initialize':function(_0x393d25){this['_options']=_0x393d25||{},_0x447c6a(this['_options'],['engine','mount','ping','timeout','extensions','websocketE'+'xtensions']),this['_extension'+'s']=[],this['_endpoint']=this['_options']['mount']||this['DEFAULT_EN'+'DPOINT'],this['_endpointR'+'e']=new RegExp('^'+this['_endpoint']['replace'](/\/$/,'')+('(/[^/]*)*('+'\x5c.[^\x5c.]+)?'+'$')),this['_server']=_0x21c25e['create'](this['_options']),this['_static']=new _0x2fc5b5(_0x32faf8['join'](__dirname,'..','..','client'),/\.(?:js|map)$/),this['_static']['map'](_0x32faf8['basename'](this['_endpoint'])+'.js',this['SCRIPT_PAT'+'H']),this['_static']['map']('client.js',this['SCRIPT_PAT'+'H']);var _0x5cb437,_0x52506a,_0x591e48=this['_options']['extensions'],_0x3c21b1=this['_options']['websocketE'+'xtensions'];if(_0x591e48){for(_0x5cb437=0x1503*0x1+-0x57+-0x14ac,_0x52506a=(_0x591e48=[]['concat'](_0x591e48))['length'];_0x5cb437<_0x52506a;_0x5cb437++)this['addExtensi'+'on'](_0x591e48[_0x5cb437]);}if(_0x3c21b1){for(_0x5cb437=-0x9a1+-0x823+0xc*0x17b,_0x52506a=(_0x3c21b1=[]['concat'](_0x3c21b1))['length'];_0x5cb437<_0x52506a;_0x5cb437++)this['addWebsock'+'etExtensio'+'n'](_0x3c21b1[_0x5cb437]);}},'listen':function(){throw new Error('The\x20listen'+'()\x20method\x20'+'is\x20depreca'+'ted\x20-\x20use\x20'+'the\x20attach'+'()\x20method\x20'+'to\x20bind\x20Fa'+'ye\x20to\x20an\x20h'+'ttp.Server');},'addExtension':function(_0x5ac84a){return this['_server']['addExtensi'+'on'](_0x5ac84a);},'removeExtension':function(_0x49b5b4){return this['_server']['removeExte'+'nsion'](_0x49b5b4);},'addWebsocketExtension':function(_0x21ea27){this['_extension'+'s']['push'](_0x21ea27);},'close':function(){return this['_server']['close']();},'getClient':function(){return this['_client']=this['_client']||new _0x53a061(this['_server']);},'attach':function(_0x25414d){this['_overrideL'+'isteners'](_0x25414d,'request','handle'),this['_overrideL'+'isteners'](_0x25414d,'upgrade','handleUpgr'+'ade');},'_overrideListeners':function(_0x521176,_0x29393d,_0x430c1d){var _0x4cfb93=_0x521176['listeners'](_0x29393d),_0x37e432=this;_0x521176['removeAllL'+'isteners'](_0x29393d),_0x521176['on'](_0x29393d,function(_0x10773e){if(_0x37e432['check'](_0x10773e))return _0x37e432[_0x430c1d]['apply'](_0x37e432,arguments);for(var _0x38b31a=0xd3*-0x14+0x51*0x44+-0xe*0x5c,_0x21c151=_0x4cfb93['length'];_0x38b31a<_0x21c151;_0x38b31a++)_0x4cfb93[_0x38b31a]['apply'](this,arguments);});},'check':function(_0x2c36d6){var _0x5cfdc7=_0xa94eaf['parse'](_0x2c36d6['url'],!(-0x22d*-0xd+0x1*0x248e+-0x40d7))['pathname'];return!!this['_endpointR'+'e']['test'](_0x5cfdc7);},'handle':function(_0x4e2756,_0x3533ec){var _0x5ac266=_0xa94eaf['parse'](_0x4e2756['url'],!(-0x1b35+-0x24c+0x5b*0x53)),_0xb42d00=_0x4e2756['method'],_0x10f111=this;return _0x4e2756['originalUr'+'l']=_0x4e2756['url'],_0x4e2756['on']('error',function(_0x3c6783){_0x10f111['_returnErr'+'or'](_0x3533ec,_0x3c6783);}),_0x3533ec['on']('error',function(_0x37e804){_0x10f111['_returnErr'+'or'](null,_0x37e804);}),this['_static']['test'](_0x5ac266['pathname'])?this['_static']['call'](_0x4e2756,_0x3533ec):'OPTIONS'===_0xb42d00||'POST'===_0x4e2756['headers']['access-con'+'trol-reque'+'st-method']?this['_handleOpt'+'ions'](_0x4e2756,_0x3533ec):_0x16952b['isEventSou'+'rce'](_0x4e2756)?this['handleEven'+'tSource'](_0x4e2756,_0x3533ec):'GET'===_0xb42d00?this['_callWithP'+'arams'](_0x4e2756,_0x3533ec,_0x5ac266['query']):'POST'===_0xb42d00?this['_concatStr'+'eam'](_0x4e2756,function(_0x374b29){var _0x5d3bcb='applicatio'+'n/json'===(_0x4e2756['headers']['content-ty'+'pe']||'')['split'](';')[-0xd*0xa3+0x218b+-0x3*0x86c]?{'message':_0x374b29}:_0xd750ff['parse'](_0x374b29);_0x4e2756['body']=_0x374b29,this['_callWithP'+'arams'](_0x4e2756,_0x3533ec,_0x5d3bcb);},this):void this['_returnErr'+'or'](_0x3533ec,{'message':'Unrecogniz'+'ed\x20request'+'\x20type'});},'_callWithParams':function(_0x3c6bea,_0x2206cb,_0x4ec97a){if(!_0x4ec97a['message'])return this['_returnErr'+'or'](_0x2206cb,{'message':'Received\x20r'+'equest\x20wit'+'h\x20no\x20messa'+'ge:\x20'+this['_formatReq'+'uest'](_0x3c6bea)});try{this['debug']('Received\x20m'+'essage\x20via'+'\x20HTTP\x20'+_0x3c6bea['method']+':\x20?',_0x4ec97a['message']);var _0x4b0066=this['_parseJSON'](_0x4ec97a['message']),_0x2e2579=_0x4ec97a['jsonp']||_0x243040['JSONP_CALL'+'BACK'],_0x512706='GET'===_0x3c6bea['method'],_0x160ca0=_0x512706?_0x47885d['TYPE_SCRIP'+'T']:_0x47885d['TYPE_JSON'],_0x38a983=_0x4abb0f({},_0x160ca0),_0x36e409=_0x3c6bea['headers']['origin'];if(!this['VALID_JSON'+'P_CALLBACK']['test'](_0x2e2579))return this['_returnErr'+'or'](_0x2206cb,{'message':'Invalid\x20JS'+'ON-P\x20callb'+'ack:\x20'+_0x2e2579});_0x38a983['Cache-Cont'+'rol']='no-cache,\x20'+'no-store',_0x38a983['X-Content-'+'Type-Optio'+'ns']='nosniff',_0x36e409&&(_0x38a983['Access-Con'+'trol-Allow'+'-Credentia'+'ls']='true',_0x38a983['Access-Con'+'trol-Allow'+'-Origin']=_0x36e409),this['_server']['process'](_0x4b0066,_0x3c6bea,function(_0x358641){var _0x1c6795=_0x280d32(_0x358641);_0x512706&&(_0x1c6795='/**/'+_0x2e2579+'('+this['_jsonpEsca'+'pe'](_0x1c6795)+');',_0x38a983['Content-Di'+'sposition']='attachment'+';\x20filename'+'=f.txt'),_0x38a983['Content-Le'+'ngth']=_0xccb1c0['from'](_0x1c6795,'utf8')['length']['toString'](),this['debug']('HTTP\x20respo'+'nse:\x20?',_0x1c6795),_0x2206cb['writeHead'](-0x208d+-0x13a5+0x34fa,_0x38a983),_0x2206cb['end'](_0x1c6795);},this);}catch(_0x564eff){this['_returnErr'+'or'](_0x2206cb,_0x564eff);}},'_jsonpEscape':function(_0x2c8d57){return _0x2c8d57['replace'](/\u2028/g,'\x5cu2028')['replace'](/\u2029/g,'\x5cu2029');},'handleUpgrade':function(_0x46556e,_0x244458,_0x500084){var _0x443ff9={'extensions':this['_extension'+'s'],'ping':this['_options']['ping']},_0x57b8b0=new _0x3af8be(_0x46556e,_0x244458,_0x500084,[],_0x443ff9),_0x3165db=null,_0x40e180=this;_0x46556e['originalUr'+'l']=_0x46556e['url'],_0x57b8b0['onmessage']=function(_0x908847){try{_0x40e180['debug']('Received\x20m'+'essage\x20via'+'\x20WebSocket'+'['+_0x57b8b0['version']+']:\x20?',_0x908847['data']);var _0x1d227d=_0x40e180['_parseJSON'](_0x908847['data']),_0x1a2182=_0x132592(_0x1d227d);_0x3165db&&_0x1a2182&&_0x1a2182!==_0x3165db&&_0x40e180['_server']['closeSocke'+'t'](_0x3165db,!(0x88d+-0x1*-0x125b+-0x1ae7)),_0x40e180['_server']['openSocket'](_0x1a2182,_0x57b8b0,_0x46556e),_0x1a2182&&(_0x3165db=_0x1a2182),_0x40e180['_server']['process'](_0x1d227d,_0x46556e,function(_0x204403){_0x57b8b0&&_0x57b8b0['send'](_0x280d32(_0x204403));});}catch(_0x55b26a){console['log'](_0x55b26a['stack']),_0x40e180['error'](_0x55b26a['message']+('\x0aBacktrace'+':\x0a')+_0x55b26a['stack']);}},_0x57b8b0['onclose']=function(_0x42ab00){_0x40e180['_server']['closeSocke'+'t'](_0x3165db),_0x57b8b0=null;};},'handleEventSource':function(_0x1f8937,_0xc23ad3){var _0x29f234=new _0x16952b(_0x1f8937,_0xc23ad3,{'ping':this['_options']['ping']}),_0x1c88ef=_0x29f234['url']['split']('/')['pop'](),_0x3d6aef=this;this['debug']('Opened\x20Eve'+'ntSource\x20c'+'onnection\x20'+'for\x20?',_0x1c88ef),this['_server']['openSocket'](_0x1c88ef,_0x29f234,_0x1f8937),_0x29f234['onclose']=function(_0x34e047){_0x3d6aef['_server']['closeSocke'+'t'](_0x1c88ef),_0x29f234=null;};},'_handleOptions':function(_0x431ab7,_0x35833a){var _0x2b62a5={'Access-Control-Allow-Credentials':'true','Access-Control-Allow-Headers':'Accept,\x20Au'+'thorizatio'+'n,\x20Content'+'-Type,\x20Pra'+'gma,\x20X-Req'+'uested-Wit'+'h','Access-Control-Allow-Methods':'POST,\x20GET','Access-Control-Allow-Origin':_0x431ab7['headers']['origin']||_0x431ab7['headers']['referer']||'*','Access-Control-Max-Age':'86400'};_0x35833a['writeHead'](-0xb*-0x2fd+-0x256e+0x557,_0x2b62a5),_0x35833a['end']('');},'_concatStream':function(_0x3ec9a9,_0x302a93,_0x23f6b5){var _0x5dd927=[],_0x48bd43=0x2*-0xdf+0xe60+-0xca2;_0x3ec9a9['on']('data',function(_0x126972){_0x5dd927['push'](_0x126972),_0x48bd43+=_0x126972['length'];}),_0x3ec9a9['on']('end',function(){for(var _0xe49c2f=_0xccb1c0['alloc'](_0x48bd43),_0x411020=-0x7*0x556+0xf*-0x68+-0x2*-0x15b9,_0xa0eb06=0x1d51+-0xa82*0x1+-0x1*0x12cf,_0x26d1e2=_0x5dd927['length'];_0xa0eb06<_0x26d1e2;_0xa0eb06++)_0x5dd927[_0xa0eb06]['copy'](_0xe49c2f,_0x411020),_0x411020+=_0x5dd927[_0xa0eb06]['length'];_0x302a93['call'](_0x23f6b5,_0xe49c2f['toString']('utf8'));});},'_parseJSON':function(_0x41cae3){var _0x17deeb=JSON['parse'](_0x41cae3);if('object'==typeof _0x17deeb)return _0x17deeb;throw new SyntaxError('JSON\x20messa'+'ges\x20must\x20c'+'ontain\x20an\x20'+'object\x20or\x20'+'array');},'_formatRequest':function(_0x25ddba){var _0x571031=_0x25ddba['method']['toUpperCas'+'e'](),_0x2ccb9d='curl\x20-X\x20'+_0x571031;return _0x2ccb9d+='\x20\x27http://'+_0x25ddba['headers']['host']+_0x25ddba['url']+'\x27','POST'===_0x571031&&(_0x2ccb9d+='\x20-H\x20\x27Conte'+'nt-Type:\x20'+_0x25ddba['headers']['content-ty'+'pe']+'\x27',_0x2ccb9d+='\x20-d\x20\x27'+_0x25ddba['body']+'\x27'),_0x2ccb9d;},'_returnError':function(_0x516f8c,_0x45b775){var _0x5ec2dd=_0x45b775['message'];_0x45b775['stack']&&(_0x5ec2dd+='\x0aBacktrace'+':\x0a'+_0x45b775['stack']),this['error'](_0x5ec2dd),_0x516f8c&&(_0x516f8c['writeHead'](0xbf0+0x18b7+-0x2b3*0xd,_0x47885d['TYPE_TEXT']),_0x516f8c['end']('Bad\x20reques'+'t'));}});for(var _0x4d694c in _0x3d46ab)!function(_0x4e1420){_0x11a139['prototype'][_0x4e1420]=function(){return this['_server']['_engine'][_0x4e1420]['apply'](this['_server']['_engine'],arguments);};}(_0x4d694c);_0x4abb0f(_0x11a139['prototype'],_0x34fe3d),_0x1c8102['exports']=_0x11a139;},0x15b4:(_0x3ef6a3,_0x50f0da,_0x5bbb13)=>{'use strict';var _0x523e31=_0x5bbb13(-0x1faf*0x1+-0xaff+-0x4*-0x117d),_0x1d09a4=_0x5bbb13(-0x1cf1+0x95*0x34+0x2555),_0x5688ab=_0x5bbb13(-0x3106+-0x6e*0x3a+0x6502),_0x17b28e=_0x5bbb13(0x4*-0x10d+-0x4*-0x3ce+-0x1*-0x1064),_0xec7006=_0x5bbb13(-0x5d4+0x1*0x18fa+-0x31a),_0x260893=_0x5bbb13(-0x1c73+-0x7*0x70+0x1663*0x2),_0x42f83b=_0x5bbb13(0x26fd+-0xfd9+0x3dd*0x3),_0x6b649a=_0xec7006({'initialize':function(_0x143c00,_0x4d6936){this['_directory']=_0x143c00,this['_pathRegex']=_0x4d6936,this['_pathMap']={},this['_index']={};},'map':function(_0x127774,_0x66e6a6){this['_pathMap'][_0x127774]=_0x66e6a6;},'test':function(_0xf83ad5){return this['_pathRegex']['test'](_0xf83ad5);},'call':function(_0xf7d09,_0x38c29b){var _0x145308=_0x17b28e['parse'](_0xf7d09['url'],!(0x3*-0x93f+0x23ab*0x1+-0x7ee))['pathname'],_0x2075f3=_0x5688ab['basename'](_0x145308);_0x2075f3=this['_pathMap'][_0x2075f3]||_0x2075f3,this['_index'][_0x2075f3]=this['_index'][_0x2075f3]||{};var _0xd689a3=this['_index'][_0x2075f3],_0x238cdb=_0x5688ab['join'](this['_directory'],_0x2075f3);try{_0xd689a3['content']=_0xd689a3['content']||_0x1d09a4['readFileSy'+'nc'](_0x238cdb),_0xd689a3['digest']=_0xd689a3['digest']||_0x523e31['createHash']('sha1')['update'](_0xd689a3['content'])['digest']('hex'),_0xd689a3['mtime']=_0xd689a3['mtime']||_0x1d09a4['statSync'](_0x238cdb)['mtime'];}catch(_0xc2d5f8){return _0x38c29b['writeHead'](0x5c*-0x33+-0x85*-0x21+0x2c3,{}),_0x38c29b['end']();}var _0x445286=/\.js$/['test'](_0x145308)?'TYPE_SCRIP'+'T':'TYPE_JSON',_0x409462=_0xf7d09['headers']['if-modifie'+'d-since'],_0x360b29={'ETag':_0xd689a3['digest'],'Last-Modified':_0xd689a3['mtime']['toGMTStrin'+'g']()};_0xf7d09['headers']['if-none-ma'+'tch']===_0xd689a3['digest']||_0x409462&&_0xd689a3['mtime']<=new Date(_0x409462)?(_0x38c29b['writeHead'](-0x9b9+-0x21b4+-0x4f5*-0x9,_0x360b29),_0x38c29b['end']()):(_0x360b29['Content-Le'+'ngth']=_0xd689a3['content']['length'],_0x260893(_0x360b29,_0x42f83b[_0x445286]),_0x38c29b['writeHead'](-0xdbe+-0x2358+0x31de,_0x360b29),_0x38c29b['end'](_0xd689a3['content']));}});_0x3ef6a3['exports']=_0x6b649a;},0x15bf:(_0x491aa3,_0x5e9f6c,_0x241113)=>{'use strict';var _0x5b0ffe=_0x241113(0x6*0x376+-0x20ed+0x1c35),_0x5064ee=_0x241113(-0x459+-0x28*-0x95+-0x21*0x2c),_0x118102=_0x241113(-0x55*-0x4e+0x291f+-0x2afb*0x1),_0x493c24=_0x241113(-0x46e0+-0x380e+-0xa346*-0x1),_0x481a8f=_0x5b0ffe({'initialize':function(_0x3f0d98,_0x51b866,_0x70e92f){this['_engine']=_0x3f0d98,this['_id']=_0x51b866,this['_options']=_0x70e92f,this['_inbox']=[];},'deliver':function(_0x32a085){if(delete _0x32a085['clientId'],this['socket'])return this['socket']['send'](_0x32a085);this['_inbox']['push'](_0x32a085),this['_beginDeli'+'veryTimeou'+'t']();},'connect':function(_0xa602a5,_0xcad6f8,_0x322121){var _0x13e287=void(-0xda3*0x1+0x2554+0x4bd*-0x5)!==(_0xa602a5=_0xa602a5||{})['timeout']?_0xa602a5['timeout']/(0x1be8+-0x9b*-0x1e+-0x2a2a):this['_engine']['timeout'];this['setDeferre'+'dStatus']('unknown'),this['callback'](_0xcad6f8,_0x322121),this['_beginDeli'+'veryTimeou'+'t'](),this['_beginConn'+'ectionTime'+'out'](_0x13e287);},'flush':function(){this['removeTime'+'out']('connection'),this['removeTime'+'out']('delivery'),this['setDeferre'+'dStatus']('succeeded',this['_inbox']),this['_inbox']=[],this['socket']||this['_engine']['closeConne'+'ction'](this['_id']);},'_beginDeliveryTimeout':function(){0x984*-0x2+0x3d*0x52+-0x82!==this['_inbox']['length']&&this['addTimeout']('delivery',this['_engine']['MAX_DELAY'],this['flush'],this);},'_beginConnectionTimeout':function(_0x39b65b){this['addTimeout']('connection',_0x39b65b,this['flush'],this);}});_0x5064ee(_0x481a8f['prototype'],_0x118102),_0x5064ee(_0x481a8f['prototype'],_0x493c24),_0x491aa3['exports']=_0x481a8f;},0x1628:(_0x1d3303,_0x2236e0,_0x2bf5e1)=>{'use strict';var _0x4f1d5c=_0x2bf5e1(0xa1e*0x3+0x1*0xf5e+-0x1*0x201f),_0x50956b=_0x2bf5e1(0x1b07+0x5a5+-0x1*0x1369),_0xd05e1f=_0x2bf5e1(-0x1*-0x1aa7+-0x1d8a+-0x32*-0x65),_0x345531=_0x2bf5e1(0x13f3+-0x9e1+0x98e),_0x4c49fd=_0x2bf5e1(0x32fa+0x6*0xe+-0xef6),_0x220a55=function(_0x2896ac,_0x1d64bf){this['_server']=_0x2896ac,this['_options']=_0x1d64bf||{},this['reset']();};_0x220a55['create']=function(_0x5e5dcb,_0x1fd9e3){return new _0x220a55(_0x5e5dcb,_0x1fd9e3);},_0x50956b(_0x220a55['prototype']={'disconnect':function(){this['reset'](),this['removeAllT'+'imeouts']();},'reset':function(){this['_namespace']=new _0xd05e1f(),this['_clients']={},this['_channels']={},this['_messages']={};},'createClient':function(_0x4879cd,_0x1b92b7){var _0x1ae58f=this['_namespace']['generate']();this['_server']['debug']('Created\x20ne'+'w\x20client\x20?',_0x1ae58f),this['ping'](_0x1ae58f),this['_server']['trigger']('handshake',_0x1ae58f),_0x4879cd['call'](_0x1b92b7,_0x1ae58f);},'destroyClient':function(_0x4522f2,_0x3594cc,_0x27fd08){if(this['_namespace']['exists'](_0x4522f2)){var _0x11083a=this['_clients'];_0x11083a[_0x4522f2]&&_0x11083a[_0x4522f2]['forEach'](function(_0x2b3de4){this['unsubscrib'+'e'](_0x4522f2,_0x2b3de4);},this),this['removeTime'+'out'](_0x4522f2),this['_namespace']['release'](_0x4522f2),delete this['_messages'][_0x4522f2],this['_server']['debug']('Destroyed\x20'+'client\x20?',_0x4522f2),this['_server']['trigger']('disconnect',_0x4522f2),this['_server']['trigger']('close',_0x4522f2),_0x3594cc&&_0x3594cc['call'](_0x27fd08);}},'clientExists':function(_0x2d8fcf,_0xff367,_0x5b2665){_0xff367['call'](_0x5b2665,this['_namespace']['exists'](_0x2d8fcf));},'ping':function(_0x5516ca){var _0x1fa756=this['_server']['timeout'];'number'==typeof _0x1fa756&&(this['_server']['debug']('Ping\x20?,\x20?',_0x5516ca,_0x1fa756),this['removeTime'+'out'](_0x5516ca),this['addTimeout'](_0x5516ca,(-0xa2c+-0x14ad*-0x1+-0xa7f)*_0x1fa756,function(){this['destroyCli'+'ent'](_0x5516ca);},this));},'subscribe':function(_0xadec0c,_0x3ed044,_0x73bb5c,_0x4470fa){var _0x1a4f16=this['_clients'],_0x5b1699=this['_channels'];_0x1a4f16[_0xadec0c]=_0x1a4f16[_0xadec0c]||new _0x345531();var _0x27fe7f=_0x1a4f16[_0xadec0c]['add'](_0x3ed044);_0x5b1699[_0x3ed044]=_0x5b1699[_0x3ed044]||new _0x345531(),_0x5b1699[_0x3ed044]['add'](_0xadec0c),this['_server']['debug']('Subscribed'+'\x20client\x20?\x20'+'to\x20channel'+'\x20?',_0xadec0c,_0x3ed044),_0x27fe7f&&this['_server']['trigger']('subscribe',_0xadec0c,_0x3ed044),_0x73bb5c&&_0x73bb5c['call'](_0x4470fa,!(0x412+-0x1dca+-0x2*-0xcdc));},'unsubscribe':function(_0x1d5d38,_0x4bbf9e,_0x1aca90,_0x4297aa){var _0x222341=this['_clients'],_0x51c837=this['_channels'],_0x5e38ec=!(0xae*-0x3+-0x337+0x542);_0x222341[_0x1d5d38]&&(_0x5e38ec=_0x222341[_0x1d5d38]['remove'](_0x4bbf9e),_0x222341[_0x1d5d38]['isEmpty']()&&delete _0x222341[_0x1d5d38]),_0x51c837[_0x4bbf9e]&&(_0x51c837[_0x4bbf9e]['remove'](_0x1d5d38),_0x51c837[_0x4bbf9e]['isEmpty']()&&delete _0x51c837[_0x4bbf9e]),this['_server']['debug']('Unsubscrib'+'ed\x20client\x20'+'?\x20from\x20cha'+'nnel\x20?',_0x1d5d38,_0x4bbf9e),_0x5e38ec&&this['_server']['trigger']('unsubscrib'+'e',_0x1d5d38,_0x4bbf9e),_0x1aca90&&_0x1aca90['call'](_0x4297aa,!(-0x1ece+0x359+0x927*0x3));},'publish':function(_0x1a29b6,_0x46e10a){this['_server']['debug']('Publishing'+'\x20message\x20?',_0x1a29b6);for(var _0x332ffe,_0x48f7fd=this['_messages'],_0x33b9c9=new _0x345531(),_0x36af7a=0xa9e*0x1+0x5*-0x51e+-0x1df*-0x8,_0x1a2dd0=_0x46e10a['length'];_0x36af7a<_0x1a2dd0;_0x36af7a++)(_0x332ffe=this['_channels'][_0x46e10a[_0x36af7a]])&&_0x332ffe['forEach'](_0x33b9c9['add'],_0x33b9c9);_0x33b9c9['forEach'](function(_0x41662b){this['_server']['debug']('Queueing\x20f'+'or\x20client\x20'+'?:\x20?',_0x41662b,_0x1a29b6),_0x48f7fd[_0x41662b]=_0x48f7fd[_0x41662b]||[],_0x48f7fd[_0x41662b]['push'](_0x4f1d5c(_0x1a29b6)),this['emptyQueue'](_0x41662b);},this),this['_server']['trigger']('publish',_0x1a29b6['clientId'],_0x1a29b6['channel'],_0x1a29b6['data']);},'emptyQueue':function(_0x537186){this['_server']['hasConnect'+'ion'](_0x537186)&&(this['_server']['deliver'](_0x537186,this['_messages'][_0x537186]),delete this['_messages'][_0x537186]);}},_0x4c49fd),_0x1d3303['exports']=_0x220a55;},0x24af:(_0x5251df,_0x34a0e7,_0x5e7865)=>{'use strict';var _0x49f1b7=_0x5e7865(0x3*-0x760+0x26e*-0xd+0x132f*0x3),_0x5ec012=_0x5e7865(0x1a3e+-0x17fc+0xb01),_0xb2b22f=_0x5e7865(0x17*0x3+0x142c+-0x29b*0x4),_0x1e2f82=_0x5e7865(-0x3*0x397+-0x10c8+0x1*0x2b99),_0x2ae123=(_0x5e7865(0x185*-0x14+-0x2*0x1139+-0x1*-0x412b),_0x5e7865(-0x233c+-0x15fe+0x1*0x4ad1)),_0x3616e6=_0x5e7865(0x7*0x767+-0x2b1e+0x11b7),_0x47a8d3=_0x5e7865(-0x21c8+0x47d*-0xb+-0x1d*-0x3fa),_0x3893dd=_0x5e7865(0x2262+-0xd09+0x66*0x1),_0x940aa6=_0x5e7865(-0x2*-0x11b+-0x701*-0x4+-0x812),_0x511259=_0x5ec012(_0x1e2f82({'className':'Engine.Pro'+'xy','MAX_DELAY':0x0,'INTERVAL':0x0,'TIMEOUT':0x3c,'initialize':function(_0x407f33){this['_options']=_0x407f33||{},this['_connectio'+'ns']={},this['interval']=this['_options']['interval']||this['INTERVAL'],this['timeout']=this['_options']['timeout']||this['TIMEOUT'];var _0x7c3f08=this['_options']['type']||_0x940aa6;this['_engine']=_0x7c3f08['create'](this,this['_options']),this['bind']('close',function(_0x586e1e){var _0x3c8fa2=this;_0x49f1b7(function(){_0x3c8fa2['flushConne'+'ction'](_0x586e1e);});},this),this['debug']('Created\x20ne'+'w\x20engine:\x20'+'?',this['_options']);},'connect':function(_0x568f59,_0x4cc019,_0x5f3afa,_0x472b67){this['debug']('Accepting\x20'+'connection'+'\x20from\x20?',_0x568f59),this['_engine']['ping'](_0x568f59),this['connection'](_0x568f59,!(-0x17c+0x261a+0x2b*-0xda))['connect'](_0x4cc019,_0x5f3afa,_0x472b67),this['_engine']['emptyQueue'](_0x568f59);},'hasConnection':function(_0x48c160){return this['_connectio'+'ns']['hasOwnProp'+'erty'](_0x48c160);},'connection':function(_0xfbe83b,_0x3cd018){var _0x53c95d=this['_connectio'+'ns'][_0xfbe83b];return _0x53c95d||!_0x3cd018?_0x53c95d:(this['_connectio'+'ns'][_0xfbe83b]=new _0x3893dd(this,_0xfbe83b),this['trigger']('connection'+':open',_0xfbe83b),this['_connectio'+'ns'][_0xfbe83b]);},'closeConnection':function(_0x4c0ac7){this['debug']('Closing\x20co'+'nnection\x20f'+'or\x20?',_0x4c0ac7);var _0x14bcf4=this['_connectio'+'ns'][_0x4c0ac7];_0x14bcf4&&(_0x14bcf4['socket']&&_0x14bcf4['socket']['close'](),this['trigger']('connection'+':close',_0x4c0ac7),delete this['_connectio'+'ns'][_0x4c0ac7]);},'openSocket':function(_0x2c1f6a,_0x5e294d){this['connection'](_0x2c1f6a,!(0x1*0x229f+-0x30*-0x2+0x11*-0x20f))['socket']=_0x5e294d;},'deliver':function(_0x238fdb,_0x4bf8be){if(!_0x4bf8be||-0x23c2+0x4a8*0x2+0x1a72===_0x4bf8be['length'])return!(0xf75*0x1+-0x16*0x1a6+0x14d0);var _0x5690ae=this['connection'](_0x238fdb,!(-0x1*0x101c+-0x124e+0x226b));if(!_0x5690ae)return!(-0x1d35+-0x4*0x10f+-0x593*-0x6);for(var _0x27f34c=0x1af+-0x870+0x6c1,_0x4ccf41=_0x4bf8be['length'];_0x27f34c<_0x4ccf41;_0x27f34c++)_0x5690ae['deliver'](_0x4bf8be[_0x27f34c]);return!(0x1103*-0x2+0xa31*-0x3+-0x2cf*-0x17);},'generateId':function(){return _0xb2b22f();},'flushConnection':function(_0x389188,_0xbb724b){if(_0x389188){this['debug']('Flushing\x20c'+'onnection\x20'+'for\x20?',_0x389188);var _0x5da37d=this['connection'](_0x389188,!(-0xe3a+-0x1*-0x2282+-0x1447*0x1));_0x5da37d&&(!(0x1a5a*-0x1+0x23f+0x181c)===_0xbb724b&&(_0x5da37d['socket']=null),_0x5da37d['flush'](),this['closeConne'+'ction'](_0x389188));}},'close':function(){for(var _0x5a8560 in this['_connectio'+'ns'])this['flushConne'+'ction'](_0x5a8560);this['_engine']['disconnect']();},'disconnect':function(){if(this['_engine']['disconnect'])return this['_engine']['disconnect']();},'publish':function(_0x541b8a){var _0x40f2f2=_0x47a8d3['expand'](_0x541b8a['channel']);return this['_engine']['publish'](_0x541b8a,_0x40f2f2);}}),{'get':function(_0x2daf1c){return new _0x511259(_0x2daf1c);}});['createClie'+'nt','clientExis'+'ts','destroyCli'+'ent','ping','subscribe','unsubscrib'+'e']['forEach'](function(_0x5c089c){_0x511259['prototype'][_0x5c089c]=function(){return this['_engine'][_0x5c089c]['apply'](this['_engine'],arguments);};}),_0x5ec012(_0x511259['prototype'],_0x3616e6),_0x5ec012(_0x511259['prototype'],_0x2ae123),_0x5251df['exports']=_0x511259;},0xa37:(_0xc2b87c,_0x2e2922,_0x33b075)=>{'use strict';var _0x1daceb=_0x33b075(0x1*-0x1223+0x13a8+-0x1b*-0x40),_0x1be85d=_0x33b075(0x2147+0xb96+-0x1b46),_0x1967e8={'VERSION':_0x1daceb['VERSION'],'Client':_0x33b075(-0x8a6*0x2+-0x17f1+0x309e),'Scheduler':_0x33b075(0x21*-0x29+-0x2ce*-0x5+0x1198),'NodeAdapter':_0x33b075(0xa34+0x2176*-0x1+0x2538)};_0x1be85d['wrapper']=_0x1967e8,_0xc2b87c['exports']=_0x1967e8;},0x180a:(_0x239e15,_0x2e9648,_0x1eb345)=>{'use strict';var _0x3e6fdb=_0x1eb345(0x12d9+0xc8+-0x134c);_0x239e15['exports']={'then':function(_0x46a9af,_0x253cdd){var _0x1badeb=this;return this['_promise']||(this['_promise']=new _0x3e6fdb(function(_0x58bfa3,_0x106d70){_0x1badeb['_resolve']=_0x58bfa3,_0x1badeb['_reject']=_0x106d70;})),0x1764+0xe3b+0x1*-0x259f===arguments['length']?this['_promise']:this['_promise']['then'](_0x46a9af,_0x253cdd);},'callback':function(_0x4a1c5d,_0x3882e9){return this['then'](function(_0x5caba6){_0x4a1c5d['call'](_0x3882e9,_0x5caba6);});},'errback':function(_0x27eb56,_0x4f74c5){return this['then'](null,function(_0x382640){_0x27eb56['call'](_0x4f74c5,_0x382640);});},'timeout':function(_0x3f5822,_0x307108){this['then']();var _0x26c77e=this;this['_timer']=global['setTimeout'](function(){_0x26c77e['_reject'](_0x307108);},(0x1dec+0xb08+-0x4*0x943)*_0x3f5822);},'setDeferredStatus':function(_0x385f58,_0x5c10a1){this['_timer']&&global['clearTimeo'+'ut'](this['_timer']),this['then'](),'succeeded'===_0x385f58?this['_resolve'](_0x5c10a1):'failed'===_0x385f58?this['_reject'](_0x5c10a1):delete this['_promise'];}};},0x1197:(_0x53b3b8,_0x533182,_0x229349)=>{'use strict';var _0x429219=_0x229349(-0x31a2*-0x1+-0x2120*0x1+0xcea),_0x57a4d1={'LOG_LEVELS':{'fatal':0x4,'error':0x3,'warn':0x2,'info':0x1,'debug':0x0},'writeLog':function(_0xad30b9,_0x55294c){var _0x595a37=_0x57a4d1['logger']||(_0x57a4d1['wrapper']||_0x57a4d1)['logger'];if(_0x595a37){var _0xa0ba6e=Array['prototype']['slice']['apply'](_0xad30b9),_0x5796d8='[Faye',_0x5b519f=this['className'],_0x34900a=_0xa0ba6e['shift']()['replace'](/\?/g,function(){try{return _0x429219(_0xa0ba6e['shift']());}catch(_0x5cd144){return'[Object]';}});_0x5b519f&&(_0x5796d8+='.'+_0x5b519f),_0x5796d8+=']\x20','function'==typeof _0x595a37[_0x55294c]?_0x595a37[_0x55294c](_0x5796d8+_0x34900a):'function'==typeof _0x595a37&&_0x595a37(_0x5796d8+_0x34900a);}}};for(var _0x344351 in _0x57a4d1['LOG_LEVELS'])!function(_0x92b36c){_0x57a4d1[_0x92b36c]=function(){this['writeLog'](arguments,_0x92b36c);};}(_0x344351);_0x53b3b8['exports']=_0x57a4d1;},0x1a6a:(_0x5cbbc9,_0x4cebca,_0x18fe91)=>{'use strict';var _0x5b309a={'countListeners':function(_0xb88291){return this['listeners'](_0xb88291)['length'];},'bind':function(_0x4ea6be,_0x3ce447,_0x56ba6c){var _0x55bd0d=Array['prototype']['slice'],_0x240149=function(){_0x3ce447['apply'](_0x56ba6c,_0x55bd0d['call'](arguments));};return this['_listeners']=this['_listeners']||[],this['_listeners']['push']([_0x4ea6be,_0x3ce447,_0x56ba6c,_0x240149]),this['on'](_0x4ea6be,_0x240149);},'unbind':function(_0x4e87b5,_0x1028f2,_0x1b55c9){this['_listeners']=this['_listeners']||[];for(var _0x37b376,_0x2cb7ad=this['_listeners']['length'];_0x2cb7ad--;)(_0x37b376=this['_listeners'][_0x2cb7ad])[0xbe*-0x2b+-0x6be+0x26a8]===_0x4e87b5&&(!_0x1028f2||_0x37b376[0x1a21+0xce*0x10+-0x2700]===_0x1028f2&&_0x37b376[-0x183*0x12+0x2540+0x3*-0x358]===_0x1b55c9)&&(this['_listeners']['splice'](_0x2cb7ad,-0x1697*0x1+0x3*0xcf5+-0x56d*0x3),this['removeList'+'ener'](_0x4e87b5,_0x37b376[-0x21f*-0x6+0x24c5+-0x317c]));}};_0x18fe91(0x1*0x3f8+-0x8ef+0x123a)(_0x5b309a,_0x18fe91(-0xf*-0x151+0xc6+0x1*-0x11fc)['prototype']),_0x5b309a['trigger']=_0x5b309a['emit'],_0x5cbbc9['exports']=_0x5b309a;},0x2458:_0x4cf9f4=>{'use strict';_0x4cf9f4['exports']={'addTimeout':function(_0x42aba9,_0xa43333,_0x5ebd27,_0x4a5e6d){if(this['_timeouts']=this['_timeouts']||{},!this['_timeouts']['hasOwnProp'+'erty'](_0x42aba9)){var _0xa57635=this;this['_timeouts'][_0x42aba9]=global['setTimeout'](function(){delete _0xa57635['_timeouts'][_0x42aba9],_0x5ebd27['call'](_0x4a5e6d);},(-0x2486+-0x265f+-0x4ecd*-0x1)*_0xa43333);}},'removeTimeout':function(_0x2a550f){this['_timeouts']=this['_timeouts']||{};var _0x203507=this['_timeouts'][_0x2a550f];_0x203507&&(global['clearTimeo'+'ut'](_0x203507),delete this['_timeouts'][_0x2a550f]);},'removeAllTimeouts':function(){for(var _0x2c8be5 in(this['_timeouts']=this['_timeouts']||{},this['_timeouts']))this['removeTime'+'out'](_0x2c8be5);}};},0x202b:(_0x30eb5e,_0x38b609,_0xc7bb26)=>{'use strict';var _0x1619c7=_0xc7bb26(0x164a+-0xe8d+-0x84f*-0x1),_0x2c2169=_0xc7bb26(0x8*-0x455+0x1fa2+0x1049),_0x3699bd=_0xc7bb26(-0x1*0x1bef+0x2b98+0xac1),_0x153cf9=(_0xc7bb26(0x1f*0x11f+0xbb7*-0x1+0x1*-0xaa9),_0x1619c7({'initialize':function(_0x1bb0b9){this['id']=this['name']=_0x1bb0b9;},'push':function(_0x180d4b){this['trigger']('message',_0x180d4b);},'isUnused':function(){return 0x23*-0x74+0x1*0x15b9+-0x5dd===this['countListe'+'ners']('message');}}));_0x2c2169(_0x153cf9['prototype'],_0x3699bd),_0x2c2169(_0x153cf9,{'HANDSHAKE':'/meta/hand'+'shake','CONNECT':'/meta/conn'+'ect','SUBSCRIBE':'/meta/subs'+'cribe','UNSUBSCRIBE':'/meta/unsu'+'bscribe','DISCONNECT':'/meta/disc'+'onnect','META':'meta','SERVICE':'service','expand':function(_0x3df5a4){var _0x4df63a=this['parse'](_0x3df5a4),_0x30bfa7=['/**',_0x3df5a4],_0x1a9dcc=_0x4df63a['slice']();_0x1a9dcc[_0x1a9dcc['length']-(-0x433+0x2456*0x1+-0x2022)]='*',_0x30bfa7['push'](this['unparse'](_0x1a9dcc));for(var _0x5a2585=0x1d*0x13+-0x1018+0xdf2,_0x3ee8eb=_0x4df63a['length'];_0x5a2585<_0x3ee8eb;_0x5a2585++)(_0x1a9dcc=_0x4df63a['slice'](0xb61*-0x1+-0x34*-0x59+-0x6b3,_0x5a2585))['push']('**'),_0x30bfa7['push'](this['unparse'](_0x1a9dcc));return _0x30bfa7;},'isValid':function(){return!(-0xcbd+0x9*-0x115+-0x15*-0x112);},'parse':function(_0x4265a5){return this['isValid'](_0x4265a5)?_0x4265a5['split']('/')['slice'](0x1d4+-0x4f*0x1d+0x720):null;},'unparse':function(_0x28a258){return'/'+_0x28a258['join']('/');},'isMeta':function(_0x328a7b){var _0x38b881=this['parse'](_0x328a7b);return _0x38b881?_0x38b881[-0x22*0xf9+0x8a0+0x1872]===this['META']:null;},'isService':function(_0x2b209e){var _0x37f01d=this['parse'](_0x2b209e);return _0x37f01d?_0x37f01d[-0x2*-0x40e+-0x217b+-0x875*-0x3]===this['SERVICE']:null;},'isSubscribable':function(_0x128a56){return this['isValid'](_0x128a56)?!this['isMeta'](_0x128a56)&&!this['isService'](_0x128a56):null;},'Set':_0x1619c7({'initialize':function(){this['_channels']={};},'getKeys':function(){var _0x29b999=[];for(var _0x4a386e in this['_channels'])_0x29b999['push'](_0x4a386e);return _0x29b999;},'remove':function(_0x5b7fc6){delete this['_channels'][_0x5b7fc6];},'hasSubscription':function(_0x1d3d01){return this['_channels']['hasOwnProp'+'erty'](_0x1d3d01);},'subscribe':function(_0x38476a,_0x236673){for(var _0x218377,_0x530013=-0x1*-0x1479+-0x400*0x6+0x387,_0x175a3c=_0x38476a['length'];_0x530013<_0x175a3c;_0x530013++)_0x218377=_0x38476a[_0x530013],(this['_channels'][_0x218377]=this['_channels'][_0x218377]||new _0x153cf9(_0x218377))['bind']('message',_0x236673);},'unsubscribe':function(_0x449f6c,_0x262b71){var _0x53a3eb=this['_channels'][_0x449f6c];return!!_0x53a3eb&&(_0x53a3eb['unbind']('message',_0x262b71),!!_0x53a3eb['isUnused']()&&(this['remove'](_0x449f6c),!(-0x9c1*-0x1+0x2*0x7a6+0x35*-0x79)));},'distributeMessage':function(_0x3b34af){for(var _0x119e4c=_0x153cf9['expand'](_0x3b34af['channel']),_0x1d40d0=0x2363+0x1159*0x1+-0x34bc,_0x19cc76=_0x119e4c['length'];_0x1d40d0<_0x19cc76;_0x1d40d0++){var _0x5d73d4=this['_channels'][_0x119e4c[_0x1d40d0]];_0x5d73d4&&_0x5d73d4['trigger']('message',_0x3b34af);}}})}),_0x30eb5e['exports']=_0x153cf9;},0x761:(_0x178a99,_0x1692cc,_0x2057ff)=>{'use strict';var _0xb8dca=_0x2057ff(-0x8*0x293+0x13e1+0x48e),_0x2c8dd0=_0x2057ff(0x18ac*0x1+-0x55f*0x2+0x2*0x10f),_0x2c6a6d=(_0x2057ff(0x4bc*0x3+0x14+-0xdf3*0x1),_0x2057ff(-0x1*0xb32+0x1e24+-0x11a9)),_0x56e663=_0x2057ff(0x9*-0x3f6+0x2*0xc28+0x1bd9),_0x38ad1c=_0x2057ff(0x1951+-0x1664+-0x48*-0x13),_0x55fcc9=_0x2057ff(0x1ea1+0x711+-0x186f),_0x5d7cd4=_0x2057ff(-0x13d*0x2+0x106a*-0x1+0x2249),_0x2cd648=_0x2057ff(0x1ecf+-0x1b*0x57+0x9a*0x4),_0x5cd951=_0x2057ff(0x3*-0x761+-0xe*0x8+0x282a),_0x2edd38=_0x2057ff(-0x27*0xdf+-0x3*0x4a4+0x4a4f),_0x469f33=_0x2057ff(-0x31fb+-0x4*-0xe25+0x1992),_0x5b9483=_0x2057ff(0xb32*-0x1+-0x1c46+0x1*0x29bf),_0x3d4d8c=_0x2057ff(0x2*-0x70a+-0xf1c+0x24fa),_0x4e284a=_0x2057ff(0x12f2+0x185*-0x17+0xf74*0x3),_0x596cdb=_0x2057ff(-0x12a7+0x1*0xc6d+-0x65*-0x10),_0x26048d=_0x2057ff(-0x2*0x641+-0x7*0x619+-0x2712*-0x2),_0x28f9a5=_0x2c8dd0({'className':'Client','UNCONNECTED':0x1,'CONNECTING':0x2,'CONNECTED':0x3,'DISCONNECTED':0x4,'HANDSHAKE':'handshake','RETRY':'retry','NONE':'none','CONNECTION_TIMEOUT':0x3c,'DEFAULT_ENDPOINT':'/bayeux','INTERVAL':0x0,'initialize':function(_0x2a9b7b,_0x5c4dd6){this['info']('New\x20client'+'\x20created\x20f'+'or\x20?',_0x2a9b7b),_0x5d7cd4(_0x5c4dd6=_0x5c4dd6||{},['interval','timeout','endpoints','proxy','retry','scheduler','websocketE'+'xtensions','tls','ca']),this['_channels']=new _0x469f33['Set'](),this['_dispatche'+'r']=_0x5b9483['create'](this,_0x2a9b7b||this['DEFAULT_EN'+'DPOINT'],_0x5c4dd6),this['_messageId']=-0xf2b+-0x423*0x6+0x27fd,this['_state']=this['UNCONNECTE'+'D'],this['_responseC'+'allbacks']={},this['_advice']={'reconnect':this['RETRY'],'interval':(0xb7d*-0x2+-0x13c2+-0x18e*-0x1e)*(_0x5c4dd6['interval']||this['INTERVAL']),'timeout':(-0x1*-0x10fa+0x15b8+-0x22ca)*(_0x5c4dd6['timeout']||this['CONNECTION'+'_TIMEOUT'])},this['_dispatche'+'r']['timeout']=this['_advice']['timeout']/(0x2290+0x22d*-0x2+-0x7*0x3c2),this['_dispatche'+'r']['bind']('message',this['_receiveMe'+'ssage'],this),_0x56e663['Event']&&void(0x3*0x773+-0x10c1*-0x1+-0x271a)!==global['onbeforeun'+'load']&&_0x56e663['Event']['on'](global,'beforeunlo'+'ad',function(){_0x2c6a6d['indexOf'](this['_dispatche'+'r']['_disabled'],'autodiscon'+'nect')<0x526*-0x5+-0x1*0x2146+0x3b04&&this['disconnect']();},this);},'addWebsocketExtension':function(_0x5165a0){return this['_dispatche'+'r']['addWebsock'+'etExtensio'+'n'](_0x5165a0);},'disable':function(_0x4478fd){return this['_dispatche'+'r']['disable'](_0x4478fd);},'setHeader':function(_0x1f6a38,_0x450cca){return this['_dispatche'+'r']['setHeader'](_0x1f6a38,_0x450cca);},'handshake':function(_0x44d980,_0x34468e){if(this['_advice']['reconnect']!==this['NONE']&&this['_state']===this['UNCONNECTE'+'D']){this['_state']=this['CONNECTING'];var _0x28a6e4=this;this['info']('Initiating'+'\x20handshake'+'\x20with\x20?',this['_dispatche'+'r']['endpoint']['href']),this['_dispatche'+'r']['selectTran'+'sport'](_0x38ad1c['MANDATORY_'+'CONNECTION'+'_TYPES']),this['_sendMessa'+'ge']({'channel':_0x469f33['HANDSHAKE'],'version':_0x38ad1c['BAYEUX_VER'+'SION'],'supportedConnectionTypes':this['_dispatche'+'r']['getConnect'+'ionTypes']()},{},function(_0x5f591f){_0x5f591f['successful']?(this['_state']=this['CONNECTED'],this['_dispatche'+'r']['clientId']=_0x5f591f['clientId'],this['_dispatche'+'r']['selectTran'+'sport'](_0x5f591f['supportedC'+'onnectionT'+'ypes']),this['info']('Handshake\x20'+'successful'+':\x20?',this['_dispatche'+'r']['clientId']),this['subscribe'](this['_channels']['getKeys'](),!(-0x3*0xc17+-0x1751+0x3b96)),_0x44d980&&_0xb8dca(function(){_0x44d980['call'](_0x34468e);})):(this['info']('Handshake\x20'+'unsuccessf'+'ul'),global['setTimeout'](function(){_0x28a6e4['handshake'](_0x44d980,_0x34468e);},(-0x1*0x602+-0x21*-0xcb+-0x56b*0x3)*this['_dispatche'+'r']['retry']),this['_state']=this['UNCONNECTE'+'D']);},this);}},'connect':function(_0x32e952,_0x36ba5b){if(this['_advice']['reconnect']!==this['NONE']&&this['_state']!==this['DISCONNECT'+'ED']){if(this['_state']===this['UNCONNECTE'+'D'])return this['handshake'](function(){this['connect'](_0x32e952,_0x36ba5b);},this);this['callback'](_0x32e952,_0x36ba5b),this['_state']===this['CONNECTED']&&(this['info']('Calling\x20de'+'ferred\x20act'+'ions\x20for\x20?',this['_dispatche'+'r']['clientId']),this['setDeferre'+'dStatus']('succeeded'),this['setDeferre'+'dStatus']('unknown'),this['_connectRe'+'quest']||(this['_connectRe'+'quest']=!(-0x77d+-0x56b*0x1+0xce8),this['info']('Initiating'+'\x20connectio'+'n\x20for\x20?',this['_dispatche'+'r']['clientId']),this['_sendMessa'+'ge']({'channel':_0x469f33['CONNECT'],'clientId':this['_dispatche'+'r']['clientId'],'connectionType':this['_dispatche'+'r']['connection'+'Type']},{},this['_cycleConn'+'ection'],this)));}},'disconnect':function(){if(this['_state']===this['CONNECTED']){this['_state']=this['DISCONNECT'+'ED'],this['info']('Disconnect'+'ing\x20?',this['_dispatche'+'r']['clientId']);var _0x3bf1f3=new _0x596cdb();return this['_sendMessa'+'ge']({'channel':_0x469f33['DISCONNECT'],'clientId':this['_dispatche'+'r']['clientId']},{},function(_0x335a04){_0x335a04['successful']?(this['_dispatche'+'r']['close'](),_0x3bf1f3['setDeferre'+'dStatus']('succeeded')):_0x3bf1f3['setDeferre'+'dStatus']('failed',_0x3d4d8c['parse'](_0x335a04['error']));},this),this['info']('Clearing\x20c'+'hannel\x20lis'+'teners\x20for'+'\x20?',this['_dispatche'+'r']['clientId']),this['_channels']=new _0x469f33['Set'](),_0x3bf1f3;}},'subscribe':function(_0x2dcb9d,_0x507ea8,_0x1c687b){if(_0x2dcb9d instanceof Array)return _0x2c6a6d['map'](_0x2dcb9d,function(_0x44307e){return this['subscribe'](_0x44307e,_0x507ea8,_0x1c687b);},this);var _0x5915dd=new _0x26048d(this,_0x2dcb9d,_0x507ea8,_0x1c687b),_0x2813a7=!(-0x185*-0x3+-0x71*0x23+-0xae4*-0x1)===_0x507ea8;return this['_channels']['hasSubscri'+'ption'](_0x2dcb9d)&&!_0x2813a7?(this['_channels']['subscribe']([_0x2dcb9d],_0x5915dd),_0x5915dd['setDeferre'+'dStatus']('succeeded'),_0x5915dd):(this['connect'](function(){this['info']('Client\x20?\x20a'+'ttempting\x20'+'to\x20subscri'+'be\x20to\x20?',this['_dispatche'+'r']['clientId'],_0x2dcb9d),_0x2813a7||this['_channels']['subscribe']([_0x2dcb9d],_0x5915dd),this['_sendMessa'+'ge']({'channel':_0x469f33['SUBSCRIBE'],'clientId':this['_dispatche'+'r']['clientId'],'subscription':_0x2dcb9d},{},function(_0x2bd65){if(!_0x2bd65['successful'])return _0x5915dd['setDeferre'+'dStatus']('failed',_0x3d4d8c['parse'](_0x2bd65['error'])),this['_channels']['unsubscrib'+'e'](_0x2dcb9d,_0x5915dd);var _0x11e471=[]['concat'](_0x2bd65['subscripti'+'on']);this['info']('Subscripti'+'on\x20acknowl'+'edged\x20for\x20'+'?\x20to\x20?',this['_dispatche'+'r']['clientId'],_0x11e471),_0x5915dd['setDeferre'+'dStatus']('succeeded');},this);},this),_0x5915dd);},'unsubscribe':function(_0x44cea8,_0x2e4f57){if(_0x44cea8 instanceof Array)return _0x2c6a6d['map'](_0x44cea8,function(_0x346494){return this['unsubscrib'+'e'](_0x346494,_0x2e4f57);},this);this['_channels']['unsubscrib'+'e'](_0x44cea8,_0x2e4f57)&&this['connect'](function(){this['info']('Client\x20?\x20a'+'ttempting\x20'+'to\x20unsubsc'+'ribe\x20from\x20'+'?',this['_dispatche'+'r']['clientId'],_0x44cea8),this['_sendMessa'+'ge']({'channel':_0x469f33['UNSUBSCRIB'+'E'],'clientId':this['_dispatche'+'r']['clientId'],'subscription':_0x44cea8},{},function(_0x256a5b){if(_0x256a5b['successful']){var _0x558f98=[]['concat'](_0x256a5b['subscripti'+'on']);this['info']('Unsubscrip'+'tion\x20ackno'+'wledged\x20fo'+'r\x20?\x20from\x20?',this['_dispatche'+'r']['clientId'],_0x558f98);}},this);},this);},'publish':function(_0x297456,_0x4e1a02,_0x5c816f){_0x5d7cd4(_0x5c816f||{},['attempts','deadline']);var _0x2ffb45=new _0x596cdb();return this['connect'](function(){this['info']('Client\x20?\x20q'+'ueueing\x20pu'+'blished\x20me'+'ssage\x20to\x20?'+':\x20?',this['_dispatche'+'r']['clientId'],_0x297456,_0x4e1a02),this['_sendMessa'+'ge']({'channel':_0x297456,'data':_0x4e1a02,'clientId':this['_dispatche'+'r']['clientId']},_0x5c816f,function(_0x12e6ed){_0x12e6ed['successful']?_0x2ffb45['setDeferre'+'dStatus']('succeeded'):_0x2ffb45['setDeferre'+'dStatus']('failed',_0x3d4d8c['parse'](_0x12e6ed['error']));},this);},this),_0x2ffb45;},'_sendMessage':function(_0x1b1ac5,_0x40708e,_0x5b5eaa,_0x529fc1){_0x1b1ac5['id']=this['_generateM'+'essageId']();var _0x1ed45b=this['_advice']['timeout']?(-0x631+-0x5ad+0xbdf*0x1+0.19999999999999996)*this['_advice']['timeout']/(0xcd9+-0x9fb+0xe*0x13):(-0x16*-0xeb+-0x198d+0x55c+0.19999999999999996)*this['_dispatche'+'r']['retry'];this['pipeThroug'+'hExtension'+'s']('outgoing',_0x1b1ac5,null,function(_0x28a43a){_0x28a43a&&(_0x5b5eaa&&(this['_responseC'+'allbacks'][_0x28a43a['id']]=[_0x5b5eaa,_0x529fc1]),this['_dispatche'+'r']['sendMessag'+'e'](_0x28a43a,_0x1ed45b,_0x40708e||{}));},this);},'_generateMessageId':function(){return this['_messageId']+=0x939+-0x507+0x431*-0x1,this['_messageId']>=Math['pow'](-0xbe0+-0x3*-0x7c2+0x3cc*-0x3,0x1897+0x7bd*-0x3+-0x140)&&(this['_messageId']=0x52+0x1*-0x26e6+-0x4*-0x9a5),this['_messageId']['toString'](-0x1f10+-0x113b*0x1+-0x1025*-0x3);},'_receiveMessage':function(_0x2cb9e5){var _0x53ac25,_0x5160ce=_0x2cb9e5['id'];void(0x2127+-0x329+-0x1dfe)!==_0x2cb9e5['successful']&&(_0x53ac25=this['_responseC'+'allbacks'][_0x5160ce],delete this['_responseC'+'allbacks'][_0x5160ce]),this['pipeThroug'+'hExtension'+'s']('incoming',_0x2cb9e5,null,function(_0x52e7ee){_0x52e7ee&&(_0x52e7ee['advice']&&this['_handleAdv'+'ice'](_0x52e7ee['advice']),this['_deliverMe'+'ssage'](_0x52e7ee),_0x53ac25&&_0x53ac25[-0x30*0xc0+0x7c1+0x1c3f]['call'](_0x53ac25[-0xc98*-0x2+0x2*-0x108e+0x7ed],_0x52e7ee));},this);},'_handleAdvice':function(_0x241d49){_0x55fcc9(this['_advice'],_0x241d49),this['_dispatche'+'r']['timeout']=this['_advice']['timeout']/(-0x23ee+-0xde*0x6+0x2d0a),this['_advice']['reconnect']===this['HANDSHAKE']&&this['_state']!==this['DISCONNECT'+'ED']&&(this['_state']=this['UNCONNECTE'+'D'],this['_dispatche'+'r']['clientId']=null,this['_cycleConn'+'ection']());},'_deliverMessage':function(_0x32c5a4){_0x32c5a4['channel']&&void(0x2599+0x1*-0x7d3+-0x1dc6)!==_0x32c5a4['data']&&(this['info']('Client\x20?\x20c'+'alling\x20lis'+'teners\x20for'+'\x20?\x20with\x20?',this['_dispatche'+'r']['clientId'],_0x32c5a4['channel'],_0x32c5a4['data']),this['_channels']['distribute'+'Message'](_0x32c5a4));},'_cycleConnection':function(){this['_connectRe'+'quest']&&(this['_connectRe'+'quest']=null,this['info']('Closed\x20con'+'nection\x20fo'+'r\x20?',this['_dispatche'+'r']['clientId']));var _0x40a4c1=this;global['setTimeout'](function(){_0x40a4c1['connect']();},this['_advice']['interval']);}});_0x55fcc9(_0x28f9a5['prototype'],_0x2cd648),_0x55fcc9(_0x28f9a5['prototype'],_0x2edd38),_0x55fcc9(_0x28f9a5['prototype'],_0x5cd951),_0x55fcc9(_0x28f9a5['prototype'],_0x4e284a),_0x178a99['exports']=_0x28f9a5;},0x247:(_0x51e277,_0xa83630,_0x5a8013)=>{'use strict';var _0x21f304=_0x5a8013(0xfa6*-0x2+-0x139*0x12+0x6*0xb8f),_0x53d4d5=_0x5a8013(0x2*-0x47f+0x718+0x9a4),_0x21ebe2=_0x5a8013(-0xa97+0x1*0x336b+-0xd32),_0x14fd5e=_0x5a8013(-0x1a85+-0x77b+0x2f43),_0x1be5ca=_0x5a8013(0x1da1+-0x6d8+-0x532),_0x4dbe1c=_0x5a8013(0x1*-0x1749+0x5*0x405+0x9*0x34a),_0x35d784=_0x5a8013(-0x452+0x1*-0x11e7+-0x285b*-0x1),_0x194cc8=_0x5a8013(0xf*-0x153+0x779*-0x4+0x4c16),_0x3a30a3=_0x21f304({'className':'Dispatcher','MAX_REQUEST_SIZE':0x800,'DEFAULT_RETRY':0x5,'UP':0x1,'DOWN':0x2,'initialize':function(_0x5524cc,_0x1c04a9,_0x47157b){this['_client']=_0x5524cc,this['endpoint']=_0x53d4d5['parse'](_0x1c04a9),this['_alternate'+'s']=_0x47157b['endpoints']||{},this['cookies']=_0x21ebe2['CookieJar']&&new _0x21ebe2['CookieJar'](),this['_disabled']=[],this['_envelopes']={},this['headers']={},this['retry']=_0x47157b['retry']||this['DEFAULT_RE'+'TRY'],this['_scheduler']=_0x47157b['scheduler']||_0x194cc8,this['_state']=0xf9e+-0xb1e+0x20*-0x24,this['transports']={},this['wsExtensio'+'ns']=[],this['proxy']=_0x47157b['proxy']||{},'string'==typeof this['_proxy']&&(this['_proxy']={'origin':this['_proxy']});var _0x3d3822=_0x47157b['websocketE'+'xtensions'];if(_0x3d3822){for(var _0x498e19=0x448*0x1+0x8ea+-0xd32,_0x5ca389=(_0x3d3822=[]['concat'](_0x3d3822))['length'];_0x498e19<_0x5ca389;_0x498e19++)this['addWebsock'+'etExtensio'+'n'](_0x3d3822[_0x498e19]);}for(var _0x564a3b in(this['tls']=_0x47157b['tls']||{},this['tls']['ca']=this['tls']['ca']||_0x47157b['ca'],this['_alternate'+'s']))this['_alternate'+'s'][_0x564a3b]=_0x53d4d5['parse'](this['_alternate'+'s'][_0x564a3b]);this['maxRequest'+'Size']=this['MAX_REQUES'+'T_SIZE'];},'endpointFor':function(_0x5e4432){return this['_alternate'+'s'][_0x5e4432]||this['endpoint'];},'addWebsocketExtension':function(_0x436256){this['wsExtensio'+'ns']['push'](_0x436256);},'disable':function(_0x947d50){this['_disabled']['push'](_0x947d50),_0x35d784['disable'](_0x947d50);},'setHeader':function(_0x4d94ba,_0x510860){this['headers'][_0x4d94ba]=_0x510860;},'close':function(){var _0x2caef7=this['_transport'];delete this['_transport'],_0x2caef7&&_0x2caef7['close']();},'getConnectionTypes':function(){return _0x35d784['getConnect'+'ionTypes']();},'selectTransport':function(_0x2fa465){_0x35d784['get'](this,_0x2fa465,this['_disabled'],function(_0x26c027){this['debug']('Selected\x20?'+'\x20transport'+'\x20for\x20?',_0x26c027['connection'+'Type'],_0x26c027['endpoint']['href']),_0x26c027!==this['_transport']&&(this['_transport']&&this['_transport']['close'](),this['_transport']=_0x26c027,this['connection'+'Type']=_0x26c027['connection'+'Type']);},this);},'sendMessage':function(_0x4b45af,_0xd19583,_0x13b4f5){_0x13b4f5=_0x13b4f5||{};var _0x3ed26e,_0x58ff70=_0x4b45af['id'],_0x42723e=_0x13b4f5['attempts'],_0x1516e5=_0x13b4f5['deadline']&&new Date()['getTime']()+(0x156a+-0x8*-0x11d+-0xd35*0x2)*_0x13b4f5['deadline'],_0x5032b1=this['_envelopes'][_0x58ff70];_0x5032b1||(_0x3ed26e=new this['_scheduler'](_0x4b45af,{'timeout':_0xd19583,'interval':this['retry'],'attempts':_0x42723e,'deadline':_0x1516e5}),_0x5032b1=this['_envelopes'][_0x58ff70]={'message':_0x4b45af,'scheduler':_0x3ed26e}),this['_sendEnvel'+'ope'](_0x5032b1);},'_sendEnvelope':function(_0x1fde33){if(this['_transport']&&!_0x1fde33['request']&&!_0x1fde33['timer']){var _0x4937f6=_0x1fde33['message'],_0x5a83a1=_0x1fde33['scheduler'],_0x36f938=this;if(!_0x5a83a1['isDelivera'+'ble']())return _0x5a83a1['abort'](),void delete this['_envelopes'][_0x4937f6['id']];_0x1fde33['timer']=global['setTimeout'](function(){_0x36f938['handleErro'+'r'](_0x4937f6);},(0x57*-0xe+0x44d+-0x1*-0x45d)*_0x5a83a1['getTimeout']()),_0x5a83a1['send'](),_0x1fde33['request']=this['_transport']['sendMessag'+'e'](_0x4937f6);}},'handleResponse':function(_0x1f1d1d){var _0x199b76=this['_envelopes'][_0x1f1d1d['id']];void(0x1f0*0x4+0x68*0x1f+-0x1458)!==_0x1f1d1d['successful']&&_0x199b76&&(_0x199b76['scheduler']['succeed'](),delete this['_envelopes'][_0x1f1d1d['id']],global['clearTimeo'+'ut'](_0x199b76['timer'])),this['trigger']('message',_0x1f1d1d),this['_state']!==this['UP']&&(this['_state']=this['UP'],this['_client']['trigger']('transport:'+'up'));},'handleError':function(_0x397874,_0x3e9b30){var _0x1bce82=this['_envelopes'][_0x397874['id']],_0x36a0d0=_0x1bce82&&_0x1bce82['request'],_0x825755=this;if(_0x36a0d0){_0x36a0d0['then'](function(_0x31e0e0){_0x31e0e0&&_0x31e0e0['abort']&&_0x31e0e0['abort']();});var _0x1559ee=_0x1bce82['scheduler'];_0x1559ee['fail'](),global['clearTimeo'+'ut'](_0x1bce82['timer']),_0x1bce82['request']=_0x1bce82['timer']=null,_0x3e9b30?this['_sendEnvel'+'ope'](_0x1bce82):_0x1bce82['timer']=global['setTimeout'](function(){_0x1bce82['timer']=null,_0x825755['_sendEnvel'+'ope'](_0x1bce82);},(-0x7d3*0x2+0x2320+0x2*-0x7c9)*_0x1559ee['getInterva'+'l']()),this['_state']!==this['DOWN']&&(this['_state']=this['DOWN'],this['_client']['trigger']('transport:'+'down'));}}});_0x3a30a3['create']=function(_0x238a4e,_0x241489,_0x12576f){return new _0x3a30a3(_0x238a4e,_0x241489,_0x12576f);},_0x14fd5e(_0x3a30a3['prototype'],_0x4dbe1c),_0x14fd5e(_0x3a30a3['prototype'],_0x1be5ca),_0x51e277['exports']=_0x3a30a3;},0x7ca:(_0x2e5d77,_0x331899,_0x35777d)=>{'use strict';var _0x3bd0ce=_0x35777d(-0x1cf4+-0x1*0x1b83+-0x1*-0x4883),_0x1c4427=_0x35777d(0x1b1+-0xd1b*0x2+-0x2*-0x1273),_0x258b5e=_0x3bd0ce({'initialize':function(_0x26a80d,_0x176de8,_0x275123){this['code']=_0x26a80d,this['params']=Array['prototype']['slice']['call'](_0x176de8),this['message']=_0x275123;},'toString':function(){return this['code']+':'+this['params']['join'](',')+':'+this['message'];}});_0x258b5e['parse']=function(_0x42faa3){if(_0x42faa3=_0x42faa3||'',!_0x1c4427['ERROR']['test'](_0x42faa3))return new _0x258b5e(null,[],_0x42faa3);var _0x489a07=_0x42faa3['split'](':'),_0x43e787=parseInt(_0x489a07[0x427*0x5+-0x26e1*0x1+-0x6*-0x305]),_0xc88321=_0x489a07[-0x1f71+-0x3b*0xa0+0x4452*0x1]['split'](',');return _0x42faa3=_0x489a07[0x14ef+0x35*0x57+0x7*-0x590],new _0x258b5e(_0x43e787,_0xc88321,_0x42faa3);};var _0x17a38a={'versionMismatch':[-0x58f*0x4+-0x365+0x1acd,'Version\x20mi'+'smatch'],'conntypeMismatch':[0xa46+-0x1786+0xe6d*0x1,'Connection'+'\x20types\x20not'+'\x20supported'],'extMismatch':[0x8*0x191+0x1*0x259+0x1f5*-0x7,'Extension\x20'+'mismatch'],'badRequest':[0x57*-0x17+-0xf07+0x1*0x1868,'Bad\x20reques'+'t'],'clientUnknown':[0x1dfd+0x4*-0x3b3+0xda0*-0x1,'Unknown\x20cl'+'ient'],'parameterMissing':[0xd*-0x2f2+-0x25f8+0x4dd4,'Missing\x20re'+'quired\x20par'+'ameter'],'channelForbidden':[0x4bb*0x2+-0x124a+0xa67*0x1,'Forbidden\x20'+'channel'],'channelUnknown':[0x1*-0x17ab+-0x1b09+0x3448,'Unknown\x20ch'+'annel'],'channelInvalid':[0xf81+-0xaa5+0x347*-0x1,'Invalid\x20ch'+'annel'],'extUnknown':[-0x5b*0x31+0x13*0x14+-0x17*-0xc3,'Unknown\x20ex'+'tension'],'publishFailed':[-0x3bc+-0xe2*0x17+0x19a1,'Failed\x20to\x20'+'publish'],'serverError':[-0x22d+-0x1d7c+0x219d,'Internal\x20s'+'erver\x20erro'+'r']};for(var _0x397317 in _0x17a38a)!function(_0x277141){_0x258b5e[_0x277141]=function(){return new _0x258b5e(_0x17a38a[_0x277141][-0x1*0x919+0x5*0x697+-0x17da],arguments,_0x17a38a[_0x277141][-0x1*-0xbaf+0x25eb+0x1*-0x3199])['toString']();};}(_0x397317);_0x2e5d77['exports']=_0x258b5e;},0x1e5b:(_0x11bf0b,_0x288816,_0x101575)=>{'use strict';var _0x1e3b5a={'addExtension':function(_0x3dfa4c){this['_extension'+'s']=this['_extension'+'s']||[],this['_extension'+'s']['push'](_0x3dfa4c),_0x3dfa4c['added']&&_0x3dfa4c['added'](this);},'removeExtension':function(_0x296860){if(this['_extension'+'s']){for(var _0x1dc68e=this['_extension'+'s']['length'];_0x1dc68e--;)this['_extension'+'s'][_0x1dc68e]===_0x296860&&(this['_extension'+'s']['splice'](_0x1dc68e,-0xfe0+-0x1*0x25f+0x1240),_0x296860['removed']&&_0x296860['removed'](this));}},'pipeThroughExtensions':function(_0x1209f0,_0x548c71,_0x4583a2,_0x198009,_0x20fce1){if(this['debug']('Passing\x20th'+'rough\x20?\x20ex'+'tensions:\x20'+'?',_0x1209f0,_0x548c71),!this['_extension'+'s'])return _0x198009['call'](_0x20fce1,_0x548c71);var _0x25745d=this['_extension'+'s']['slice'](),_0x111f05=function(_0xd67167){if(!_0xd67167)return _0x198009['call'](_0x20fce1,_0xd67167);var _0x14a3c2=_0x25745d['shift']();if(!_0x14a3c2)return _0x198009['call'](_0x20fce1,_0xd67167);var _0x501371=_0x14a3c2[_0x1209f0];if(!_0x501371)return _0x111f05(_0xd67167);_0x501371['length']>=-0xe*-0xa4+-0x259f*-0x1+0x43c*-0xb?_0x14a3c2[_0x1209f0](_0xd67167,_0x4583a2,_0x111f05):_0x14a3c2[_0x1209f0](_0xd67167,_0x111f05);};_0x111f05(_0x548c71);}};_0x101575(-0x1*-0x12f8+-0x1d15+-0x1760*-0x1)(_0x1e3b5a,_0x101575(0x9*-0x34c+-0x1*0x1f63+0x2*0x2753)),_0x11bf0b['exports']=_0x1e3b5a;},0xc61:_0x5941ad=>{'use strict';_0x5941ad['exports']={'CHANNEL_NAME':/^\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,'CHANNEL_PATTERN':/^(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*\/\*{1,2}$/,'ERROR':/^([0-9][0-9][0-9]:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*|[0-9][0-9][0-9]::(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)$/,'VERSION':/^([0-9])+(\.(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*)*$/};},0x16:(_0x1879ee,_0x230526,_0x2dbefd)=>{'use strict';var _0x8d3d81=_0x2dbefd(-0xb9a+-0x236e+-0x16*-0x2de),_0x3fe0a2=_0x2dbefd(0x983+-0x2ab2+0x3939);_0x1879ee['exports']=_0x8d3d81(_0x3fe0a2);},0x1a55:(_0x2b3ce1,_0x839511,_0x46c923)=>{'use strict';var _0x4b8131=function(_0x708da6,_0x5bb756){this['message']=_0x708da6,this['options']=_0x5bb756,this['attempts']=0x1390+0x257b+-0x390b;};_0x46c923(0x26b0+-0x4*-0x50+0x1*-0x1aad)(_0x4b8131['prototype'],{'getTimeout':function(){return this['options']['timeout'];},'getInterval':function(){return this['options']['interval'];},'isDeliverable':function(){var _0xcbebf8=this['options']['attempts'],_0x2da855=this['attempts'],_0x18e2cf=this['options']['deadline'],_0x59fc56=new Date()['getTime']();return!(void(-0x161+-0x1985+0x16*0x139)!==_0xcbebf8&&_0x2da855>=_0xcbebf8||void(-0xfe*0xd+0x156e*-0x1+-0x152*-0x1a)!==_0x18e2cf&&_0x59fc56>_0x18e2cf);},'send':function(){this['attempts']+=0x2*0x5ab+-0x4e*-0x13+-0x111f;},'succeed':function(){},'fail':function(){},'abort':function(){}}),_0x2b3ce1['exports']=_0x4b8131;},0xc65:(_0xbc0f5c,_0x13a66c,_0x4e0065)=>{'use strict';var _0x561653=_0x4e0065(0x1*-0x25af+-0x2050+0x560b),_0xf1ae97=_0x4e0065(0x9dd*0x2+-0x1d0+-0x10a1),_0x4a0119=_0x4e0065(-0x2570+-0x150b+0x47be),_0x5b3ed4=_0x4e0065(0x5ab*0x1+0x1768+0x2*-0xa67),_0x37fa25=_0x4e0065(0x190f+0x42*-0x4a+0x2*0x5ce),_0x2f5292=_0x4e0065(-0x1*-0x1609+0xe42+0x19*0x4),_0x309b3=_0x4e0065(0x3a71*0x1+0x1ad3+0x11b3*-0x3),_0x601fb1=_0x4e0065(-0x2230+-0x2*-0xb47+0x136c),_0x532711=_0x4e0065(-0x23f1+-0x9*0x493+0x9c5*0xb),_0x34a844=_0x4e0065(0x6d3*-0x1+-0x1*-0x1c53+-0x5*0x1d3),_0x2cf92e=_0x4e0065(-0x6f1*0x1+-0x531*0x2+0x2aa6),_0x4cc3fc=_0x561653({'className':'Server','initialize':function(_0x66b0e9){this['_options']=_0x66b0e9||{};var _0x17b822=this['_options']['engine']||{};_0x17b822['timeout']=this['_options']['timeout'],this['_engine']=_0x2f5292['get'](_0x17b822),this['info']('Created\x20ne'+'w\x20server:\x20'+'?',this['_options']);},'close':function(){return this['_engine']['close']();},'openSocket':function(_0x31eee2,_0x11daac,_0x3b8fe1){_0x31eee2&&_0x11daac&&this['_engine']['openSocket'](_0x31eee2,new _0x2cf92e(this,_0x11daac,_0x3b8fe1));},'closeSocket':function(_0x1d43e4,_0x413e4f){this['_engine']['flushConne'+'ction'](_0x1d43e4,_0x413e4f);},'process':function(_0x319ac2,_0x5b616a,_0x6f1727,_0x1ce467){var _0x445759=null===_0x5b616a;if(_0x319ac2=[]['concat'](_0x319ac2),this['info']('Processing'+'\x20messages:'+'\x20?\x20(local:'+'\x20?)',_0x319ac2,_0x445759),0xd*0x2f1+-0x1*0xa8a+0x3f5*-0x7===_0x319ac2['length'])return _0x6f1727['call'](_0x1ce467,[]);for(var _0x2063df=0xd6d+-0x1*-0x1331+0x19*-0x14e,_0x2ddf66=[],_0x56da04=this,_0x29e2e4=function(_0x4d6573){if(_0x2ddf66=_0x2ddf66['concat'](_0x4d6573),!((_0x2063df+=-0x26e6+0x1*-0x2c8+-0x3*-0xde5)<_0x319ac2['length'])){for(var _0x17020d=_0x2ddf66['length'];_0x17020d--;)_0x2ddf66[_0x17020d]||_0x2ddf66['splice'](_0x17020d,-0x13f0+-0x13c3*0x1+0x2d6*0xe);_0x56da04['info']('Returning\x20'+'replies:\x20?',_0x2ddf66),_0x6f1727['call'](_0x1ce467,_0x2ddf66);}},_0x3a23ff=function(_0x224327){var _0x64d06f=-0x12d2+0x2295+-0xfc3,_0x186fcf=_0x224327['length'];-0xd*0xd4+0x21e2+-0x171e===_0x186fcf&&_0x29e2e4(_0x224327);for(var _0x4127fa=-0x77*-0x9+-0xbdb+0x1*0x7ac,_0x2f1a34=_0x224327['length'];_0x4127fa<_0x2f1a34;_0x4127fa++)this['debug']('Processing'+'\x20reply:\x20?',_0x224327[_0x4127fa]),function(_0x169dad){_0x56da04['pipeThroug'+'hExtension'+'s']('outgoing',_0x224327[_0x169dad],_0x5b616a,function(_0x43e63a){_0x224327[_0x169dad]=_0x43e63a,(_0x64d06f+=-0x7*-0x1c0+0x2*-0x12f7+0x19af)===_0x186fcf&&_0x29e2e4(_0x224327);});}(_0x4127fa);},_0xeea5a0=0x1*-0x1cf3+-0xc51+-0x2*-0x14a2,_0x252c86=_0x319ac2['length'];_0xeea5a0<_0x252c86;_0xeea5a0++)this['pipeThroug'+'hExtension'+'s']('incoming',_0x319ac2[_0xeea5a0],_0x5b616a,function(_0x25643e){this['_handle'](_0x25643e,_0x445759,_0x3a23ff,this);},this);},'_makeResponse':function(_0x883a5d){var _0x373ce7={};return _0x883a5d['id']&&(_0x373ce7['id']=_0x883a5d['id']),_0x883a5d['clientId']&&(_0x373ce7['clientId']=_0x883a5d['clientId']),_0x883a5d['channel']&&(_0x373ce7['channel']=_0x883a5d['channel']),_0x883a5d['error']&&(_0x373ce7['error']=_0x883a5d['error']),_0x373ce7['successful']=!_0x373ce7['error'],_0x373ce7;},'_handle':function(_0x4edc69,_0x1959ba,_0x4d07f0,_0x570a3f){if(!_0x4edc69)return _0x4d07f0['call'](_0x570a3f,[]);this['info']('Handling\x20m'+'essage:\x20?\x20'+'(local:\x20?)',_0x4edc69,_0x1959ba);var _0x274b9e,_0x2d85a1=_0x4edc69['channel'],_0x231a8f=_0x4edc69['error'];if(_0x309b3['isMeta'](_0x2d85a1))return this['_handleMet'+'a'](_0x4edc69,_0x1959ba,_0x4d07f0,_0x570a3f);_0x34a844['CHANNEL_NA'+'ME']['test'](_0x2d85a1)||(_0x231a8f=_0x601fb1['channelInv'+'alid'](_0x2d85a1)),void(-0x151*0x19+0x1*-0x14d1+0x422*0xd)===_0x4edc69['data']&&(_0x231a8f=_0x601fb1['parameterM'+'issing']('data')),_0x231a8f||this['_engine']['publish'](_0x4edc69),_0x274b9e=this['_makeRespo'+'nse'](_0x4edc69),_0x231a8f&&(_0x274b9e['error']=_0x231a8f),_0x274b9e['successful']=!_0x274b9e['error'],_0x4d07f0['call'](_0x570a3f,[_0x274b9e]);},'_handleMeta':function(_0x47e18a,_0x162a58,_0x3969bc,_0xa1fdb9){var _0x188715,_0x39d327=this['_methodFor'](_0x47e18a);if(null===_0x39d327)return(_0x188715=this['_makeRespo'+'nse'](_0x47e18a))['error']=_0x601fb1['channelFor'+'bidden'](_0x47e18a['channel']),_0x188715['successful']=!(-0x6ed*-0x5+0x342+0x2ea*-0xd),_0x3969bc['call'](_0xa1fdb9,[_0x188715]);this[_0x39d327](_0x47e18a,_0x162a58,function(_0x56d008){for(var _0x80a15=0x1*-0x526+-0xc4c+-0x8b9*-0x2,_0x5623a6=(_0x56d008=[]['concat'](_0x56d008))['length'];_0x80a15<_0x5623a6;_0x80a15++)this['_advize'](_0x56d008[_0x80a15],_0x47e18a['connection'+'Type']);_0x3969bc['call'](_0xa1fdb9,_0x56d008);},this);},'_methodFor':function(_0x1c0765){var _0x27850d=_0x1c0765['channel'];return _0x27850d===_0x309b3['HANDSHAKE']?'handshake':_0x27850d===_0x309b3['CONNECT']?'connect':_0x27850d===_0x309b3['SUBSCRIBE']?'subscribe':_0x27850d===_0x309b3['UNSUBSCRIB'+'E']?'unsubscrib'+'e':_0x27850d===_0x309b3['DISCONNECT']?'disconnect':null;},'_advize':function(_0x51836f,_0x574516){var _0xd43d6e,_0x34aa3a;_0xf1ae97['indexOf']([_0x309b3['HANDSHAKE'],_0x309b3['CONNECT']],_0x51836f['channel'])<-0xa32+0x1*0x9f5+-0x3d*-0x1||('eventsourc'+'e'===_0x574516?(_0xd43d6e=Math['floor']((0x1e25+-0xf*-0xcb+-0x6*0x65b)*this['_engine']['timeout']),_0x34aa3a=0x1*-0x911+-0xcb*-0xb+-0x8*-0xb):(_0xd43d6e=Math['floor']((0x25a7+0x153b+0x1f*-0x1c6)*this['_engine']['interval']),_0x34aa3a=Math['floor']((0xad*-0x1+-0xa7*-0x3b+-0x21e8)*this['_engine']['timeout'])),_0x51836f['advice']=_0x51836f['advice']||{},_0x51836f['error']?_0x4a0119(_0x51836f['advice'],{'reconnect':'handshake'},!(0x1*0x26cb+0x1288+0x2*-0x1ca9)):_0x4a0119(_0x51836f['advice'],{'reconnect':'retry','interval':_0xd43d6e,'timeout':_0x34aa3a},!(-0x8a4+0x7*0x24b+-0x768)));},'handshake':function(_0x453e27,_0xa8cdfa,_0x2109f6,_0x4c27e8){var _0x263154=this['_makeRespo'+'nse'](_0x453e27);_0x263154['version']=_0x5b3ed4['BAYEUX_VER'+'SION'],_0x453e27['version']||(_0x263154['error']=_0x601fb1['parameterM'+'issing']('version'));var _0x267c7c=_0x453e27['supportedC'+'onnectionT'+'ypes'];if(_0x263154['supportedC'+'onnectionT'+'ypes']=_0x5b3ed4['CONNECTION'+'_TYPES'],_0x267c7c?0x11f8+-0x8*0x392+-0xe2*-0xc===_0xf1ae97['filter'](_0x267c7c,function(_0x101b45){return _0xf1ae97['indexOf'](_0x5b3ed4['CONNECTION'+'_TYPES'],_0x101b45)>=0x1ed6+0xc*0x18a+0x1*-0x314e;})['length']&&(_0x263154['error']=_0x601fb1['conntypeMi'+'smatch'](_0x267c7c)):_0x263154['error']=_0x601fb1['parameterM'+'issing']('supportedC'+'onnectionT'+'ypes'),_0x263154['successful']=!_0x263154['error'],!_0x263154['successful'])return _0x2109f6['call'](_0x4c27e8,_0x263154);this['_engine']['createClie'+'nt'](function(_0x4d3f46){_0x263154['clientId']=_0x4d3f46,_0x2109f6['call'](_0x4c27e8,_0x263154);},this);},'connect':function(_0x4d2d30,_0x4db7dc,_0x469a8f,_0xb31632){var _0x1c980a=this['_makeRespo'+'nse'](_0x4d2d30),_0x3685c0=_0x4d2d30['clientId'],_0x959e1f=_0x4d2d30['connection'+'Type'];this['_engine']['clientExis'+'ts'](_0x3685c0,function(_0x4e3fac){if(_0x4e3fac||(_0x1c980a['error']=_0x601fb1['clientUnkn'+'own'](_0x3685c0)),_0x3685c0||(_0x1c980a['error']=_0x601fb1['parameterM'+'issing']('clientId')),_0xf1ae97['indexOf'](_0x5b3ed4['CONNECTION'+'_TYPES'],_0x959e1f)<0x240b+-0x18a*0x9+-0x1631&&(_0x1c980a['error']=_0x601fb1['conntypeMi'+'smatch'](_0x959e1f)),_0x959e1f||(_0x1c980a['error']=_0x601fb1['parameterM'+'issing']('connection'+'Type')),_0x1c980a['successful']=!_0x1c980a['error'],!_0x1c980a['successful'])return delete _0x1c980a['clientId'],_0x469a8f['call'](_0xb31632,_0x1c980a);'eventsourc'+'e'===_0x4d2d30['connection'+'Type']&&(_0x4d2d30['advice']=_0x4d2d30['advice']||{},_0x4d2d30['advice']['timeout']=0x1a29+0x14f*-0xb+-0xbc4),this['_engine']['connect'](_0x1c980a['clientId'],_0x4d2d30['advice'],function(_0x23d962){_0x469a8f['call'](_0xb31632,[_0x1c980a]['concat'](_0x23d962));});},this);},'disconnect':function(_0x1acbcd,_0x579a68,_0x3027af,_0x42253d){var _0x424ba9=this['_makeRespo'+'nse'](_0x1acbcd),_0x386ad8=_0x1acbcd['clientId'];this['_engine']['clientExis'+'ts'](_0x386ad8,function(_0xa9d674){_0xa9d674||(_0x424ba9['error']=_0x601fb1['clientUnkn'+'own'](_0x386ad8)),_0x386ad8||(_0x424ba9['error']=_0x601fb1['parameterM'+'issing']('clientId')),_0x424ba9['successful']=!_0x424ba9['error'],_0x424ba9['successful']||delete _0x424ba9['clientId'],_0x424ba9['successful']&&this['_engine']['destroyCli'+'ent'](_0x386ad8),_0x3027af['call'](_0x42253d,_0x424ba9);},this);},'subscribe':function(_0xb2e732,_0x19f67e,_0x34b609,_0x1ea7bc){var _0x562962,_0x4262f5=this['_makeRespo'+'nse'](_0xb2e732),_0x47941f=_0xb2e732['clientId'],_0x2762fc=_0xb2e732['subscripti'+'on'];_0x2762fc=_0x2762fc?[]['concat'](_0x2762fc):[],this['_engine']['clientExis'+'ts'](_0x47941f,function(_0x53396c){_0x53396c||(_0x4262f5['error']=_0x601fb1['clientUnkn'+'own'](_0x47941f)),_0x47941f||(_0x4262f5['error']=_0x601fb1['parameterM'+'issing']('clientId')),_0xb2e732['subscripti'+'on']||(_0x4262f5['error']=_0x601fb1['parameterM'+'issing']('subscripti'+'on')),_0x4262f5['subscripti'+'on']=_0xb2e732['subscripti'+'on']||[];for(var _0x36c6e6=-0x136f+-0x7*0x46b+-0x494*-0xb,_0x377b05=_0x2762fc['length'];_0x36c6e6<_0x377b05&&(_0x562962=_0x2762fc[_0x36c6e6],!_0x4262f5['error'])&&(_0x19f67e||_0x309b3['isSubscrib'+'able'](_0x562962)||(_0x4262f5['error']=_0x601fb1['channelFor'+'bidden'](_0x562962)),_0x309b3['isValid'](_0x562962)||(_0x4262f5['error']=_0x601fb1['channelInv'+'alid'](_0x562962)),!_0x4262f5['error']);_0x36c6e6++)this['_engine']['subscribe'](_0x47941f,_0x562962);_0x4262f5['successful']=!_0x4262f5['error'],_0x34b609['call'](_0x1ea7bc,_0x4262f5);},this);},'unsubscribe':function(_0x4b34e9,_0x1d7613,_0x1b9332,_0x3c1e44){var _0x52811c,_0x326c1e=this['_makeRespo'+'nse'](_0x4b34e9),_0x3182e5=_0x4b34e9['clientId'],_0x4c38ad=_0x4b34e9['subscripti'+'on'];_0x4c38ad=_0x4c38ad?[]['concat'](_0x4c38ad):[],this['_engine']['clientExis'+'ts'](_0x3182e5,function(_0x50630e){_0x50630e||(_0x326c1e['error']=_0x601fb1['clientUnkn'+'own'](_0x3182e5)),_0x3182e5||(_0x326c1e['error']=_0x601fb1['parameterM'+'issing']('clientId')),_0x4b34e9['subscripti'+'on']||(_0x326c1e['error']=_0x601fb1['parameterM'+'issing']('subscripti'+'on')),_0x326c1e['subscripti'+'on']=_0x4b34e9['subscripti'+'on']||[];for(var _0x42bdf5=0x106f+-0x3*-0x859+-0x297a,_0x41e706=_0x4c38ad['length'];_0x42bdf5<_0x41e706&&(_0x52811c=_0x4c38ad[_0x42bdf5],!_0x326c1e['error'])&&(_0x1d7613||_0x309b3['isSubscrib'+'able'](_0x52811c)||(_0x326c1e['error']=_0x601fb1['channelFor'+'bidden'](_0x52811c)),_0x309b3['isValid'](_0x52811c)||(_0x326c1e['error']=_0x601fb1['channelInv'+'alid'](_0x52811c)),!_0x326c1e['error']);_0x42bdf5++)this['_engine']['unsubscrib'+'e'](_0x3182e5,_0x52811c);_0x326c1e['successful']=!_0x326c1e['error'],_0x1b9332['call'](_0x3c1e44,_0x326c1e);},this);}});_0x4cc3fc['create']=function(_0x16c21f){return new _0x4cc3fc(_0x16c21f);},_0x4a0119(_0x4cc3fc['prototype'],_0x37fa25),_0x4a0119(_0x4cc3fc['prototype'],_0x532711),_0xbc0f5c['exports']=_0x4cc3fc;},0x1953:(_0x32e464,_0x48520b,_0x454a5b)=>{'use strict';var _0x5097e3=_0x454a5b(0x83*-0xd+-0x25a2+0xc11*0x5),_0x546e52=_0x454a5b(-0x9*-0x52d+-0x7*0x49d+-0xd*-0x12a);_0x32e464['exports']=_0x5097e3({'initialize':function(_0xa71780,_0x24257c,_0x170775){this['_server']=_0xa71780,this['_socket']=_0x24257c,this['_request']=_0x170775;},'send':function(_0x4872e6){this['_server']['pipeThroug'+'hExtension'+'s']('outgoing',_0x4872e6,this['_request'],function(_0x3d1baf){this['_socket']&&this['_socket']['send'](_0x546e52([_0x3d1baf]));},this);},'close':function(){this['_socket']&&this['_socket']['close'](),delete this['_socket'];}});},0x16f3:(_0x1134d5,_0x36e6f2,_0x2dd4a9)=>{'use strict';var _0x32af84=_0x2dd4a9(-0x83*0xd+-0x1031+-0x4*-0x9b9),_0x22f100=_0x2dd4a9(0x45d*-0x1+0xe9f+-0x1*-0x301),_0x512f8b=_0x2dd4a9(0x24a*0x3+-0x6f4+0x2*0xc10),_0xa3e5c1=_0x32af84({'initialize':function(_0x9e839c,_0x58876d,_0x1e235d,_0x39a5b9){this['_client']=_0x9e839c,this['_channels']=_0x58876d,this['_callback']=_0x1e235d,this['_context']=_0x39a5b9,this['_cancelled']=!(-0x77a+-0xf1*0x1e+0x23b9);},'withChannel':function(_0x3286a5,_0x990e62){return this['_withChann'+'el']=[_0x3286a5,_0x990e62],this;},'apply':function(_0x33e794,_0x4370e3){var _0x551ebe=_0x4370e3[-0x1659+-0x2282+0x163*0x29];this['_callback']&&this['_callback']['call'](this['_context'],_0x551ebe['data']),this['_withChann'+'el']&&this['_withChann'+'el'][-0x133*0x7+-0x2ee+0xb53*0x1]['call'](this['_withChann'+'el'][-0x1*-0x25f7+0xc61*-0x3+-0xd3],_0x551ebe['channel'],_0x551ebe['data']);},'cancel':function(){this['_cancelled']||(this['_client']['unsubscrib'+'e'](this['_channels'],this),this['_cancelled']=!(-0x1955*-0x1+0xacf+-0x404*0x9));},'unsubscribe':function(){this['cancel']();}});_0x22f100(_0xa3e5c1['prototype'],_0x512f8b),_0x1134d5['exports']=_0xa3e5c1;},0xbe0:(_0x30395c,_0x461edd,_0x2d5cae)=>{'use strict';var _0x4a8d4c=_0x2d5cae(0x49*-0x65+0xf8f+0x186b)['Buffer'],_0x39b9b8=_0x2d5cae(-0x1*-0x2e15+0x1b36+-0x18*0x1a7),_0x532647=_0x2d5cae(-0x2*-0xe82+0xba6*0x1+-0x126e),_0x54298f=_0x2d5cae(-0x186c+0x29*-0x35+0x20*0x182),_0x3d1575=_0x2d5cae(0x475*0x6+0x80e*0x3+-0x22dc),_0x153dc3=_0x2d5cae(-0x2*-0x727+0xf8f*0x1+-0x1*0x161f),_0x1711a8=_0x2d5cae(0xfa6+0x49a+-0x6fd),_0xd70c02=_0x2d5cae(-0x1*0x36fb+0x226f+-0x1a*-0x1ec),_0x9d1e50=_0x2d5cae(0xd47+0x119*0x6+-0x1*-0x647),_0x1e0335=_0x1711a8(_0x3d1575(_0x9d1e50,{'className':'NodeHttp','SECURE_PROTOCOLS':['https:','wss:'],'initialize':function(){_0x9d1e50['prototype']['initialize']['apply'](this,arguments),this['_endpointS'+'ecure']=this['SECURE_PRO'+'TOCOLS']['indexOf'](this['endpoint']['protocol'])>=-0x6e9*-0x3+-0x166c+0x1b1,this['_httpClien'+'t']=this['_endpointS'+'ecure']?_0x532647:_0x39b9b8;var _0xecc040=this['_proxy'];if(_0xecc040['origin']){if(this['_proxyUri']=_0x153dc3['parse'](_0xecc040['origin']),this['_proxySecu'+'re']=this['SECURE_PRO'+'TOCOLS']['indexOf'](this['_proxyUri']['protocol'])>=-0xa9e+0x5*-0x6fd+0x2d8f,this['_endpointS'+'ecure']){var _0x14b60e=_0x1711a8({'proxy':{'host':this['_proxyUri']['hostname'],'port':this['_proxyUri']['port']||this['DEFAULT_PO'+'RTS'][this['_proxyUri']['protocol']],'proxyAuth':this['_proxyUri']['auth'],'headers':_0x1711a8({'host':this['endpoint']['host']},_0xecc040['headers'])}},this['_dispatche'+'r']['tls']);this['_proxySecu'+'re']?(_0x1711a8(_0x14b60e['proxy'],_0xecc040['tls']),this['_tunnel']=_0x54298f['httpsOverH'+'ttps'](_0x14b60e)):this['_tunnel']=_0x54298f['httpsOverH'+'ttp'](_0x14b60e);}else this['_httpClien'+'t']=this['_proxySecu'+'re']?_0x532647:_0x39b9b8;}},'encode':function(_0x389018){return _0xd70c02(_0x389018);},'request':function(_0x2940de){var _0x1373e3=_0x4a8d4c['from'](this['encode'](_0x2940de),'utf8'),_0x498075=this['_buildPara'+'ms'](_0x1373e3),_0x176b71=this['_httpClien'+'t']['request'](_0x498075),_0x828c97=this;return _0x176b71['on']('response',function(_0x32d6b0){_0x828c97['_handleRes'+'ponse'](_0x2940de,_0x32d6b0),_0x828c97['_storeCook'+'ies'](_0x32d6b0['headers']['set-cookie']);}),_0x176b71['on']('error',function(_0x4f8f51){_0x828c97['error']('HTTP\x20error'+':\x20'+_0x4f8f51['message']),_0x828c97['_handleErr'+'or'](_0x2940de);}),_0x176b71['end'](_0x1373e3),_0x176b71;},'_buildParams':function(_0x193ce9){var _0x29b25f=this['endpoint'],_0x19476a=this['_proxyUri'],_0x3763d3=this['_tunnel']?_0x29b25f:_0x19476a||_0x29b25f,_0x346fdf={'Content-Length':_0x193ce9['length'],'Content-Type':'applicatio'+'n/json','Host':_0x29b25f['host']};_0x29b25f['auth']&&(_0x346fdf['Authorizat'+'ion']='Basic\x20'+_0x4a8d4c['from'](_0x29b25f['auth'],'utf8')['toString']('base64'));var _0x4641a3={'method':'POST','host':_0x3763d3['hostname'],'port':_0x3763d3['port']||this['DEFAULT_PO'+'RTS'][_0x3763d3['protocol']],'path':_0x29b25f['path'],'headers':_0x1711a8(_0x346fdf,this['_dispatche'+'r']['headers'])},_0x453d14=this['_getCookie'+'s']();return''!==_0x453d14&&(_0x4641a3['headers']['Cookie']=_0x453d14),this['_tunnel']?_0x4641a3['agent']=this['_tunnel']:this['_endpointS'+'ecure']?_0x1711a8(_0x4641a3,this['_dispatche'+'r']['tls']):_0x19476a&&(_0x4641a3['path']=this['endpoint']['href'],_0x1711a8(_0x4641a3,this['_proxy']['tls']),_0x19476a['auth']&&(_0x4641a3['headers']['Proxy-Auth'+'orization']=_0x4a8d4c['from'](_0x19476a['auth'],'utf8')['toString']('base64'))),_0x4641a3;},'_handleResponse':function(_0x10bf17,_0x8bf763){var _0x2bee1c='',_0x2a26c8=this;_0x8bf763['setEncodin'+'g']('utf8'),_0x8bf763['on']('data',function(_0x56dfe9){_0x2bee1c+=_0x56dfe9;}),_0x8bf763['on']('end',function(){var _0x469dc7;try{_0x469dc7=JSON['parse'](_0x2bee1c);}catch(_0x4589d4){}_0x469dc7?_0x2a26c8['_receive'](_0x469dc7):_0x2a26c8['_handleErr'+'or'](_0x10bf17);});}}),{'isUsable':function(_0x148cae,_0x50f4cd,_0x532800,_0x48a121){_0x532800['call'](_0x48a121,_0x153dc3['isURI'](_0x50f4cd));}});_0x30395c['exports']=_0x1e0335;},0x1aed:(_0x8a0b0,_0x48fcb5,_0xb2f5f8)=>{'use strict';var _0x5d7e77=_0xb2f5f8(-0xd68+-0x18fd+0x151e*0x2),_0x15c27c=_0xb2f5f8(0x49*-0x80+-0x19f9+-0x4e85*-0x1),_0x300385=(_0xb2f5f8(0x1*0x1376+0x4*0x59f+-0x111a*0x2),_0xb2f5f8(0x14b6+0x1902+0xab5*-0x3)),_0x2c459a=_0xb2f5f8(-0x4d9+-0x1*0x5dd+-0x1*-0x17f9),_0x518c51=_0xb2f5f8(-0xa52*-0x3+0x162d+-0x28be*0x1),_0x54eb82=_0x2c459a(_0x15c27c(_0xb2f5f8(0x1459*-0x1+-0x1969+0x47e6),{'batching':!(-0x1f89+0x232d+-0x7*0x85),'request':function(_0x33e8f4){_0x33e8f4=_0x300385(_0x33e8f4);var _0x123d16=this;_0x5d7e77(function(){_0x123d16['endpoint']['process'](_0x33e8f4,null,function(_0x438ac9){_0x123d16['_receive'](_0x300385(_0x438ac9));});});}}),{'isUsable':function(_0x439688,_0xa64437,_0x514bbd,_0x35878a){_0x514bbd['call'](_0x35878a,_0xa64437 instanceof _0x518c51);}});_0x8a0b0['exports']=_0x54eb82;},0x1222:(_0x4b64aa,_0x40ee3a,_0x1b4219)=>{'use strict';var _0x42d4df=_0x1b4219(-0x31b5+0x1659+0x6b*0x80);_0x42d4df['register']('in-process',_0x1b4219(0x657*0x1+-0x216d+0x3603)),_0x42d4df['register']('websocket',_0x1b4219(-0x1*-0x72a+0x1bf9*-0x1+0xa*0x32f)),_0x42d4df['register']('long-polli'+'ng',_0x1b4219(-0x12d6+0x3*-0xccb+0x4517)),_0x4b64aa['exports']=_0x42d4df;},0x1a24:(_0x4994e8,_0x42b529,_0xf5ed96)=>{'use strict';var _0xfa9eac=_0xf5ed96(0x2*-0xcf1+0x1935+0x10b9),_0x92ab28=_0xf5ed96(-0x1cf7+-0x127*0x2+0x3ae7)['Cookie'],_0x163126=_0xf5ed96(-0x5d4+0x5*-0x199+0xe26),_0x40e791=_0xf5ed96(-0x2*-0x69+0x2698+0x2621*-0x1),_0x3abe50=_0xf5ed96(0x111d+0x821*0x1+-0x1*0xbfb),_0x1fd8c0=_0xf5ed96(-0xcf7*-0x1+0x2076+0x1*-0x1bd6),_0x49b816=_0xf5ed96(-0x1*-0xba7+-0x4c6+-0x13*-0x18d),_0x305f6d=_0xf5ed96(-0x6f*0x49+0x258d+0x5*0x541),_0x3a9770=_0x3abe50(_0xfa9eac({'className':'Transport','DEFAULT_PORTS':{'http:':0x50,'https:':0x1bb,'ws:':0x50,'wss:':0x1bb},'MAX_DELAY':0x0,'batching':!(-0x3*0x4fd+-0x1161*0x1+0x2058),'initialize':function(_0x4a14fa,_0x4c4493){this['_dispatche'+'r']=_0x4a14fa,this['endpoint']=_0x4c4493,this['_outbox']=[],this['_proxy']=_0x3abe50({},this['_dispatche'+'r']['proxy']),this['_proxy']['origin']||(this['_proxy']['origin']=this['_findProxy']());},'close':function(){},'encode':function(_0x7af225){return'';},'sendMessage':function(_0xdc5fb){return this['debug']('Client\x20?\x20s'+'ending\x20mes'+'sage\x20to\x20?:'+'\x20?',this['_dispatche'+'r']['clientId'],this['endpoint']['href'],_0xdc5fb),this['batching']?(this['_outbox']['push'](_0xdc5fb),this['_flushLarg'+'eBatch'](),_0xdc5fb['channel']===_0x305f6d['HANDSHAKE']?this['_publish'](0x518+0x1173+-0x168b+0.01):(_0xdc5fb['channel']===_0x305f6d['CONNECT']&&(this['_connectMe'+'ssage']=_0xdc5fb),this['_publish'](this['MAX_DELAY']))):_0x163126['resolve'](this['request']([_0xdc5fb]));},'_makePromise':function(){var _0x21aaf4=this;this['_requestPr'+'omise']=this['_requestPr'+'omise']||new _0x163126(function(_0x19e272){_0x21aaf4['_resolvePr'+'omise']=_0x19e272;});},'_publish':function(_0xab586f){return this['_makePromi'+'se'](),this['addTimeout']('publish',_0xab586f,function(){this['_flush'](),delete this['_requestPr'+'omise'];},this),this['_requestPr'+'omise'];},'_flush':function(){this['removeTime'+'out']('publish'),this['_outbox']['length']>-0x973+-0x1678+-0x2*-0xff6&&this['_connectMe'+'ssage']&&(this['_connectMe'+'ssage']['advice']={'timeout':0x0}),this['_resolvePr'+'omise'](this['request'](this['_outbox'])),this['_connectMe'+'ssage']=null,this['_outbox']=[];},'_flushLargeBatch':function(){if(!(this['encode'](this['_outbox'])['length']-0x1*0x240b+0x4a7*0x2+0x1abe&&(_0x438234=_0x2cffeb[_0x17b163]),_0x438234=_0x438234||_0x2cffeb['CGI_'+_0x134063]):(_0x438234=_0x2cffeb[_0x17b163]||_0x2cffeb[_0x134063])&&!_0x2cffeb[_0x17b163]&&console['warn']('The\x20enviro'+'nment\x20vari'+'able\x20'+_0x134063+('\x20is\x20discou'+'raged.\x20Use'+'\x20')+_0x17b163+'.'),_0x438234;}}}}),{'get':function(_0x19a66d,_0x567595,_0x5a15f0,_0x2a78af,_0x5b873d){var _0x3c5135=_0x19a66d['endpoint'];_0x40e791['asyncEach'](this['_transport'+'s'],function(_0x246b8b,_0x4eead4){var _0x21e214=_0x246b8b[-0x1*-0x39f+-0x164*-0x1+0x503*-0x1],_0x24073a=_0x246b8b[-0xb*-0x1b5+0x26bc+-0x3982],_0x52c354=_0x19a66d['endpointFo'+'r'](_0x21e214);return _0x40e791['indexOf'](_0x5a15f0,_0x21e214)>=0x2379+-0x1*0xe93+0x19*-0xd6?_0x4eead4():_0x40e791['indexOf'](_0x567595,_0x21e214)<-0x1bca+0x1*-0x1363+0x2f2d*0x1?(_0x24073a['isUsable'](_0x19a66d,_0x52c354,function(){}),_0x4eead4()):void _0x24073a['isUsable'](_0x19a66d,_0x52c354,function(_0x97c6b6){if(!_0x97c6b6)return _0x4eead4();var _0x2c5a7a=_0x24073a['hasOwnProp'+'erty']('create')?_0x24073a['create'](_0x19a66d,_0x52c354):new _0x24073a(_0x19a66d,_0x52c354);_0x2a78af['call'](_0x5b873d,_0x2c5a7a);});},function(){throw new Error('Could\x20not\x20'+'find\x20a\x20usa'+'ble\x20connec'+'tion\x20type\x20'+'for\x20'+_0x3c5135['href']);});},'register':function(_0x3b00ae,_0x4df9a1){this['_transport'+'s']['push']([_0x3b00ae,_0x4df9a1]),_0x4df9a1['prototype']['connection'+'Type']=_0x3b00ae;},'getConnectionTypes':function(){return _0x40e791['map'](this['_transport'+'s'],function(_0x3e0906){return _0x3e0906[-0x33f*0xb+-0x907+0x1*0x2cbc];});},'disable':function(_0x39d788){if('autodiscon'+'nect'===_0x39d788){for(var _0x24152e=-0xaf1*-0x3+0x4b6+-0x2589*0x1;_0x24152e{'use strict';var _0x5e0629=_0x73f129(-0x112*-0xd+0x45*0x53+-0x143d),_0x3b3cc3=_0x73f129(-0x17db+0x3*0x98+0x1668),_0x1ab8d9=_0x73f129(0xf4e+0x2*0xa95+0x188*-0xb),_0x4e57fb=_0x73f129(0x10b3+0x12cd+-0x1bc2),_0x35fe5e=_0x73f129(-0xbe3*0x2+-0x145e+0x3ca7),_0x29ebad=_0x73f129(0x4*-0x470+-0x1427+-0x338*-0x10),_0x1b246c=_0x73f129(0x2384+0x1d*0x66+0x21cf*-0x1),_0x5a5024=_0x73f129(0x2934+-0x2831+-0x1c69*-0x1),_0x443294=_0x73f129(0xb1f+-0x12b4+-0x3d*-0x2b),_0x14afec=_0x73f129(-0xd7d+0x2136+-0xd*-0x55),_0x2efb16=_0x1b246c(_0x5e0629(_0x73f129(0x3d*0x19+-0x3*0xe4b+0x3f10),{'UNCONNECTED':0x1,'CONNECTING':0x2,'CONNECTED':0x3,'batching':!(0x11*0x1b8+-0x1b53*0x1+-0x2c*0xb),'isUsable':function(_0x2200b8,_0x389aac){this['callback'](function(){_0x2200b8['call'](_0x389aac,!(-0x2335+-0x1*0x1751+0x9c1*0x6));}),this['errback'](function(){_0x2200b8['call'](_0x389aac,!(-0x4b7+-0xc1*-0x2+0x336));}),this['connect']();},'request':function(_0x539e27){this['_pending']=this['_pending']||new _0x1ab8d9();for(var _0x685a75=-0x25*0xf4+0x11b6+-0x141*-0xe,_0x511e79=_0x539e27['length'];_0x685a75<_0x511e79;_0x685a75++)this['_pending']['add'](_0x539e27[_0x685a75]);var _0x89499a=this,_0x1c2038=new _0x3b3cc3(function(_0x22ca24,_0x29a144){_0x89499a['callback'](function(_0x22fb5d){_0x22fb5d&&0xfc3+-0xfc5*-0x1+-0x1f87===_0x22fb5d['readyState']&&(_0x22fb5d['send'](_0x5a5024(_0x539e27)),_0x22ca24(_0x22fb5d));}),_0x89499a['connect']();});return{'abort':function(){_0x1c2038['then'](function(_0x43b2ca){_0x43b2ca['close']();});}};},'connect':function(){if(!_0x2efb16['_unloaded']&&(this['_state']=this['_state']||this['UNCONNECTE'+'D'],this['_state']===this['UNCONNECTE'+'D'])){this['_state']=this['CONNECTING'];var _0x54329a=this['_createSoc'+'ket']();if(!_0x54329a)return this['setDeferre'+'dStatus']('failed');var _0x41f365=this;_0x54329a['onopen']=function(){_0x54329a['headers']&&_0x41f365['_storeCook'+'ies'](_0x54329a['headers']['set-cookie']),_0x41f365['_socket']=_0x54329a,_0x41f365['_state']=_0x41f365['CONNECTED'],_0x41f365['_everConne'+'cted']=!(-0x23a3+-0x8a0+-0xec1*-0x3),_0x41f365['setDeferre'+'dStatus']('succeeded',_0x54329a);};var _0x9d19f1=!(-0x200c+-0x1f30+-0x3f3d*-0x1);_0x54329a['onclose']=_0x54329a['onerror']=function(){if(!_0x9d19f1){_0x9d19f1=!(-0x2291+-0x1*-0x83f+0x8c6*0x3);var _0x441ccf=_0x41f365['_state']===_0x41f365['CONNECTED'];_0x54329a['onopen']=_0x54329a['onclose']=_0x54329a['onerror']=_0x54329a['onmessage']=null,delete _0x41f365['_socket'],_0x41f365['_state']=_0x41f365['UNCONNECTE'+'D'];var _0x2a2d0a=_0x41f365['_pending']?_0x41f365['_pending']['toArray']():[];delete _0x41f365['_pending'],_0x441ccf||_0x41f365['_everConne'+'cted']?(_0x41f365['setDeferre'+'dStatus']('unknown'),_0x41f365['_handleErr'+'or'](_0x2a2d0a,_0x441ccf)):_0x41f365['setDeferre'+'dStatus']('failed');}},_0x54329a['onmessage']=function(_0xe1d950){var _0x47b72a;try{_0x47b72a=JSON['parse'](_0xe1d950['data']);}catch(_0x360218){}if(_0x47b72a){for(var _0x281f13=-0x1091+0x195c+-0x8cb,_0x29aab0=(_0x47b72a=[]['concat'](_0x47b72a))['length'];_0x281f13<_0x29aab0;_0x281f13++)void(0x932+0x1e2c*0x1+0x275e*-0x1)!==_0x47b72a[_0x281f13]['successful']&&_0x41f365['_pending']['remove'](_0x47b72a[_0x281f13]);_0x41f365['_receive'](_0x47b72a);}};}},'close':function(){this['_socket']&&this['_socket']['close']();},'_createSocket':function(){var _0x1fb525=_0x2efb16['getSocketU'+'rl'](this['endpoint']),_0x5a7a5c=this['_dispatche'+'r']['headers'],_0x492512=this['_dispatche'+'r']['wsExtensio'+'ns'],_0x7a50a4=this['_getCookie'+'s'](),_0x5c1f73=this['_dispatche'+'r']['tls'],_0x24ccec={'extensions':_0x492512,'headers':_0x5a7a5c,'proxy':this['_proxy'],'tls':_0x5c1f73};''!==_0x7a50a4&&(_0x24ccec['headers']['Cookie']=_0x7a50a4);try{return _0x443294['create'](_0x1fb525,[],_0x24ccec);}catch(_0x927e58){}}}),{'PROTOCOLS':{'http:':'ws:','https:':'wss:'},'create':function(_0x586b3d,_0x5293f1){var _0x15e6cc=_0x586b3d['transports']['websocket']=_0x586b3d['transports']['websocket']||{};return _0x15e6cc[_0x5293f1['href']]=_0x15e6cc[_0x5293f1['href']]||new this(_0x586b3d,_0x5293f1),_0x15e6cc[_0x5293f1['href']];},'getSocketUrl':function(_0x583c80){return(_0x583c80=_0x29ebad(_0x583c80))['protocol']=this['PROTOCOLS'][_0x583c80['protocol']],_0x4e57fb['stringify'](_0x583c80);},'isUsable':function(_0x3c5fd4,_0x5cb400,_0x11a74e,_0x23516b){this['create'](_0x3c5fd4,_0x5cb400)['isUsable'](_0x11a74e,_0x23516b);}});_0x1b246c(_0x2efb16['prototype'],_0x14afec),_0x35fe5e['Event']&&void(0x10*-0x3b+-0x1*-0x169c+-0x1c*0xad)!==global['onbeforeun'+'load']&&_0x35fe5e['Event']['on'](global,'beforeunlo'+'ad',function(){void(-0x3*0x2de+0xc97+-0x3fd)===_0x2efb16['_unloaded']&&(_0x2efb16['_unloaded']=!(0xba3+-0x176f*-0x1+-0x1*0x2312));}),_0x260bb1['exports']=_0x2efb16;},0x149:_0x29fa96=>{'use strict';_0x29fa96['exports']={'commonElement':function(_0x49ca1b,_0x4041ff){for(var _0x5acddf=0x2409+0x22a*-0x1+-0x21df,_0x83821d=_0x49ca1b['length'];_0x5acddf<_0x83821d;_0x5acddf++)if(-(-0x2*-0xf2e+-0x9*-0x14c+0x601*-0x7)!==this['indexOf'](_0x4041ff,_0x49ca1b[_0x5acddf]))return _0x49ca1b[_0x5acddf];return null;},'indexOf':function(_0x5e755a,_0x21d1b5){if(_0x5e755a['indexOf'])return _0x5e755a['indexOf'](_0x21d1b5);for(var _0x8e4f93=0x26e2+0x2129+-0x480b*0x1,_0x5c0d55=_0x5e755a['length'];_0x8e4f93<_0x5c0d55;_0x8e4f93++)if(_0x5e755a[_0x8e4f93]===_0x21d1b5)return _0x8e4f93;return-(0x1ab*-0xc+0xa9d*-0x1+0x1ea2);},'map':function(_0x51ded4,_0x12869c,_0x26b472){if(_0x51ded4['map'])return _0x51ded4['map'](_0x12869c,_0x26b472);var _0x48c4f2=[];if(_0x51ded4 instanceof Array){for(var _0x2b6e46=-0x1949+-0x1*-0x206f+-0x726,_0x331bdb=_0x51ded4['length'];_0x2b6e46<_0x331bdb;_0x2b6e46++)_0x48c4f2['push'](_0x12869c['call'](_0x26b472||null,_0x51ded4[_0x2b6e46],_0x2b6e46));}else{for(var _0x527813 in _0x51ded4)_0x51ded4['hasOwnProp'+'erty'](_0x527813)&&_0x48c4f2['push'](_0x12869c['call'](_0x26b472||null,_0x527813,_0x51ded4[_0x527813]));}return _0x48c4f2;},'filter':function(_0x1260f4,_0xa5c9d8,_0x14acab){if(_0x1260f4['filter'])return _0x1260f4['filter'](_0xa5c9d8,_0x14acab);for(var _0x11add1=[],_0xec1d82=0x16b3+-0x1*0x581+-0x8e*0x1f,_0x1a0805=_0x1260f4['length'];_0xec1d82<_0x1a0805;_0xec1d82++)_0xa5c9d8['call'](_0x14acab||null,_0x1260f4[_0xec1d82],_0xec1d82)&&_0x11add1['push'](_0x1260f4[_0xec1d82]);return _0x11add1;},'asyncEach':function(_0x2cd88b,_0x290c40,_0xaef699,_0x1179f2){var _0x51df26=_0x2cd88b['length'],_0x353743=-(-0x437*-0x4+-0x1604*-0x1+-0x26df),_0x2955be=-0xe5f*0x2+0x108c+-0xc32*-0x1,_0x13b401=!(-0x7db*-0x2+-0x1c64+-0x11*-0xbf),_0x599bb5=function(){if(_0x2955be-=0x4ed+0x1*0x1669+-0x1*0x1b55,(_0x353743+=-0x323+0x2*0x97+0x1f6*0x1)===_0x51df26)return _0xaef699&&_0xaef699['call'](_0x1179f2);_0x290c40(_0x2cd88b[_0x353743],_0x5d76a4);},_0x5d76a4=function(){_0x2955be+=0x1a9e+-0x1d4e+0x2b1,(function(){if(!_0x13b401){for(_0x13b401=!(-0x1c30+0x2011+0x1*-0x3e1);_0x2955be>0x1*-0x25b+-0x4*0x77b+0x1*0x2047;)_0x599bb5();_0x13b401=!(-0x243b+-0x17c5+0x3c01);}}());};_0x5d76a4();}};},0xd43:_0x3bad0b=>{'use strict';var _0x3985ba=Array['prototype']['forEach'],_0x2f75c4=Object['prototype']['hasOwnProp'+'erty'];_0x3bad0b['exports']=function(_0x4b526b){return _0x3985ba['call'](arguments,function(_0x1793a1,_0xa7f20){if(-0x1f81+0x174+0x1e0d!==_0xa7f20){for(var _0x5b23ca in _0x1793a1)_0x2f75c4['call'](_0x1793a1,_0x5b23ca)&&(_0x4b526b[_0x5b23ca]=_0x1793a1[_0x5b23ca]);}}),_0x4b526b;};},0x1083:_0x23b4be=>{'use strict';_0x23b4be['exports']={};},0x100c:(_0x35fedb,_0x316139,_0x21fccd)=>{'use strict';var _0x4a12de=_0x21fccd(-0xcd2+-0x207b+0x3a90);_0x35fedb['exports']=function(_0x5174d4,_0x1a642e){'function'!=typeof _0x5174d4&&(_0x1a642e=_0x5174d4,_0x5174d4=Object);var _0x4d9fc7=function(){return this['initialize']&&this['initialize']['apply'](this,arguments)||this;},_0x1c3ca8=function(){};return _0x1c3ca8['prototype']=_0x5174d4['prototype'],_0x4d9fc7['prototype']=new _0x1c3ca8(),_0x4a12de(_0x4d9fc7['prototype'],_0x1a642e),_0x4d9fc7;};},0x845:_0xa5189=>{_0xa5189['exports']={'VERSION':'1.4.0','BAYEUX_VERSION':'1.0','ID_LENGTH':0xa0,'JSONP_CALLBACK':'jsonpcallb'+'ack','CONNECTION_TYPES':['long-polli'+'ng','cross-orig'+'in-long-po'+'lling','callback-p'+'olling','websocket','eventsourc'+'e','in-process'],'MANDATORY_CONNECTION_TYPES':['long-polli'+'ng','callback-p'+'olling','in-process']};},0x1ba2:(_0x369b3e,_0x4a5522,_0x455b6b)=>{'use strict';_0x369b3e['exports']=_0x455b6b(0x1*-0x1247+-0x282+0x2034);},0xd99:_0x23ff68=>{'use strict';var _0x413ca0=function(_0x24f115){var _0x39a67f,_0x119445,_0x204f3d;if(_0x24f115 instanceof Array){for(_0x39a67f=[],_0x119445=_0x24f115['length'];_0x119445--;)_0x39a67f[_0x119445]=_0x413ca0(_0x24f115[_0x119445]);return _0x39a67f;}if('object'==typeof _0x24f115){for(_0x204f3d in(_0x39a67f=null===_0x24f115?null:{},_0x24f115))_0x39a67f[_0x204f3d]=_0x413ca0(_0x24f115[_0x204f3d]);return _0x39a67f;}return _0x24f115;};_0x23ff68['exports']=_0x413ca0;},0x289:_0x165a7a=>{var _0x3ba410='function'==typeof Array['isArray']?Array['isArray']:function(_0x4e30af){return'[object\x20Ar'+'ray]'===Object['prototype']['toString']['call'](_0x4e30af);};function _0x743e49(){}_0x165a7a['exports']=_0x743e49,_0x743e49['prototype']['emit']=function(_0x42b500){if('error'===_0x42b500&&(!this['_events']||!this['_events']['error']||_0x3ba410(this['_events']['error'])&&!this['_events']['error']['length']))throw arguments[-0x53*0x18+-0xd12+0x14db]instanceof Error?arguments[-0x1bab+0x2d4+0x636*0x4]:new Error('Uncaught,\x20'+'unspecifie'+'d\x20\x27error\x27\x20'+'event.');if(!this['_events'])return!(0x1488+0x1165+-0x25ec*0x1);var _0x34a18f=this['_events'][_0x42b500];if(!_0x34a18f)return!(-0x16da+0x1*0xe77+0xb3*0xc);if('function'==typeof _0x34a18f){switch(arguments['length']){case-0xe1e+0xf26+-0x1*0x107:_0x34a18f['call'](this);break;case-0x7a*0x19+0xb30+0xbc:_0x34a18f['call'](this,arguments[0x1*0x2627+-0x2*0xfcd+-0x68c]);break;case-0x214b+0x303*0x8+-0x83*-0x12:_0x34a18f['call'](this,arguments[-0xa2e*0x2+0x35*-0x41+0x6f*0x4e],arguments[0x1*0x10ef+0x958+-0x1a45]);break;default:var _0x3e4239=Array['prototype']['slice']['call'](arguments,0x1c76+-0x5*0x3d1+0x4b0*-0x2);_0x34a18f['apply'](this,_0x3e4239);}return!(0x1037*-0x1+-0x1181*-0x2+-0x12cb*0x1);}if(_0x3ba410(_0x34a18f)){_0x3e4239=Array['prototype']['slice']['call'](arguments,-0x2146*0x1+0x12cf+0x73c*0x2);for(var _0x29d330=_0x34a18f['slice'](),_0x55253f=0x67*0x57+-0x3cd*-0x2+-0x2a9b,_0x4968c5=_0x29d330['length'];_0x55253f<_0x4968c5;_0x55253f++)_0x29d330[_0x55253f]['apply'](this,_0x3e4239);return!(-0x202+-0x866+0xa68);}return!(-0xcf4+-0x2253+0x164*0x22);},_0x743e49['prototype']['addListene'+'r']=function(_0x331e63,_0x513f37){if('function'!=typeof _0x513f37)throw new Error('addListene'+'r\x20only\x20tak'+'es\x20instanc'+'es\x20of\x20Func'+'tion');return this['_events']||(this['_events']={}),this['emit']('newListene'+'r',_0x331e63,_0x513f37),this['_events'][_0x331e63]?_0x3ba410(this['_events'][_0x331e63])?this['_events'][_0x331e63]['push'](_0x513f37):this['_events'][_0x331e63]=[this['_events'][_0x331e63],_0x513f37]:this['_events'][_0x331e63]=_0x513f37,this;},_0x743e49['prototype']['on']=_0x743e49['prototype']['addListene'+'r'],_0x743e49['prototype']['once']=function(_0x3f0717,_0x4e5d94){var _0x2ef238=this;return _0x2ef238['on'](_0x3f0717,function _0x548f18(){_0x2ef238['removeList'+'ener'](_0x3f0717,_0x548f18),_0x4e5d94['apply'](this,arguments);}),this;},_0x743e49['prototype']['removeList'+'ener']=function(_0x1c0c3b,_0x58e785){if('function'!=typeof _0x58e785)throw new Error('removeList'+'ener\x20only\x20'+'takes\x20inst'+'ances\x20of\x20F'+'unction');if(!this['_events']||!this['_events'][_0x1c0c3b])return this;var _0x2e25a3=this['_events'][_0x1c0c3b];if(_0x3ba410(_0x2e25a3)){var _0x1002cc=function(_0x388a92,_0x16bf4b){if(_0x388a92['indexOf'])return _0x388a92['indexOf'](_0x16bf4b);for(var _0x340121=0x7*0x335+0x1*0x1be6+-0x3259;_0x340121<_0x388a92['length'];_0x340121++)if(_0x16bf4b===_0x388a92[_0x340121])return _0x340121;return-(0x8b*0x25+0x1bd*-0x16+0x1228);}(_0x2e25a3,_0x58e785);if(_0x1002cc<0xfe8+0x185a+-0x1*0x2842)return this;_0x2e25a3['splice'](_0x1002cc,-0x1581+0x11*0xdf+0x6b3),-0x9ba+-0x1a06+0x23c*0x10==_0x2e25a3['length']&&delete this['_events'][_0x1c0c3b];}else this['_events'][_0x1c0c3b]===_0x58e785&&delete this['_events'][_0x1c0c3b];return this;},_0x743e49['prototype']['removeAllL'+'isteners']=function(_0x39755c){return-0x1*0x38b+0x145c+-0x35d*0x5===arguments['length']?(this['_events']={},this):(_0x39755c&&this['_events']&&this['_events'][_0x39755c]&&(this['_events'][_0x39755c]=null),this);},_0x743e49['prototype']['listeners']=function(_0x2ddcce){return this['_events']||(this['_events']={}),this['_events'][_0x2ddcce]||(this['_events'][_0x2ddcce]=[]),_0x3ba410(this['_events'][_0x2ddcce])||(this['_events'][_0x2ddcce]=[this['_events'][_0x2ddcce]]),this['_events'][_0x2ddcce];};},0x1d75:(_0xbf571b,_0x423ceb,_0x56475d)=>{'use strict';var _0x5fbb07=_0x56475d(-0x528+-0x1e0e*-0x1+0x27*-0x9b);_0xbf571b['exports']=function(_0x1af2b6){var _0x82a6dc=_0x5fbb07['filter']([]['concat'](_0x1af2b6),function(_0x24e103){return'/meta/conn'+'ect'===_0x24e103['channel'];});return _0x82a6dc[-0x1428+-0x2*0xe3e+0x30a4]&&_0x82a6dc[0x1702*-0x1+0x1b01+0x1f*-0x21]['clientId'];};},0x10d7:(_0x588252,_0x37b86f,_0x10d788)=>{'use strict';var _0x5cddd7=_0x10d788(-0x1*0x10e3+-0x607*0x1+0x26f6),_0x313232=_0x10d788(-0x1b0d+0xf8*-0x1+0x260a);_0x588252['exports']=_0x5cddd7({'initialize':function(){this['_used']={};},'exists':function(_0x5581f8){return this['_used']['hasOwnProp'+'erty'](_0x5581f8);},'generate':function(){for(var _0x538a51=_0x313232();this['_used']['hasOwnProp'+'erty'](_0x538a51);)_0x538a51=_0x313232();return this['_used'][_0x538a51]=_0x538a51;},'release':function(_0x513d28){delete this['_used'][_0x513d28];}});},0x55:(_0x151aab,_0x3ef1ff,_0x38cf6f)=>{'use strict';var _0x53e7d4=_0x38cf6f(-0xa*0x128+-0x1763*0x1+0x26ca),_0x33d0a1=function(_0x1ba923){this['_state']=-(-0xdf*-0x2c+0x31a+-0x296d),this['_value']=null,this['_defer']=[],_0x92c341(this,_0x1ba923);};_0x33d0a1['prototype']['then']=function(_0x10477c,_0xad27a9){var _0x29f2dd=new _0x33d0a1(),_0x2073a5={'promise':_0x29f2dd,'onFulfilled':_0x10477c,'onRejected':_0xad27a9};return-(-0x78*-0x21+0x25dc*-0x1+0x1665*0x1)===this['_state']?this['_defer']['push'](_0x2073a5):_0x441553(this,_0x2073a5),_0x29f2dd;},_0x33d0a1['prototype']['catch']=function(_0x12e863){return this['then'](null,_0x12e863);};var _0x92c341=function(_0x4a1c0f,_0x1e7875){if('function'==typeof _0x1e7875){var _0x498422=-0x95c+-0xb5d*0x1+0x425*0x5,_0x26aa49=function(_0x540b2b){-0x1a5a+0x13fa+0x660==_0x498422++&&_0x5b60a6(_0x4a1c0f,_0x540b2b);};try{_0x1e7875(function(_0x6ec00a){0xc1*0x33+-0x29*0xc5+-0x6e6==_0x498422++&&_0x15a47c(_0x4a1c0f,_0x6ec00a);},_0x26aa49);}catch(_0x80c53c){_0x26aa49(_0x80c53c);}}},_0x441553=function(_0x1b7d5d,_0x3c0205){var _0x4a10a0=_0x1b7d5d['_state'],_0xb8094f=_0x1b7d5d['_value'],_0x367e42=_0x3c0205['promise'],_0x2717f8=[_0x3c0205['onFulfille'+'d'],_0x3c0205['onRejected']][_0x4a10a0];if('function'!=typeof _0x2717f8)return(0x202f*-0x1+-0x823+-0x1429*-0x2,[_0x15a47c,_0x5b60a6][_0x4a10a0])(_0x367e42,_0xb8094f);_0x53e7d4(function(){try{_0x15a47c(_0x367e42,_0x2717f8(_0xb8094f));}catch(_0x197c21){_0x5b60a6(_0x367e42,_0x197c21);}});},_0x15a47c=function(_0x5c3890,_0xe1765d){if(_0x5c3890===_0xe1765d)return _0x5b60a6(_0x5c3890,new TypeError('Recursive\x20'+'promise\x20ch'+'ain\x20detect'+'ed'));var _0x455436;try{_0x455436=_0x5da9dc(_0xe1765d);}catch(_0x11e09b){return _0x5b60a6(_0x5c3890,_0x11e09b);}if(!_0x455436)return _0x46c06d(_0x5c3890,_0xe1765d);_0x92c341(_0x5c3890,function(_0x32e54b,_0xf9a9d1){_0x455436['call'](_0xe1765d,_0x32e54b,_0xf9a9d1);});},_0x5da9dc=function(_0xd16d3b){var _0x5dc5e5=typeof _0xd16d3b,_0x557b2d=('object'===_0x5dc5e5||'function'===_0x5dc5e5)&&_0xd16d3b&&_0xd16d3b['then'];return'function'==typeof _0x557b2d?_0x557b2d:null;},_0x46c06d=function(_0x543a94,_0x55755d){_0x702a88(_0x543a94,0x19db+0x99a+-0x2375,_0x55755d);},_0x5b60a6=function(_0x4fc8a9,_0x17e818){_0x702a88(_0x4fc8a9,-0x1*-0x645+0x757+-0xd9b,_0x17e818);},_0x702a88=function(_0x2e39d2,_0x1bd80d,_0x566404){var _0x388cfc=_0x2e39d2['_defer'],_0x559a99=-0xff3+-0xea3*0x2+-0x1*-0x2d39;if(_0x2e39d2['_state']=_0x1bd80d,_0x2e39d2['_value']=_0x566404,_0x2e39d2['_defer']=null,0x226c+-0x16ce+-0xb9e!==_0x388cfc['length']){for(;_0x559a99<_0x388cfc['length'];)_0x441553(_0x2e39d2,_0x388cfc[_0x559a99++]);}};_0x33d0a1['resolve']=function(_0x451a68){try{if(_0x5da9dc(_0x451a68))return _0x451a68;}catch(_0x103e42){return _0x33d0a1['reject'](_0x103e42);}return new _0x33d0a1(function(_0x13b2eb,_0x32c8f2){_0x13b2eb(_0x451a68);});},_0x33d0a1['reject']=function(_0x171f7a){return new _0x33d0a1(function(_0x1dd501,_0x35eb9c){_0x35eb9c(_0x171f7a);});},_0x33d0a1['all']=function(_0xa400c2){return new _0x33d0a1(function(_0x4e7ec2,_0x32c844){var _0x10ac8b,_0x16a1d0=[],_0xd24621=_0xa400c2['length'];if(-0x26ba+-0x138a+0x3a44===_0xd24621)return _0x4e7ec2(_0x16a1d0);var _0x30fda3=function(_0x39e43c,_0x4494ff){_0x33d0a1['resolve'](_0x39e43c)['then'](function(_0x17193a){_0x16a1d0[_0x4494ff]=_0x17193a,0x1d*0xb+-0x16ec+0x15ad==--_0xd24621&&_0x4e7ec2(_0x16a1d0);},_0x32c844);};for(_0x10ac8b=0xafb+0x2*-0xdab+0x105b;_0x10ac8b<_0xd24621;_0x10ac8b++)_0x30fda3(_0xa400c2[_0x10ac8b],_0x10ac8b);});},_0x33d0a1['race']=function(_0x3d1548){return new _0x33d0a1(function(_0x320c59,_0x156b20){for(var _0x3e1f1f=0x3*-0x71d+0x49f*0x1+0x10b8,_0xb932ba=_0x3d1548['length'];_0x3e1f1f<_0xb932ba;_0x3e1f1f++)_0x33d0a1['resolve'](_0x3d1548[_0x3e1f1f])['then'](_0x320c59,_0x156b20);});},_0x33d0a1['deferred']=function(){var _0x1becec={};return _0x1becec['promise']=new _0x33d0a1(function(_0x1900fe,_0x44a384){_0x1becec['resolve']=_0x1900fe,_0x1becec['reject']=_0x44a384;}),_0x1becec;},_0x151aab['exports']=_0x33d0a1;},0xa05:(_0x158a69,_0x299970,_0x464082)=>{'use strict';var _0x34c166=_0x464082(-0xc93+0x9aa*-0x2+0x3*0xdae),_0x2b374c=_0x464082(0x520+-0x4b8+0x7dd);_0x158a69['exports']=function(_0x2db5f4){_0x2db5f4=_0x2db5f4||_0x2b374c['ID_LENGTH'];for(var _0x187a7c=Math['ceil'](_0x2db5f4*Math['log'](-0x2a1*-0x6+-0x12a*-0x2+-0x1218)/Math['log'](0x165c+0xd6*-0x2+0x14*-0x107)),_0x7680a5=_0x34c166(_0x2db5f4,-0x1*0x13ac+-0x423+-0x1*-0x17f3);_0x7680a5['length']<_0x187a7c;)_0x7680a5='0'+_0x7680a5;return _0x7680a5;};},0x13a0:(_0x452038,_0x6db1a7,_0x111af8)=>{'use strict';var _0x15e5f0=_0x111af8(-0x5cf+0x3c9*-0x4+0x24ff);_0x452038['exports']=_0x15e5f0({'initialize':function(){this['_index']={};},'add':function(_0x9cd52c){var _0x399f3f=void(-0x19*-0x1d+0x25f3+-0x6*0x6cc)!==_0x9cd52c['id']?_0x9cd52c['id']:_0x9cd52c;return!this['_index']['hasOwnProp'+'erty'](_0x399f3f)&&(this['_index'][_0x399f3f]=_0x9cd52c,!(-0x1e90+0x2597+-0x707));},'forEach':function(_0xf8f4e,_0x57b31c){for(var _0x3f4993 in this['_index'])this['_index']['hasOwnProp'+'erty'](_0x3f4993)&&_0xf8f4e['call'](_0x57b31c,this['_index'][_0x3f4993]);},'isEmpty':function(){for(var _0x4ed53f in this['_index'])if(this['_index']['hasOwnProp'+'erty'](_0x4ed53f))return!(0x23ff+0x1549+-0x155*0x2b);return!(-0x73f+0x8*-0x25c+0x1a1f);},'member':function(_0x3c5ee0){for(var _0x1b20e0 in this['_index'])if(this['_index'][_0x1b20e0]===_0x3c5ee0)return!(-0x1281+-0x447*0x8+0x34b9);return!(-0x1e6d+0x7*-0x155+0x27c1*0x1);},'remove':function(_0x5eccc1){var _0x159313=void(0x1a0f+-0x18e2+-0x7*0x2b)!==_0x5eccc1['id']?_0x5eccc1['id']:_0x5eccc1,_0x5910ca=this['_index'][_0x159313];return delete this['_index'][_0x159313],_0x5910ca;},'toArray':function(){var _0x5af4c1=[];return this['forEach'](function(_0x558ff3){_0x5af4c1['push'](_0x558ff3);}),_0x5af4c1;}});},0x1d6c:_0x417e5c=>{'use strict';_0x417e5c['exports']=function(_0x5e2330){return JSON['stringify'](_0x5e2330,function(_0x15cffb,_0x43e1b6){return this[_0x15cffb]instanceof Array?this[_0x15cffb]:_0x43e1b6;});};},0x7be:_0x161452=>{'use strict';_0x161452['exports']={'isURI':function(_0x374ed8){return _0x374ed8&&_0x374ed8['protocol']&&_0x374ed8['host']&&_0x374ed8['path'];},'isSameOrigin':function(_0x19bf3e){return _0x19bf3e['protocol']===location['protocol']&&_0x19bf3e['hostname']===location['hostname']&&_0x19bf3e['port']===location['port'];},'parse':function(_0x896fcc){if('string'!=typeof _0x896fcc)return _0x896fcc;var _0x58c90c,_0x28d57f,_0x2e8030,_0x59a9cc,_0x59a000,_0x290071,_0x5a436f={},_0x46b554=function(_0xbf372e,_0x287ca6){_0x896fcc=_0x896fcc['replace'](_0x287ca6,function(_0x4f5a4c){return _0x5a436f[_0xbf372e]=_0x4f5a4c,'';}),_0x5a436f[_0xbf372e]=_0x5a436f[_0xbf372e]||'';};for(_0x46b554('protocol',/^[a-z]+\:/i),_0x46b554('host',/^\/\/[^\/\?#]+/),/^\//['test'](_0x896fcc)||_0x5a436f['host']||(_0x896fcc=location['pathname']['replace'](/[^\/]*$/,'')+_0x896fcc),_0x46b554('pathname',/^[^\?#]*/),_0x46b554('search',/^\?[^#]*/),_0x46b554('hash',/^#.*/),_0x5a436f['protocol']=_0x5a436f['protocol']||location['protocol'],_0x5a436f['host']?(_0x5a436f['host']=_0x5a436f['host']['substr'](0x55*0x1+0x7ef+-0x842),/@/['test'](_0x5a436f['host'])&&(_0x5a436f['auth']=_0x5a436f['host']['split']('@')[-0x1*0x2329+-0x1*-0x55b+-0x23*-0xda],_0x5a436f['host']=_0x5a436f['host']['split']('@')[0x25e3+0xa28+-0x300a]),_0x58c90c=_0x5a436f['host']['match'](/^\[([^\]]+)\]|^[^:]+/),_0x5a436f['hostname']=_0x58c90c[-0x7*-0x39a+0xf2*-0x2+0x1751*-0x1]||_0x58c90c[-0x9b5+0xd23+-0x36e*0x1],_0x5a436f['port']=(_0x5a436f['host']['match'](/:(\d+)$/)||[])[0x1f*-0xc1+-0x4*0x269+0x1*0x2104]||''):(_0x5a436f['host']=location['host'],_0x5a436f['hostname']=location['hostname'],_0x5a436f['port']=location['port']),_0x5a436f['pathname']=_0x5a436f['pathname']||'/',_0x5a436f['path']=_0x5a436f['pathname']+_0x5a436f['search'],_0x290071={},_0x59a9cc=0x9*-0x61+-0x65*0x9+0x21*0x36,_0x59a000=(_0x2e8030=(_0x28d57f=_0x5a436f['search']['replace'](/^\?/,''))?_0x28d57f['split']('&'):[])['length'];_0x59a9cc<_0x59a000;_0x59a9cc++)_0x58c90c=_0x2e8030[_0x59a9cc]['split']('='),_0x290071[decodeURIComponent(_0x58c90c[-0x2198+-0x1*0x853+0x29eb]||'')]=decodeURIComponent(_0x58c90c[-0x2410+-0x1*-0x1d21+-0x2*-0x378]||'');return _0x5a436f['query']=_0x290071,_0x5a436f['href']=this['stringify'](_0x5a436f),_0x5a436f;},'stringify':function(_0x391737){var _0x5ac60a=_0x391737['auth']?_0x391737['auth']+'@':'';return _0x391737['protocol']+'//'+_0x5ac60a+_0x391737['host']+(_0x391737['pathname']+this['queryStrin'+'g'](_0x391737['query'])+(_0x391737['hash']||''));},'queryString':function(_0x490f38){var _0x542eb9=[];for(var _0x1177fe in _0x490f38)_0x490f38['hasOwnProp'+'erty'](_0x1177fe)&&_0x542eb9['push'](encodeURIComponent(_0x1177fe)+'='+encodeURIComponent(_0x490f38[_0x1177fe]));return-0x17c9+0x258d*-0x1+0x3d56===_0x542eb9['length']?'':'?'+_0x542eb9['join']('&');}};},0xf65:(_0x434d52,_0x30c7b0,_0x29e064)=>{'use strict';var _0x22ef52=_0x29e064(0x15b1+-0x14ca+0x62);_0x434d52['exports']=function(_0x3e661e,_0xda44e3){for(var _0x659ce0 in _0x3e661e)if(_0x22ef52['indexOf'](_0xda44e3,_0x659ce0)<-0x1*0x127d+0xc2e+0x64f*0x1)throw new Error('Unrecogniz'+'ed\x20option:'+'\x20'+_0x659ce0);};},0x2aa:(_0x518a71,_0x8879ab,_0x50d2ef)=>{'use strict';var _0x3d8029=_0x50d2ef(0xa0*0x14+0x524+-0xe77)['Client'];_0x518a71['exports']={'create':function(_0x99b4e9,_0x3afff7,_0x2e5312){return new _0x3d8029(_0x99b4e9,_0x3afff7,_0x2e5312);}};},0x1711:(_0xf4cfb7,_0xc574d7,_0xb235af)=>{var _0x3b720e=_0xb235af(-0x1e3b+0x3c6+0x24aa);function _0x248c80(_0x36bfd4){_0x3b720e['ok'](_0x36bfd4===_0x248c80['REQUEST']||_0x36bfd4===_0x248c80['RESPONSE']||void(0x1495+-0x5*0x7bd+0x1*0x121c)===_0x36bfd4),void(0x1f5*-0x9+0x268a+-0x14ed)===_0x36bfd4||this['initialize'](_0x36bfd4);}_0xc574d7['e']=_0x248c80,_0x248c80['prototype']['initialize']=function(_0x4a2d71,_0x42a553){_0x3b720e['ok'](_0x4a2d71===_0x248c80['REQUEST']||_0x4a2d71===_0x248c80['RESPONSE']),this['type']=_0x4a2d71,this['state']=_0x4a2d71+'_LINE',this['info']={'headers':[],'upgrade':!(0x162c+0xb*-0x29+0x1468*-0x1)},this['trailers']=[],this['line']='',this['isChunked']=!(0x1*0x232d+-0x2042+-0x2ea),this['connection']='',this['headerSize']=0x1435+-0x12*0x173+0x5e1,this['body_bytes']=null,this['isUserCall']=!(0x258e+-0x2651+0xc4),this['hadError']=!(-0x16*-0x11b+-0x1f1*-0x10+-0x3761);},_0x248c80['encoding']='ascii',_0x248c80['maxHeaderS'+'ize']=-0x7153*0x1+-0x371*0x8b+0x5b2b*0xa,_0x248c80['REQUEST']='REQUEST',_0x248c80['RESPONSE']='RESPONSE';var _0x42e4fb=_0x248c80['kOnHeaders']=0x1214+-0x1ec5*0x1+0xcb2,_0x35f054=_0x248c80['kOnHeaders'+'Complete']=-0x6bf+0x262c+-0x1f6b,_0x1adccc=_0x248c80['kOnBody']=0x784+-0x1329*0x2+-0x1*-0x1ed1,_0x4d6604=_0x248c80['kOnMessage'+'Complete']=-0x1*0xca7+-0x1e85+0x2b30;_0x248c80['prototype'][_0x42e4fb]=_0x248c80['prototype'][_0x35f054]=_0x248c80['prototype'][_0x1adccc]=_0x248c80['prototype'][_0x4d6604]=function(){};var _0x9813b2=!(-0x1ccb+-0x16*0x173+0x3cad);Object['defineProp'+'erty'](_0x248c80,'kOnExecute',{'get':function(){return _0x9813b2=!(-0x24d1*0x1+0x25d*-0x4+0x2e46*0x1),0x2184+0x2623+-0x4744;}});var _0x12e77d=_0x248c80['methods']=['DELETE','GET','HEAD','POST','PUT','CONNECT','OPTIONS','TRACE','COPY','LOCK','MKCOL','MOVE','PROPFIND','PROPPATCH','SEARCH','UNLOCK','BIND','REBIND','UNBIND','ACL','REPORT','MKACTIVITY','CHECKOUT','MERGE','M-SEARCH','NOTIFY','SUBSCRIBE','UNSUBSCRIB'+'E','PATCH','PURGE','MKCALENDAR','LINK','UNLINK'],_0x5beb75=_0x12e77d['indexOf']('CONNECT');_0x248c80['prototype']['reinitiali'+'ze']=_0x248c80,_0x248c80['prototype']['close']=_0x248c80['prototype']['pause']=_0x248c80['prototype']['resume']=_0x248c80['prototype']['free']=function(){},_0x248c80['prototype']['_compatMod'+'e0_11']=!(0x19*-0x1+0x6b*-0x53+0x1*0x22cb),_0x248c80['prototype']['getAsyncId']=function(){return 0x4*0x201+-0x2223+0x1a1f;};var _0x27160f={'REQUEST_LINE':!(0xa*0x109+-0x1*0x162e+0xbd4),'RESPONSE_LINE':!(0x19*-0x122+0x232e*0x1+-0x6dc),'HEADER':!(-0x16f6+-0xd29+-0x241f*-0x1)};_0x248c80['prototype']['execute']=function(_0x159cf4,_0x14e377,_0x42b2ff){if(!(this instanceof _0x248c80))throw new TypeError('not\x20a\x20HTTP'+'Parser');_0x14e377=_0x14e377||-0x885+-0xf0c+-0x1*-0x1791,_0x42b2ff='number'==typeof _0x42b2ff?_0x42b2ff:_0x159cf4['length'],this['chunk']=_0x159cf4,this['offset']=_0x14e377;var _0x1ef33e=this['end']=_0x14e377+_0x42b2ff;try{for(;this['offset']<_0x1ef33e&&!this[this['state']](););}catch(_0x31f3e4){if(this['isUserCall'])throw _0x31f3e4;return this['hadError']=!(-0xbd9*0x2+0x1567+0x24b),_0x31f3e4;}return this['chunk']=null,_0x42b2ff=this['offset']-_0x14e377,_0x27160f[this['state']]&&(this['headerSize']+=_0x42b2ff,this['headerSize']>_0x248c80['maxHeaderS'+'ize'])?new Error('max\x20header'+'\x20size\x20exce'+'eded'):_0x42b2ff;};var _0x4da550={'REQUEST_LINE':!(0x140e+0x10ac+-0x24ba),'RESPONSE_LINE':!(0x1f8d+-0x49*0x3e+-0xddf),'BODY_RAW':!(-0x98*-0xd+0x2d9+-0x21d*0x5)};_0x248c80['prototype']['finish']=function(){if(!this['hadError'])return _0x4da550[this['state']]?void('BODY_RAW'===this['state']&&this['userCall']()(this[_0x4d6604]())):new Error('invalid\x20st'+'ate\x20for\x20EO'+'F');},_0x248c80['prototype']['consume']=_0x248c80['prototype']['unconsume']=_0x248c80['prototype']['getCurrent'+'Buffer']=function(){},_0x248c80['prototype']['userCall']=function(){this['isUserCall']=!(-0x1143+-0x4a7*-0x4+-0x159);var _0x5e41a1=this;return function(_0x33dbdc){return _0x5e41a1['isUserCall']=!(-0xd*-0x257+0x1*-0x13f7+0x19*-0x6b),_0x33dbdc;};},_0x248c80['prototype']['nextReques'+'t']=function(){this['userCall']()(this[_0x4d6604]()),this['reinitiali'+'ze'](this['type']);},_0x248c80['prototype']['consumeLin'+'e']=function(){for(var _0x5728d2=this['end'],_0x5125e6=this['chunk'],_0x280ee8=this['offset'];_0x280ee8<_0x5728d2;_0x280ee8++)if(0x1f47+0x1*0x79+0x1fb6*-0x1===_0x5125e6[_0x280ee8]){var _0x49405e=this['line']+_0x5125e6['toString'](_0x248c80['encoding'],this['offset'],_0x280ee8);return'\x0d'===_0x49405e['charAt'](_0x49405e['length']-(0x1571+0x2b*-0x5+-0x1499))&&(_0x49405e=_0x49405e['substr'](-0x23*0x6a+0x19*-0xb9+0x5*0x683,_0x49405e['length']-(0xb57*-0x1+-0xddc*-0x2+-0x830*0x2))),this['line']='',this['offset']=_0x280ee8+(-0x16f7+0x499*0x1+-0x125f*-0x1),_0x49405e;}this['line']+=_0x5125e6['toString'](_0x248c80['encoding'],this['offset'],this['end']),this['offset']=this['end'];};var _0x58e999=/^([^: \t]+):[ \t]*((?:.*[^ \t])|)/,_0xa8680e=/^[ \t]+(.*[^ \t])/;_0x248c80['prototype']['parseHeade'+'r']=function(_0x147612,_0x64b2ed){if(-(-0x1*-0x85f+-0x11*-0x20e+-0x2b4c)!==_0x147612['indexOf']('\x0d'))throw _0x4c090c('HPE_LF_EXP'+'ECTED');var _0x36a250=_0x58e999['exec'](_0x147612),_0x3b8f30=_0x36a250&&_0x36a250[-0x14dd+0x2611*-0x1+0x3aef];if(_0x3b8f30)_0x64b2ed['push'](_0x3b8f30),_0x64b2ed['push'](_0x36a250[-0xa0b+0x14f9+-0xaec]);else{var _0x13843a=_0xa8680e['exec'](_0x147612);_0x13843a&&_0x64b2ed['length']&&(_0x64b2ed[_0x64b2ed['length']-(0x15*-0x22+0x816+0x54b*-0x1)]&&(_0x64b2ed[_0x64b2ed['length']-(0xffd*-0x1+-0x1*0xc5b+-0x7b*-0x3b)]+='\x20'),_0x64b2ed[_0x64b2ed['length']-(0xc14*-0x1+-0x1b05*-0x1+0x2*-0x778)]+=_0x13843a[-0xc47+-0xf9e+-0x1*-0x1be6]);}};var _0x1cf65d=/^([A-Z-]+) ([^ ]+) HTTP\/(\d)\.(\d)$/;_0x248c80['prototype']['REQUEST_LI'+'NE']=function(){var _0x545ef7=this['consumeLin'+'e']();if(_0x545ef7){var _0x28d687=_0x1cf65d['exec'](_0x545ef7);if(null===_0x28d687)throw _0x4c090c('HPE_INVALI'+'D_CONSTANT');if(this['info']['method']=this['_compatMod'+'e0_11']?_0x28d687[-0x1*-0x1559+-0x16f5*-0x1+-0x407*0xb]:_0x12e77d['indexOf'](_0x28d687[-0x2*-0x1b7+0x148f+-0x17fc]),-(0x1*-0x1d32+-0x26*-0x7+-0x9*-0x321)===this['info']['method'])throw new Error('invalid\x20re'+'quest\x20meth'+'od');this['info']['url']=_0x28d687[0xf*-0x173+-0xb*0x2ff+0x36b4],this['info']['versionMaj'+'or']=+_0x28d687[-0x176*-0xb+0x7*0x513+-0x3394],this['info']['versionMin'+'or']=+_0x28d687[0x197c+0x1*0x119+0x1*-0x1a91],this['body_bytes']=-0x269*0x7+-0x13*0x45+0x15fe,this['state']='HEADER';}};var _0x1930bd=/^HTTP\/(\d)\.(\d) (\d{3}) ?(.*)$/;function _0x4c090c(_0x396e33){var _0x192437=new Error('Parse\x20Erro'+'r');return _0x192437['code']=_0x396e33,_0x192437;}_0x248c80['prototype']['RESPONSE_L'+'INE']=function(){var _0x4fa905=this['consumeLin'+'e']();if(_0x4fa905){var _0x22aae3=_0x1930bd['exec'](_0x4fa905);if(null===_0x22aae3)throw _0x4c090c('HPE_INVALI'+'D_CONSTANT');this['info']['versionMaj'+'or']=+_0x22aae3[-0xda9+0x72d+0x67d],this['info']['versionMin'+'or']=+_0x22aae3[-0x1554+0x7*0x476+-0x9e4];var _0x37e406=this['info']['statusCode']=+_0x22aae3[0x24a+-0xf11+0xcca];this['info']['statusMess'+'age']=_0x22aae3[-0x21b+-0xc8b+0xeaa],0x882+0xcb7+-0x1538!=(_0x37e406/(0x7*-0x50b+0xc01+-0x17b*-0x10)|-0x81e+0xede+-0x6c0)&&0x1132*-0x1+0x19*0x10f+-0x879!==_0x37e406&&-0xe5*0x19+0xd21+0xa6c!==_0x37e406||(this['body_bytes']=0x93a+0x1d*-0x144+0x1b7a),this['state']='HEADER';}},_0x248c80['prototype']['shouldKeep'+'Alive']=function(){if(this['info']['versionMaj'+'or']>0xc59+-0x3b3*-0x1+-0x100c&&this['info']['versionMin'+'or']>0x21d5+0x2*0x16f+-0x24b3){if(-(0x10a2*-0x1+-0x5e9*-0x2+0x4d1)!==this['connection']['indexOf']('close'))return!(0x1888+0x2509*-0x1+-0x641*-0x2);}else{if(-(0x43*-0x90+-0xfaa+-0x3*-0x11c9)===this['connection']['indexOf']('keep-alive'))return!(0x15bd+-0x2*-0xeb3+-0x3322);}return!(null===this['body_bytes']&&!this['isChunked']);},_0x248c80['prototype']['HEADER']=function(){var _0x377aed=this['consumeLin'+'e']();if(void(0x5e8+0x4*0x345+0xf3*-0x14)!==_0x377aed){var _0x143a5d=this['info'];if(_0x377aed)this['parseHeade'+'r'](_0x377aed,_0x143a5d['headers']);else{for(var _0x25e2cc,_0x3fdc01,_0x3ca91a=_0x143a5d['headers'],_0x57996f=!(-0x1631+0x67e+-0x6*-0x29e),_0x30377d=!(0x578+-0x1f6f+-0x3*-0x8a8),_0x323b37=0x61*0x10+0x102c+-0x163c;_0x323b37<_0x3ca91a['length'];_0x323b37+=-0xe9c+-0x119b*0x2+0x31d4)switch(_0x3ca91a[_0x323b37]['toLowerCas'+'e']()){case'transfer-e'+'ncoding':this['isChunked']='chunked'===_0x3ca91a[_0x323b37+(0x752+-0x7f*-0x3+-0x8ce)]['toLowerCas'+'e']();break;case'content-le'+'ngth':if(_0x25e2cc=+_0x3ca91a[_0x323b37+(0x635+-0xf5*-0x23+-0x27b3*0x1)],_0x57996f){if(_0x25e2cc!==this['body_bytes'])throw _0x4c090c('HPE_UNEXPE'+'CTED_CONTE'+'NT_LENGTH');}else _0x57996f=!(0xba9+-0x95*0x23+0x8b6),this['body_bytes']=_0x25e2cc;break;case'connection':this['connection']+=_0x3ca91a[_0x323b37+(-0x5*0x19+0x246b*0x1+0x21d*-0x11)]['toLowerCas'+'e']();break;case'upgrade':_0x30377d=!(-0x43*-0x2c+0x21a4*-0x1+0x1620);}if(this['isChunked']&&_0x57996f&&(_0x57996f=!(-0x29*0xac+-0x1e92*-0x1+-0x305),this['body_bytes']=null),_0x30377d&&-(-0x1721+-0x79*-0x11+0xf19)!=this['connection']['indexOf']('upgrade')?_0x143a5d['upgrade']=this['type']===_0x248c80['REQUEST']||0x1a52+-0x4ce+-0x151f===_0x143a5d['statusCode']:_0x143a5d['upgrade']=_0x143a5d['method']===_0x5beb75,this['isChunked']&&_0x143a5d['upgrade']&&(this['isChunked']=!(-0x7*0x152+0xfc6+0x1*-0x687)),_0x143a5d['shouldKeep'+'Alive']=this['shouldKeep'+'Alive'](),-0x1e63+0xce1+0x1184===(_0x3fdc01=_0x9813b2?this['userCall']()(this[_0x35f054](_0x143a5d)):this['userCall']()(this[_0x35f054](_0x143a5d['versionMaj'+'or'],_0x143a5d['versionMin'+'or'],_0x143a5d['headers'],_0x143a5d['method'],_0x143a5d['url'],_0x143a5d['statusCode'],_0x143a5d['statusMess'+'age'],_0x143a5d['upgrade'],_0x143a5d['shouldKeep'+'Alive']))))return this['nextReques'+'t'](),!(-0x3b8+-0xcb*-0x1f+-0x14dd);if(this['isChunked']&&!_0x3fdc01)this['state']='BODY_CHUNK'+'HEAD';else{if(_0x3fdc01||-0x14a6+-0xed2+0x2378===this['body_bytes'])return this['nextReques'+'t'](),_0x143a5d['upgrade'];null===this['body_bytes']?this['state']='BODY_RAW':this['state']='BODY_SIZED';}}}},_0x248c80['prototype']['BODY_CHUNK'+'HEAD']=function(){var _0x4adcc7=this['consumeLin'+'e']();void(-0xa1*0x2d+-0x39+0x1c86)!==_0x4adcc7&&(this['body_bytes']=parseInt(_0x4adcc7,-0x1007+-0x6c0+-0x1*-0x16d7),this['body_bytes']?this['state']='BODY_CHUNK':this['state']='BODY_CHUNK'+'TRAILERS');},_0x248c80['prototype']['BODY_CHUNK']=function(){var _0x580a99=Math['min'](this['end']-this['offset'],this['body_bytes']);this['userCall']()(this[_0x1adccc](this['chunk'],this['offset'],_0x580a99)),this['offset']+=_0x580a99,this['body_bytes']-=_0x580a99,this['body_bytes']||(this['state']='BODY_CHUNK'+'EMPTYLINE');},_0x248c80['prototype']['BODY_CHUNK'+'EMPTYLINE']=function(){var _0x383ce6=this['consumeLin'+'e']();void(-0x4a2+-0x1581+0x1a23)!==_0x383ce6&&(_0x3b720e['equal'](_0x383ce6,''),this['state']='BODY_CHUNK'+'HEAD');},_0x248c80['prototype']['BODY_CHUNK'+'TRAILERS']=function(){var _0x7581f4=this['consumeLin'+'e']();void(0x20*-0xb5+-0x18*0x9d+-0xef*-0x28)!==_0x7581f4&&(_0x7581f4?this['parseHeade'+'r'](_0x7581f4,this['trailers']):(this['trailers']['length']&&this['userCall']()(this[_0x42e4fb](this['trailers'],'')),this['nextReques'+'t']()));},_0x248c80['prototype']['BODY_RAW']=function(){var _0x4c1602=this['end']-this['offset'];this['userCall']()(this[_0x1adccc](this['chunk'],this['offset'],_0x4c1602)),this['offset']=this['end'];},_0x248c80['prototype']['BODY_SIZED']=function(){var _0x1c744d=Math['min'](this['end']-this['offset'],this['body_bytes']);this['userCall']()(this[_0x1adccc](this['chunk'],this['offset'],_0x1c744d)),this['offset']+=_0x1c744d,this['body_bytes']-=_0x1c744d,this['body_bytes']||this['nextReques'+'t']();},['Headers','HeadersCom'+'plete','Body','MessageCom'+'plete']['forEach'](function(_0x18aa32){var _0x3f4491=_0x248c80['kOn'+_0x18aa32];Object['defineProp'+'erty'](_0x248c80['prototype'],'on'+_0x18aa32,{'get':function(){return this[_0x3f4491];},'set':function(_0x2e0196){return this['_compatMod'+'e0_11']=!(0x191e+-0x18a7*0x1+0x11*-0x7),_0x5beb75='CONNECT',this[_0x3f4491]=_0x2e0196;}});});},0x7e8:(_0x3203c4,_0x2fef47,_0x420ad8)=>{'use strict';var _0xe17b97=_0x420ad8(0x1937+0x78*0x40+-0x242b),_0x1945e1={};_0x1945e1['rules']=_0x420ad8(0xb1*-0x20+0x372+-0x11*-0x193)['map'](function(_0xfa6812){return{'rule':_0xfa6812,'suffix':_0xfa6812['replace'](/^(\*\.|\!)/,''),'punySuffix':-(0x120f+0x1*-0x1c19+0xa0b),'wildcard':'*'===_0xfa6812['charAt'](0xc*-0x1b7+0x1a81*-0x1+-0x1*-0x2f15),'exception':'!'===_0xfa6812['charAt'](-0xb*-0xa+-0xfb9+0x1b3*0x9)};}),_0x1945e1['endsWith']=function(_0x31adcb,_0x19a547){return-(-0x24d1+0x2443+0x8f)!==_0x31adcb['indexOf'](_0x19a547,_0x31adcb['length']-_0x19a547['length']);},_0x1945e1['findRule']=function(_0x5b23a8){var _0x6c791b=_0xe17b97['toASCII'](_0x5b23a8);return _0x1945e1['rules']['reduce'](function(_0x31db57,_0x2a5099){return-(0xb5*0x1a+-0x117f*0x2+0x109d)===_0x2a5099['punySuffix']&&(_0x2a5099['punySuffix']=_0xe17b97['toASCII'](_0x2a5099['suffix'])),_0x1945e1['endsWith'](_0x6c791b,'.'+_0x2a5099['punySuffix'])||_0x6c791b===_0x2a5099['punySuffix']?_0x2a5099:_0x31db57;},null);},_0x2fef47['errorCodes']={'DOMAIN_TOO_SHORT':'Domain\x20nam'+'e\x20too\x20shor'+'t.','DOMAIN_TOO_LONG':'Domain\x20nam'+'e\x20too\x20long'+'.\x20It\x20shoul'+'d\x20be\x20no\x20mo'+'re\x20than\x2025'+'5\x20chars.','LABEL_STARTS_WITH_DASH':'Domain\x20nam'+'e\x20label\x20ca'+'n\x20not\x20star'+'t\x20with\x20a\x20d'+'ash.','LABEL_ENDS_WITH_DASH':'Domain\x20nam'+'e\x20label\x20ca'+'n\x20not\x20end\x20'+'with\x20a\x20das'+'h.','LABEL_TOO_LONG':'Domain\x20nam'+'e\x20label\x20sh'+'ould\x20be\x20at'+'\x20most\x2063\x20c'+'hars\x20long.','LABEL_TOO_SHORT':'Domain\x20nam'+'e\x20label\x20sh'+'ould\x20be\x20at'+'\x20least\x201\x20c'+'haracter\x20l'+'ong.','LABEL_INVALID_CHARS':'Domain\x20nam'+'e\x20label\x20ca'+'n\x20only\x20con'+'tain\x20alpha'+'numeric\x20ch'+'aracters\x20o'+'r\x20dashes.'},_0x1945e1['validate']=function(_0x129f2a){var _0x3a3331=_0xe17b97['toASCII'](_0x129f2a);if(_0x3a3331['length']<0x2*0xc95+-0x1*0xa91+0x2*-0x74c)return'DOMAIN_TOO'+'_SHORT';if(_0x3a3331['length']>0x1*0x1bdc+0x172c+-0x3209)return'DOMAIN_TOO'+'_LONG';for(var _0x114091,_0x22cb51=_0x3a3331['split']('.'),_0x3ff5cc=0x1b0d+0xc4e+-0x275b;_0x3ff5cc<_0x22cb51['length'];++_0x3ff5cc){if(!(_0x114091=_0x22cb51[_0x3ff5cc])['length'])return'LABEL_TOO_'+'SHORT';if(_0x114091['length']>0x1ee4+-0xcd3*-0x1+-0x2b78)return'LABEL_TOO_'+'LONG';if('-'===_0x114091['charAt'](-0x18a2+-0x2*0x1336+-0x1*-0x3f0e))return'LABEL_STAR'+'TS_WITH_DA'+'SH';if('-'===_0x114091['charAt'](_0x114091['length']-(-0x26f2+0x2*0xa0d+0x19*0xc1)))return'LABEL_ENDS'+'_WITH_DASH';if(!/^[a-z0-9\-]+$/['test'](_0x114091))return'LABEL_INVA'+'LID_CHARS';}},_0x2fef47['parse']=function(_0x5d9d9f){if('string'!=typeof _0x5d9d9f)throw new TypeError('Domain\x20nam'+'e\x20must\x20be\x20'+'a\x20string.');var _0x42a926=_0x5d9d9f['slice'](-0x113b+-0x961*0x1+-0x20c*-0xd)['toLowerCas'+'e']();'.'===_0x42a926['charAt'](_0x42a926['length']-(0x1*-0xe7a+0x234c+0x14d1*-0x1))&&(_0x42a926=_0x42a926['slice'](0x143*0xe+-0x2b3*-0x3+-0x19c3,_0x42a926['length']-(0x2*0x8e4+-0xfbf+-0x208)));var _0x2464cd=_0x1945e1['validate'](_0x42a926);if(_0x2464cd)return{'input':_0x5d9d9f,'error':{'message':_0x2fef47['errorCodes'][_0x2464cd],'code':_0x2464cd}};var _0x10b3aa={'input':_0x5d9d9f,'tld':null,'sld':null,'domain':null,'subdomain':null,'listed':!(0xc41*-0x3+0xd0d+0x17b7)},_0x249c9f=_0x42a926['split']('.');if('local'===_0x249c9f[_0x249c9f['length']-(0x949*-0x1+0xb4d+0x5*-0x67)])return _0x10b3aa;var _0xc3986d=function(){return/xn--/['test'](_0x42a926)?(_0x10b3aa['domain']&&(_0x10b3aa['domain']=_0xe17b97['toASCII'](_0x10b3aa['domain'])),_0x10b3aa['subdomain']&&(_0x10b3aa['subdomain']=_0xe17b97['toASCII'](_0x10b3aa['subdomain'])),_0x10b3aa):_0x10b3aa;},_0x397d87=_0x1945e1['findRule'](_0x42a926);if(!_0x397d87)return _0x249c9f['length']<0x1d71+0x238f+-0x40fe?_0x10b3aa:(_0x10b3aa['tld']=_0x249c9f['pop'](),_0x10b3aa['sld']=_0x249c9f['pop'](),_0x10b3aa['domain']=[_0x10b3aa['sld'],_0x10b3aa['tld']]['join']('.'),_0x249c9f['length']&&(_0x10b3aa['subdomain']=_0x249c9f['pop']()),_0xc3986d());_0x10b3aa['listed']=!(-0x2*0xa7+-0x108e*0x1+-0x1*-0x11dc);var _0x595413=_0x397d87['suffix']['split']('.'),_0x2a08fa=_0x249c9f['slice'](0x2*0x1e9+-0x1157+0xd85,_0x249c9f['length']-_0x595413['length']);return _0x397d87['exception']&&_0x2a08fa['push'](_0x595413['shift']()),_0x10b3aa['tld']=_0x595413['join']('.'),_0x2a08fa['length']?(_0x397d87['wildcard']&&(_0x595413['unshift'](_0x2a08fa['pop']()),_0x10b3aa['tld']=_0x595413['join']('.')),_0x2a08fa['length']?(_0x10b3aa['sld']=_0x2a08fa['pop'](),_0x10b3aa['domain']=[_0x10b3aa['sld'],_0x10b3aa['tld']]['join']('.'),_0x2a08fa['length']&&(_0x10b3aa['subdomain']=_0x2a08fa['join']('.')),_0xc3986d()):_0xc3986d()):_0xc3986d();},_0x2fef47['get']=function(_0x1f2c18){return _0x1f2c18&&_0x2fef47['parse'](_0x1f2c18)['domain']||null;},_0x2fef47['isValid']=function(_0x2b1fcd){var _0x12c004=_0x2fef47['parse'](_0x2b1fcd);return Boolean(_0x12c004['domain']&&_0x12c004['listed']);};},0x20bb:(_0x540cd3,_0xb77b82,_0x5721a4)=>{'use strict';_0x5721a4['r'](_0xb77b82),_0x5721a4['d'](_0xb77b82,{'decode':()=>_0x18adca,'default':()=>_0x49a6a3,'encode':()=>_0x319fc7,'toASCII':()=>_0x598c32,'toUnicode':()=>_0xdff9c2,'ucs2decode':()=>_0x453640,'ucs2encode':()=>_0x2f14a2});const _0x46f661=0xd2838105+0xfa55eebf+-0x14cd96fc5,_0x51674d=0x6c1+0x101c+-0x7*0x33f,_0x1d0da1=/^xn--/,_0x32837e=/[^\0-\x7E]/,_0x5e829b=/[\x2E\u3002\uFF0E\uFF61]/g,_0x4e83ec={'overflow':'Overflow:\x20'+'input\x20need'+'s\x20wider\x20in'+'tegers\x20to\x20'+'process','not-basic':'Illegal\x20in'+'put\x20>=\x200x8'+'0\x20(not\x20a\x20b'+'asic\x20code\x20'+'point)','invalid-input':'Invalid\x20in'+'put'},_0x12b6cc=Math['floor'],_0x45191c=String['fromCharCo'+'de'];function _0x4b8491(_0x47f9b6){throw new RangeError(_0x4e83ec[_0x47f9b6]);}function _0x5f5ac9(_0x1e18cf,_0x3eb15a){const _0x1ca10f=_0x1e18cf['split']('@');let _0x2d960c='';_0x1ca10f['length']>0xd94+-0x161e+0x9*0xf3&&(_0x2d960c=_0x1ca10f[-0xedb+0xd90+0x14b*0x1]+'@',_0x1e18cf=_0x1ca10f[0xdd8*-0x2+0xf1+0x1ac0]);const _0x364acc=function(_0x571584,_0x46b696){const _0x297e1a=[];let _0xa01d84=_0x571584['length'];for(;_0xa01d84--;)_0x297e1a[_0xa01d84]=_0x46b696(_0x571584[_0xa01d84]);return _0x297e1a;}((_0x1e18cf=_0x1e18cf['replace'](_0x5e829b,'.'))['split']('.'),_0x3eb15a)['join']('.');return _0x2d960c+_0x364acc;}function _0x453640(_0x549a6c){const _0x18a17a=[];let _0x165e59=-0x124*0x17+0xbda+0xe62;const _0x156221=_0x549a6c['length'];for(;_0x165e59<_0x156221;){const _0x126dae=_0x549a6c['charCodeAt'](_0x165e59++);if(_0x126dae>=0xa*0x227e+-0x389f*0x5+0x9a2f&&_0x126dae<=0x119e8+0xb20*0x17+0x1*-0x13dc9&&_0x165e59<_0x156221){const _0x5d6500=_0x549a6c['charCodeAt'](_0x165e59++);0x3*-0x34+-0xa1f*0x2b+0x125*0x23d==(-0x10270+-0x7a*0x41b+0x3f34e&_0x5d6500)?_0x18a17a['push'](((-0x14b7+-0x2098+0xf*0x3d2&_0x126dae)<<-0x208+0x1b92+0x4*-0x660)+(0x1af5+0x882+-0x1f78&_0x5d6500)+(0x59*0x529+-0x14aa8+0x7f67)):(_0x18a17a['push'](_0x126dae),_0x165e59--);}else _0x18a17a['push'](_0x126dae);}return _0x18a17a;}const _0x2f14a2=_0x5d8711=>String['fromCodePo'+'int'](..._0x5d8711),_0x1daa53=function(_0x3dcb69,_0x1d5685){return _0x3dcb69+(0x1*0x1daa+-0xe4d+0x1*-0xf47)+(-0x1a41+-0x1c*0x100+0x368c)*(_0x3dcb69<-0xd27+0x6e0*0x1+0x1*0x661)-((0x35*0x60+0x1499+0x31d*-0xd!=_0x1d5685)<<-0x1*-0x11ab+-0x2b*0x59+-0x2b3);},_0x3f0c4b=function(_0x417e1d,_0x4074f9,_0x114ff4){let _0x786c72=0x281*0x9+0x1274+-0x28fd;for(_0x417e1d=_0x114ff4?_0x12b6cc(_0x417e1d/(-0x18*-0x138+-0x1b64+-0x8*-0x1c)):_0x417e1d>>0x320+-0x1f78+0x7b*0x3b,_0x417e1d+=_0x12b6cc(_0x417e1d/_0x4074f9);_0x417e1d>0x1d77+0x12+0xbb*-0x26;_0x786c72+=_0x51674d)_0x417e1d=_0x12b6cc(_0x417e1d/(-0xe86+0xbf0+0x2b9));return _0x12b6cc(_0x786c72+(-0x35*0x92+-0x2ac+0x210a)*_0x417e1d/(_0x417e1d+(0xb5*-0x26+-0x10ee+0xe1*0x32)));},_0x18adca=function(_0x2b5c51){const _0x369ab3=[],_0x2d5762=_0x2b5c51['length'];let _0x3db0d5=0x2235+-0x1d48+0xd*-0x61,_0x1f8b5e=0x899*0x1+-0x1d88+0xb1*0x1f,_0x10131d=0x1*0x1f8d+0x5*-0x3fd+-0xb54,_0x4b1af4=_0x2b5c51['lastIndexO'+'f']('-');_0x4b1af4<-0x1fc2+0x4b*-0x72+-0x28*-0x1a1&&(_0x4b1af4=0x1b*-0x141+-0x168c+0x3867);for(let _0x540fe0=-0x179*0x19+-0x233a*-0x1+-0x197*-0x1;_0x540fe0<_0x4b1af4;++_0x540fe0)_0x2b5c51['charCodeAt'](_0x540fe0)>=-0x31+-0x38a+0x169*0x3&&_0x4b8491('not-basic'),_0x369ab3['push'](_0x2b5c51['charCodeAt'](_0x540fe0));for(let _0x6c2f87=_0x4b1af4>0x12ee*-0x1+0x1dd5*0x1+-0x1*0xae7?_0x4b1af4+(-0x8ad+0x2fe*-0x4+-0x6e2*-0x3):0x19e4+-0x182a+0x22*-0xd;_0x6c2f87<_0x2d5762;){let _0xf721d2=_0x3db0d5;for(let _0x4261dd=-0xa01+-0x2312*0x1+0x2d14,_0x1e137b=_0x51674d;;_0x1e137b+=_0x51674d){_0x6c2f87>=_0x2d5762&&_0x4b8491('invalid-in'+'put');const _0x393cd7=(_0x37a8eb=_0x2b5c51['charCodeAt'](_0x6c2f87++))-(0x125*0x5+-0x1495+0xf0c)<0x1*-0xf9a+0xf60+0x44?_0x37a8eb-(0x1a5*0x5+-0x2269+0x8c2*0x3):_0x37a8eb-(-0x1913+0x7*0x10f+0x11eb)<0x2256+0xb55*0x2+-0x38e6?_0x37a8eb-(0x201*0x1+-0x20a2+0x1ee2):_0x37a8eb-(-0x91*0x17+0xc5f+0x109)<-0x11ad+-0x5ac+-0x57*-0x45?_0x37a8eb-(0x2b*-0x10+0x22b5+-0x64*0x51):_0x51674d;(_0x393cd7>=_0x51674d||_0x393cd7>_0x12b6cc((_0x46f661-_0x3db0d5)/_0x4261dd))&&_0x4b8491('overflow'),_0x3db0d5+=_0x393cd7*_0x4261dd;const _0x52a772=_0x1e137b<=_0x10131d?-0x18*-0x3a+-0x882+-0x1*-0x313:_0x1e137b>=_0x10131d+(-0x1399+-0xf67+0x231a)?-0x1025+-0x4*-0x904+-0x13d1:_0x1e137b-_0x10131d;if(_0x393cd7<_0x52a772)break;const _0xe61fc5=_0x51674d-_0x52a772;_0x4261dd>_0x12b6cc(_0x46f661/_0xe61fc5)&&_0x4b8491('overflow'),_0x4261dd*=_0xe61fc5;}const _0x360693=_0x369ab3['length']+(-0x3*0x749+-0x1b79+0x3155);_0x10131d=_0x3f0c4b(_0x3db0d5-_0xf721d2,_0x360693,-0xac1+0xc89+-0x1*0x1c8==_0xf721d2),_0x12b6cc(_0x3db0d5/_0x360693)>_0x46f661-_0x1f8b5e&&_0x4b8491('overflow'),_0x1f8b5e+=_0x12b6cc(_0x3db0d5/_0x360693),_0x3db0d5%=_0x360693,_0x369ab3['splice'](_0x3db0d5++,0x2338+0x1*-0xe87+-0x14b1,_0x1f8b5e);}var _0x37a8eb;return String['fromCodePo'+'int'](..._0x369ab3);},_0x319fc7=function(_0x1d7388){const _0x2ccef3=[];let _0x1894c3=(_0x1d7388=_0x453640(_0x1d7388))['length'],_0x27a266=-0x1*0x1181+-0x19*0xed+0x2926,_0x3dc51d=0x5*0xb3+-0x1*-0x95d+-0xcdc,_0x21eadd=0xea1+0x2*-0x4aa+-0x1*0x505;for(const _0x1e9ee3 of _0x1d7388)_0x1e9ee3<0x4f*-0x18+0x1432+-0xc4a&&_0x2ccef3['push'](_0x45191c(_0x1e9ee3));let _0x559393=_0x2ccef3['length'],_0x4138a0=_0x559393;for(_0x559393&&_0x2ccef3['push']('-');_0x4138a0<_0x1894c3;){let _0x4b425b=_0x46f661;for(const _0x34b0c4 of _0x1d7388)_0x34b0c4>=_0x27a266&&_0x34b0c4<_0x4b425b&&(_0x4b425b=_0x34b0c4);const _0x5e3f45=_0x4138a0+(-0x155e+-0x8c3*-0x2+0x3d9);_0x4b425b-_0x27a266>_0x12b6cc((_0x46f661-_0x3dc51d)/_0x5e3f45)&&_0x4b8491('overflow'),_0x3dc51d+=(_0x4b425b-_0x27a266)*_0x5e3f45,_0x27a266=_0x4b425b;for(const _0x511682 of _0x1d7388)if(_0x511682<_0x27a266&&++_0x3dc51d>_0x46f661&&_0x4b8491('overflow'),_0x511682==_0x27a266){let _0x253a76=_0x3dc51d;for(let _0x1c7109=_0x51674d;;_0x1c7109+=_0x51674d){const _0x1b47bb=_0x1c7109<=_0x21eadd?-0x121b+-0x156d+-0x2789*-0x1:_0x1c7109>=_0x21eadd+(-0x1baa+0xa40+0x1184)?0x1c62+-0x1*0x1cb2+0x6a:_0x1c7109-_0x21eadd;if(_0x253a76<_0x1b47bb)break;const _0x3cdbfd=_0x253a76-_0x1b47bb,_0x322ea0=_0x51674d-_0x1b47bb;_0x2ccef3['push'](_0x45191c(_0x1daa53(_0x1b47bb+_0x3cdbfd%_0x322ea0,0x24c6+-0x1e03*0x1+0x1*-0x6c3))),_0x253a76=_0x12b6cc(_0x3cdbfd/_0x322ea0);}_0x2ccef3['push'](_0x45191c(_0x1daa53(_0x253a76,0x22af+0x2*-0xade+-0xcf3))),_0x21eadd=_0x3f0c4b(_0x3dc51d,_0x5e3f45,_0x4138a0==_0x559393),_0x3dc51d=0x73*0x3c+-0xf98+0x4*-0x2d7,++_0x4138a0;}++_0x3dc51d,++_0x27a266;}return _0x2ccef3['join']('');},_0xdff9c2=function(_0x3b3a4b){return _0x5f5ac9(_0x3b3a4b,function(_0x2f7454){return _0x1d0da1['test'](_0x2f7454)?_0x18adca(_0x2f7454['slice'](0x1501*0x1+-0x26fb+0x11fe)['toLowerCas'+'e']()):_0x2f7454;});},_0x598c32=function(_0x374f21){return _0x5f5ac9(_0x374f21,function(_0x520e20){return _0x32837e['test'](_0x520e20)?'xn--'+_0x319fc7(_0x520e20):_0x520e20;});},_0x49a6a3={'version':'2.1.0','ucs2':{'decode':_0x453640,'encode':_0x2f14a2},'decode':_0x18adca,'encode':_0x319fc7,'toASCII':_0x598c32,'toUnicode':_0xdff9c2};},0xf98:(_0x4388b0,_0x4f8bcc)=>{'use strict';var _0x371ef1=Object['prototype']['hasOwnProp'+'erty'];function _0x1db244(_0x17aa69){try{return decodeURIComponent(_0x17aa69['replace'](/\+/g,'\x20'));}catch(_0x2508ee){return null;}}function _0x5c8d56(_0x8a4c2a){try{return encodeURIComponent(_0x8a4c2a);}catch(_0x44876d){return null;}}_0x4f8bcc['stringify']=function(_0xc3c732,_0x3041a4){_0x3041a4=_0x3041a4||'';var _0x402a34,_0x4b366d,_0x33063d=[];for(_0x4b366d in('string'!=typeof _0x3041a4&&(_0x3041a4='?'),_0xc3c732))if(_0x371ef1['call'](_0xc3c732,_0x4b366d)){if((_0x402a34=_0xc3c732[_0x4b366d])||null!=_0x402a34&&!isNaN(_0x402a34)||(_0x402a34=''),_0x4b366d=_0x5c8d56(_0x4b366d),_0x402a34=_0x5c8d56(_0x402a34),null===_0x4b366d||null===_0x402a34)continue;_0x33063d['push'](_0x4b366d+'='+_0x402a34);}return _0x33063d['length']?_0x3041a4+_0x33063d['join']('&'):'';},_0x4f8bcc['parse']=function(_0x15b1e3){for(var _0x36fb78,_0x36731b=/([^=?#&]+)=?([^&]*)/g,_0x28b846={};_0x36fb78=_0x36731b['exec'](_0x15b1e3);){var _0x5dc955=_0x1db244(_0x36fb78[0x22c3+0x1d62+0x4*-0x1009]),_0x242819=_0x1db244(_0x36fb78[0x3f*0x70+-0x2418+0x88a]);null===_0x5dc955||null===_0x242819||_0x5dc955 in _0x28b846||(_0x28b846[_0x5dc955]=_0x242819);}return _0x28b846;};},0x80f:_0x48f92d=>{'use strict';_0x48f92d['exports']=function(_0x39d3c9,_0x59f8cd){if(_0x59f8cd=_0x59f8cd['split'](':')[0xa78+-0x10*0xaf+0x78],!(_0x39d3c9=+_0x39d3c9))return!(0x1b3+-0x209*-0x11+-0x244b);switch(_0x59f8cd){case'http':case'ws':return-0x23a8+-0x3b8*0x4+0x32d8!==_0x39d3c9;case'https':case'wss':return-0x2*-0x10e8+0x20be+-0x5*0xcf7!==_0x39d3c9;case'ftp':return-0x6c*0x10+0x10ef+-0x1af*0x6!==_0x39d3c9;case'gopher':return 0x1bf1+0x73e+-0x22e9!==_0x39d3c9;case'file':return!(0x1633+-0x22ab+0xc79*0x1);}return 0x1365+-0x17b3+0x44e!==_0x39d3c9;};},0xb2d:(_0x1c6329,_0x187b07,_0x18cb55)=>{var _0x7913d=_0x18cb55(0x942+0x133f+-0xc*0x251),_0x48e00f=_0x7913d['Buffer'];function _0x5b4f24(_0x19d8eb,_0xeb4faa){for(var _0x2ffb10 in _0x19d8eb)_0xeb4faa[_0x2ffb10]=_0x19d8eb[_0x2ffb10];}function _0x560e7b(_0x71bc78,_0x46dc57,_0x49a228){return _0x48e00f(_0x71bc78,_0x46dc57,_0x49a228);}_0x48e00f['from']&&_0x48e00f['alloc']&&_0x48e00f['allocUnsaf'+'e']&&_0x48e00f['allocUnsaf'+'eSlow']?_0x1c6329['exports']=_0x7913d:(_0x5b4f24(_0x7913d,_0x187b07),_0x187b07['Buffer']=_0x560e7b),_0x560e7b['prototype']=Object['create'](_0x48e00f['prototype']),_0x5b4f24(_0x48e00f,_0x560e7b),_0x560e7b['from']=function(_0x504223,_0x1e83bf,_0x1e77ec){if('number'==typeof _0x504223)throw new TypeError('Argument\x20m'+'ust\x20not\x20be'+'\x20a\x20number');return _0x48e00f(_0x504223,_0x1e83bf,_0x1e77ec);},_0x560e7b['alloc']=function(_0x29b472,_0x4077bd,_0x6a8ffe){if('number'!=typeof _0x29b472)throw new TypeError('Argument\x20m'+'ust\x20be\x20a\x20n'+'umber');var _0x2ef27f=_0x48e00f(_0x29b472);return void(0x5fe+-0xc15+-0x1*-0x617)!==_0x4077bd?'string'==typeof _0x6a8ffe?_0x2ef27f['fill'](_0x4077bd,_0x6a8ffe):_0x2ef27f['fill'](_0x4077bd):_0x2ef27f['fill'](0x13*-0x3f+-0x1*0x3d1+-0x2*-0x43f),_0x2ef27f;},_0x560e7b['allocUnsaf'+'e']=function(_0x367f20){if('number'!=typeof _0x367f20)throw new TypeError('Argument\x20m'+'ust\x20be\x20a\x20n'+'umber');return _0x48e00f(_0x367f20);},_0x560e7b['allocUnsaf'+'eSlow']=function(_0x5dba09){if('number'!=typeof _0x5dba09)throw new TypeError('Argument\x20m'+'ust\x20be\x20a\x20n'+'umber');return _0x7913d['SlowBuffer'](_0x5dba09);};},0x25d3:_0x52d274=>{'use strict';var _0x59bf2e=function(_0x53bd03,_0x533a9c){_0x533a9c=_0x533a9c||(_0x53bd03 instanceof Buffer?0x12f4+-0x2*0x124c+0x11ac:0x29f*-0x7+0x1f83*0x1+-0xd29);var _0xc85f95,_0x54e643,_0x9b6b5e,_0x114d32='';for(_0x54e643=-0x1896+-0xd*0x148+-0x1*-0x293e,_0x9b6b5e=_0x53bd03['length'];_0x54e643<_0x9b6b5e;_0x54e643++){for(_0xc85f95=this['_get'](_0x53bd03,_0x54e643)['toString'](0x2103+0x1114*0x1+-0x3215*0x1);_0xc85f95['length']<_0x533a9c;)_0xc85f95='0'+_0xc85f95;_0x114d32+=_0xc85f95;}_0x114d32=_0x114d32['split']('')['map'](function(_0x4c503){return parseInt(_0x4c503,-0x2005*-0x1+-0xd9d+-0xf*0x13a);}),this['_bases']={0x2:_0x114d32};};_0x59bf2e['prototype']['generate']=function(_0x479eca,_0x2589aa,_0x9fad5c){_0x2589aa=_0x2589aa||0x25db+-0x337*0x2+-0x1*0x1f6b;var _0x11fc21,_0x379182=_0x479eca,_0x448c4d=Math['ceil'](Math['log'](_0x479eca)/Math['log'](_0x2589aa)),_0x219af5=Math['pow'](_0x2589aa,_0x448c4d)-_0x479eca;_0x414dfa:for(;_0x379182>=_0x479eca;){if(!(_0x11fc21=this['_shift'](_0x2589aa,_0x448c4d)))return _0x9fad5c?_0x479eca:null;if((_0x379182=this['_evaluate'](_0x11fc21,_0x2589aa))>=_0x479eca){if(0xe8e+-0x8fb*-0x1+-0x1f6*0xc===_0x219af5)continue _0x414dfa;this['_push'](_0x219af5,_0x379182-_0x479eca),_0x379182=this['generate'](_0x479eca,_0x219af5,!(0x2b0+-0x2053+-0x9*-0x34b));}}return _0x379182;},_0x59bf2e['prototype']['_get']=function(_0x4a2bcc,_0x42db05){return _0x4a2bcc['readUInt8']?_0x4a2bcc['readUInt8'](_0x42db05):_0x4a2bcc[_0x42db05];},_0x59bf2e['prototype']['_evaluate']=function(_0x380863,_0x56365a){for(var _0x1763af=0x369+-0x1*0xbb7+0x84e,_0x1a2445=_0x380863['length'];_0x1a2445--;)_0x1763af+=_0x380863[_0x1a2445]*Math['pow'](_0x56365a,_0x380863['length']-(_0x1a2445+(-0x1*-0x7cd+0x398*0x8+-0x248c)));return _0x1763af;},_0x59bf2e['prototype']['_push']=function(_0xc5a84,_0x4b23ef){this['_bases'][_0xc5a84]=this['_bases'][_0xc5a84]||[],this['_bases'][_0xc5a84]['push'](_0x4b23ef);},_0x59bf2e['prototype']['_shift']=function(_0x229c7d,_0x1f6dbe){var _0x327e59=this['_bases'][_0x229c7d];return!_0x327e59||_0x327e59['length']<_0x1f6dbe?null:_0x327e59['splice'](-0x146a+-0xec1+0x1*0x232b,_0x1f6dbe);},_0x52d274['exports']=_0x59bf2e;},0xb6b:(_0x29181f,_0x316206,_0x166848)=>{'use strict';const _0x488d36=_0x166848(-0x2b4b+-0x2e03*-0x1+0x1e03),_0x2fbe8e=_0x166848(-0x7d*-0x2+-0x3*0x30d+0xcb5*0x1),_0x598d08=_0x166848(0x10e*-0xb+-0x169*0x2+0x1305),_0x3ee6d6=_0x166848(-0x1b5+-0x48+0x42d*0x5)['i'],_0x560cb8=_0x166848(0xfca+-0x16*-0x182+-0x2673)['n'],_0x2b9202=_0x166848(0x1fa4+0x1*0x1c1+-0x327*0x4)['z'],_0x410f3f=_0x166848(-0x1*0x234a+0x990+0x2560),_0x5d11de=_0x166848(0x2055+0xcd*-0x14+-0x43c),{fromCallback:_0x116573}=_0x166848(-0x82d*0x4+0x1e13*0x1+-0x1*-0x775),{getCustomInspectSymbol:_0x243481}=_0x166848(0x2c*-0x53+-0x3524+0x6a29),_0x25a449=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/,_0x3711c1=/[\x00-\x1F]/,_0x5c5eca=['\x0a','\x0d','\x00'],_0x3ff86f=/[\x20-\x3A\x3C-\x7E]+/,_0x3305a3=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/,_0x2d0b16={'jan':0x0,'feb':0x1,'mar':0x2,'apr':0x3,'may':0x4,'jun':0x5,'jul':0x6,'aug':0x7,'sep':0x8,'oct':0x9,'nov':0xa,'dec':0xb},_0x5a5bdf=0x6baf*0x5b6d97e+-0x1966*-0x167ce847+0x1a072ddee*-0x1a6,_0x55bc88='Invalid\x20sa'+'meSiteCont'+'ext\x20option'+'\x20for\x20getCo'+'okies();\x20e'+'xpected\x20on'+'e\x20of\x20\x22stri'+'ct\x22,\x20\x22lax\x22'+',\x20or\x20\x22none'+'\x22';function _0x4d10f5(_0x11d4a6){_0x410f3f['validate'](_0x410f3f['isNonEmpty'+'String'](_0x11d4a6),_0x11d4a6);const _0x5e5b32=String(_0x11d4a6)['toLowerCas'+'e']();return'none'===_0x5e5b32||'lax'===_0x5e5b32||'strict'===_0x5e5b32?_0x5e5b32:null;}const _0x2d1c4d=Object['freeze']({'SILENT':'silent','STRICT':'strict','DISABLED':'unsafe-dis'+'abled'}),_0x2745f8=/(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-f\d]{1,4}:){7}(?:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,2}|:)|(?:[a-f\d]{1,4}:){4}(?:(?::[a-f\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,3}|:)|(?:[a-f\d]{1,4}:){3}(?:(?::[a-f\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,4}|:)|(?:[a-f\d]{1,4}:){2}(?:(?::[a-f\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,5}|:)|(?:[a-f\d]{1,4}:){1}(?:(?::[a-f\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,7}|:)))$)/,_0xe6e871=('\x0a\x5c[?(?:\x0a(?'+':[a-fA-F\x5cd'+']{1,4}:){7'+'}(?:[a-fA-'+'F\x5cd]{1,4}|'+':)|\x0a(?:[a-'+'fA-F\x5cd]{1,'+'4}:){6}(?:'+'(?:25[0-5]'+'|2[0-4]\x5cd|'+'1\x5cd\x5cd|[1-9'+']\x5cd|\x5cd)(?:'+'\x5c.(?:25[0-'+'5]|2[0-4]\x5c'+'d|1\x5cd\x5cd|[1'+'-9]\x5cd|\x5cd))'+'{3}|:[a-fA'+'-F\x5cd]{1,4}'+'|:)|\x0a(?:[a'+'-fA-F\x5cd]{1'+',4}:){5}(?'+'::(?:25[0-'+'5]|2[0-4]\x5c'+'d|1\x5cd\x5cd|[1'+'-9]\x5cd|\x5cd)('+'?:\x5c.(?:25['+'0-5]|2[0-4'+']\x5cd|1\x5cd\x5cd|'+'[1-9]\x5cd|\x5cd'+')){3}|(?::'+'[a-fA-F\x5cd]'+'{1,4}){1,2'+'}|:)|\x0a(?:['+'a-fA-F\x5cd]{'+'1,4}:){4}('+'?:(?::[a-f'+'A-F\x5cd]{1,4'+'}){0,1}:(?'+':25[0-5]|2'+'[0-4]\x5cd|1\x5c'+'d\x5cd|[1-9]\x5c'+'d|\x5cd)(?:\x5c.'+'(?:25[0-5]'+'|2[0-4]\x5cd|'+'1\x5cd\x5cd|[1-9'+']\x5cd|\x5cd)){3'+'}|(?::[a-f'+'A-F\x5cd]{1,4'+'}){1,3}|:)'+'|\x0a(?:[a-fA'+'-F\x5cd]{1,4}'+':){3}(?:(?'+'::[a-fA-F\x5c'+'d]{1,4}){0'+',2}:(?:25['+'0-5]|2[0-4'+']\x5cd|1\x5cd\x5cd|'+'[1-9]\x5cd|\x5cd'+')(?:\x5c.(?:2'+'5[0-5]|2[0'+'-4]\x5cd|1\x5cd\x5c'+'d|[1-9]\x5cd|'+'\x5cd)){3}|(?'+'::[a-fA-F\x5c'+'d]{1,4}){1'+',4}|:)|\x0a(?'+':[a-fA-F\x5cd'+']{1,4}:){2'+'}(?:(?::[a'+'-fA-F\x5cd]{1'+',4}){0,3}:'+'(?:25[0-5]'+'|2[0-4]\x5cd|'+'1\x5cd\x5cd|[1-9'+']\x5cd|\x5cd)(?:'+'\x5c.(?:25[0-'+'5]|2[0-4]\x5c'+'d|1\x5cd\x5cd|[1'+'-9]\x5cd|\x5cd))'+'{3}|(?::[a'+'-fA-F\x5cd]{1'+',4}){1,5}|'+':)|\x0a(?:[a-'+'fA-F\x5cd]{1,'+'4}:){1}(?:'+'(?::[a-fA-'+'F\x5cd]{1,4})'+'{0,4}:(?:2'+'5[0-5]|2[0'+'-4]\x5cd|1\x5cd\x5c'+'d|[1-9]\x5cd|'+'\x5cd)(?:\x5c.(?'+':25[0-5]|2'+'[0-4]\x5cd|1\x5c'+'d\x5cd|[1-9]\x5c'+'d|\x5cd)){3}|'+'(?::[a-fA-'+'F\x5cd]{1,4})'+'{1,6}|:)|\x0a'+'(?::(?:(?:'+(':[a-fA-F\x5cd'+']{1,4}){0,'+'5}:(?:25[0'+'-5]|2[0-4]'+'\x5cd|1\x5cd\x5cd|['+'1-9]\x5cd|\x5cd)'+'(?:\x5c.(?:25'+'[0-5]|2[0-'+'4]\x5cd|1\x5cd\x5cd'+'|[1-9]\x5cd|\x5c'+'d)){3}|(?:'+':[a-fA-F\x5cd'+']{1,4}){1,'+'7}|:))\x0a)(?'+':%[0-9a-zA'+'-Z]{1,})?\x5c'+']?\x0a'))['replace'](/\s*\/\/.*$/gm,'')['replace'](/\n/g,'')['trim'](),_0x35a3ff=new RegExp('^'+_0xe6e871+'$');function _0x1bf3be(_0x43ab9c,_0x200cc0,_0x511f12,_0xdbfe78){let _0x59617b=-0x2326+0x32b*-0x7+0x19*0x24b;for(;_0x59617b<_0x43ab9c['length'];){const _0x2ca933=_0x43ab9c['charCodeAt'](_0x59617b);if(_0x2ca933<=0x12b3*-0x1+0x1af9+-0x817||_0x2ca933>=-0x353+-0x84*-0xb+-0x21f)break;_0x59617b++;}return _0x59617b<_0x200cc0||_0x59617b>_0x511f12?null:_0xdbfe78||_0x59617b==_0x43ab9c['length']?parseInt(_0x43ab9c['substr'](0x12a*0xd+-0x2064+0x2f*0x5e,_0x59617b),0x1075+0x25b2+-0x361d):null;}function _0x3b4f02(_0x8939f8){const _0x4433f9=_0x8939f8['split'](':'),_0x16d06e=[0x37b+-0x2135+0x1dba*0x1,0x25df+0x1*0x1601+-0x3be0,-0x1*-0x328+-0x47*-0x35+-0x11db];if(0xf5*-0x5+-0xad4+0xfa0!==_0x4433f9['length'])return null;for(let _0x485b13=0x26ba+0x25*0x10+-0xdae*0x3;_0x485b13<0x62a+0x43*0x3f+-0x16a4;_0x485b13++){const _0x4ba18e=0x1fbe+-0x94d*-0x3+0x3ba3*-0x1==_0x485b13,_0xf030af=_0x1bf3be(_0x4433f9[_0x485b13],-0x741*0x3+0x7e1*-0x3+0x2d67,0x1*-0x97b+-0x115d+0x1ada,_0x4ba18e);if(null===_0xf030af)return null;_0x16d06e[_0x485b13]=_0xf030af;}return _0x16d06e;}function _0x5e6965(_0x1f9a4f){_0x1f9a4f=String(_0x1f9a4f)['substr'](0x1*-0x8ea+-0x1e9*0x13+-0x2d35*-0x1,-0x22bf+-0x824+-0x2ae6*-0x1)['toLowerCas'+'e']();const _0x566d31=_0x2d0b16[_0x1f9a4f];return _0x566d31>=-0x309+0x20d0+-0x1dc7?_0x566d31:null;}function _0x2e3edf(_0x33933f){if(!_0x33933f)return;const _0x38eac5=_0x33933f['split'](_0x3305a3);if(!_0x38eac5)return;let _0xe1a705=null,_0x3d9ca9=null,_0xb1fb1d=null,_0x1ef5bf=null,_0x43308f=null,_0x2263d6=null;for(let _0x26fb61=0x261b+-0x19c+-0x247f;_0x26fb61<_0x38eac5['length'];_0x26fb61++){const _0x4539b8=_0x38eac5[_0x26fb61]['trim']();if(!_0x4539b8['length'])continue;let _0x189a32;null===_0xb1fb1d&&(_0x189a32=_0x3b4f02(_0x4539b8),_0x189a32)?(_0xe1a705=_0x189a32[0x17ed+-0x1*-0xa21+0x220e*-0x1],_0x3d9ca9=_0x189a32[-0x97e+0x78d+-0x53*-0x6],_0xb1fb1d=_0x189a32[-0x1584+0x3e*0xe+0x1222]):null!==_0x1ef5bf||(_0x189a32=_0x1bf3be(_0x4539b8,0xdf4+0x105b+0x35e*-0x9,-0x1*-0x1fd8+0xb63*0x1+-0x2b39,!(-0x595+-0x223e+0x27d3*0x1)),null===_0x189a32)?null!==_0x43308f||(_0x189a32=_0x5e6965(_0x4539b8),null===_0x189a32)?null===_0x2263d6&&(_0x189a32=_0x1bf3be(_0x4539b8,-0x27*-0x97+0x1853+-0x2f52,0x19f9+0x94*-0x1+-0x1961*0x1,!(0x13ad+-0x2396+0x1*0xfe9)),null!==_0x189a32&&(_0x2263d6=_0x189a32,_0x2263d6>=0xe6a+0x5*0x217+-0x1897*0x1&&_0x2263d6<=0xec9+-0x1aa+0x28c*-0x5?_0x2263d6+=-0x1a05*-0x1+0x4c*0x43+-0x267d:_0x2263d6>=-0x1*0x80f+0x1133*0x2+-0x1a57&&_0x2263d6<=-0x10ec+-0x1159+0x228a&&(_0x2263d6+=0xbce*-0x2+0x19da+0x592))):_0x43308f=_0x189a32:_0x1ef5bf=_0x189a32;}return null===_0x1ef5bf||null===_0x43308f||null===_0x2263d6||null===_0xb1fb1d||_0x1ef5bf<0x823+0x10c8+-0x18ea||_0x1ef5bf>0x1c9*-0x12+-0x112a*0x1+0x1079*0x3||_0x2263d6<-0xf71*-0x2+0x8a7*-0x1+0x5*-0x332||_0xe1a705>-0x85a+-0x1cc2+0x6b*0x59||_0x3d9ca9>-0x194*0x10+0x1*0x268f+-0x117*0xc||_0xb1fb1d>0x1*0x101e+-0x66e*0x3+0x367*0x1?void(-0x1f*0x18+-0x251c+0x2804):new Date(Date['UTC'](_0x2263d6,_0x43308f,_0x1ef5bf,_0xe1a705,_0x3d9ca9,_0xb1fb1d));}function _0x201cf6(_0x2ee314){return _0x410f3f['validate'](_0x410f3f['isDate'](_0x2ee314),_0x2ee314),_0x2ee314['toUTCStrin'+'g']();}function _0x200589(_0x354a9a){return null==_0x354a9a?null:(_0x354a9a=_0x354a9a['trim']()['replace'](/^\./,''),_0x35a3ff['test'](_0x354a9a)&&(_0x354a9a=_0x354a9a['replace']('[','')['replace'](']','')),_0x488d36&&/[^\u0001-\u007f]/['test'](_0x354a9a)&&(_0x354a9a=_0x488d36['toASCII'](_0x354a9a)),_0x354a9a['toLowerCas'+'e']());}function _0x1a57e7(_0x3f42b8,_0x28aaa3,_0x4e8e51){if(null==_0x3f42b8||null==_0x28aaa3)return null;if(!(0x144*-0x9+-0xe*-0x3+0xb3b)!==_0x4e8e51&&(_0x3f42b8=_0x200589(_0x3f42b8),_0x28aaa3=_0x200589(_0x28aaa3)),_0x3f42b8==_0x28aaa3)return!(-0xe9*-0xe+-0x4d*-0x64+0x1569*-0x2);const _0x160580=_0x3f42b8['lastIndexO'+'f'](_0x28aaa3);return!(_0x160580<=0x730+0x34c*-0x1+0x14c*-0x3||_0x3f42b8['length']!==_0x28aaa3['length']+_0x160580||'.'!==_0x3f42b8['substr'](_0x160580-(-0x1c*-0x26+0x10d*0x22+-0x27e1),0x82b+-0x711+-0x119)||_0x2745f8['test'](_0x3f42b8));}function _0xf30ce7(_0x1c1d52){if(!_0x1c1d52||'/'!==_0x1c1d52['substr'](-0x5a3+-0x77*0x14+-0xeef*-0x1,0x1d16+-0x88d+-0x522*0x4))return'/';if('/'===_0x1c1d52)return _0x1c1d52;const _0x442cbf=_0x1c1d52['lastIndexO'+'f']('/');return 0x1*0x90e+-0x57*0x6d+-0x1*-0x1bfd===_0x442cbf?'/':_0x1c1d52['slice'](-0xab0+-0x691*-0x1+0xd3*0x5,_0x442cbf);}function _0x10a679(_0x46c818,_0x15584a){if(_0x15584a&&'object'==typeof _0x15584a||(_0x15584a={}),_0x410f3f['isEmptyStr'+'ing'](_0x46c818)||!_0x410f3f['isString'](_0x46c818))return null;const _0x2f88cc=(_0x46c818=_0x46c818['trim']())['indexOf'](';'),_0xdbb9a9=function(_0x59f8c1,_0x13691f){_0x59f8c1=function(_0x1ecea2){if(_0x410f3f['isEmptyStr'+'ing'](_0x1ecea2))return _0x1ecea2;for(let _0x15c952=0x1cfb+-0x1*0x12f4+-0xa07;_0x15c952<_0x5c5eca['length'];_0x15c952++){const _0x163aaf=_0x1ecea2['indexOf'](_0x5c5eca[_0x15c952]);-(-0x1749*0x1+-0x2148+0x3892)!==_0x163aaf&&(_0x1ecea2=_0x1ecea2['substr'](-0x5*0xf3+0x201*-0xd+-0x6c*-0x49,_0x163aaf));}return _0x1ecea2;}(_0x59f8c1),_0x410f3f['validate'](_0x410f3f['isString'](_0x59f8c1),_0x59f8c1);let _0x5c740a,_0x4fbb61,_0x148aae=_0x59f8c1['indexOf']('=');if(_0x13691f)0xdf1+0x2305+0x2*-0x187b===_0x148aae&&(_0x148aae=(_0x59f8c1=_0x59f8c1['substr'](-0x1fc+-0x1f*0x8b+0x12d2))['indexOf']('='));else{if(_0x148aae<=0x22fa+-0x22f1+-0x9)return;}if(_0x148aae<=0x7db*-0x3+0x3a*0x2a+0xe0d?(_0x5c740a='',_0x4fbb61=_0x59f8c1['trim']()):(_0x5c740a=_0x59f8c1['substr'](0x1b4a+-0x184f*0x1+-0x2fb,_0x148aae)['trim'](),_0x4fbb61=_0x59f8c1['substr'](_0x148aae+(0x2411+0x1c6*-0xb+-0x2*0x847))['trim']()),_0x3711c1['test'](_0x5c740a)||_0x3711c1['test'](_0x4fbb61))return;const _0x4522cc=new _0x4c489d();return _0x4522cc['key']=_0x5c740a,_0x4522cc['value']=_0x4fbb61,_0x4522cc;}(-(-0xf36+-0x179d+0x26d4)===_0x2f88cc?_0x46c818:_0x46c818['substr'](0x1241+0x80f+-0x1*0x1a50,_0x2f88cc),!!_0x15584a['loose']);if(!_0xdbb9a9)return;if(-(0x64e+0x1bc9+-0x2216)===_0x2f88cc)return _0xdbb9a9;const _0x5d3096=_0x46c818['slice'](_0x2f88cc+(-0x4a*-0x3d+-0x5*-0x28d+-0xf31*0x2))['trim']();if(-0x1fbd+0x557*0x3+0xfb8===_0x5d3096['length'])return _0xdbb9a9;const _0x5622bc=_0x5d3096['split'](';');for(;_0x5622bc['length'];){const _0xa6dd3f=_0x5622bc['shift']()['trim']();if(-0x4*0x3d1+-0x1e37+0x2d7b===_0xa6dd3f['length'])continue;const _0x2d15dc=_0xa6dd3f['indexOf']('=');let _0xdef0f1,_0x210423;switch(-(-0x1338+0x2185+0x16e*-0xa)===_0x2d15dc?(_0xdef0f1=_0xa6dd3f,_0x210423=null):(_0xdef0f1=_0xa6dd3f['substr'](0x1*0x1681+0xf51+-0x12e9*0x2,_0x2d15dc),_0x210423=_0xa6dd3f['substr'](_0x2d15dc+(0xb18+0x3*-0x5df+0x686))),_0xdef0f1=_0xdef0f1['trim']()['toLowerCas'+'e'](),_0x210423&&(_0x210423=_0x210423['trim']()),_0xdef0f1){case'expires':if(_0x210423){const _0xb4c839=_0x2e3edf(_0x210423);_0xb4c839&&(_0xdbb9a9['expires']=_0xb4c839);}break;case'max-age':if(_0x210423&&/^-?[0-9]+$/['test'](_0x210423)){const _0x1a8c37=parseInt(_0x210423,0x4cd*-0x5+0x6b4+0x1157);_0xdbb9a9['setMaxAge'](_0x1a8c37);}break;case'domain':if(_0x210423){const _0x4e59db=_0x210423['trim']()['replace'](/^\./,'');_0x4e59db&&(_0xdbb9a9['domain']=_0x4e59db['toLowerCas'+'e']());}break;case'path':_0xdbb9a9['path']=_0x210423&&'/'===_0x210423[0x196*-0x4+-0x15a2+-0x1*-0x1bfa]?_0x210423:null;break;case'secure':_0xdbb9a9['secure']=!(-0x1940+-0xe*0x196+-0x1*-0x2f74);break;case'httponly':_0xdbb9a9['httpOnly']=!(0x3*0x9fd+0x1606+-0x33fd);break;case'samesite':switch(_0x210423?_0x210423['toLowerCas'+'e']():''){case'strict':_0xdbb9a9['sameSite']='strict';break;case'lax':_0xdbb9a9['sameSite']='lax';break;case'none':_0xdbb9a9['sameSite']='none';break;default:_0xdbb9a9['sameSite']=void(0x74+-0xf99+0x1*0xf25);}break;default:_0xdbb9a9['extensions']=_0xdbb9a9['extensions']||[],_0xdbb9a9['extensions']['push'](_0xa6dd3f);}}return _0xdbb9a9;}function _0xdba262(_0x304522){let _0x155458;try{_0x155458=JSON['parse'](_0x304522);}catch(_0x580066){return _0x580066;}return _0x155458;}function _0x177c59(_0x13a6ae){if(!_0x13a6ae||_0x410f3f['isEmptyStr'+'ing'](_0x13a6ae))return null;let _0x5390df;if('string'==typeof _0x13a6ae){if(_0x5390df=_0xdba262(_0x13a6ae),_0x5390df instanceof Error)return null;}else _0x5390df=_0x13a6ae;const _0x2fc118=new _0x4c489d();for(let _0x2a26b0=-0x495*-0x3+-0x1*-0xe98+-0x1c57;_0x2a26b0<_0x4c489d['serializab'+'leProperti'+'es']['length'];_0x2a26b0++){const _0x2e930c=_0x4c489d['serializab'+'leProperti'+'es'][_0x2a26b0];void(-0x2328+0x1*0x191d+-0x1*-0xa0b)!==_0x5390df[_0x2e930c]&&_0x5390df[_0x2e930c]!==_0x204143[_0x2e930c]&&('expires'===_0x2e930c||'creation'===_0x2e930c||'lastAccess'+'ed'===_0x2e930c?null===_0x5390df[_0x2e930c]?_0x2fc118[_0x2e930c]=null:_0x2fc118[_0x2e930c]='Infinity'==_0x5390df[_0x2e930c]?'Infinity':new Date(_0x5390df[_0x2e930c]):_0x2fc118[_0x2e930c]=_0x5390df[_0x2e930c]);}return _0x2fc118;}function _0x25b464(_0x187881,_0x546e26){_0x410f3f['validate'](_0x410f3f['isObject'](_0x187881),_0x187881),_0x410f3f['validate'](_0x410f3f['isObject'](_0x546e26),_0x546e26);let _0x38149b=-0x8d7*0x1+-0x39*0x9b+0x2b5a;const _0x32b768=_0x187881['path']?_0x187881['path']['length']:0x1b6a+0x1981+-0x34eb;return _0x38149b=(_0x546e26['path']?_0x546e26['path']['length']:0x26+0x8f4+-0x91a)-_0x32b768,0xfda*0x2+-0x15e*0xd+0x1*-0xdee!==_0x38149b||(_0x38149b=(_0x187881['creation']?_0x187881['creation']['getTime']():_0x5a5bdf)-(_0x546e26['creation']?_0x546e26['creation']['getTime']():_0x5a5bdf),-0x5*-0x5cf+-0x13a3+-0x968!==_0x38149b||(_0x38149b=_0x187881['creationIn'+'dex']-_0x546e26['creationIn'+'dex'])),_0x38149b;}function _0x120134(_0x241e35){if(_0x241e35 instanceof Object)return _0x241e35;try{_0x241e35=decodeURI(_0x241e35);}catch(_0x357c8a){}return _0x2fbe8e(_0x241e35);}const _0x204143={'key':'','value':'','expires':'Infinity','maxAge':null,'domain':null,'path':null,'secure':!(0x37d*-0x6+0x1e09+-0x91a),'httpOnly':!(0x73*0x3f+0x401*0x5+0x28b*-0x13),'extensions':null,'hostOnly':null,'pathIsDefault':null,'creation':null,'lastAccessed':null,'sameSite':void(0xc96+-0x10c6+0x430)};class _0x4c489d{constructor(_0xfd133b={}){const _0x81c0d3=_0x243481();_0x81c0d3&&(this[_0x81c0d3]=this['inspect']),Object['assign'](this,_0x204143,_0xfd133b),this['creation']=this['creation']||new Date(),Object['defineProp'+'erty'](this,'creationIn'+'dex',{'configurable':!(-0x2457+0x2287+-0xf*-0x1f),'enumerable':!(-0x1*-0x1bce+-0x15d6+-0x5f7),'writable':!(0x395*-0x7+0x422+0x1*0x14f1),'value':++_0x4c489d['cookiesCre'+'ated']});}['inspect'](){const _0x64cc7a=Date['now'](),_0x1e94d6=null!=this['hostOnly']?this['hostOnly']:'?',_0x57d1bb=this['creation']?_0x64cc7a-this['creation']['getTime']()+'ms':'?',_0xe57408=this['lastAccess'+'ed']?_0x64cc7a-this['lastAccess'+'ed']['getTime']()+'ms':'?';return'Cookie=\x22'+this['toString']()+(';\x20hostOnly'+'=')+_0x1e94d6+';\x20aAge='+_0xe57408+';\x20cAge='+_0x57d1bb+'\x22';}['toJSON'](){const _0x2bb868={};for(const _0x52d61b of _0x4c489d['serializab'+'leProperti'+'es'])this[_0x52d61b]!==_0x204143[_0x52d61b]&&('expires'===_0x52d61b||'creation'===_0x52d61b||'lastAccess'+'ed'===_0x52d61b?null===this[_0x52d61b]?_0x2bb868[_0x52d61b]=null:_0x2bb868[_0x52d61b]='Infinity'==this[_0x52d61b]?'Infinity':this[_0x52d61b]['toISOStrin'+'g']():'maxAge'===_0x52d61b?null!==this[_0x52d61b]&&(_0x2bb868[_0x52d61b]=this[_0x52d61b]==(-0x1e9c+0xb2*-0x23+0x36f3)/(0xfac+0x1763*0x1+-0x270f)||this[_0x52d61b]==-(-0x1a3*-0xb+-0x133f+-0xb*-0x1d)/(0x123+-0x1*0xfbb+-0x2*-0x74c)?this[_0x52d61b]['toString']():this[_0x52d61b]):this[_0x52d61b]!==_0x204143[_0x52d61b]&&(_0x2bb868[_0x52d61b]=this[_0x52d61b]));return _0x2bb868;}['clone'](){return _0x177c59(this['toJSON']());}['validate'](){if(!_0x25a449['test'](this['value']))return!(-0x1*-0x369+-0x1123*0x1+-0xb9*-0x13);if(!(this['expires']==(0x1114+-0x6bb*-0x1+-0x17ce)/(-0x1f75+0x2659+-0x6e4)||this['expires']instanceof Date||_0x2e3edf(this['expires'])))return!(-0x31*0x7f+-0x97*0x1b+0x283d);if(null!=this['maxAge']&&this['maxAge']<=-0x1f1f+0x1b11*-0x1+0x13*0x310)return!(-0x1aa8+-0x4*-0x895+-0x7ab);if(null!=this['path']&&!_0x3ff86f['test'](this['path']))return!(-0xc3*-0x29+0x2192*-0x1+-0xf*-0x28);const _0x44e075=this['cdomain']();if(_0x44e075){if(_0x44e075['match'](/\.$/))return!(0x164a+0x279+-0x18c2);if(null==_0x598d08['getPublicS'+'uffix'](_0x44e075))return!(0x1*0x53b+0x1a38+-0x1f72);}return!(-0x20f9*0x1+-0xb71+-0x1e*-0x17b);}['setExpires'](_0xee158d){_0xee158d instanceof Date?this['expires']=_0xee158d:this['expires']=_0x2e3edf(_0xee158d)||'Infinity';}['setMaxAge'](_0x4c2687){this['maxAge']=_0x4c2687===(0x47*-0x3b+0x11f+0xf3f)/(-0x1d0b+0xbba+0xd*0x155)||_0x4c2687===-(0x1fc9+-0x266b+-0x6a3*-0x1)/(0x1b63+-0x295*-0xd+-0xbc*0x53)?_0x4c2687['toString']():_0x4c2687;}['cookieStri'+'ng'](){let _0x628a6e=this['value'];return null==_0x628a6e&&(_0x628a6e=''),''===this['key']?_0x628a6e:this['key']+'='+_0x628a6e;}['toString'](){let _0x3693aa=this['cookieStri'+'ng']();if(this['expires']!=(0xd*0xdd+-0x46*-0x47+-0xa36*0x3)/(-0x794*0x5+0x1d82+0x4a*0x1d)&&(this['expires']instanceof Date?_0x3693aa+=';\x20Expires='+_0x201cf6(this['expires']):_0x3693aa+=';\x20Expires='+this['expires']),null!=this['maxAge']&&this['maxAge']!=(-0x80+0x1*0xe57+-0xdd6)/(-0x1a6d+-0x8ec+0x2359)&&(_0x3693aa+=';\x20Max-Age='+this['maxAge']),this['domain']&&!this['hostOnly']&&(_0x3693aa+=';\x20Domain='+this['domain']),this['path']&&(_0x3693aa+=';\x20Path='+this['path']),this['secure']&&(_0x3693aa+=';\x20Secure'),this['httpOnly']&&(_0x3693aa+=';\x20HttpOnly'),this['sameSite']&&'none'!==this['sameSite']){const _0x27dad6=_0x4c489d['sameSiteCa'+'nonical'][this['sameSite']['toLowerCas'+'e']()];_0x3693aa+=';\x20SameSite'+'='+(_0x27dad6||this['sameSite']);}return this['extensions']&&this['extensions']['forEach'](_0x508423=>{_0x3693aa+=';\x20'+_0x508423;}),_0x3693aa;}['TTL'](_0x2a125a){if(null!=this['maxAge'])return this['maxAge']<=-0x24b0+0x15bd+0xef3?-0x1400+-0x23d7*0x1+0x37d7:(-0x4ff*-0x7+0x6*0x3ce+-0x3*0x11f7)*this['maxAge'];let _0x3dde11=this['expires'];return _0x3dde11!=(-0x3cb*0x2+-0x266a+-0x2e01*-0x1)/(0x10f*0x16+0x14ba+0x3*-0xeac)?(_0x3dde11 instanceof Date||(_0x3dde11=_0x2e3edf(_0x3dde11)||(0xe8d*-0x1+-0x1*-0x24a+0xc44)/(-0x27*0x59+-0xb5*0x2d+-0x1*-0x2d60)),_0x3dde11==(-0x15d*-0x11+-0x562+-0x11ca)/(-0x18*-0x15+-0x1*-0x7e7+-0x13*0x85)?(-0x305*0x9+-0x26e8+-0x2*-0x210b)/(-0x3e*0x7f+0xfbf+0x3f*0x3d):_0x3dde11['getTime']()-(_0x2a125a||Date['now']())):(0x1e26+0x19*0x129+-0x86*0x71)/(-0x3*-0x8a1+0x1*0xc18+0x15*-0x1cf);}['expiryTime'](_0x5df0bd){if(null!=this['maxAge']){const _0x359a26=_0x5df0bd||this['creation']||new Date(),_0x30a2a6=this['maxAge']<=0x19dd+0xa1*-0x4+0x1*-0x1759?-(-0x4e7+-0x1933+0x1e1b)/(-0xe*0x260+-0x85+0x21c5):(-0x1a39+0x4c3+0x195e)*this['maxAge'];return _0x359a26['getTime']()+_0x30a2a6;}return this['expires']==(0x402+0x238*0x1+0x213*-0x3)/(0x5bf+0x5a2*0x2+-0x1103)?(0x281*-0x1+0x3*0x84b+-0x165f)/(0x9*-0x143+-0x7*-0x199+0x2c):this['expires']['getTime']();}['expiryDate'](_0x11f082){const _0x500b96=this['expiryTime'](_0x11f082);return _0x500b96==(-0x1051*0x2+-0x2606+0x46a9)/(0x2480+0x7b8+-0x14*0x236)?new Date(_0x5a5bdf):_0x500b96==-(0x1*0x8d4+0x266e+-0x2f41)/(0xcc0+0x5d*-0x2b+0x31*0xf)?new Date(0x8b*0x1a+0x7c*-0x11+0x2*-0x2f1):new Date(_0x500b96);}['isPersiste'+'nt'](){return null!=this['maxAge']||this['expires']!=(-0x20c3+0xfd+0x1fc7)/(-0x1443+0xb35+-0x13*-0x7a);}['canonicali'+'zedDomain'](){return null==this['domain']?null:_0x200589(this['domain']);}['cdomain'](){return this['canonicali'+'zedDomain']();}}function _0x38d7c2(_0x2fec8d){if(null!=_0x2fec8d){const _0x37ced1=_0x2fec8d['toLowerCas'+'e']();switch(_0x37ced1){case _0x2d1c4d['STRICT']:case _0x2d1c4d['SILENT']:case _0x2d1c4d['DISABLED']:return _0x37ced1;}}return _0x2d1c4d['SILENT'];}_0x4c489d['cookiesCre'+'ated']=0x506*-0x3+0x1*0x16bd+0x97*-0xd,_0x4c489d['parse']=_0x10a679,_0x4c489d['fromJSON']=_0x177c59,_0x4c489d['serializab'+'leProperti'+'es']=Object['keys'](_0x204143),_0x4c489d['sameSiteLe'+'vel']={'strict':0x3,'lax':0x2,'none':0x1},_0x4c489d['sameSiteCa'+'nonical']={'strict':'Strict','lax':'Lax'};class _0x38ad8e{constructor(_0x11dbab,_0x209a37={'rejectPublicSuffixes':!(0x9b5+0xd*-0x83+0x30e*-0x1)}){'boolean'==typeof _0x209a37&&(_0x209a37={'rejectPublicSuffixes':_0x209a37}),_0x410f3f['validate'](_0x410f3f['isObject'](_0x209a37),_0x209a37),this['rejectPubl'+'icSuffixes']=_0x209a37['rejectPubl'+'icSuffixes'],this['enableLoos'+'eMode']=!!_0x209a37['looseMode'],this['allowSpeci'+'alUseDomai'+'n']='boolean'!=typeof _0x209a37['allowSpeci'+'alUseDomai'+'n']||_0x209a37['allowSpeci'+'alUseDomai'+'n'],this['store']=_0x11dbab||new _0x560cb8(),this['prefixSecu'+'rity']=_0x38d7c2(_0x209a37['prefixSecu'+'rity']),this['_cloneSync']=_0x2d67bd('clone'),this['_importCoo'+'kiesSync']=_0x2d67bd('_importCoo'+'kies'),this['getCookies'+'Sync']=_0x2d67bd('getCookies'),this['getCookieS'+'tringSync']=_0x2d67bd('getCookieS'+'tring'),this['getSetCook'+'ieStringsS'+'ync']=_0x2d67bd('getSetCook'+'ieStrings'),this['removeAllC'+'ookiesSync']=_0x2d67bd('removeAllC'+'ookies'),this['setCookieS'+'ync']=_0x2d67bd('setCookie'),this['serializeS'+'ync']=_0x2d67bd('serialize');}['setCookie'](_0x75094c,_0xd95d34,_0xceebd1,_0x1e656b){let _0x5177fb;if(_0x410f3f['validate'](_0x410f3f['isNonEmpty'+'String'](_0xd95d34),_0x1e656b,_0xceebd1),_0x410f3f['isFunction'](_0xd95d34))return(_0x1e656b=_0xd95d34)(new Error('No\x20URL\x20was'+'\x20specified'));const _0x18f654=_0x120134(_0xd95d34);if(_0x410f3f['isFunction'](_0xceebd1)&&(_0x1e656b=_0xceebd1,_0xceebd1={}),_0x410f3f['validate'](_0x410f3f['isFunction'](_0x1e656b),_0x1e656b),!_0x410f3f['isNonEmpty'+'String'](_0x75094c)&&!_0x410f3f['isObject'](_0x75094c)&&_0x75094c instanceof String&&-0x2*0x2de+0x773*-0x2+-0xa51*-0x2==_0x75094c['length'])return _0x1e656b(null);const _0x536f93=_0x200589(_0x18f654['hostname']),_0x50a07a=_0xceebd1['loose']||this['enableLoos'+'eMode'];let _0x440cc8=null;if(_0xceebd1['sameSiteCo'+'ntext']&&(_0x440cc8=_0x4d10f5(_0xceebd1['sameSiteCo'+'ntext']),!_0x440cc8))return _0x1e656b(new Error(_0x55bc88));if('string'==typeof _0x75094c||_0x75094c instanceof String){if(!(_0x75094c=_0x4c489d['parse'](_0x75094c,{'loose':_0x50a07a})))return _0x5177fb=new Error('Cookie\x20fai'+'led\x20to\x20par'+'se'),_0x1e656b(_0xceebd1['ignoreErro'+'r']?null:_0x5177fb);}else{if(!(_0x75094c instanceof _0x4c489d))return _0x5177fb=new Error('First\x20argu'+'ment\x20to\x20se'+'tCookie\x20mu'+'st\x20be\x20a\x20Co'+'okie\x20objec'+'t\x20or\x20strin'+'g'),_0x1e656b(_0xceebd1['ignoreErro'+'r']?null:_0x5177fb);}const _0x37e82b=_0xceebd1['now']||new Date();if(this['rejectPubl'+'icSuffixes']&&_0x75094c['domain']&&null==_0x598d08['getPublicS'+'uffix'](_0x75094c['cdomain'](),{'allowSpecialUseDomain':this['allowSpeci'+'alUseDomai'+'n'],'ignoreError':_0xceebd1['ignoreErro'+'r']})&&!_0x35a3ff['test'](_0x75094c['domain']))return _0x5177fb=new Error('Cookie\x20has'+'\x20domain\x20se'+'t\x20to\x20a\x20pub'+'lic\x20suffix'),_0x1e656b(_0xceebd1['ignoreErro'+'r']?null:_0x5177fb);if(_0x75094c['domain']){if(!_0x1a57e7(_0x536f93,_0x75094c['cdomain'](),!(0x223a+-0xa30*-0x1+-0x2c69)))return _0x5177fb=new Error('Cookie\x20not'+'\x20in\x20this\x20h'+'ost\x27s\x20doma'+'in.\x20Cookie'+':'+_0x75094c['cdomain']()+'\x20Request:'+_0x536f93),_0x1e656b(_0xceebd1['ignoreErro'+'r']?null:_0x5177fb);null==_0x75094c['hostOnly']&&(_0x75094c['hostOnly']=!(-0x1930*-0x1+0x4*-0x197+0x12d3*-0x1));}else _0x75094c['hostOnly']=!(0x20da+0x1618+-0x36f2),_0x75094c['domain']=_0x536f93;if(_0x75094c['path']&&'/'===_0x75094c['path'][0x2656+0xbe2+-0x3238]||(_0x75094c['path']=_0xf30ce7(_0x18f654['pathname']),_0x75094c['pathIsDefa'+'ult']=!(0xf3*-0x9+0xa6e+-0x1e3)),!(0x19fa+-0x1*0x9a3+-0x1056)===_0xceebd1['http']&&_0x75094c['httpOnly'])return _0x5177fb=new Error('Cookie\x20is\x20'+'HttpOnly\x20a'+'nd\x20this\x20is'+'n\x27t\x20an\x20HTT'+'P\x20API'),_0x1e656b(_0xceebd1['ignoreErro'+'r']?null:_0x5177fb);if('none'!==_0x75094c['sameSite']&&void(0xe69+0x2314+-0x317d)!==_0x75094c['sameSite']&&_0x440cc8&&'none'===_0x440cc8)return _0x5177fb=new Error('Cookie\x20is\x20'+'SameSite\x20b'+'ut\x20this\x20is'+'\x20a\x20cross-o'+'rigin\x20requ'+'est'),_0x1e656b(_0xceebd1['ignoreErro'+'r']?null:_0x5177fb);const _0x147bc8=this['prefixSecu'+'rity']===_0x2d1c4d['SILENT'];if(this['prefixSecu'+'rity']!==_0x2d1c4d['DISABLED']){let _0x51fe06,_0x5bd5cc=!(-0x962+0x85*-0x17+0x1556);if(function(_0x283c28){return _0x410f3f['validate'](_0x410f3f['isObject'](_0x283c28),_0x283c28),!_0x283c28['key']['startsWith']('__Secure-')||_0x283c28['secure'];}(_0x75094c)?function(_0x384451){return _0x410f3f['validate'](_0x410f3f['isObject'](_0x384451)),!_0x384451['key']['startsWith']('__Host-')||_0x384451['secure']&&_0x384451['hostOnly']&&null!=_0x384451['path']&&'/'===_0x384451['path'];}(_0x75094c)||(_0x5bd5cc=!(0x2617+0x92*-0x1a+0x7c1*-0x3),_0x51fe06='Cookie\x20has'+'\x20__Host\x20pr'+'efix\x20but\x20e'+'ither\x20Secu'+'re\x20or\x20Host'+'Only\x20attri'+'bute\x20is\x20no'+'t\x20set\x20or\x20P'+'ath\x20is\x20not'+'\x20\x27/\x27'):(_0x5bd5cc=!(0x7*0x198+0x858+-0x1380),_0x51fe06='Cookie\x20has'+'\x20__Secure\x20'+'prefix\x20but'+'\x20Secure\x20at'+'tribute\x20is'+'\x20not\x20set'),_0x5bd5cc)return _0x1e656b(_0xceebd1['ignoreErro'+'r']||_0x147bc8?null:new Error(_0x51fe06));}const _0x2fec18=this['store'];_0x2fec18['updateCook'+'ie']||(_0x2fec18['updateCook'+'ie']=function(_0x2999c6,_0x1b3db6,_0x1df4ed){this['putCookie'](_0x1b3db6,_0x1df4ed);}),_0x2fec18['findCookie'](_0x75094c['domain'],_0x75094c['path'],_0x75094c['key'],function(_0x5ec6b3,_0x2435e9){if(_0x5ec6b3)return _0x1e656b(_0x5ec6b3);const _0x49b501=function(_0x1b8e15){if(_0x1b8e15)return _0x1e656b(_0x1b8e15);_0x1e656b(null,_0x75094c);};if(_0x2435e9){if(!(-0x1bfe+0x1*0x625+0x15da)===_0xceebd1['http']&&_0x2435e9['httpOnly'])return _0x5ec6b3=new Error('old\x20Cookie'+'\x20is\x20HttpOn'+'ly\x20and\x20thi'+'s\x20isn\x27t\x20an'+'\x20HTTP\x20API'),_0x1e656b(_0xceebd1['ignoreErro'+'r']?null:_0x5ec6b3);_0x75094c['creation']=_0x2435e9['creation'],_0x75094c['creationIn'+'dex']=_0x2435e9['creationIn'+'dex'],_0x75094c['lastAccess'+'ed']=_0x37e82b,_0x2fec18['updateCook'+'ie'](_0x2435e9,_0x75094c,_0x49b501);}else _0x75094c['creation']=_0x75094c['lastAccess'+'ed']=_0x37e82b,_0x2fec18['putCookie'](_0x75094c,_0x49b501);});}['getCookies'](_0x5db7ba,_0x5941a0,_0x34075b){_0x410f3f['validate'](_0x410f3f['isNonEmpty'+'String'](_0x5db7ba),_0x34075b,_0x5db7ba);const _0x48ff54=_0x120134(_0x5db7ba);_0x410f3f['isFunction'](_0x5941a0)&&(_0x34075b=_0x5941a0,_0x5941a0={}),_0x410f3f['validate'](_0x410f3f['isObject'](_0x5941a0),_0x34075b,_0x5941a0),_0x410f3f['validate'](_0x410f3f['isFunction'](_0x34075b),_0x34075b);const _0x4ce12a=_0x200589(_0x48ff54['hostname']),_0xc6e218=_0x48ff54['pathname']||'/';let _0x3fdcb0=_0x5941a0['secure'];null!=_0x3fdcb0||!_0x48ff54['protocol']||'https:'!=_0x48ff54['protocol']&&'wss:'!=_0x48ff54['protocol']||(_0x3fdcb0=!(0x23*0x57+0x29c*-0xb+0x10cf));let _0x33c3d=0x4cd*-0x5+0x154d+0x2b4;if(_0x5941a0['sameSiteCo'+'ntext']){const _0x34eada=_0x4d10f5(_0x5941a0['sameSiteCo'+'ntext']);if(_0x33c3d=_0x4c489d['sameSiteLe'+'vel'][_0x34eada],!_0x33c3d)return _0x34075b(new Error(_0x55bc88));}let _0x56fbf1=_0x5941a0['http'];null==_0x56fbf1&&(_0x56fbf1=!(0xbf+-0x242a+0x236b));const _0x5b5602=_0x5941a0['now']||Date['now'](),_0x54c654=!(-0x212a+-0x20bc+0x41e7)!==_0x5941a0['expire'],_0x336630=!!_0x5941a0['allPaths'],_0x14eb69=this['store'];function _0x358658(_0x2e90a7){if(_0x2e90a7['hostOnly']){if(_0x2e90a7['domain']!=_0x4ce12a)return!(0x76*-0x54+0x5a8*0x1+0x2111*0x1);}else{if(!_0x1a57e7(_0x4ce12a,_0x2e90a7['domain'],!(-0x1eb*-0x9+0x6d*0x1f+-0x1e75)))return!(0x1*0x1e0d+-0x2652+0x846);}return!(!_0x336630&&!_0x2b9202(_0xc6e218,_0x2e90a7['path']))&&(!(_0x2e90a7['secure']&&!_0x3fdcb0)&&(!(_0x2e90a7['httpOnly']&&!_0x56fbf1)&&(!(_0x33c3d&&_0x4c489d['sameSiteLe'+'vel'][_0x2e90a7['sameSite']||'none']>_0x33c3d)&&!(_0x54c654&&_0x2e90a7['expiryTime']()<=_0x5b5602&&(_0x14eb69['removeCook'+'ie'](_0x2e90a7['domain'],_0x2e90a7['path'],_0x2e90a7['key'],()=>{}),0x43*-0x6a+-0x98f+0x254e)))));}_0x14eb69['findCookie'+'s'](_0x4ce12a,_0x336630?null:_0xc6e218,this['allowSpeci'+'alUseDomai'+'n'],(_0x2c015e,_0x109431)=>{if(_0x2c015e)return _0x34075b(_0x2c015e);_0x109431=_0x109431['filter'](_0x358658),!(-0xddc+0x1*0x2569+0x224*-0xb)!==_0x5941a0['sort']&&(_0x109431=_0x109431['sort'](_0x25b464));const _0x29898d=new Date();for(const _0x264bca of _0x109431)_0x264bca['lastAccess'+'ed']=_0x29898d;_0x34075b(null,_0x109431);});}['getCookieS'+'tring'](..._0x5c51c2){const _0x41d186=_0x5c51c2['pop']();_0x410f3f['validate'](_0x410f3f['isFunction'](_0x41d186),_0x41d186),_0x5c51c2['push'](function(_0x4079d1,_0x13130e){_0x4079d1?_0x41d186(_0x4079d1):_0x41d186(null,_0x13130e['sort'](_0x25b464)['map'](_0x18e090=>_0x18e090['cookieStri'+'ng']())['join'](';\x20'));}),this['getCookies']['apply'](this,_0x5c51c2);}['getSetCook'+'ieStrings'](..._0x54344b){const _0x1f8d32=_0x54344b['pop']();_0x410f3f['validate'](_0x410f3f['isFunction'](_0x1f8d32),_0x1f8d32),_0x54344b['push'](function(_0x438a46,_0x54c8c2){_0x438a46?_0x1f8d32(_0x438a46):_0x1f8d32(null,_0x54c8c2['map'](_0x5a9fcb=>_0x5a9fcb['toString']()));}),this['getCookies']['apply'](this,_0x54344b);}['serialize'](_0x2f2e89){_0x410f3f['validate'](_0x410f3f['isFunction'](_0x2f2e89),_0x2f2e89);let _0x1d2d7a=this['store']['constructo'+'r']['name'];_0x410f3f['isObject'](_0x1d2d7a)&&(_0x1d2d7a=null);const _0x327a12={'version':'tough-cook'+'ie@'+_0x5d11de,'storeType':_0x1d2d7a,'rejectPublicSuffixes':!!this['rejectPubl'+'icSuffixes'],'enableLooseMode':!!this['enableLoos'+'eMode'],'allowSpecialUseDomain':!!this['allowSpeci'+'alUseDomai'+'n'],'prefixSecurity':_0x38d7c2(this['prefixSecu'+'rity']),'cookies':[]};if(!this['store']['getAllCook'+'ies']||'function'!=typeof this['store']['getAllCook'+'ies'])return _0x2f2e89(new Error('store\x20does'+'\x20not\x20suppo'+'rt\x20getAllC'+'ookies\x20and'+'\x20cannot\x20be'+'\x20serialize'+'d'));this['store']['getAllCook'+'ies']((_0x56ba67,_0x3b2301)=>_0x56ba67?_0x2f2e89(_0x56ba67):(_0x327a12['cookies']=_0x3b2301['map'](_0x495781=>(delete(_0x495781=_0x495781 instanceof _0x4c489d?_0x495781['toJSON']():_0x495781)['creationIn'+'dex'],_0x495781)),_0x2f2e89(null,_0x327a12)));}['toJSON'](){return this['serializeS'+'ync']();}['_importCoo'+'kies'](_0x4a9bdb,_0xb04829){let _0x20e707=_0x4a9bdb['cookies'];if(!_0x20e707||!Array['isArray'](_0x20e707))return _0xb04829(new Error('serialized'+'\x20jar\x20has\x20n'+'o\x20cookies\x20'+'array'));_0x20e707=_0x20e707['slice']();const _0x11ce3a=_0x134d50=>{if(_0x134d50)return _0xb04829(_0x134d50);if(!_0x20e707['length'])return _0xb04829(_0x134d50,this);let _0x12d381;try{_0x12d381=_0x177c59(_0x20e707['shift']());}catch(_0x593a93){return _0xb04829(_0x593a93);}if(null===_0x12d381)return _0x11ce3a(null);this['store']['putCookie'](_0x12d381,_0x11ce3a);};_0x11ce3a();}['clone'](_0x332d07,_0x3fc3bf){0x446+-0xe*0x7c+-0x1*-0x283===arguments['length']&&(_0x3fc3bf=_0x332d07,_0x332d07=null),this['serialize']((_0x3c854c,_0x5caaa6)=>{if(_0x3c854c)return _0x3fc3bf(_0x3c854c);_0x38ad8e['deserializ'+'e'](_0x5caaa6,_0x332d07,_0x3fc3bf);});}['cloneSync'](_0x30989f){if(-0x2158+-0x1*-0x1b3b+-0x61d*-0x1===arguments['length'])return this['_cloneSync']();if(!_0x30989f['synchronou'+'s'])throw new Error('CookieJar\x20'+'clone\x20dest'+'ination\x20st'+'ore\x20is\x20not'+'\x20synchrono'+'us;\x20use\x20as'+'ync\x20API\x20in'+'stead.');return this['_cloneSync'](_0x30989f);}['removeAllC'+'ookies'](_0x61cb7c){_0x410f3f['validate'](_0x410f3f['isFunction'](_0x61cb7c),_0x61cb7c);const _0x8eade4=this['store'];if('function'==typeof _0x8eade4['removeAllC'+'ookies']&&_0x8eade4['removeAllC'+'ookies']!==_0x3ee6d6['prototype']['removeAllC'+'ookies'])return _0x8eade4['removeAllC'+'ookies'](_0x61cb7c);_0x8eade4['getAllCook'+'ies']((_0x3ffcbc,_0x560774)=>{if(_0x3ffcbc)return _0x61cb7c(_0x3ffcbc);if(-0x14f4+-0x1a57*-0x1+-0x563===_0x560774['length'])return _0x61cb7c(null);let _0x31d58c=-0x607*-0x4+-0x2048*0x1+0x82c;const _0x5e23ff=[];function _0x3559b3(_0x30d5d2){if(_0x30d5d2&&_0x5e23ff['push'](_0x30d5d2),_0x31d58c++,_0x31d58c===_0x560774['length'])return _0x61cb7c(_0x5e23ff['length']?_0x5e23ff[0x1b34+-0x2*0x101+-0x285*0xa]:null);}_0x560774['forEach'](_0xe845ee=>{_0x8eade4['removeCook'+'ie'](_0xe845ee['domain'],_0xe845ee['path'],_0xe845ee['key'],_0x3559b3);});});}static['deserializ'+'e'](_0x3e3f5e,_0x846adb,_0x3f00dd){let _0x492592;if(-0xd99+-0x2523*0x1+-0x49d*-0xb!==arguments['length']&&(_0x3f00dd=_0x846adb,_0x846adb=null),_0x410f3f['validate'](_0x410f3f['isFunction'](_0x3f00dd),_0x3f00dd),'string'==typeof _0x3e3f5e){if(_0x492592=_0xdba262(_0x3e3f5e),_0x492592 instanceof Error)return _0x3f00dd(_0x492592);}else _0x492592=_0x3e3f5e;const _0x536098=new _0x38ad8e(_0x846adb,{'rejectPublicSuffixes':_0x492592['rejectPubl'+'icSuffixes'],'looseMode':_0x492592['enableLoos'+'eMode'],'allowSpecialUseDomain':_0x492592['allowSpeci'+'alUseDomai'+'n'],'prefixSecurity':_0x492592['prefixSecu'+'rity']});_0x536098['_importCoo'+'kies'](_0x492592,_0x3c1de6=>{if(_0x3c1de6)return _0x3f00dd(_0x3c1de6);_0x3f00dd(null,_0x536098);});}static['deserializ'+'eSync'](_0x57d509,_0x9ba5d7){const _0x318866='string'==typeof _0x57d509?JSON['parse'](_0x57d509):_0x57d509,_0x483b52=new _0x38ad8e(_0x9ba5d7,{'rejectPublicSuffixes':_0x318866['rejectPubl'+'icSuffixes'],'looseMode':_0x318866['enableLoos'+'eMode']});if(!_0x483b52['store']['synchronou'+'s'])throw new Error('CookieJar\x20'+'store\x20is\x20n'+'ot\x20synchro'+'nous;\x20use\x20'+'async\x20API\x20'+'instead.');return _0x483b52['_importCoo'+'kiesSync'](_0x318866),_0x483b52;}}function _0x2d67bd(_0x16ca6d){return function(..._0x4d92bb){if(!this['store']['synchronou'+'s'])throw new Error('CookieJar\x20'+'store\x20is\x20n'+'ot\x20synchro'+'nous;\x20use\x20'+'async\x20API\x20'+'instead.');let _0x547dbc,_0x4016e3;if(this[_0x16ca6d](..._0x4d92bb,(_0x2f0663,_0x15b8c5)=>{_0x547dbc=_0x2f0663,_0x4016e3=_0x15b8c5;}),_0x547dbc)throw _0x547dbc;return _0x4016e3;};}_0x38ad8e['fromJSON']=_0x38ad8e['deserializ'+'eSync'],['_importCoo'+'kies','clone','getCookies','getCookieS'+'tring','getSetCook'+'ieStrings','removeAllC'+'ookies','serialize','setCookie']['forEach'](_0x39afa0=>{_0x38ad8e['prototype'][_0x39afa0]=_0x116573(_0x38ad8e['prototype'][_0x39afa0]);}),_0x38ad8e['deserializ'+'e']=_0x116573(_0x38ad8e['deserializ'+'e']),_0x316206['version']=_0x5d11de,_0x316206['CookieJar']=_0x38ad8e,_0x316206['Cookie']=_0x4c489d,_0x316206['Store']=_0x3ee6d6,_0x316206['MemoryCook'+'ieStore']=_0x560cb8,_0x316206['parseDate']=_0x2e3edf,_0x316206['formatDate']=_0x201cf6,_0x316206['parse']=_0x10a679,_0x316206['fromJSON']=_0x177c59,_0x316206['domainMatc'+'h']=_0x1a57e7,_0x316206['defaultPat'+'h']=_0xf30ce7,_0x316206['pathMatch']=_0x2b9202,_0x316206['getPublicS'+'uffix']=_0x598d08['getPublicS'+'uffix'],_0x316206['cookieComp'+'are']=_0x25b464,_0x316206['permuteDom'+'ain']=_0x166848(0x5d4+-0x81*0x1b+-0x49*-0x86)['permuteDom'+'ain'],_0x316206['permutePat'+'h']=function(_0x3dcfdb){if(_0x410f3f['validate'](_0x410f3f['isString'](_0x3dcfdb)),'/'===_0x3dcfdb)return['/'];const _0x4ecef9=[_0x3dcfdb];for(;_0x3dcfdb['length']>0x38c+0x24e5*-0x1+0x215a;){const _0x201f6c=_0x3dcfdb['lastIndexO'+'f']('/');if(0x21e*0x8+-0x1978+0x888===_0x201f6c)break;_0x3dcfdb=_0x3dcfdb['substr'](0x6d*0x5b+0x137*-0x13+-0xfaa,_0x201f6c),_0x4ecef9['push'](_0x3dcfdb);}return _0x4ecef9['push']('/'),_0x4ecef9;},_0x316206['canonicalD'+'omain']=_0x200589,_0x316206['PrefixSecu'+'rityEnum']=_0x2d1c4d,_0x316206['ParameterE'+'rror']=_0x410f3f['ParameterE'+'rror'];},0xa83:(_0x24e14c,_0x3fe34f,_0x1e4f73)=>{'use strict';const {fromCallback:_0x5f0ad3}=_0x1e4f73(-0xba4+0xb8e+0x275*0x2),_0x9eca22=_0x1e4f73(-0xeaf+0x451+0xea1*0x2)['i'],_0x67bd8f=_0x1e4f73(-0x8f+0xc6b+0x1293)['permuteDom'+'ain'],_0x5389ac=_0x1e4f73(-0x1*0x1f47+-0x174+0x3584)['z'],{getCustomInspectSymbol:_0x8eb009,getUtilInspect:_0x49978d}=_0x1e4f73(-0x1*0x3e86+-0x4*-0xbb2+0x367f);class _0x2f34fc extends _0x9eca22{constructor(){super(),this['synchronou'+'s']=!(-0xf27+-0x15f0+-0xc5d*-0x3),this['idx']=Object['create'](null);const _0x2d9ee8=_0x8eb009();_0x2d9ee8&&(this[_0x2d9ee8]=this['inspect']);}['inspect'](){return'{\x20idx:\x20'+_0x49978d(_0x2d365c)(this['idx'],!(0x640+0xc8*0x12+-0x144f),-0x8bf*0x3+-0x77*0x47+0x20*0x1da)+'\x20}';}['findCookie'](_0x253b50,_0x42f9b3,_0xf0ed23,_0x54af0e){return this['idx'][_0x253b50]&&this['idx'][_0x253b50][_0x42f9b3]?_0x54af0e(null,this['idx'][_0x253b50][_0x42f9b3][_0xf0ed23]||null):_0x54af0e(null,void(0xa9*-0x5+-0x9a5+0x1*0xcf2));}['findCookie'+'s'](_0x3b34fa,_0x423d64,_0x4f6886,_0x2fd389){const _0x1fe6ba=[];if('function'==typeof _0x4f6886&&(_0x2fd389=_0x4f6886,_0x4f6886=!(-0x20*-0xd1+-0xc5*-0xb+-0x2297)),!_0x3b34fa)return _0x2fd389(null,[]);let _0x1ca04e;_0x1ca04e=_0x423d64?function(_0x2b1c57){Object['keys'](_0x2b1c57)['forEach'](_0x17e206=>{if(_0x5389ac(_0x423d64,_0x17e206)){const _0x1236db=_0x2b1c57[_0x17e206];for(const _0x3435f6 in _0x1236db)_0x1fe6ba['push'](_0x1236db[_0x3435f6]);}});}:function(_0x124d73){for(const _0x4e5b0f in _0x124d73){const _0x4a4bbf=_0x124d73[_0x4e5b0f];for(const _0x338092 in _0x4a4bbf)_0x1fe6ba['push'](_0x4a4bbf[_0x338092]);}};const _0x4728a1=_0x67bd8f(_0x3b34fa,_0x4f6886)||[_0x3b34fa],_0x1582fa=this['idx'];_0x4728a1['forEach'](_0x335f14=>{const _0x35fcf8=_0x1582fa[_0x335f14];_0x35fcf8&&_0x1ca04e(_0x35fcf8);}),_0x2fd389(null,_0x1fe6ba);}['putCookie'](_0x2f2ece,_0x45e30f){this['idx'][_0x2f2ece['domain']]||(this['idx'][_0x2f2ece['domain']]=Object['create'](null)),this['idx'][_0x2f2ece['domain']][_0x2f2ece['path']]||(this['idx'][_0x2f2ece['domain']][_0x2f2ece['path']]=Object['create'](null)),this['idx'][_0x2f2ece['domain']][_0x2f2ece['path']][_0x2f2ece['key']]=_0x2f2ece,_0x45e30f(null);}['updateCook'+'ie'](_0x22f96f,_0x14df82,_0x3747b9){this['putCookie'](_0x14df82,_0x3747b9);}['removeCook'+'ie'](_0x10143b,_0x3ab744,_0x6b0511,_0x5050ef){this['idx'][_0x10143b]&&this['idx'][_0x10143b][_0x3ab744]&&this['idx'][_0x10143b][_0x3ab744][_0x6b0511]&&delete this['idx'][_0x10143b][_0x3ab744][_0x6b0511],_0x5050ef(null);}['removeCook'+'ies'](_0x3aa132,_0x526867,_0x2faf4a){return this['idx'][_0x3aa132]&&(_0x526867?delete this['idx'][_0x3aa132][_0x526867]:delete this['idx'][_0x3aa132]),_0x2faf4a(null);}['removeAllC'+'ookies'](_0x1b6281){return this['idx']=Object['create'](null),_0x1b6281(null);}['getAllCook'+'ies'](_0x235697){const _0x246e36=[],_0x585a0d=this['idx'];Object['keys'](_0x585a0d)['forEach'](_0xa7d153=>{Object['keys'](_0x585a0d[_0xa7d153])['forEach'](_0x39131a=>{Object['keys'](_0x585a0d[_0xa7d153][_0x39131a])['forEach'](_0x4859d3=>{null!==_0x4859d3&&_0x246e36['push'](_0x585a0d[_0xa7d153][_0x39131a][_0x4859d3]);});});}),_0x246e36['sort']((_0x68a976,_0x5828d9)=>(_0x68a976['creationIn'+'dex']||-0x109a+0x453+0xc47)-(_0x5828d9['creationIn'+'dex']||0x4*0x9a3+0x3*0x83d+-0x29*0x18b)),_0x235697(null,_0x246e36);}}function _0x2d365c(_0x541cc1){const _0x5b7cd9=Object['keys'](_0x541cc1);if(-0x1dd0+-0xa4b*0x2+-0x1*-0x3266===_0x5b7cd9['length'])return'[Object:\x20n'+'ull\x20protot'+'ype]\x20{}';let _0x4a56d0='[Object:\x20n'+'ull\x20protot'+'ype]\x20{\x0a';return Object['keys'](_0x541cc1)['forEach']((_0x282136,_0x49c839)=>{_0x4a56d0+=function(_0x4e5715,_0xf7f368){let _0x21ac85='\x20\x20\x27'+_0x4e5715+('\x27:\x20[Object'+':\x20null\x20pro'+'totype]\x20{\x0a');return Object['keys'](_0xf7f368)['forEach']((_0x473083,_0x453d7,_0x54e1d5)=>{_0x21ac85+=function(_0x189250,_0x3abcad){const _0x1e8494='\x20\x20\x20\x20';let _0x41ef07=_0x1e8494+'\x27'+_0x189250+('\x27:\x20[Object'+':\x20null\x20pro'+'totype]\x20{\x0a');return Object['keys'](_0x3abcad)['forEach']((_0x5e3f85,_0xc82462,_0x3d152f)=>{const _0xbd1a69=_0x3abcad[_0x5e3f85];_0x41ef07+='\x20\x20\x20\x20\x20\x20'+_0x5e3f85+':\x20'+_0xbd1a69['inspect'](),_0xc82462<_0x3d152f['length']-(0x1548+-0x175a+0x213)&&(_0x41ef07+=','),_0x41ef07+='\x0a';}),_0x41ef07+=_0x1e8494+'}',_0x41ef07;}(_0x473083,_0xf7f368[_0x473083]),_0x453d7<_0x54e1d5['length']-(-0x5fc*-0x6+-0xc56*0x1+-0x1791)&&(_0x21ac85+=','),_0x21ac85+='\x0a';}),_0x21ac85+='\x20\x20}',_0x21ac85;}(_0x282136,_0x541cc1[_0x282136]),_0x49c839<_0x5b7cd9['length']-(0x214+-0xaf*-0x4+0x4cf*-0x1)&&(_0x4a56d0+=','),_0x4a56d0+='\x0a';}),_0x4a56d0+='}',_0x4a56d0;}['findCookie','findCookie'+'s','putCookie','updateCook'+'ie','removeCook'+'ie','removeCook'+'ies','removeAllC'+'ookies','getAllCook'+'ies']['forEach'](_0xcdb9c1=>{_0x2f34fc['prototype'][_0xcdb9c1]=_0x5f0ad3(_0x2f34fc['prototype'][_0xcdb9c1]);}),_0x3fe34f['n']=_0x2f34fc;},0x14c9:(_0xe4b339,_0x2c5c5c)=>{'use strict';_0x2c5c5c['z']=function(_0xd0c477,_0x54e466){if(_0x54e466===_0xd0c477)return!(0x1cd8+0xe51*0x2+-0x397a);if(-0x11e3+0xcce*0x3+0x1487*-0x1===_0xd0c477['indexOf'](_0x54e466)){if('/'===_0x54e466['substr'](-(-0x25b8+0x1c4*0xd+0xec5)))return!(-0x1*-0x1a57+-0xd*0xef+-0xe34);if('/'===_0xd0c477['substr'](_0x54e466['length'],0xe2*-0x9+-0x4*0x994+0x2e43))return!(0x695*-0x2+0x141f+-0x89*0xd);}return!(-0x3b9+-0xfdd*0x1+-0x3eb*-0x5);};},0x1e6f:(_0x28b9c0,_0x415feb,_0x3f809f)=>{'use strict';const _0xffdeb1=_0x3f809f(-0x7ab*-0x2+-0x76d+-0x350);_0x415feb['permuteDom'+'ain']=function(_0x54ca6e,_0x3b1064){const _0xcb238a=_0xffdeb1['getPublicS'+'uffix'](_0x54ca6e,{'allowSpecialUseDomain':_0x3b1064});if(!_0xcb238a)return null;if(_0xcb238a==_0x54ca6e)return[_0x54ca6e];'.'==_0x54ca6e['slice'](-(-0x1d9*-0x11+0xf67+-0x2ecf))&&(_0x54ca6e=_0x54ca6e['slice'](-0x1a2c+-0x43f*-0x5+0x4f1*0x1,-(0x899*0x3+-0x3a0+-0x162a)));const _0x2abb9f=_0x54ca6e['slice'](-0x1a7+-0x112+0x2b9,-(_0xcb238a['length']+(-0x6f6*0x5+-0x1f17+0x41e6)))['split']('.')['reverse']();let _0x41a8f0=_0xcb238a;const _0x3b7526=[_0x41a8f0];for(;_0x2abb9f['length'];)_0x41a8f0=_0x2abb9f['shift']()+'.'+_0x41a8f0,_0x3b7526['push'](_0x41a8f0);return _0x3b7526;};},0x499:(_0x4bedd0,_0x3b2008,_0x3ace96)=>{'use strict';const _0xb7a135=_0x3ace96(-0x7*-0x5+0x18bc+0x65*-0x2b),_0x55b1f6=['local','example','invalid','localhost','test'],_0x3687f7=['localhost','invalid'];_0x3b2008['getPublicS'+'uffix']=function(_0xa7b8ab,_0x4d6766={}){const _0x10bee3=_0xa7b8ab['split']('.'),_0x2820ee=_0x10bee3[_0x10bee3['length']-(-0x46e+0x9bb+-0x54c)],_0x2a5522=!!_0x4d6766['allowSpeci'+'alUseDomai'+'n'],_0x1d5479=!!_0x4d6766['ignoreErro'+'r'];if(_0x2a5522&&_0x55b1f6['includes'](_0x2820ee)){if(_0x10bee3['length']>0xfd9*-0x1+-0x1b8e+0x2b68)return _0x10bee3[_0x10bee3['length']-(0xe1b+0x1*-0x4f3+-0x926)]+'.'+_0x2820ee;if(_0x3687f7['includes'](_0x2820ee))return''+_0x2820ee;}if(!_0x1d5479&&_0x55b1f6['includes'](_0x2820ee))throw new Error('Cookie\x20has'+'\x20domain\x20se'+'t\x20to\x20the\x20p'+'ublic\x20suff'+'ix\x20\x22'+_0x2820ee+('\x22\x20which\x20is'+'\x20a\x20special'+'\x20use\x20domai'+'n.\x20To\x20allo'+'w\x20this,\x20co'+'nfigure\x20yo'+'ur\x20CookieJ'+'ar\x20with\x20{a'+'llowSpecia'+'lUseDomain'+':true,\x20rej'+'ectPublicS'+'uffixes:\x20f'+'alse}.'));return _0xb7a135['get'](_0xa7b8ab);};},0x12e4:(_0x25f3c1,_0x117d62)=>{'use strict';_0x117d62['i']=class{constructor(){this['synchronou'+'s']=!(-0xe00+0x527*-0x3+-0xebb*-0x2);}['findCookie'](_0x5097ed,_0x5eab5f,_0x564d1a,_0x412005){throw new Error('findCookie'+'\x20is\x20not\x20im'+'plemented');}['findCookie'+'s'](_0x144a97,_0x15c36b,_0x372775,_0x479ff3){throw new Error('findCookie'+'s\x20is\x20not\x20i'+'mplemented');}['putCookie'](_0x56724b,_0xc15d79){throw new Error('putCookie\x20'+'is\x20not\x20imp'+'lemented');}['updateCook'+'ie'](_0x57ca36,_0x1e0e67,_0x459cd4){throw new Error('updateCook'+'ie\x20is\x20not\x20'+'implemente'+'d');}['removeCook'+'ie'](_0x1ad7ed,_0x540620,_0xc8614e,_0x117ec1){throw new Error('removeCook'+'ie\x20is\x20not\x20'+'implemente'+'d');}['removeCook'+'ies'](_0x19218f,_0x4ad168,_0x4afb2e){throw new Error('removeCook'+'ies\x20is\x20not'+'\x20implement'+'ed');}['removeAllC'+'ookies'](_0x58ea7a){throw new Error('removeAllC'+'ookies\x20is\x20'+'not\x20implem'+'ented');}['getAllCook'+'ies'](_0x183a12){throw new Error('getAllCook'+'ies\x20is\x20not'+'\x20implement'+'ed\x20(theref'+'ore\x20jar\x20ca'+'nnot\x20be\x20se'+'rialized)');}};},0x26c1:(_0xbc1905,_0x46e5d4,_0x21d1e7)=>{function _0xdc3c09(){try{return _0x21d1e7(0x1dcb+-0x36ed+0x29*0x179);}catch(_0x4da821){return null;}}function _0x4a7ffa(){return Symbol['for']('nodejs.uti'+'l.inspect.'+'custom');}_0x46e5d4['getUtilIns'+'pect']=function(_0x506a6c,_0x15c7b6={}){const _0x3d08da=(_0x15c7b6['requireUti'+'l']||_0xdc3c09)();return function(_0x98fa5c,_0x4ec264,_0x168490){return _0x3d08da?_0x3d08da['inspect'](_0x98fa5c,_0x4ec264,_0x168490):_0x506a6c(_0x98fa5c);};},_0x46e5d4['getCustomI'+'nspectSymb'+'ol']=function(_0x4720ed={}){return(_0x4720ed['lookupCust'+'omInspectS'+'ymbol']||_0x4a7ffa)()||function(_0x1ce1de){const _0x5e184a=(_0x1ce1de['requireUti'+'l']||_0xdc3c09)();return _0x5e184a?_0x5e184a['inspect']['custom']:null;}(_0x4720ed);};},0xba6:(_0x21fc9c,_0x299360)=>{'use strict';function _0x1eb835(_0x40f014){return'function'==typeof _0x40f014;}function _0x58def7(_0x5c4041){return'string'==typeof _0x5c4041||_0x5c4041 instanceof String;}function _0x4e1a03(_0x134cee){return'[object\x20Ob'+'ject]'===toString['call'](_0x134cee);}class _0x30045a extends Error{constructor(..._0x4b7d73){super(..._0x4b7d73);}}_0x299360['ParameterE'+'rror']=_0x30045a,_0x299360['isFunction']=_0x1eb835,_0x299360['isNonEmpty'+'String']=function(_0xec4a14){return _0x58def7(_0xec4a14)&&''!==_0xec4a14;},_0x299360['isDate']=function(_0x53523c){return function(_0x58bae2,_0x5ad148){try{return _0x58bae2 instanceof _0x5ad148;}catch(_0x25ca1f){return!(-0x1*-0x24af+0x1bf2+0x2f*-0x160);}}(_0x53523c,Date)&&function(_0x367e41){return'number'==typeof _0x367e41&&_0x367e41%(0x2654+0x9f*0x3e+-0x4cd5*0x1)==0x53c+0x12dd+0x1819*-0x1;}(_0x53523c['getTime']());},_0x299360['isEmptyStr'+'ing']=function(_0x199ae9){return''===_0x199ae9||_0x199ae9 instanceof String&&''===_0x199ae9['toString']();},_0x299360['isString']=_0x58def7,_0x299360['isObject']=_0x4e1a03,_0x299360['validate']=function(_0x32fe1b,_0x4de0ec,_0xfd3f5e){if(_0x1eb835(_0x4de0ec)||(_0xfd3f5e=_0x4de0ec,_0x4de0ec=null),_0x4e1a03(_0xfd3f5e)||(_0xfd3f5e={'Error':'Failed\x20Che'+'ck'}),!_0x32fe1b){if(!_0x4de0ec)throw new _0x30045a(_0xfd3f5e);_0x4de0ec(new _0x30045a(_0xfd3f5e));}};},0xc15:_0x47beee=>{_0x47beee['exports']='4.1.3';},0x2708:function(_0x556918,_0x70b56c,_0x2bab61){'use strict';var _0x3a5e8b,_0x97e8bc,_0x2886c5,_0x40b1a8=this&&this['__createBi'+'nding']||(Object['create']?function(_0x5b12ed,_0x4ac6ba,_0x2ae59d,_0x20617f){void(-0xc6*0x6+-0x8e*0x42+0x2940)===_0x20617f&&(_0x20617f=_0x2ae59d);var _0xd01433=Object['getOwnProp'+'ertyDescri'+'ptor'](_0x4ac6ba,_0x2ae59d);_0xd01433&&!('get'in _0xd01433?!_0x4ac6ba['__esModule']:_0xd01433['writable']||_0xd01433['configurab'+'le'])||(_0xd01433={'enumerable':!(-0x6a*0x34+0xbee+0x99a),'get':function(){return _0x4ac6ba[_0x2ae59d];}}),Object['defineProp'+'erty'](_0x5b12ed,_0x20617f,_0xd01433);}:function(_0xc0a300,_0x55e7ac,_0x38587e,_0x150cd0){void(0x2*-0xb7b+0x1dd2+0x4*-0x1b7)===_0x150cd0&&(_0x150cd0=_0x38587e),_0xc0a300[_0x150cd0]=_0x55e7ac[_0x38587e];}),_0x5a4f31=this&&this['__setModul'+'eDefault']||(Object['create']?function(_0x27d890,_0x247e4c){Object['defineProp'+'erty'](_0x27d890,'default',{'enumerable':!(0x1416*-0x1+0x757*-0x4+0x3172),'value':_0x247e4c});}:function(_0x15edc8,_0x33319b){_0x15edc8['default']=_0x33319b;}),_0x5dbb05=this&&this['__importSt'+'ar']||function(_0x597d2b){if(_0x597d2b&&_0x597d2b['__esModule'])return _0x597d2b;var _0x479eee={};if(null!=_0x597d2b){for(var _0x4867ca in _0x597d2b)'default'!==_0x4867ca&&Object['prototype']['hasOwnProp'+'erty']['call'](_0x597d2b,_0x4867ca)&&_0x40b1a8(_0x479eee,_0x597d2b,_0x4867ca);}return _0x5a4f31(_0x479eee,_0x597d2b),_0x479eee;},_0x238185=this&&this['__awaiter']||function(_0x376ab6,_0x38c5c2,_0x344db5,_0x1dee42){return new(_0x344db5||(_0x344db5=Promise))(function(_0x5a5638,_0x15c5a5){function _0x3fce4b(_0x45d58e){try{_0x4884df(_0x1dee42['next'](_0x45d58e));}catch(_0x1380af){_0x15c5a5(_0x1380af);}}function _0x3febf9(_0x17291e){try{_0x4884df(_0x1dee42['throw'](_0x17291e));}catch(_0x25b3bc){_0x15c5a5(_0x25b3bc);}}function _0x4884df(_0x19ff46){var _0x36da62;_0x19ff46['done']?_0x5a5638(_0x19ff46['value']):(_0x36da62=_0x19ff46['value'],_0x36da62 instanceof _0x344db5?_0x36da62:new _0x344db5(function(_0x141cc7){_0x141cc7(_0x36da62);}))['then'](_0x3fce4b,_0x3febf9);}_0x4884df((_0x1dee42=_0x1dee42['apply'](_0x376ab6,_0x38c5c2||[]))['next']());});};Object['defineProp'+'erty'](_0x70b56c,'__esModule',{'value':!(0x253a+0x1077+-0xabd*0x5)}),_0x70b56c['MatlabConn'+'ection']=_0x70b56c['LifecycleE'+'ventType']=void(0x8*-0xef+-0x236e+-0x22*-0x143);const _0x35044e=_0x2bab61(0x3*-0xcbb+0xb4*0x37+0x144a),_0xa4d15a=_0x2bab61(-0x1*0x28ed+0x1*0x28ea+-0x1b49*-0x1),_0xce5709=_0x5dbb05(_0x2bab61(0x1*-0x1843+0x1156+0x3*0x53d)),_0x12797e=_0x5dbb05(_0x2bab61(-0x96c+-0x2b*-0x71+-0x1f8)),_0x2c0ac1=_0x5dbb05(_0x2bab61(-0x1a3c+-0xd*-0x98+0x15dd)),_0x4e7fe8=_0x5dbb05(_0x2bab61(0x1*-0x1271+0x5e0+-0x1*-0x27a1)),_0x51a8ed=_0x2bab61(-0x2342+0xb*-0x1e5+0x84a*0x8);var _0x3b18a8;!function(_0x3ed303){_0x3ed303[_0x3ed303['CONNECTED']=0x2188+0x1*-0x4db+0x3*-0x98f]='CONNECTED',_0x3ed303[_0x3ed303['DISCONNECT'+'ED']=-0x1*0x1bf7+-0x1*0xa97+0x268f]='DISCONNECT'+'ED';}(_0x3b18a8=_0x70b56c['LifecycleE'+'ventType']||(_0x70b56c['LifecycleE'+'ventType']={}));const _0x52729f=null!==(_0x3a5e8b=process['env']['HTTP_PROXY'])&&void(-0x1*-0x188b+0x7ca*0x2+-0x281f)!==_0x3a5e8b?_0x3a5e8b:process['env']['http_proxy'],_0x459d54=null!==(_0x97e8bc=process['env']['HTTPS_PROX'+'Y'])&&void(0x1*0x2415+-0x2368+-0xad)!==_0x97e8bc?_0x97e8bc:process['env']['https_prox'+'y'],_0x113a49=null!==(_0x2886c5=process['env']['NO_PROXY'])&&void(-0x2*0x10a6+0x1*0x373+0x1dd9)!==_0x2886c5?_0x2886c5:process['env']['no_proxy'];delete process['env']['HTTP_PROXY'],delete process['env']['http_proxy'],delete process['env']['HTTPS_PROX'+'Y'],delete process['env']['https_prox'+'y'],delete process['env']['NO_PROXY'],delete process['env']['no_proxy'];class _0x11eba5{constructor(){this['_lifecycle'+'Callback']=null,this['_channelId'+'Ct']=0x11cb*0x1+-0x2195*-0x1+-0x3360;}['close'](){var _0x2db672;null===(_0x2db672=this['_client'])||void(-0xaf5+-0x1*-0x1d82+-0x128d)===_0x2db672||_0x2db672['disconnect'](),this['_lifecycle'+'Callback']=null;}['getChannel'+'Id'](){return(this['_channelId'+'Ct']++)['toString']();}['publish'](_0x11d27f,_0x48809c){this['_client']['publish'](this['_prependCh'+'annel'](_0x11d27f),_0x48809c);}['subscribe'](_0x30cd3f,_0xf6a99e){return this['_client']['subscribe'](this['_prependCh'+'annel'](_0x30cd3f),_0xf6a99e);}['unsubscrib'+'e'](_0x559b09){_0x559b09['cancel']();}['setLifecyc'+'leListener'](_0x5d1a45){this['_lifecycle'+'Callback']=_0x5d1a45;}['onConnecti'+'onSuccess'](){var _0x2eea54;null===(_0x2eea54=this['_lifecycle'+'Callback'])||void(0x24*-0xf8+0xf2e*-0x1+0x2*0x1907)===_0x2eea54||_0x2eea54['call'](this,_0x3b18a8['CONNECTED']);}['onConnecti'+'onFailure'](){var _0x3e603b;null===(_0x3e603b=this['_lifecycle'+'Callback'])||void(0x13d*-0x13+0x4*-0x956+0x3cdf)===_0x3e603b||_0x3e603b['call'](this,_0x3b18a8['DISCONNECT'+'ED']);}['setupConne'+'ctionCallb'+'acks'](){this['_client']['on']('transport:'+'up',this['onConnecti'+'onSuccess']['bind'](this)),this['_client']['on']('transport:'+'down',this['onConnecti'+'onFailure']['bind'](this));}['_prependCh'+'annel'](_0x508a58){return'/matlab'+_0x508a58;}}_0x70b56c['MatlabConn'+'ection']=_0x11eba5;class _0x49ba96 extends _0x11eba5{constructor(_0x38de5d){super(),this['_apiKey']=_0x38de5d;}['initialize'](_0x2f87c4,_0xb486c){return _0x238185(this,void(0xef2*0x2+-0x2ac+-0x1*0x1b38),void(-0x1a49+-0x1*0x97d+0x23c6),function*(){const _0x2d5f37=yield _0x12797e['readFile'](_0xb486c);_0xce5709['setDefault'+'ResultOrde'+'r']('ipv4first');const _0x1165be='https://lo'+'calhost:'+_0x2f87c4+('/messagese'+'rvice/asyn'+'c');this['_client']=new _0x51a8ed['Client'](_0x1165be,{'tls':{'ca':_0x2d5f37}}),this['_client']['setHeader']('mwapikey',this['_apiKey']),this['setupConne'+'ctionCallb'+'acks']();});}}class _0x22ac1a extends _0x11eba5{constructor(_0x594e66){super(),this['_url']=_0x594e66;}['initialize'](){return _0x238185(this,void(-0x1c28+0x14dd+0x1*0x74b),void(-0x1db1*0x1+-0xfec+0x2d9d),function*(){this['_client']=new _0x51a8ed['Client'](this['_url']),this['setupConne'+'ctionCallb'+'acks'](),this['publish']('matlabls/c'+'onnection/'+'startup',{});});}}_0x70b56c['default']=new class{['launchNewM'+'atlab'](_0x41dd61,_0x722228,_0x24e9cc,_0x4057ef={}){const _0x275245=(function(){const _0x7d55c0='abcdefghij'+'klmnopqrst'+'uvwxyzABCD'+'EFGHIJKLMN'+'OPQRSTUVWX'+'YZ01234567'+'89-._~';let _0x4ba4bd='';for(let _0x43e868=0x1*0x1ac6+0xd*0x175+-0x2db7;_0x43e868<0x102b+-0x2519*0x1+0x18ee*0x1;_0x43e868++)_0x4ba4bd+=_0x7d55c0['charAt']((0x1*-0x1d9c+-0x793*-0x3+0x6e3,_0xa4d15a['randomInt'])(-0x1*-0x2de+0x11ec*-0x2+0x213c));return _0x4ba4bd;}()),_0xb2b5aa={};for(const _0xb3a28f in process['env'])_0xb3a28f['startsWith']('ELECTRON_')||_0xb3a28f['startsWith']('VSCODE_')||(_0xb2b5aa[_0xb3a28f]=process['env'][_0xb3a28f]);let _0x166f74;try{const _0xc1d77b=Object['assign'](Object['assign'](Object['assign']({},_0xb2b5aa),_0x4057ef),{'MATLAB_LOG_DIR':_0x24e9cc,'MWAPIKEY':_0x275245});null==_0x52729f&&null==_0x459d54&&null==_0x113a49||(_0xc1d77b['HTTP_PROXY']=_0x52729f,_0xc1d77b['HTTPS_PROX'+'Y']=_0x459d54,_0xc1d77b['NO_PROXY']=_0x113a49);let _0x204396=process['env']['HOME'];if('darwin'===_0x2c0ac1['platform']()&&'arm64'===_0x2c0ac1['arch']()&&'matlab'!==_0x41dd61){const _0x13faca=_0x41dd61['split'](_0x4e7fe8['sep']);_0x204396=_0x13faca['slice'](0x6d*0xb+-0xdbf+0x910,_0x13faca['length']-(-0x514+0x3*-0xb1b+-0x153*-0x1d))['join'](_0x4e7fe8['sep']);}_0x166f74=(0x2c2*0x8+0x19f5+-0x3005,_0x35044e['spawn'])(_0x41dd61,_0x722228,{'cwd':_0x204396,'env':_0xc1d77b});}catch(_0x54a7f5){return null;}return{'matlabProcess':_0x166f74,'matlabConnection':new _0x49ba96(_0x275245)};}['connectToE'+'xistingMat'+'lab'](_0x361f04){return _0x238185(this,void(0xf+0xe73+-0x4d6*0x3),void(-0xc84*-0x3+-0xb84+0x88*-0x31),function*(){return new _0x22ac1a(_0x361f04);});}}();},0xf57:(_0x5f21de,_0x34d3a8,_0x14481b)=>{'use strict';_0x14481b(0x1*-0xc28+0x1*0x1193+0x1ed3);var _0x5ef341,_0x4dafb2=_0x14481b(0x8*0x43f+-0x11ac+0x1*0x248),_0x4872e3=_0x14481b(-0xc33*-0x3+0x199d+0x299*-0xb),_0x4af538=_0x14481b(-0x1*0x1f1b+0x2673+0xee4),_0x3c7253=_0x14481b(-0x447*-0x8+0x1eb4+-0x9*0x54a),_0x5adea7=_0x14481b(0x24eb+-0x1d2f*0x1+0xd3*0x3),_0x2ee7b1=_0x14481b(-0x437f+0x38ef*-0x1+0x9fad),_0x517aa4=_0x14481b(0xd22+0x52*0x5+-0x1*0x38f)['Buffer'];function _0x445a4a(_0x1d3778){var _0x3cc574=this;_0x3cc574['options']=_0x1d3778||{},_0x3cc574['proxyOptio'+'ns']=_0x3cc574['options']['proxy']||{},_0x3cc574['maxSockets']=_0x3cc574['options']['maxSockets']||_0x4872e3['Agent']['defaultMax'+'Sockets'],_0x3cc574['requests']=[],_0x3cc574['sockets']=[],_0x3cc574['on']('free',function(_0x31d33b,_0x58b522,_0x2d26b2){for(var _0x2e972f=0x1*-0x1e39+0xc*0xea+0x1341,_0x5f5053=_0x3cc574['requests']['length'];_0x2e972f<_0x5f5053;++_0x2e972f){var _0x4fe677=_0x3cc574['requests'][_0x2e972f];if(_0x4fe677['host']===_0x58b522&&_0x4fe677['port']===_0x2d26b2)return _0x3cc574['requests']['splice'](_0x2e972f,-0x267b+0xc5*-0x25+0x42f5),void _0x4fe677['request']['onSocket'](_0x31d33b);}_0x31d33b['destroy'](),_0x3cc574['removeSock'+'et'](_0x31d33b);});}function _0x5c1307(_0x47da54,_0x5181e9){var _0x4e6ea9=this;_0x445a4a['prototype']['createSock'+'et']['call'](_0x4e6ea9,_0x47da54,function(_0x637ba6){var _0x50700b=_0x4dafb2['connect'](0xf42+0x559+-0x149b,_0x1c443e({},_0x4e6ea9['options'],{'servername':_0x47da54['host'],'socket':_0x637ba6}));_0x4e6ea9['sockets'][_0x4e6ea9['sockets']['indexOf'](_0x637ba6)]=_0x50700b,_0x5181e9(_0x50700b);});}function _0x1c443e(_0x5e9f90){for(var _0x5da485=0x1*0x87+-0xad6+0xa50,_0x4a59ba=arguments['length'];_0x5da485<_0x4a59ba;++_0x5da485){var _0x344ed1=arguments[_0x5da485];if('object'==typeof _0x344ed1)for(var _0x4a02ee=Object['keys'](_0x344ed1),_0x4f47e1=0x1054+0x21f4*-0x1+-0x8*-0x234,_0x46e33f=_0x4a02ee['length'];_0x4f47e1<_0x46e33f;++_0x4f47e1){var _0x1dc209=_0x4a02ee[_0x4f47e1];void(-0x1deb+-0xcb*0x7+0x2378)!==_0x344ed1[_0x1dc209]&&(_0x5e9f90[_0x1dc209]=_0x344ed1[_0x1dc209]);}}return _0x5e9f90;}_0x34d3a8['httpOverHt'+'tp']=function(_0x46d62f){var _0x1c0162=new _0x445a4a(_0x46d62f);return _0x1c0162['request']=_0x4872e3['request'],_0x1c0162;},_0x34d3a8['httpsOverH'+'ttp']=function(_0x4a9642){var _0xe570ed=new _0x445a4a(_0x4a9642);return _0xe570ed['request']=_0x4872e3['request'],_0xe570ed['createSock'+'et']=_0x5c1307,_0xe570ed['defaultPor'+'t']=-0x17fb+-0xc14+0x2*0x12e5,_0xe570ed;},_0x34d3a8['httpOverHt'+'tps']=function(_0x2a427d){var _0x2190d8=new _0x445a4a(_0x2a427d);return _0x2190d8['request']=_0x4af538['request'],_0x2190d8;},_0x34d3a8['httpsOverH'+'ttps']=function(_0x34ded7){var _0x29591e=new _0x445a4a(_0x34ded7);return _0x29591e['request']=_0x4af538['request'],_0x29591e['createSock'+'et']=_0x5c1307,_0x29591e['defaultPor'+'t']=0x5b3*-0x1+0x779*-0x5+0x2ccb,_0x29591e;},_0x2ee7b1['inherits'](_0x445a4a,_0x3c7253['EventEmitt'+'er']),_0x445a4a['prototype']['addRequest']=function(_0x55183e,_0x5425bc){var _0x22d294=this;'string'==typeof _0x5425bc&&(_0x5425bc={'host':_0x5425bc,'port':arguments[0x1d35+0x1*-0x12e9+-0xa4a],'path':arguments[-0x1*0x260e+-0x113d+0x1ba7*0x2]}),_0x22d294['sockets']['length']>=this['maxSockets']?_0x22d294['requests']['push']({'host':_0x5425bc['host'],'port':_0x5425bc['port'],'request':_0x55183e}):_0x22d294['createConn'+'ection']({'host':_0x5425bc['host'],'port':_0x5425bc['port'],'request':_0x55183e});},_0x445a4a['prototype']['createConn'+'ection']=function(_0x1923ce){var _0x1b39a0=this;_0x1b39a0['createSock'+'et'](_0x1923ce,function(_0x3d0774){function _0x2c0b10(){_0x1b39a0['emit']('free',_0x3d0774,_0x1923ce['host'],_0x1923ce['port']);}function _0x1fcedc(_0x13899c){_0x1b39a0['removeSock'+'et'](_0x3d0774),_0x3d0774['removeList'+'ener']('free',_0x2c0b10),_0x3d0774['removeList'+'ener']('close',_0x1fcedc),_0x3d0774['removeList'+'ener']('agentRemov'+'e',_0x1fcedc);}_0x3d0774['on']('free',_0x2c0b10),_0x3d0774['on']('close',_0x1fcedc),_0x3d0774['on']('agentRemov'+'e',_0x1fcedc),_0x1923ce['request']['onSocket'](_0x3d0774);});},_0x445a4a['prototype']['createSock'+'et']=function(_0x46e1e4,_0x3dc4ec){var _0x206198=this,_0x541949={};_0x206198['sockets']['push'](_0x541949);var _0x13e6db=_0x1c443e({},_0x206198['proxyOptio'+'ns'],{'method':'CONNECT','path':_0x46e1e4['host']+':'+_0x46e1e4['port'],'agent':!(-0x197a*0x1+-0x1c91*-0x1+-0x316)});_0x13e6db['proxyAuth']&&(_0x13e6db['headers']=_0x13e6db['headers']||{},_0x13e6db['headers']['Proxy-Auth'+'orization']='Basic\x20'+_0x517aa4['from'](_0x13e6db['proxyAuth'])['toString']('base64')),_0x5ef341('making\x20CON'+'NECT\x20reque'+'st');var _0x3ad002=_0x206198['request'](_0x13e6db);function _0xa04dfb(_0x4bcda9,_0x421728,_0x29a701){if(_0x3ad002['removeAllL'+'isteners'](),_0x421728['removeAllL'+'isteners'](),-0x30*-0x5d+0x4*0x6b9+-0x6*0x742===_0x4bcda9['statusCode'])_0x5adea7['equal'](_0x29a701['length'],-0x2237+0x3b*-0x8e+-0x42f1*-0x1),_0x5ef341('tunneling\x20'+'connection'+'\x20has\x20estab'+'lished'),_0x206198['sockets'][_0x206198['sockets']['indexOf'](_0x541949)]=_0x421728,_0x3dc4ec(_0x421728);else{_0x5ef341('tunneling\x20'+'socket\x20cou'+'ld\x20not\x20be\x20'+'establishe'+'d,\x20statusC'+'ode=%d',_0x4bcda9['statusCode']);var _0x177001=new Error('tunneling\x20'+'socket\x20cou'+'ld\x20not\x20be\x20'+'establishe'+'d,\x20statusC'+'ode='+_0x4bcda9['statusCode']);_0x177001['code']='ECONNRESET',_0x46e1e4['request']['emit']('error',_0x177001),_0x206198['removeSock'+'et'](_0x541949);}}_0x3ad002['useChunked'+'EncodingBy'+'Default']=!(0x1*0x12f0+0x2111+-0x3400),_0x3ad002['once']('response',function(_0x1235f5){_0x1235f5['upgrade']=!(0x35e+0x2e*0x4d+-0x1134);}),_0x3ad002['once']('upgrade',function(_0x3a1a38,_0x5e1494,_0x51271b){process['nextTick'](function(){_0xa04dfb(_0x3a1a38,_0x5e1494,_0x51271b);});}),_0x3ad002['once']('connect',_0xa04dfb),_0x3ad002['once']('error',function(_0x495308){_0x3ad002['removeAllL'+'isteners'](),_0x5ef341('tunneling\x20'+'socket\x20cou'+'ld\x20not\x20be\x20'+'establishe'+'d,\x20cause=%'+'s\x0a',_0x495308['message'],_0x495308['stack']);var _0x77ecf7=new Error('tunneling\x20'+'socket\x20cou'+'ld\x20not\x20be\x20'+'establishe'+'d,\x20cause='+_0x495308['message']);_0x77ecf7['code']='ECONNRESET',_0x46e1e4['request']['emit']('error',_0x77ecf7),_0x206198['removeSock'+'et'](_0x541949);}),_0x3ad002['end']();},_0x445a4a['prototype']['removeSock'+'et']=function(_0x350947){var _0x3f47ea=this['sockets']['indexOf'](_0x350947);if(-(0x173*0x9+0xf*-0x1b9+0xccd)!==_0x3f47ea){this['sockets']['splice'](_0x3f47ea,-0x2*-0x1221+0x715+-0x2b56);var _0x17db2a=this['requests']['shift']();_0x17db2a&&this['createConn'+'ection'](_0x17db2a);}},_0x5ef341=process['env']['NODE_DEBUG']&&/\btunnel\b/['test'](process['env']['NODE_DEBUG'])?function(){var _0x148746=Array['prototype']['slice']['call'](arguments);'string'==typeof _0x148746[-0x7b5+-0x132f+0x1*0x1ae4]?_0x148746[0x1*0x1d47+0x2ce*0xa+-0x3953]='TUNNEL:\x20'+_0x148746[0x194f+-0x2d1*0x2+-0x49*0x45]:_0x148746['unshift']('TUNNEL:'),console['error']['apply'](console,_0x148746);}:function(){},_0x34d3a8['debug']=_0x5ef341;},0x4d4:(_0x1a7aac,_0x2839be)=>{'use strict';_0x2839be['fromCallba'+'ck']=function(_0xf59a45){return Object['defineProp'+'erty'](function(){if('function'!=typeof arguments[arguments['length']-(0x235b*0x1+-0xb83+-0x17d7)])return new Promise((_0x29c9e9,_0x338d51)=>{arguments[arguments['length']]=(_0xae8bbe,_0x64b3ac)=>{if(_0xae8bbe)return _0x338d51(_0xae8bbe);_0x29c9e9(_0x64b3ac);},arguments['length']++,_0xf59a45['apply'](this,arguments);});_0xf59a45['apply'](this,arguments);},'name',{'value':_0xf59a45['name']});},_0x2839be['fromPromis'+'e']=function(_0x18c768){return Object['defineProp'+'erty'](function(){const _0x50103e=arguments[arguments['length']-(-0x17ec+0x11c0+0x33*0x1f)];if('function'!=typeof _0x50103e)return _0x18c768['apply'](this,arguments);delete arguments[arguments['length']-(0x3b*0x40+-0x1d*0x1c+0x1*-0xb93)],arguments['length']--,_0x18c768['apply'](this,arguments)['then'](_0x559b35=>_0x50103e(null,_0x559b35),_0x50103e);},'name',{'value':_0x18c768['name']});};},0x488:(_0x41d9a0,_0x116921,_0x1e9026)=>{'use strict';var _0x176c95=_0x1e9026(-0x315+0x2*-0x8a9+-0x2*-0xe3b),_0x5a64fc=_0x1e9026(-0x1cc7+0x218*0xe+0xf0f),_0x40fc1c=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,_0x3ad969=/[\n\r\t]/g,_0x5ab12a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,_0x52517c=/:\d+$/,_0x22bd85=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,_0x2b20ff=/^[a-zA-Z]:/;function _0x94a803(_0x532d3f){return(_0x532d3f||'')['toString']()['replace'](_0x40fc1c,'');}var _0x32dbf6=[['#','hash'],['?','query'],function(_0x162023,_0x214df3){return _0x17d12b(_0x214df3['protocol'])?_0x162023['replace'](/\\/g,'/'):_0x162023;},['/','pathname'],['@','auth',0x126e+-0x139a+-0x2b*-0x7],[NaN,'host',void(0x20dd*0x1+-0x122d+-0xeb0),-0x1*-0x53d+0x20dd*0x1+-0x2619,0x20*-0xc+0xbd8+-0xa57],[/:(\d*)$/,'port',void(-0x63*0x8+-0x4*-0x196+-0x340),-0x53*0x6d+0x2*0x926+0x110c],[NaN,'hostname',void(0x253d*0x1+-0x12*0xf+0x1*-0x242f),-0xafc+0x1419+-0x91c,-0x1752+0x2173+-0xa20]],_0x3dc8e5={'hash':0x1,'query':0x1};function _0x5a70a7(_0x4c30ca){var _0x22fef2,_0x1a3c2c=('undefined'!=typeof window?window:'undefined'!=typeof global?global:'undefined'!=typeof self?self:{})['location']||{},_0x1f1605={},_0x5a71a6=typeof(_0x4c30ca=_0x4c30ca||_0x1a3c2c);if('blob:'===_0x4c30ca['protocol'])_0x1f1605=new _0x694e00(unescape(_0x4c30ca['pathname']),{});else{if('string'===_0x5a71a6){for(_0x22fef2 in(_0x1f1605=new _0x694e00(_0x4c30ca,{}),_0x3dc8e5))delete _0x1f1605[_0x22fef2];}else{if('object'===_0x5a71a6){for(_0x22fef2 in _0x4c30ca)_0x22fef2 in _0x3dc8e5||(_0x1f1605[_0x22fef2]=_0x4c30ca[_0x22fef2]);void(-0x3*0x1+0xc55+-0xc52)===_0x1f1605['slashes']&&(_0x1f1605['slashes']=_0x5ab12a['test'](_0x4c30ca['href']));}}}return _0x1f1605;}function _0x17d12b(_0x40051b){return'file:'===_0x40051b||'ftp:'===_0x40051b||'http:'===_0x40051b||'https:'===_0x40051b||'ws:'===_0x40051b||'wss:'===_0x40051b;}function _0x5a635d(_0x20889a,_0x18a124){_0x20889a=(_0x20889a=_0x94a803(_0x20889a))['replace'](_0x3ad969,''),_0x18a124=_0x18a124||{};var _0x52a24b,_0x1e17da=_0x22bd85['exec'](_0x20889a),_0x55d6c2=_0x1e17da[-0xca2*-0x2+-0xc07*-0x1+-0x254a]?_0x1e17da[0x16e1*-0x1+0xa94+0x1e*0x69]['toLowerCas'+'e']():'',_0x572138=!!_0x1e17da[0x17*-0xe9+0x10*-0x60+0x1af1],_0x3b6fc1=!!_0x1e17da[0x1c9a+-0x1d8e+0xf7],_0x3163bc=-0x1*-0x1087+0x752*-0x4+0xcc1;return _0x572138?_0x3b6fc1?(_0x52a24b=_0x1e17da[0x35+0x10d5+-0x1108]+_0x1e17da[-0x1*-0xcbb+-0x230c+0x4*0x595]+_0x1e17da[0xc4a+0x20f0+-0x2d36*0x1],_0x3163bc=_0x1e17da[-0x1*-0x10f5+0x1e26+-0x2f19]['length']+_0x1e17da[0x5*-0x6cd+-0x356*-0x8+0x754]['length']):(_0x52a24b=_0x1e17da[0x22ae+-0x949+-0x1963*0x1]+_0x1e17da[0x476+0x1e41+-0x22b3],_0x3163bc=_0x1e17da[-0x199*-0x13+-0xcff+-0x115a]['length']):_0x3b6fc1?(_0x52a24b=_0x1e17da[0x12c8+0xd*0x1f9+-0x2c6a*0x1]+_0x1e17da[-0x135*0x9+-0x17a4+0x2285],_0x3163bc=_0x1e17da[-0x1177+0x61*0x24+0x3d6]['length']):_0x52a24b=_0x1e17da[0x11f6+0x17*-0x1d+-0xf57],'file:'===_0x55d6c2?_0x3163bc>=-0x1306+-0x248a+0x3792&&(_0x52a24b=_0x52a24b['slice'](0x1732*-0x1+0x2566*0x1+-0x1*0xe32)):_0x17d12b(_0x55d6c2)?_0x52a24b=_0x1e17da[0xf96+0x1263*-0x1+0x2d1]:_0x55d6c2?_0x572138&&(_0x52a24b=_0x52a24b['slice'](0x371*0x1+-0x621*0x3+0x4fc*0x3)):_0x3163bc>=-0xe*-0x175+0x10d5+-0x2539&&_0x17d12b(_0x18a124['protocol'])&&(_0x52a24b=_0x1e17da[-0x1009*-0x1+0xbfb+-0x1c00]),{'protocol':_0x55d6c2,'slashes':_0x572138||_0x17d12b(_0x55d6c2),'slashesCount':_0x3163bc,'rest':_0x52a24b};}function _0x694e00(_0xc8096a,_0x14f927,_0x6fb3fb){if(_0xc8096a=(_0xc8096a=_0x94a803(_0xc8096a))['replace'](_0x3ad969,''),!(this instanceof _0x694e00))return new _0x694e00(_0xc8096a,_0x14f927,_0x6fb3fb);var _0x26493c,_0xd02734,_0x3a143e,_0x1289bb,_0x3cb899,_0x1ecca8,_0x3ee5a0=_0x32dbf6['slice'](),_0x5decdb=typeof _0x14f927,_0x2d4e57=this,_0x4fa6a0=-0x2183+0x72+0x69d*0x5;for('object'!==_0x5decdb&&'string'!==_0x5decdb&&(_0x6fb3fb=_0x14f927,_0x14f927=null),_0x6fb3fb&&'function'!=typeof _0x6fb3fb&&(_0x6fb3fb=_0x5a64fc['parse']),_0x26493c=!(_0xd02734=_0x5a635d(_0xc8096a||'',_0x14f927=_0x5a70a7(_0x14f927)))['protocol']&&!_0xd02734['slashes'],_0x2d4e57['slashes']=_0xd02734['slashes']||_0x26493c&&_0x14f927['slashes'],_0x2d4e57['protocol']=_0xd02734['protocol']||_0x14f927['protocol']||'',_0xc8096a=_0xd02734['rest'],('file:'===_0xd02734['protocol']&&(-0x1d3e+-0x2*0xe21+0x22*0x1b1!==_0xd02734['slashesCou'+'nt']||_0x2b20ff['test'](_0xc8096a))||!_0xd02734['slashes']&&(_0xd02734['protocol']||_0xd02734['slashesCou'+'nt']<-0xd*0x2a9+0xd02+0x1595*0x1||!_0x17d12b(_0x2d4e57['protocol'])))&&(_0x3ee5a0[0x120d+-0x2351+0x1147]=[/(.*)/,'pathname']);_0x4fa6a0<_0x3ee5a0['length'];_0x4fa6a0++)'function'!=typeof(_0x1289bb=_0x3ee5a0[_0x4fa6a0])?(_0x3a143e=_0x1289bb[0xdf6+0x480+-0x1276],_0x1ecca8=_0x1289bb[0x11db*0x1+0xc7e+0x1e58*-0x1],_0x3a143e!=_0x3a143e?_0x2d4e57[_0x1ecca8]=_0xc8096a:'string'==typeof _0x3a143e?~(_0x3cb899='@'===_0x3a143e?_0xc8096a['lastIndexO'+'f'](_0x3a143e):_0xc8096a['indexOf'](_0x3a143e))&&('number'==typeof _0x1289bb[-0x36b+-0x2643+-0x2e*-0xe8]?(_0x2d4e57[_0x1ecca8]=_0xc8096a['slice'](0x1*-0x2433+-0x14cf+0x1*0x3902,_0x3cb899),_0xc8096a=_0xc8096a['slice'](_0x3cb899+_0x1289bb[-0x4df*0x7+-0x4d*0x53+0x3b12])):(_0x2d4e57[_0x1ecca8]=_0xc8096a['slice'](_0x3cb899),_0xc8096a=_0xc8096a['slice'](-0x1252+-0xdc4+0x2016,_0x3cb899))):(_0x3cb899=_0x3a143e['exec'](_0xc8096a))&&(_0x2d4e57[_0x1ecca8]=_0x3cb899[0x21d*-0x2+0x14e5*0x1+-0x12*0xed],_0xc8096a=_0xc8096a['slice'](-0x17f0+-0x369+-0x1*-0x1b59,_0x3cb899['index'])),_0x2d4e57[_0x1ecca8]=_0x2d4e57[_0x1ecca8]||_0x26493c&&_0x1289bb[0x1208*-0x1+-0x1517+0x2722]&&_0x14f927[_0x1ecca8]||'',_0x1289bb[-0x17c5*-0x1+0x2161+-0x3922]&&(_0x2d4e57[_0x1ecca8]=_0x2d4e57[_0x1ecca8]['toLowerCas'+'e']())):_0xc8096a=_0x1289bb(_0xc8096a,_0x2d4e57);_0x6fb3fb&&(_0x2d4e57['query']=_0x6fb3fb(_0x2d4e57['query'])),_0x26493c&&_0x14f927['slashes']&&'/'!==_0x2d4e57['pathname']['charAt'](-0x18e6+0xe33+0xab3*0x1)&&(''!==_0x2d4e57['pathname']||''!==_0x14f927['pathname'])&&(_0x2d4e57['pathname']=function(_0x4c8c5d,_0x16c769){if(''===_0x4c8c5d)return _0x16c769;for(var _0x449620=(_0x16c769||'/')['split']('/')['slice'](0xa5*0xa+-0xf*0x12+-0x1*0x564,-(0x14*0x189+-0x21d*-0xd+0x4*-0xe8b))['concat'](_0x4c8c5d['split']('/')),_0x13fc38=_0x449620['length'],_0x1fb3e7=_0x449620[_0x13fc38-(-0xf*0x62+-0x26c9+0x2c88)],_0x2006c4=!(0xbd*-0x1d+0xf25*0x1+0x645),_0x24da74=0x39*0x5a+-0x4bf+0x3*-0x519;_0x13fc38--;)'.'===_0x449620[_0x13fc38]?_0x449620['splice'](_0x13fc38,0xf6*0x19+-0x3*0xa45+0x6ca):'..'===_0x449620[_0x13fc38]?(_0x449620['splice'](_0x13fc38,-0x2571*0x1+0x8*-0x394+0x4212),_0x24da74++):_0x24da74&&(-0xa4*0x3+-0x1*0x161b+0x1*0x1807===_0x13fc38&&(_0x2006c4=!(0x2563*-0x1+0x4e0+-0xcb*-0x29)),_0x449620['splice'](_0x13fc38,0x6*-0x377+-0xb38+0x2003),_0x24da74--);return _0x2006c4&&_0x449620['unshift'](''),'.'!==_0x1fb3e7&&'..'!==_0x1fb3e7||_0x449620['push'](''),_0x449620['join']('/');}(_0x2d4e57['pathname'],_0x14f927['pathname'])),'/'!==_0x2d4e57['pathname']['charAt'](-0x220e+0x2e*0x76+0xcda)&&_0x17d12b(_0x2d4e57['protocol'])&&(_0x2d4e57['pathname']='/'+_0x2d4e57['pathname']),_0x176c95(_0x2d4e57['port'],_0x2d4e57['protocol'])||(_0x2d4e57['host']=_0x2d4e57['hostname'],_0x2d4e57['port']=''),_0x2d4e57['username']=_0x2d4e57['password']='',_0x2d4e57['auth']&&(~(_0x3cb899=_0x2d4e57['auth']['indexOf'](':'))?(_0x2d4e57['username']=_0x2d4e57['auth']['slice'](0xb03+0x25c5+-0xe*0x37c,_0x3cb899),_0x2d4e57['username']=encodeURIComponent(decodeURIComponent(_0x2d4e57['username'])),_0x2d4e57['password']=_0x2d4e57['auth']['slice'](_0x3cb899+(-0x2a7*0xb+-0x1006+-0x4*-0xb4d)),_0x2d4e57['password']=encodeURIComponent(decodeURIComponent(_0x2d4e57['password']))):_0x2d4e57['username']=encodeURIComponent(decodeURIComponent(_0x2d4e57['auth'])),_0x2d4e57['auth']=_0x2d4e57['password']?_0x2d4e57['username']+':'+_0x2d4e57['password']:_0x2d4e57['username']),_0x2d4e57['origin']='file:'!==_0x2d4e57['protocol']&&_0x17d12b(_0x2d4e57['protocol'])&&_0x2d4e57['host']?_0x2d4e57['protocol']+'//'+_0x2d4e57['host']:'null',_0x2d4e57['href']=_0x2d4e57['toString']();}_0x694e00['prototype']={'set':function(_0x426ba3,_0x217fa6,_0xb3f99){var _0x5e5044=this;switch(_0x426ba3){case'query':'string'==typeof _0x217fa6&&_0x217fa6['length']&&(_0x217fa6=(_0xb3f99||_0x5a64fc['parse'])(_0x217fa6)),_0x5e5044[_0x426ba3]=_0x217fa6;break;case'port':_0x5e5044[_0x426ba3]=_0x217fa6,_0x176c95(_0x217fa6,_0x5e5044['protocol'])?_0x217fa6&&(_0x5e5044['host']=_0x5e5044['hostname']+':'+_0x217fa6):(_0x5e5044['host']=_0x5e5044['hostname'],_0x5e5044[_0x426ba3]='');break;case'hostname':_0x5e5044[_0x426ba3]=_0x217fa6,_0x5e5044['port']&&(_0x217fa6+=':'+_0x5e5044['port']),_0x5e5044['host']=_0x217fa6;break;case'host':_0x5e5044[_0x426ba3]=_0x217fa6,_0x52517c['test'](_0x217fa6)?(_0x217fa6=_0x217fa6['split'](':'),_0x5e5044['port']=_0x217fa6['pop'](),_0x5e5044['hostname']=_0x217fa6['join'](':')):(_0x5e5044['hostname']=_0x217fa6,_0x5e5044['port']='');break;case'protocol':_0x5e5044['protocol']=_0x217fa6['toLowerCas'+'e'](),_0x5e5044['slashes']=!_0xb3f99;break;case'pathname':case'hash':if(_0x217fa6){var _0x39b0aa='pathname'===_0x426ba3?'/':'#';_0x5e5044[_0x426ba3]=_0x217fa6['charAt'](-0x1824+0x2d1*-0xd+0x3cc1*0x1)!==_0x39b0aa?_0x39b0aa+_0x217fa6:_0x217fa6;}else _0x5e5044[_0x426ba3]=_0x217fa6;break;case'username':case'password':_0x5e5044[_0x426ba3]=encodeURIComponent(_0x217fa6);break;case'auth':var _0x5f1a39=_0x217fa6['indexOf'](':');~_0x5f1a39?(_0x5e5044['username']=_0x217fa6['slice'](0x53*0x11+0x47*-0x76+0x1b37,_0x5f1a39),_0x5e5044['username']=encodeURIComponent(decodeURIComponent(_0x5e5044['username'])),_0x5e5044['password']=_0x217fa6['slice'](_0x5f1a39+(-0x6ff+0x16c+0x594)),_0x5e5044['password']=encodeURIComponent(decodeURIComponent(_0x5e5044['password']))):_0x5e5044['username']=encodeURIComponent(decodeURIComponent(_0x217fa6));}for(var _0x5bfeb0=0x114a+0x8*0x70+0x6*-0x377;_0x5bfeb0<_0x32dbf6['length'];_0x5bfeb0++){var _0x171481=_0x32dbf6[_0x5bfeb0];_0x171481[-0x2546+0x1521+0x1029]&&(_0x5e5044[_0x171481[0xc67+-0x233f+0x16d9]]=_0x5e5044[_0x171481[-0x351+-0x23a0+0x26f2]]['toLowerCas'+'e']());}return _0x5e5044['auth']=_0x5e5044['password']?_0x5e5044['username']+':'+_0x5e5044['password']:_0x5e5044['username'],_0x5e5044['origin']='file:'!==_0x5e5044['protocol']&&_0x17d12b(_0x5e5044['protocol'])&&_0x5e5044['host']?_0x5e5044['protocol']+'//'+_0x5e5044['host']:'null',_0x5e5044['href']=_0x5e5044['toString'](),_0x5e5044;},'toString':function(_0xac05dc){_0xac05dc&&'function'==typeof _0xac05dc||(_0xac05dc=_0x5a64fc['stringify']);var _0x4d80cc,_0x5b3302=this,_0x20fbe0=_0x5b3302['host'],_0x1ea639=_0x5b3302['protocol'];_0x1ea639&&':'!==_0x1ea639['charAt'](_0x1ea639['length']-(0x2*0x71+0x50+-0x131*0x1))&&(_0x1ea639+=':');var _0x2181d1=_0x1ea639+(_0x5b3302['protocol']&&_0x5b3302['slashes']||_0x17d12b(_0x5b3302['protocol'])?'//':'');return _0x5b3302['username']?(_0x2181d1+=_0x5b3302['username'],_0x5b3302['password']&&(_0x2181d1+=':'+_0x5b3302['password']),_0x2181d1+='@'):_0x5b3302['password']?(_0x2181d1+=':'+_0x5b3302['password'],_0x2181d1+='@'):'file:'!==_0x5b3302['protocol']&&_0x17d12b(_0x5b3302['protocol'])&&!_0x20fbe0&&'/'!==_0x5b3302['pathname']&&(_0x2181d1+='@'),(':'===_0x20fbe0[_0x20fbe0['length']-(-0x9d*-0x1f+-0x25b1+0x12af*0x1)]||_0x52517c['test'](_0x5b3302['hostname'])&&!_0x5b3302['port'])&&(_0x20fbe0+=':'),_0x2181d1+=_0x20fbe0+_0x5b3302['pathname'],(_0x4d80cc='object'==typeof _0x5b3302['query']?_0xac05dc(_0x5b3302['query']):_0x5b3302['query'])&&(_0x2181d1+='?'!==_0x4d80cc['charAt'](0x2176+0x2*-0x1183+0x190)?'?'+_0x4d80cc:_0x4d80cc),_0x5b3302['hash']&&(_0x2181d1+=_0x5b3302['hash']),_0x2181d1;}},_0x694e00['extractPro'+'tocol']=_0x5a635d,_0x694e00['location']=_0x5a70a7,_0x694e00['trimLeft']=_0x94a803,_0x694e00['qs']=_0x5a64fc,_0x41d9a0['exports']=_0x694e00;},0x863:(_0x1462fb,_0x37e01d,_0x180172)=>{'use strict';var _0x3bf564=_0x180172(0x93*0x26+0x19f4+-0x28a3),_0x5883c4=_0x180172(-0x1605+-0x1404+0x34fe),_0x38a2f3=_0x180172(-0x43+0x92d*0x4+-0x17c0),_0x1b840d={'client':function(_0x2562fd,_0x7d84a6){return void(0x19bb+0x226b+0x1e13*-0x2)===(_0x7d84a6=_0x7d84a6||{})['masking']&&(_0x7d84a6['masking']=!(-0x482*0x5+0x2*-0x85d+0x2744)),new _0x5883c4(_0x2562fd,_0x7d84a6);},'server':function(_0x42b06d){return void(0x527*0x5+-0xb7*0x11+-0xd9c)===(_0x42b06d=_0x42b06d||{})['requireMas'+'king']&&(_0x42b06d['requireMas'+'king']=!(-0x7df+-0x106*0x1d+0x258d)),new _0x38a2f3(_0x42b06d);},'http':function(){return _0x38a2f3['http']['apply'](_0x38a2f3,arguments);},'isSecureRequest':function(_0x54928d){return _0x38a2f3['isSecureRe'+'quest'](_0x54928d);},'isWebSocket':function(_0xca4487){return _0x3bf564['isWebSocke'+'t'](_0xca4487);},'validateOptions':function(_0x332c2c,_0x57522d){_0x3bf564['validateOp'+'tions'](_0x332c2c,_0x57522d);}};_0x1462fb['exports']=_0x1b840d;},0x723:(_0xcc4a5d,_0x2b5601,_0x3b9658)=>{'use strict';var _0x4dcffb=_0x3b9658(-0xd8c+-0x3*-0x5f3+-0x370*-0x2)['Buffer'],_0x45541c=_0x3b9658(0x6a0+0xb0b*0x1+-0x1*0x59)['EventEmitt'+'er'],_0x68303=_0x3b9658(-0x4a*-0xc+0x355e+0x1597*-0x1),_0x2dccf1=_0x3b9658(0x1bcd+0x99*0x16+-0x1*0x172b),_0x287ed6=_0x3b9658(0xbc8+0xba3+-0xc9d),_0x5b9705=_0x3b9658(0x1*0x43fb+0x59*0xab+-0x5ce8),_0x27f164=function(_0x3d28f3,_0x2ea94e,_0x4697f4){_0x45541c['call'](this),_0x27f164['validateOp'+'tions'](_0x4697f4||{},['maxLength','masking','requireMas'+'king','protocols']),this['_request']=_0x3d28f3,this['_reader']=new _0x5b9705(),this['_options']=_0x4697f4||{},this['_maxLength']=this['_options']['maxLength']||this['MAX_LENGTH'],this['_headers']=new _0x287ed6(),this['__queue']=[],this['readyState']=0x7c8+0x34*-0x71+0xf2c*0x1,this['url']=_0x2ea94e,this['io']=new _0x2dccf1['IO'](this),this['messages']=new _0x2dccf1['Messages'](this),this['_bindEvent'+'Listeners']();};_0x68303['inherits'](_0x27f164,_0x45541c),_0x27f164['isWebSocke'+'t']=function(_0x1b834b){var _0x2faeda=_0x1b834b['headers']['connection']||'',_0x2601ca=_0x1b834b['headers']['upgrade']||'';return'GET'===_0x1b834b['method']&&_0x2faeda['toLowerCas'+'e']()['split'](/ *, */)['indexOf']('upgrade')>=-0xd7a+0x1bf*0x6+-0x40*-0xc&&'websocket'===_0x2601ca['toLowerCas'+'e']();},_0x27f164['validateOp'+'tions']=function(_0x5953ee,_0xd51970){for(var _0x55b223 in _0x5953ee)if(_0xd51970['indexOf'](_0x55b223)<0x75d*0x5+-0x1eca+-0x607)throw new Error('Unrecogniz'+'ed\x20option:'+'\x20'+_0x55b223);};var _0x465a2b={'MAX_LENGTH':0x3ffffff,'STATES':['connecting','open','closing','closed'],'_bindEventListeners':function(){var _0x238ae3=this;this['messages']['on']('error',function(){}),this['on']('message',function(_0x5e61fc){var _0x51ef29=_0x238ae3['messages'];_0x51ef29['readable']&&_0x51ef29['emit']('data',_0x5e61fc['data']);}),this['on']('error',function(_0x5b1ab8){var _0x117de9=_0x238ae3['messages'];_0x117de9['readable']&&_0x117de9['emit']('error',_0x5b1ab8);}),this['on']('close',function(){var _0x1da5e6=_0x238ae3['messages'];_0x1da5e6['readable']&&(_0x1da5e6['readable']=_0x1da5e6['writable']=!(0x713+-0x10d*-0x13+0x9*-0x301),_0x1da5e6['emit']('end'));});},'getState':function(){return this['STATES'][this['readyState']]||null;},'addExtension':function(_0x30713e){return!(0x7dd*-0x2+0x60*0x29+0x5b);},'setHeader':function(_0x3e0779,_0x1655f5){return!(this['readyState']>-0x9ee+0xd73*0x1+-0x35*0x11||(this['_headers']['set'](_0x3e0779,_0x1655f5),-0x82*-0xf+-0x2c2+-0x1*0x4dc));},'start':function(){if(0x1*-0x337+0x198b+-0x1654*0x1!==this['readyState'])return!(-0x1*-0x231d+-0xe5*0x21+-0x597);if(!_0x27f164['isWebSocke'+'t'](this['_request']))return this['_failHands'+'hake'](new Error('Not\x20a\x20WebS'+'ocket\x20requ'+'est'));var _0x35d6df;try{_0x35d6df=this['_handshake'+'Response']();}catch(_0x23e73f){return this['_failHands'+'hake'](_0x23e73f);}return this['_write'](_0x35d6df),-(0x1178*0x1+-0x2*0x9aa+0x1dd)!==this['_stage']&&this['_open'](),!(-0x1832+0x10*-0x23b+0x2a*0x16d);},'_failHandshake':function(_0x2fb933){var _0x4ab461=new _0x287ed6();return _0x4ab461['set']('Content-Ty'+'pe','text/plain'),_0x4ab461['set']('Content-Le'+'ngth',_0x4dcffb['byteLength'](_0x2fb933['message'],'utf8')),_0x4ab461=['HTTP/1.1\x204'+'00\x20Bad\x20Req'+'uest',_0x4ab461['toString'](),_0x2fb933['message']],this['_write'](_0x4dcffb['from'](_0x4ab461['join']('\x0d\x0a'),'utf8')),this['_fail']('protocol_e'+'rror',_0x2fb933['message']),!(0xb*0x157+-0x624+-0x8*0x113);},'text':function(_0x25d761){return this['frame'](_0x25d761);},'binary':function(_0x39f2d2){return!(-0x6c4+-0x85*-0x15+-0x424);},'ping':function(){return!(-0x1*-0x1bbf+-0x20ce+0x510);},'pong':function(){return!(-0x5*-0x485+-0xd6b+-0x1b*0x57);},'close':function(_0x1a572c,_0x4ea08d){return-0x267c+0x2263+0x41a===this['readyState']&&(this['readyState']=0x55d*-0x3+-0x1c82+-0x2*-0x164e,this['emit']('close',new _0x27f164['CloseEvent'](null,null)),!(0x1*-0x10db+0x1*0x20b8+0xfdd*-0x1));},'_open':function(){this['readyState']=0x26b*-0x3+0x1919+-0x1*0x11d7,this['__queue']['forEach'](function(_0x48f4f8){this['frame']['apply'](this,_0x48f4f8);},this),this['__queue']=[],this['emit']('open',new _0x27f164['OpenEvent']());},'_queue':function(_0x4262c0){return this['__queue']['push'](_0x4262c0),!(0x439*-0x5+0x1*0x1adf+0x16*-0x43);},'_write':function(_0x33bb8a){var _0x4a62b7=this['io'];_0x4a62b7['readable']&&_0x4a62b7['emit']('data',_0x33bb8a);},'_fail':function(_0x1915c9,_0x3769c4){this['readyState']=0x24a4+0x97d*0x1+0x1*-0x2e1f,this['emit']('error',new Error(_0x3769c4)),this['close']();}};for(var _0xa220bd in _0x465a2b)_0x27f164['prototype'][_0xa220bd]=_0x465a2b[_0xa220bd];_0x27f164['ConnectEve'+'nt']=function(){},_0x27f164['OpenEvent']=function(){},_0x27f164['CloseEvent']=function(_0x18cd04,_0x5c844d){this['code']=_0x18cd04,this['reason']=_0x5c844d;},_0x27f164['MessageEve'+'nt']=function(_0x4be260){this['data']=_0x4be260;},_0x27f164['PingEvent']=function(_0xf5b41){this['data']=_0xf5b41;},_0x27f164['PongEvent']=function(_0x17015c){this['data']=_0x17015c;},_0xcc4a5d['exports']=_0x27f164;},0xaf5:(_0x907ea4,_0x1fab3b,_0x1d32b0)=>{'use strict';var _0x35587f=_0x1d32b0(-0xf71+-0x2f5*-0x7+-0x1f9*-0x3)['Buffer'],_0x313cc9=_0x1d32b0(0x1af3+-0x13d*0x8+-0x9*-0x123),_0x1c03a4=_0x1d32b0(0x1356+-0x1*-0x1c1f+-0x140d),_0x21bdb6=_0x1d32b0(0x1*-0x3026+0xd7f+0x185*0x2e),_0x3108b9=_0x1d32b0(-0x96e+0x1*-0x1042+-0x34ff*-0x1),_0x15925d=_0x1d32b0(-0x1bd7*-0x1+0x1*0xfd1+-0x1*0x2485),_0x29975d=_0x1d32b0(0x298c*0x1+0x29*0x8b+-0x3*0xa49),_0x2b0f8d=_0x1d32b0(-0x42*-0x95+-0x115f*-0x1+-0x282d),_0x237459=function(_0x4f558b,_0x283f6a){this['version']='hybi-'+_0x29975d['VERSION'],_0x29975d['call'](this,null,_0x4f558b,_0x283f6a),this['readyState']=-(-0x1679+-0x19b0+0x2d*0x112),this['_key']=_0x237459['generateKe'+'y'](),this['_accept']=_0x29975d['generateAc'+'cept'](this['_key']),this['_http']=new _0x3108b9('response');var _0x536ba8=_0x1c03a4['parse'](this['url']),_0xd7e81b=_0x536ba8['auth']&&_0x35587f['from'](_0x536ba8['auth'],'utf8')['toString']('base64');if(this['VALID_PROT'+'OCOLS']['indexOf'](_0x536ba8['protocol'])<0x1*-0x206e+0x914+0x175a)throw new Error(this['url']+('\x20is\x20not\x20a\x20'+'valid\x20WebS'+'ocket\x20URL'));this['_pathname']=(_0x536ba8['pathname']||'/')+(_0x536ba8['search']||''),this['_headers']['set']('Host',_0x536ba8['host']),this['_headers']['set']('Upgrade','websocket'),this['_headers']['set']('Connection','Upgrade'),this['_headers']['set']('Sec-WebSoc'+'ket-Key',this['_key']),this['_headers']['set']('Sec-WebSoc'+'ket-Versio'+'n',_0x29975d['VERSION']),this['_protocols']['length']>0x1*-0x2424+0xf9*0x3+0x13b*0x1b&&this['_headers']['set']('Sec-WebSoc'+'ket-Protoc'+'ol',this['_protocols']['join'](',\x20')),_0xd7e81b&&this['_headers']['set']('Authorizat'+'ion','Basic\x20'+_0xd7e81b);};_0x21bdb6['inherits'](_0x237459,_0x29975d),_0x237459['generateKe'+'y']=function(){return _0x313cc9['randomByte'+'s'](0x1*0x1ad5+-0xed3+-0x5f9*0x2)['toString']('base64');};var _0x8a5410={'VALID_PROTOCOLS':['ws:','wss:'],'proxy':function(_0x2f28c3,_0x172834){return new _0x2b0f8d(this,_0x2f28c3,_0x172834);},'start':function(){return-(-0x17c3+-0x32b+-0x1*-0x1aef)===this['readyState']&&(this['_write'](this['_handshake'+'Request']()),this['readyState']=0x453*-0x1+0x269b+-0x2248,!(0x17de+-0xb*0x1a7+-0x5b1));},'parse':function(_0x30c66b){if(-0x30e+-0x1814+0x1b25*0x1!==this['readyState']){if(this['readyState']>0x1b6d+-0x7a5+-0x3*0x698)return _0x29975d['prototype']['parse']['call'](this,_0x30c66b);this['_http']['parse'](_0x30c66b),this['_http']['isComplete']()&&(this['_validateH'+'andshake'](),0x3b+-0x2057+0x201f!==this['readyState']&&(this['_open'](),this['parse'](this['_http']['body'])));}},'_handshakeRequest':function(){var _0x454000=this['_extension'+'s']['generateOf'+'fer']();_0x454000&&this['_headers']['set']('Sec-WebSoc'+'ket-Extens'+'ions',_0x454000);var _0x537039=['GET\x20'+this['_pathname']+'\x20HTTP/1.1',this['_headers']['toString'](),''];return _0x35587f['from'](_0x537039['join']('\x0d\x0a'),'utf8');},'_failHandshake':function(_0x5269d1){_0x5269d1='Error\x20duri'+'ng\x20WebSock'+'et\x20handsha'+'ke:\x20'+_0x5269d1,this['readyState']=0x1*-0x94d+0x1252+0x902*-0x1,this['emit']('error',new Error(_0x5269d1)),this['emit']('close',new _0x15925d['CloseEvent'](this['ERRORS']['protocol_e'+'rror'],_0x5269d1));},'_validateHandshake':function(){if(this['statusCode']=this['_http']['statusCode'],this['headers']=this['_http']['headers'],this['_http']['error'])return this['_failHands'+'hake'](this['_http']['error']['message']);if(0x9d*0x8+0x94d+0x1ba*-0x8!==this['_http']['statusCode'])return this['_failHands'+'hake']('Unexpected'+'\x20response\x20'+'code:\x20'+this['_http']['statusCode']);var _0x5d4cf0=this['_http']['headers'],_0x4688ee=_0x5d4cf0['upgrade']||'',_0x4f2821=_0x5d4cf0['connection']||'',_0x94f564=_0x5d4cf0['sec-websoc'+'ket-accept']||'',_0x565027=_0x5d4cf0['sec-websoc'+'ket-protoc'+'ol']||'';if(''===_0x4688ee)return this['_failHands'+'hake']('\x27Upgrade\x27\x20'+'header\x20is\x20'+'missing');if('websocket'!==_0x4688ee['toLowerCas'+'e']())return this['_failHands'+'hake']('\x27Upgrade\x27\x20'+'header\x20val'+'ue\x20is\x20not\x20'+'\x27WebSocket'+'\x27');if(''===_0x4f2821)return this['_failHands'+'hake']('\x27Connectio'+'n\x27\x20header\x20'+'is\x20missing');if('upgrade'!==_0x4f2821['toLowerCas'+'e']())return this['_failHands'+'hake']('\x27Connectio'+'n\x27\x20header\x20'+'value\x20is\x20n'+'ot\x20\x27Upgrad'+'e\x27');if(_0x94f564!==this['_accept'])return this['_failHands'+'hake']('Sec-WebSoc'+'ket-Accept'+'\x20mismatch');if(this['protocol']=null,''!==_0x565027){if(this['_protocols']['indexOf'](_0x565027)<0x1*-0x1fb2+0x3*0x61b+0x1*0xd61)return this['_failHands'+'hake']('Sec-WebSoc'+'ket-Protoc'+'ol\x20mismatc'+'h');this['protocol']=_0x565027;}try{this['_extension'+'s']['activate'](this['headers']['sec-websoc'+'ket-extens'+'ions']);}catch(_0x508475){return this['_failHands'+'hake'](_0x508475['message']);}}};for(var _0xc9184c in _0x8a5410)_0x237459['prototype'][_0xc9184c]=_0x8a5410[_0xc9184c];_0x907ea4['exports']=_0x237459;},0xc9f:(_0x16041b,_0x413959,_0x1bbab8)=>{'use strict';var _0x578d51=_0x1bbab8(-0xfe3*0x2+-0x1df8+0x48eb)['Buffer'],_0x1d7831=_0x1bbab8(-0x21*0xb7+0x17*-0x8b+0x2b37),_0x3b3fe5=function(_0x505b5c,_0x4e541c,_0x125800){_0x1d7831['apply'](this,arguments),this['_stage']=0x1*0xf4a+0x1*0x25cf+0x3*-0x11b3,this['version']='hixie-75',this['_headers']['set']('Upgrade','WebSocket'),this['_headers']['set']('Connection','Upgrade'),this['_headers']['set']('WebSocket-'+'Origin',this['_request']['headers']['origin']),this['_headers']['set']('WebSocket-'+'Location',this['url']);};_0x1bbab8(0x1*-0x10f7+-0x1*0x305d+0x6493)['inherits'](_0x3b3fe5,_0x1d7831);var _0x5d1aab={'close':function(){return 0x17e2*0x1+0x4*-0x532+-0x71*0x7!==this['readyState']&&(this['readyState']=0x1862*-0x1+-0x1*-0x25ab+-0xd46,this['emit']('close',new _0x1d7831['CloseEvent'](null,null)),!(-0x1c6*-0x14+-0x19f0+-0xa*0xf4));},'parse':function(_0x410aa2){this['readyState']>0xfd*-0x2+0x24d7+-0x22dc||(this['_reader']['put'](_0x410aa2),this['_reader']['eachByte'](function(_0x23bee2){var _0x56e3d2;switch(this['_stage']){case-(0xc2e+0x201e+-0x1d*0x187):this['_body']['push'](_0x23bee2),this['_sendHands'+'hakeBody']();break;case-0xfb9+-0xfa4*0x2+0x2f01:this['_parseLead'+'ingByte'](_0x23bee2);break;case-0x15*-0x79+-0x28+-0x9c4:if(this['_length']=(-0x1ec9+0x523+0x1a25*0x1&_0x23bee2)+(-0x9b4+0x642+-0x1*-0x3f2)*this['_length'],this['_closing']&&-0x684*0x1+-0x1*0x1621+0x1ca5===this['_length'])return this['close']();0x8a5*0x3+-0x503*0x2+0x1*-0xf69&~_0x23bee2&&(-0x97d*-0x2+0x5*0x635+-0x3203===this['_length']?this['_stage']=-0x16*-0x158+-0x5*0x2ad+-0x102f:(this['_skipped']=0x1ae5+-0xc0c+-0xed9*0x1,this['_stage']=0x67*-0x3d+-0x64d*0x3+0x2b74));break;case-0x67*-0x3a+-0x3*-0x5c1+0x2897*-0x1:if(0x157d*0x1+0x1f4a+-0x33c8===_0x23bee2)this['_stage']=-0x20*-0x2+0x9*-0x417+-0x7*-0x539,_0x56e3d2=_0x578d51['from'](this['_buffer'])['toString']('utf8',-0x11c7+0x1*-0x9c7+0x1*0x1b8e,this['_buffer']['length']),this['emit']('message',new _0x1d7831['MessageEve'+'nt'](_0x56e3d2));else{if(this['_length'])this['_skipped']+=-0x1cf5+0x15f*0x2+0x1a38,this['_skipped']===this['_length']&&(this['_stage']=0x1*0x24cd+0x161e*-0x1+-0xeaf);else{if(this['_buffer']['push'](_0x23bee2),this['_buffer']['length']>this['_maxLength'])return this['close']();}}}},this));},'frame':function(_0x19eba2){if(-0x61*-0x35+-0x157*-0x7+0x6*-0x4e9===this['readyState'])return this['_queue']([_0x19eba2]);if(this['readyState']>0x12b9+-0x4de+-0xdda)return!(-0x11c0+0x1a47+-0x886);'string'!=typeof _0x19eba2&&(_0x19eba2=_0x19eba2['toString']());var _0x40d3af=_0x578d51['byteLength'](_0x19eba2),_0xc4aec6=_0x578d51['allocUnsaf'+'e'](_0x40d3af+(0x6c4*0x2+0xca7+-0x1a2d));return _0xc4aec6[0x1ac6+-0x2b*0x1+-0x1a9b]=0x8a4+-0x3*-0x2fb+-0x7*0x283,_0xc4aec6['write'](_0x19eba2,0x25*-0x49+-0x1*0xc51+0x16df),_0xc4aec6[_0xc4aec6['length']-(0x19*0x187+-0x1f3*-0x2+-0x2a14)]=-0x263d*-0x1+-0x1994+-0xbaa,this['_write'](_0xc4aec6),!(-0x1*0x802+-0x1d5e+-0x12b0*-0x2);},'_handshakeResponse':function(){var _0x59e8b3=['HTTP/1.1\x201'+'01\x20Web\x20Soc'+'ket\x20Protoc'+'ol\x20Handsha'+'ke',this['_headers']['toString'](),''];return _0x578d51['from'](_0x59e8b3['join']('\x0d\x0a'),'utf8');},'_parseLeadingByte':function(_0x18bda2){-0x25*0x51+0x24*0x9e+-0xe9*0xb&~_0x18bda2?(delete this['_length'],delete this['_skipped'],this['_buffer']=[],this['_stage']=0x4f3+-0xb*0x255+-0x1*-0x14b6):(this['_length']=-0xf*-0x35+-0x16*-0xc4+-0x13f3,this['_stage']=-0x3*0x372+-0x5c0+0x1017);}};for(var _0x4a75c5 in _0x5d1aab)_0x3b3fe5['prototype'][_0x4a75c5]=_0x5d1aab[_0x4a75c5];_0x16041b['exports']=_0x3b3fe5;},0x1922:(_0x280377,_0x4801b6,_0x5e8e59)=>{'use strict';var _0x4a9f7f=_0x5e8e59(0x2*-0x64b+-0x1faf+0x12e*0x2f)['Buffer'],_0x1ca035=_0x5e8e59(0x1*0x1b32+0x108f+-0x1*0x249e),_0x2393d1=_0x5e8e59(-0x1797+0x5b0+0x1e86),_0x26b6a7=_0x5e8e59(0x23c*-0xb+-0xbb*0xa+0x3b28),_0x353091=_0x5e8e59(0x1d2f+0x1d2c*-0x1+0x233c),_0x468f36=function(_0x490cb2){return parseInt((_0x490cb2['match'](/[0-9]/g)||[])['join'](''),0x1b7d+0x21c+-0x1d8f);},_0x45aaf7=function(_0x2f9c00){return(_0x2f9c00['match'](/ /g)||[])['length'];},_0xd656f7=function(_0x4aa906,_0x36f86c,_0x22c930){_0x2393d1['apply'](this,arguments),this['_stage']=-(-0x3*-0xc89+-0x1d1b+-0x1d*0x4b),this['_body']=[],this['version']='hixie-76',this['_headers']['clear'](),this['_headers']['set']('Upgrade','WebSocket'),this['_headers']['set']('Connection','Upgrade'),this['_headers']['set']('Sec-WebSoc'+'ket-Origin',this['_request']['headers']['origin']),this['_headers']['set']('Sec-WebSoc'+'ket-Locati'+'on',this['url']);};_0x353091['inherits'](_0xd656f7,_0x2393d1);var _0xe9ef52={'BODY_SIZE':0x8,'start':function(){return!!_0x2393d1['prototype']['start']['call'](this)&&(this['_started']=!(0x621+-0xad*-0x17+-0x4*0x56b),this['_sendHands'+'hakeBody'](),!(0x2dd*-0x3+-0xd47+0x3*0x74a));},'close':function(){return 0xa03+0x641*0x2+0xb41*-0x2!==this['readyState']&&(0x118c*0x2+0x176+-0xc2f*0x3===this['readyState']&&this['_write'](_0x4a9f7f['from']([0x925*0x3+-0x1ffb+0x81*0xb,0x6d0+-0x2*-0xc2c+-0x1f28])),this['readyState']=-0x1af2+-0x1d82+0x3877,this['emit']('close',new _0x1ca035['CloseEvent'](null,null)),!(0x1c6b+-0x2417+0x7ac));},'_handshakeResponse':function(){var _0x111d9c=(_0x4cc5da=this['_request']['headers'])['sec-websoc'+'ket-key1'],_0x37c15b=_0x4cc5da['sec-websoc'+'ket-key2'];if(!_0x111d9c)throw new Error('Missing\x20re'+'quired\x20hea'+'der:\x20Sec-W'+'ebSocket-K'+'ey1');if(!_0x37c15b)throw new Error('Missing\x20re'+'quired\x20hea'+'der:\x20Sec-W'+'ebSocket-K'+'ey2');var _0x1d6041=_0x468f36(_0x111d9c),_0x5d9b50=_0x45aaf7(_0x111d9c),_0x35ad10=_0x468f36(_0x37c15b),_0x25f147=_0x45aaf7(_0x37c15b);if(_0x1d6041%_0x5d9b50!=-0x3a1*-0x5+-0x3*-0x5ed+-0x8fb*0x4||_0x35ad10%_0x25f147!=-0xa9*-0x1b+-0x23*-0x34+0x18ef*-0x1)throw new Error('Client\x20sen'+'t\x20invalid\x20'+'Sec-WebSoc'+'ket-Key\x20he'+'aders');this['_keyValues']=[_0x1d6041/_0x5d9b50,_0x35ad10/_0x25f147];var _0x4cc5da=['HTTP/1.1\x201'+'01\x20WebSock'+'et\x20Protoco'+'l\x20Handshak'+'e',this['_headers']['toString'](),''];return _0x4a9f7f['from'](_0x4cc5da['join']('\x0d\x0a'),'binary');},'_handshakeSignature':function(){if(this['_body']['length']this['BODY_SIZE']&&this['parse'](this['_body']['slice'](this['BODY_SIZE'])));}},'_parseLeadingByte':function(_0x1a1d14){if(-0x2cd*0x8+-0xd38+0x249f!==_0x1a1d14)return _0x2393d1['prototype']['_parseLead'+'ingByte']['call'](this,_0x1a1d14);this['_closing']=!(-0x3a*0x7b+0x1492+-0x1d3*-0x4),this['_length']=0x1*0x2576+0x5f1+0x10f*-0x29,this['_stage']=0x14c4+-0xc2d*0x1+-0x896;}};for(var _0x2b91ed in _0xe9ef52)_0xd656f7['prototype'][_0x2b91ed]=_0xe9ef52[_0x2b91ed];_0x280377['exports']=_0xd656f7;},0xace:_0x49bbfa=>{'use strict';var _0x46fa53=function(){this['clear']();};_0x46fa53['prototype']['ALLOWED_DU'+'PLICATES']=['set-cookie','set-cookie'+'2','warning','www-authen'+'ticate'],_0x46fa53['prototype']['clear']=function(){this['_sent']={},this['_lines']=[];},_0x46fa53['prototype']['set']=function(_0x3d08de,_0x28d037){if(void(0xda*-0xe+-0x2592+-0x5*-0x9e6)!==_0x28d037){_0x3d08de=this['_strip'](_0x3d08de),_0x28d037=this['_strip'](_0x28d037);var _0x330986=_0x3d08de['toLowerCas'+'e']();(!this['_sent']['hasOwnProp'+'erty'](_0x330986)||this['ALLOWED_DU'+'PLICATES']['indexOf'](_0x330986)>=-0x1d*-0x2f+0x5fc+-0xb4f)&&(this['_sent'][_0x330986]=!(-0x34*-0xa3+0x1*-0x1990+-0x3*0x284),this['_lines']['push'](_0x3d08de+':\x20'+_0x28d037+'\x0d\x0a'));}},_0x46fa53['prototype']['toString']=function(){return this['_lines']['join']('');},_0x46fa53['prototype']['_strip']=function(_0x1b8a13){return _0x1b8a13['toString']()['replace'](/^ */,'')['replace'](/ *$/,'');},_0x49bbfa['exports']=_0x46fa53;},0x20f4:(_0x386b13,_0x60605e,_0x555bb9)=>{'use strict';var _0x3e61aa=_0x555bb9(0x1208+-0x15cd+-0x2*-0x779)['Buffer'],_0x3cc8d9=_0x555bb9(-0x2817+0x21ab+0x21b2),_0xa80ebf=_0x555bb9(0x3c15+-0x5*-0xbe3+0x1*-0x5445),_0x3712a5=_0x555bb9(0x505+0x24da+0x1d9*-0xc),_0x1f1f1c=_0x555bb9(0x5*-0x733+-0x15fb+0x411d),_0x11e4d4=_0x555bb9(0xc5d+0x1f2e+-0x7*0x443),_0x4ee80e=_0x555bb9(0x478+0x33+0x1*0xd79),_0x951cbe=function(_0x3200a5,_0x24704a,_0x594e64){if(_0x1f1f1c['apply'](this,arguments),this['_extension'+'s']=new _0x3712a5(),this['_stage']=-0x1dcb+-0x2*-0x26b+0x1*0x18f5,this['_masking']=this['_options']['masking'],this['_protocols']=this['_options']['protocols']||[],this['_requireMa'+'sking']=this['_options']['requireMas'+'king'],this['_pingCallb'+'acks']={},'string'==typeof this['_protocols']&&(this['_protocols']=this['_protocols']['split'](/ *, */)),this['_request']){var _0x170485=this['_request']['headers']['sec-websoc'+'ket-protoc'+'ol'],_0x12a7e5=this['_protocols'];void(-0xf12+-0x2b*-0x37+-0x1*-0x5d5)!==_0x170485&&('string'==typeof _0x170485&&(_0x170485=_0x170485['split'](/ *, */)),this['protocol']=_0x170485['filter'](function(_0x315d3d){return _0x12a7e5['indexOf'](_0x315d3d)>=0x1282*0x2+-0x2cd*-0x9+0x1*-0x3e39;})[-0x2a*0x49+-0x2*-0x12b5+0x4a*-0x58]),this['version']='hybi-'+_0x951cbe['VERSION'];}};_0xa80ebf['inherits'](_0x951cbe,_0x1f1f1c),_0x951cbe['VERSION']='13',_0x951cbe['mask']=function(_0x296db0,_0x24e70f,_0x312aef){if(!_0x24e70f||0xcd1+0x2*0x621+-0x395*0x7===_0x24e70f['length'])return _0x296db0;_0x312aef=_0x312aef||-0x4c1*-0x5+-0x2e1*-0x5+0x262a*-0x1;for(var _0x4d3280=-0x12e7*-0x1+0x229a+-0x3581,_0x1b2a1f=_0x296db0['length']-_0x312aef;_0x4d3280<_0x1b2a1f;_0x4d3280++)_0x296db0[_0x312aef+_0x4d3280]=_0x296db0[_0x312aef+_0x4d3280]^_0x24e70f[_0x4d3280%(-0x78f+0xc87+0x4f4*-0x1)];return _0x296db0;},_0x951cbe['generateAc'+'cept']=function(_0x525873){var _0xc2c596=_0x3cc8d9['createHash']('sha1');return _0xc2c596['update'](_0x525873+_0x951cbe['GUID']),_0xc2c596['digest']('base64');},_0x951cbe['GUID']='258EAFA5-E'+'914-47DA-9'+'5CA-C5AB0D'+'C85B11';var _0x4e58fb={'FIN':0x80,'MASK':0x80,'RSV1':0x40,'RSV2':0x20,'RSV3':0x10,'OPCODE':0xf,'LENGTH':0x7f,'OPCODES':{'continuation':0x0,'text':0x1,'binary':0x2,'close':0x8,'ping':0x9,'pong':0xa},'OPCODE_CODES':[-0x632+-0x54f+0xb81,-0x2b*-0x43+0x1caa+-0x106*0x27,-0x23e2+-0x21e7+0x45cb,0x14b*-0x16+-0x1*0x101c+0x2c96,0x9*0x3f5+-0x7ed*-0x4+0x21a4*-0x2,-0x21b1+-0x4*0x59f+-0x12bd*-0x3],'MESSAGE_OPCODES':[-0x628*0x4+-0x27*-0xda+-0x896,0x1*0x1843+-0x1*0x247d+-0x1f*-0x65,-0x1609+-0x3*0xc11+-0x3*-0x136a],'OPENING_OPCODES':[0x1aff+0x6f2*0x1+-0x21f0,0x199*-0x5+-0x1fbf+0x27be],'ERRORS':{'normal_closure':0x3e8,'going_away':0x3e9,'protocol_error':0x3ea,'unacceptable':0x3eb,'encoding_error':0x3ef,'policy_violation':0x3f0,'too_large':0x3f1,'extension_error':0x3f2,'unexpected_condition':0x3f3},'ERROR_CODES':[-0x218c+-0x6*-0x3df+-0x71d*-0x2,0x23aa+0xaba+-0x2a7b,-0x907+-0x72*0x2e+0x1*0x216d,0x173*-0xe+-0x195c+0x1*0x3191,-0x2*0x5c4+-0x1*-0x1ec5+0x28d*-0x6,0x1f5+0x2121+-0x3*0xa62,-0x1*-0x2425+-0x321*-0x3+-0x2997,0xf5d+-0x8*0x361+-0x7*-0x23b,0x433*0x2+-0x8db+0x1*0x468],'DEFAULT_ERROR_CODE':0x3e8,'MIN_RESERVED_ERROR':0xbb8,'MAX_RESERVED_ERROR':0x1387,'UTF8_MATCH':/^([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$/,'addExtension':function(_0x27a4d6){return this['_extension'+'s']['add'](_0x27a4d6),!(0x125a+0x20f8+0x3352*-0x1);},'parse':function(_0x5f5a42){this['_reader']['put'](_0x5f5a42);for(var _0x3983fd=!(0x10f3+0x1d3*-0x10+0xd*0xf1);_0x3983fd;)switch(this['_stage']){case 0x956+-0x9b8+0x62:(_0x3983fd=this['_reader']['read'](0x1*0x74c+0x3*0xc6e+0x2c95*-0x1))&&this['_parseOpco'+'de'](_0x3983fd[0x1df8*-0x1+0x1116+-0x671*-0x2]);break;case-0x1*0x12b5+-0x922*-0x3+-0x8b0:(_0x3983fd=this['_reader']['read'](-0x2069+-0x49+0x20b3))&&this['_parseLeng'+'th'](_0x3983fd[0xe4e+-0xcd7+-0x177]);break;case-0x1258+0x1c05+0x1ef*-0x5:(_0x3983fd=this['_reader']['read'](this['_frame']['lengthByte'+'s']))&&this['_parseExte'+'ndedLength'](_0x3983fd);break;case 0xb72+-0x1bb7*-0x1+0x1*-0x2726:(_0x3983fd=this['_reader']['read'](-0x1*-0x1505+0x11e2+0x1*-0x26e3))&&(this['_stage']=0x1*0x22bf+-0x1d09+0x12*-0x51,this['_frame']['maskingKey']=_0x3983fd);break;case 0x1772*0x1+-0x1*-0xdfe+-0x77c*0x5:(_0x3983fd=this['_reader']['read'](this['_frame']['length']))&&(this['_stage']=-0x1f2*0x1+0x1283+-0x1091,this['_emitFrame'](_0x3983fd));break;default:_0x3983fd=null;}},'text':function(_0x1f6bee){return!(this['readyState']>0x23*0xc4+0x5ba+-0x2085)&&this['frame'](_0x1f6bee,'text');},'binary':function(_0x33ce8f){return!(this['readyState']>0x1c67+-0x253f+0x8d9)&&this['frame'](_0x33ce8f,'binary');},'ping':function(_0x58d620,_0x5a1c15){return!(this['readyState']>0x1d*-0x14f+0x11*0x1cd+0x757*0x1)&&(_0x58d620=_0x58d620||'',_0x5a1c15&&(this['_pingCallb'+'acks'][_0x58d620]=_0x5a1c15),this['frame'](_0x58d620,'ping'));},'pong':function(_0x3b0c2b){return!(this['readyState']>0x170+-0x30a*0xc+0x2309)&&(_0x3b0c2b=_0x3b0c2b||'',this['frame'](_0x3b0c2b,'pong'));},'close':function(_0x5a2fde,_0x53e08f){return _0x5a2fde=_0x5a2fde||'',_0x53e08f=_0x53e08f||this['ERRORS']['normal_clo'+'sure'],this['readyState']<=0x1ec+-0x10fa+0x787*0x2?(this['readyState']=0x27e*0x4+-0x1*0x6ac+-0x349,this['emit']('close',new _0x1f1f1c['CloseEvent'](_0x53e08f,_0x5a2fde)),!(0x19df*0x1+-0x221a+0x83b)):0x1*0x983+-0x146b+-0xae9*-0x1===this['readyState']&&(this['readyState']=-0x1d6d+-0x2*-0xd69+0x3*0xdf,this['_extension'+'s']['close'](function(){this['frame'](_0x5a2fde,'close',_0x53e08f);},this),!(-0x10ee+-0x33*-0x3+0x1055));},'frame':function(_0x4bf881,_0xdf709,_0x148fe2){if(this['readyState']<=0x9ff*-0x2+0x2*-0x526+0xf25*0x2)return this['_queue']([_0x4bf881,_0xdf709,_0x148fe2]);if(this['readyState']>0x279*-0x3+-0x2f5+0x2*0x531)return!(0x2017+0x88f+-0x5*0x821);_0x4bf881 instanceof Array&&(_0x4bf881=_0x3e61aa['from'](_0x4bf881)),'number'==typeof _0x4bf881&&(_0x4bf881=_0x4bf881['toString']());var _0x14b217,_0xb29409,_0x53e928=new _0x4ee80e(),_0x2d2fb3='string'==typeof _0x4bf881;_0x53e928['rsv1']=_0x53e928['rsv2']=_0x53e928['rsv3']=!(-0x7*0x162+-0x103a+-0xc9*-0x21),_0x53e928['opcode']=this['OPCODES'][_0xdf709||(_0x2d2fb3?'text':'binary')],_0x14b217=_0x2d2fb3?_0x3e61aa['from'](_0x4bf881,'utf8'):_0x4bf881,_0x148fe2&&(_0xb29409=_0x14b217,(_0x14b217=_0x3e61aa['allocUnsaf'+'e'](0x1*-0x2248+-0x23c6*-0x1+0x17c*-0x1+_0xb29409['length']))['writeUInt1'+'6BE'](_0x148fe2,-0x2*-0x11e1+-0x3a6*-0x2+-0xe5a*0x3),_0xb29409['copy'](_0x14b217,-0x15a3+-0x8db*-0x2+0x3ef)),_0x53e928['data']=_0x14b217;var _0x288c84=function(_0x4caf11){var _0x5746bc=new _0x11e4d4();_0x5746bc['final']=!(0x4bd*0x5+0x2a6+-0x1*0x1a57),_0x5746bc['rsv1']=_0x4caf11['rsv1'],_0x5746bc['rsv2']=_0x4caf11['rsv2'],_0x5746bc['rsv3']=_0x4caf11['rsv3'],_0x5746bc['opcode']=_0x4caf11['opcode'],_0x5746bc['masked']=!!this['_masking'],_0x5746bc['length']=_0x4caf11['data']['length'],_0x5746bc['payload']=_0x4caf11['data'],_0x5746bc['masked']&&(_0x5746bc['maskingKey']=_0x3cc8d9['randomByte'+'s'](-0x2*0xf13+0x2f0+0x1b3a)),this['_sendFrame'](_0x5746bc);};return this['MESSAGE_OP'+'CODES']['indexOf'](_0x53e928['opcode'])>=0x886*-0x1+0x1d*-0x62+-0x10*-0x13a?this['_extension'+'s']['processOut'+'goingMessa'+'ge'](_0x53e928,function(_0x198b32,_0x5a529c){if(_0x198b32)return this['_fail']('extension_'+'error',_0x198b32['message']);_0x288c84['call'](this,_0x5a529c);},this):_0x288c84['call'](this,_0x53e928),!(0x1508+0x356+-0xc2f*0x2);},'_sendFrame':function(_0x2dce9f){var _0x33bdb8=_0x2dce9f['length'],_0x3451bf=_0x33bdb8<=0x3ef+-0x40b+0x99?-0x1a0d*0x1+0x5c5*0x1+-0x2*-0xa25:_0x33bdb8<=-0x909*0x1d+0x8fc9+0x1763b?0x31*0x1+-0x6fd+0x6d0:0x1571+0x2d2*0x4+-0x20af,_0x5b3bcf=_0x3451bf+(_0x2dce9f['masked']?-0x2633*0x1+-0x1077+0x36ae:0x6f*0x5+0x3*0xcfb+-0x3*0xdb4),_0x54b45e=_0x3e61aa['allocUnsaf'+'e'](_0x5b3bcf+_0x33bdb8),_0x12a78a=_0x2dce9f['masked']?this['MASK']:-0x3*0x4ff+0x147*0xd+0x8a*-0x3;_0x54b45e[0x13ca+0x683*-0x5+0x1*0xcc5]=(_0x2dce9f['final']?this['FIN']:0x24e8+0xac*-0xe+-0x1b80)|(_0x2dce9f['rsv1']?this['RSV1']:0xf8d+0x24f1+-0x347e)|(_0x2dce9f['rsv2']?this['RSV2']:0x1f73+0x29*0x71+0xc63*-0x4)|(_0x2dce9f['rsv3']?this['RSV3']:-0x1*-0x45d+-0x131f+0xec2)|_0x2dce9f['opcode'],_0x33bdb8<=-0x223e+-0xd63*-0x1+0xaac*0x2?_0x54b45e[-0xb7*0x26+-0x15cc+-0x30f7*-0x1]=_0x12a78a|_0x33bdb8:_0x33bdb8<=-0x12d9d+0xca4c+0x16350?(_0x54b45e[0x1a81+-0x3fd+-0x1683]=0xcf4+0x296*0x4+-0x8b*0x2a|_0x12a78a,_0x54b45e['writeUInt1'+'6BE'](_0x33bdb8,0x54*0x10+0x2*-0x391+0x16*0x16)):(_0x54b45e[0xb*0x205+-0xf01+-0x3*0x267]=-0x217a+0x255f+0x3*-0x122|_0x12a78a,_0x54b45e['writeUInt3'+'2BE'](Math['floor'](_0x33bdb8/(0x121e79a48+0x9f7fd2c+0x1*-0x2bdf9774)),-0x15c2*-0x1+0xf3f+0xb*-0x35d),_0x54b45e['writeUInt3'+'2BE'](_0x33bdb8%(-0x422*0x2e6c+-0x1fbb1f194+-0x6317*-0x7b6f4),0x1b5*-0xf+-0x20cd+0x3a6e)),_0x2dce9f['payload']['copy'](_0x54b45e,_0x5b3bcf),_0x2dce9f['masked']&&(_0x2dce9f['maskingKey']['copy'](_0x54b45e,_0x3451bf),_0x951cbe['mask'](_0x54b45e,_0x2dce9f['maskingKey'],_0x5b3bcf)),this['_write'](_0x54b45e);},'_handshakeResponse':function(){var _0x1cfe00=this['_request']['headers']['sec-websoc'+'ket-key'],_0x387420=this['_request']['headers']['sec-websoc'+'ket-versio'+'n'];if(_0x387420!==_0x951cbe['VERSION'])throw new Error('Unsupporte'+'d\x20WebSocke'+'t\x20version:'+'\x20'+_0x387420);if('string'!=typeof _0x1cfe00)throw new Error('Missing\x20ha'+'ndshake\x20re'+'quest\x20head'+'er:\x20Sec-We'+'bSocket-Ke'+'y');this['_headers']['set']('Upgrade','websocket'),this['_headers']['set']('Connection','Upgrade'),this['_headers']['set']('Sec-WebSoc'+'ket-Accept',_0x951cbe['generateAc'+'cept'](_0x1cfe00)),this['protocol']&&this['_headers']['set']('Sec-WebSoc'+'ket-Protoc'+'ol',this['protocol']);var _0x20e803=this['_extension'+'s']['generateRe'+'sponse'](this['_request']['headers']['sec-websoc'+'ket-extens'+'ions']);_0x20e803&&this['_headers']['set']('Sec-WebSoc'+'ket-Extens'+'ions',_0x20e803);var _0x158a5=['HTTP/1.1\x201'+'01\x20Switchi'+'ng\x20Protoco'+'ls',this['_headers']['toString'](),''];return _0x3e61aa['from'](_0x158a5['join']('\x0d\x0a'),'utf8');},'_shutdown':function(_0x4dc358,_0x9dffae,_0x5ba647){delete this['_frame'],delete this['_message'],this['_stage']=-0x2509+0x136f+0x119f;var _0x43856c=-0x1*0x1609+0x1ad9+0x4cf*-0x1===this['readyState'];this['readyState']=-0x7d+-0x8aa*0x4+0x2327*0x1,this['_extension'+'s']['close'](function(){_0x43856c&&this['frame'](_0x9dffae,'close',_0x4dc358),this['readyState']=0x253*-0x1+0x3*0xa55+-0x1ca9,_0x5ba647&&this['emit']('error',new Error(_0x9dffae)),this['emit']('close',new _0x1f1f1c['CloseEvent'](_0x4dc358,_0x9dffae));},this);},'_fail':function(_0x5e8918,_0x102403){this['readyState']>-0x476+-0x2064+0x24db||this['_shutdown'](this['ERRORS'][_0x5e8918],_0x102403,!(0x1dfe+-0x53+-0x1dab));},'_parseOpcode':function(_0x263d91){var _0x16efc8=[this['RSV1'],this['RSV2'],this['RSV3']]['map'](function(_0x4f3a95){return(_0x263d91&_0x4f3a95)===_0x4f3a95;}),_0x21bb3b=this['_frame']=new _0x11e4d4();return _0x21bb3b['final']=(_0x263d91&this['FIN'])===this['FIN'],_0x21bb3b['rsv1']=_0x16efc8[-0x12a4+-0x904+-0x5*-0x588],_0x21bb3b['rsv2']=_0x16efc8[0x1f*0x49+0x15fb*-0x1+0xd25],_0x21bb3b['rsv3']=_0x16efc8[-0x898+-0xb*-0x2c+0x6b6],_0x21bb3b['opcode']=_0x263d91&this['OPCODE'],this['_stage']=-0x103d+0x10ba+0x1f*-0x4,this['_extension'+'s']['validFrame'+'Rsv'](_0x21bb3b)?this['OPCODE_COD'+'ES']['indexOf'](_0x21bb3b['opcode'])<0x10c9*0x2+-0xd15+-0x1*0x147d?this['_fail']('protocol_e'+'rror','Unrecogniz'+'ed\x20frame\x20o'+'pcode:\x20'+_0x21bb3b['opcode']):this['MESSAGE_OP'+'CODES']['indexOf'](_0x21bb3b['opcode'])<0xb*0x2b7+-0x1ad7+-0x102*0x3&&!_0x21bb3b['final']?this['_fail']('protocol_e'+'rror','Received\x20f'+'ragmented\x20'+'control\x20fr'+'ame:\x20opcod'+'e\x20=\x20'+_0x21bb3b['opcode']):this['_message']&&this['OPENING_OP'+'CODES']['indexOf'](_0x21bb3b['opcode'])>=-0x52+0x101b+-0x543*0x3?this['_fail']('protocol_e'+'rror','Received\x20n'+'ew\x20data\x20fr'+'ame\x20but\x20pr'+'evious\x20con'+'tinuous\x20fr'+'ame\x20is\x20unf'+'inished'):void(-0x227b+0xe57+0x1424):this['_fail']('protocol_e'+'rror','One\x20or\x20mor'+'e\x20reserved'+'\x20bits\x20are\x20'+'on:\x20reserv'+'ed1\x20=\x20'+(_0x21bb3b['rsv1']?0xe08*0x1+-0xdb4+-0x53*0x1:-0x6d3*0x3+0x1fc4+-0x7*0x19d)+(',\x20reserved'+'2\x20=\x20')+(_0x21bb3b['rsv2']?-0x1517+0x1*-0x9f9+0x1f11*0x1:-0x1bf3*-0x1+-0x2*0x964+-0x92b)+(',\x20reserved'+'3\x20=\x20')+(_0x21bb3b['rsv3']?0x2691+0xe9e+-0x2*0x1a97:-0x12a4+-0x25*-0x8d+0x1*-0x1bd));},'_parseLength':function(_0x51b7b9){var _0x48e5a9=this['_frame'];if(_0x48e5a9['masked']=(_0x51b7b9&this['MASK'])===this['MASK'],_0x48e5a9['length']=_0x51b7b9&this['LENGTH'],_0x48e5a9['length']>=-0x4f*0x52+-0x152d+0x49*0xa3&&_0x48e5a9['length']<=0x2*-0xbc8+0x4ef+0x131e){if(this['_stage']=_0x48e5a9['masked']?-0xea6+0x115b+-0x73*0x6:-0x2631+-0xdd7+0x340c,!this['_checkFram'+'eLength']())return;}else this['_stage']=0x617*0x2+-0x1f1*0x8+0x4*0xd7,_0x48e5a9['lengthByte'+'s']=0x270b*0x1+-0x146*-0x5+-0x2ceb===_0x48e5a9['length']?-0x90e+0x48*-0x47+0x1d08:0x1137+-0xf6+-0x1039;if(this['_requireMa'+'sking']&&!_0x48e5a9['masked'])return this['_fail']('unacceptab'+'le','Received\x20u'+'nmasked\x20fr'+'ame\x20but\x20ma'+'sking\x20is\x20r'+'equired');},'_parseExtendedLength':function(_0x5dc45c){var _0x4f5ed2=this['_frame'];if(_0x4f5ed2['length']=this['_readUInt'](_0x5dc45c),this['_stage']=_0x4f5ed2['masked']?0x231a+-0x593*0x7+0x2*0x1f7:-0x99c+-0x20e1+0x2a81,this['MESSAGE_OP'+'CODES']['indexOf'](_0x4f5ed2['opcode'])<0x1*-0x281+0x3*-0x5fb+0x1472&&_0x4f5ed2['length']>0x1*-0x23c3+0x1ae4*-0x1+-0x1c1*-0x24)return this['_fail']('protocol_e'+'rror','Received\x20c'+'ontrol\x20fra'+'me\x20having\x20'+'too\x20long\x20p'+'ayload:\x20'+_0x4f5ed2['length']);this['_checkFram'+'eLength']();},'_checkFrameLength':function(){return!((this['_message']?this['_message']['length']:-0x3*0xaa2+-0x3*0x5bf+0x3123)+this['_frame']['length']>this['_maxLength']&&(this['_fail']('too_large','WebSocket\x20'+'frame\x20leng'+'th\x20too\x20lar'+'ge'),-0xe22+-0x31f+0x1142));},'_emitFrame':function(_0x9de9db){var _0x59b1e1,_0x1f878c,_0x445b1c,_0x12b691,_0xb8d4eb,_0x3d19a3=this['_frame'],_0x3dc15a=_0x3d19a3['payload']=_0x951cbe['mask'](_0x9de9db,_0x3d19a3['maskingKey']),_0xef3b67=_0x3d19a3['opcode'];if(delete this['_frame'],_0xef3b67===this['OPCODES']['continuati'+'on']){if(!this['_message'])return this['_fail']('protocol_e'+'rror','Received\x20u'+'nexpected\x20'+'continuati'+'on\x20frame');this['_message']['pushFrame'](_0x3d19a3);}if(_0xef3b67!==this['OPCODES']['text']&&_0xef3b67!==this['OPCODES']['binary']||(this['_message']=new _0x4ee80e(),this['_message']['pushFrame'](_0x3d19a3)),_0x3d19a3['final']&&this['MESSAGE_OP'+'CODES']['indexOf'](_0xef3b67)>=-0x12e7*0x1+0x2ec+0xffb)return this['_emitMessa'+'ge'](this['_message']);_0xef3b67===this['OPCODES']['close']&&(_0x1f878c=_0x3dc15a['length']>=-0x3*0x4bd+0x15c9+-0x790?_0x3dc15a['readUInt16'+'BE'](-0x2cd+-0x5b3*-0x1+-0x2e6):null,_0x445b1c=_0x3dc15a['length']>0x206d+-0x1ac6+-0x5a5?this['_encode'](_0x3dc15a['slice'](0x11*0x15e+-0x18c5+0x189)):null,-0x14d6+-0x6dd+0x1bb3!==_0x3dc15a['length']&&!(null!==_0x1f878c&&_0x1f878c>=this['MIN_RESERV'+'ED_ERROR']&&_0x1f878c<=this['MAX_RESERV'+'ED_ERROR'])&&this['ERROR_CODE'+'S']['indexOf'](_0x1f878c)<-0xe3e*0x1+0xa*-0xc1+-0x148*-0x11&&(_0x1f878c=this['ERRORS']['protocol_e'+'rror']),(_0x3dc15a['length']>0x1e80+-0x13f*-0x16+0x1*-0x396d||_0x3dc15a['length']>-0x17*-0xbf+0x239c+-0x34c3&&!_0x445b1c)&&(_0x1f878c=this['ERRORS']['protocol_e'+'rror']),this['_shutdown'](_0x1f878c||this['DEFAULT_ER'+'ROR_CODE'],_0x445b1c||'')),_0xef3b67===this['OPCODES']['ping']&&(this['frame'](_0x3dc15a,'pong'),this['emit']('ping',new _0x1f1f1c['PingEvent'](_0x3dc15a['toString']()))),_0xef3b67===this['OPCODES']['pong']&&(_0xb8d4eb=(_0x12b691=this['_pingCallb'+'acks'])[_0x59b1e1=this['_encode'](_0x3dc15a)],delete _0x12b691[_0x59b1e1],_0xb8d4eb&&_0xb8d4eb(),this['emit']('pong',new _0x1f1f1c['PongEvent'](_0x3dc15a['toString']())));},'_emitMessage':function(_0x3c5105){(_0x3c5105=this['_message'])['read'](),delete this['_message'],this['_extension'+'s']['processInc'+'omingMessa'+'ge'](_0x3c5105,function(_0x476145,_0x18c5d9){if(_0x476145)return this['_fail']('extension_'+'error',_0x476145['message']);var _0x273bec=_0x18c5d9['data'];if(_0x18c5d9['opcode']===this['OPCODES']['text']&&(_0x273bec=this['_encode'](_0x273bec)),null===_0x273bec)return this['_fail']('encoding_e'+'rror','Could\x20not\x20'+'decode\x20a\x20t'+'ext\x20frame\x20'+'as\x20UTF-8');this['emit']('message',new _0x1f1f1c['MessageEve'+'nt'](_0x273bec));},this);},'_encode':function(_0x44f751){try{var _0x5708d8=_0x44f751['toString']('binary',0x28+0x20a5+-0x20cd,_0x44f751['length']);if(!this['UTF8_MATCH']['test'](_0x5708d8))return null;}catch(_0xd3b758){}return _0x44f751['toString']('utf8',-0x20*0xeb+0x77*-0x6+0x17*0x166,_0x44f751['length']);},'_readUInt':function(_0x395faa){return-0x1d8+-0x45*0xc+0x516===_0x395faa['length']?_0x395faa['readUInt16'+'BE'](-0x1600+-0xcd8+0x22d8):(-0x50*-0x15d19f+-0x2*0xd1f19d06+0x11839*0x2633c)*_0x395faa['readUInt32'+'BE'](0x1b28+0x1*-0xfe3+-0xb45)+_0x395faa['readUInt32'+'BE'](0x1a73+-0x2*-0x64a+-0x2703);}};for(var _0x45f6cc in _0x4e58fb)_0x951cbe['prototype'][_0x45f6cc]=_0x4e58fb[_0x45f6cc];_0x386b13['exports']=_0x951cbe;},0xdb6:_0x423fb0=>{'use strict';var _0x4ad5bf=function(){},_0x5be12a={'final':!(-0x1c50+0x605+0x164c),'rsv1':!(-0xa7e+0x90c+-0x1*-0x173),'rsv2':!(-0x1*-0x4ae+0xa20+0x1*-0xecd),'rsv3':!(-0x239*0x2+0xac6+-0x653),'opcode':null,'masked':!(0xb05+-0x205*-0x7+-0x1927*0x1),'maskingKey':null,'lengthBytes':0x1,'length':0x0,'payload':null};for(var _0x3cfe09 in _0x5be12a)_0x4ad5bf['prototype'][_0x3cfe09]=_0x5be12a[_0x3cfe09];_0x423fb0['exports']=_0x4ad5bf;},0x1224:(_0xa08769,_0x2d3f34,_0x4d2540)=>{'use strict';var _0x424012=_0x4d2540(-0x242c+-0x527*0x5+-0x1247*-0x4)['Buffer'],_0x2bd5e7=function(){this['rsv1']=!(0x1c4e+-0x1fa*0x3+-0x165f),this['rsv2']=!(0x1513+0x1*0x19a9+-0x2ebb*0x1),this['rsv3']=!(0x1*0x141b+-0x2be*-0x7+0x1*-0x274c),this['opcode']=null,this['length']=-0x1*0x210a+0x2070+0xb*0xe,this['_chunks']=[];},_0x2cd351={'read':function(){return this['data']=this['data']||_0x424012['concat'](this['_chunks'],this['length']);},'pushFrame':function(_0x1f22de){this['rsv1']=this['rsv1']||_0x1f22de['rsv1'],this['rsv2']=this['rsv2']||_0x1f22de['rsv2'],this['rsv3']=this['rsv3']||_0x1f22de['rsv3'],null===this['opcode']&&(this['opcode']=_0x1f22de['opcode']),this['_chunks']['push'](_0x1f22de['payload']),this['length']+=_0x1f22de['length'];}};for(var _0x9a03a1 in _0x2cd351)_0x2bd5e7['prototype'][_0x9a03a1]=_0x2cd351[_0x9a03a1];_0xa08769['exports']=_0x2bd5e7;},0xf9c:(_0x2cc37e,_0x5b72ab,_0x13529d)=>{'use strict';var _0x5c6994=_0x13529d(0x8b5+-0x2640+-0x8*-0x517)['Buffer'],_0xf17a4b=_0x13529d(0x1234+-0x1*0x22d9+0x1940)['Stream'],_0x1c9c8e=_0x13529d(-0xca1*0x4+0x3d*-0x3b+0x5bfb),_0x56bcf7=_0x13529d(-0x197e+0x24ea+-0x13*-0x141),_0x16ae4d=_0x13529d(-0x5*0x72b+0x23b3*-0x1+0x1*0x4ead),_0x191e39=_0x13529d(-0x1*0x1757+-0xdad+0x2*0x17e9),_0x16defb=_0x13529d(-0xf1*-0xa+0x110d+0x3*0x48),_0x5bcdaf={'ws:':0x50,'wss:':0x1bb},_0x4ec0bf=function(_0x1a3981,_0x23615f,_0x566b4f){this['_client']=_0x1a3981,this['_http']=new _0x16defb('response'),this['_origin']='object'==typeof _0x1a3981['url']?_0x1a3981['url']:_0x1c9c8e['parse'](_0x1a3981['url']),this['_url']='object'==typeof _0x23615f?_0x23615f:_0x1c9c8e['parse'](_0x23615f),this['_options']=_0x566b4f||{},this['_state']=-0x22b9+-0x2698+0x4951,this['readable']=this['writable']=!(0xd7b*0x2+-0x856+-0x12a0),this['_paused']=!(0x2244+-0x1722+-0xb21),this['_headers']=new _0x191e39(),this['_headers']['set']('Host',this['_origin']['host']),this['_headers']['set']('Connection','keep-alive'),this['_headers']['set']('Proxy-Conn'+'ection','keep-alive');var _0x21d2c8=this['_url']['auth']&&_0x5c6994['from'](this['_url']['auth'],'utf8')['toString']('base64');_0x21d2c8&&this['_headers']['set']('Proxy-Auth'+'orization','Basic\x20'+_0x21d2c8);};_0x56bcf7['inherits'](_0x4ec0bf,_0xf17a4b);var _0xe624bb={'setHeader':function(_0x154559,_0x467250){return 0x25*-0xfb+0x1*-0x51c+-0xd*-0x32f===this['_state']&&(this['_headers']['set'](_0x154559,_0x467250),!(-0x11+-0x3*-0x2c1+-0x832));},'start':function(){if(0x235d+0x2b9*-0xd+-0x1*-0x8!==this['_state'])return!(-0x1*0xa6a+0x40c+-0xe9*-0x7);this['_state']=0x1*-0x220a+0x1*0x16a7+0xb64;var _0x413a59=this['_origin'],_0x5e3202=_0x413a59['port']||_0x5bcdaf[_0x413a59['protocol']],_0x1afb98=['CONNECT\x20'+_0x413a59['hostname']+':'+_0x5e3202+'\x20HTTP/1.1',this['_headers']['toString'](),''];return this['emit']('data',_0x5c6994['from'](_0x1afb98['join']('\x0d\x0a'),'utf8')),!(0x170f*0x1+-0xb5e+-0xbb1);},'pause':function(){this['_paused']=!(-0x125c*0x1+-0x2f4+0x1550);},'resume':function(){this['_paused']=!(0x21de+-0x257*0x1+-0x1f86),this['emit']('drain');},'write':function(_0x3815c9){if(!this['writable'])return!(0xfba+0x1ccf+-0x2c88);if(this['_http']['parse'](_0x3815c9),!this['_http']['isComplete']())return!this['_paused'];if(this['statusCode']=this['_http']['statusCode'],this['headers']=this['_http']['headers'],0x15a6+-0x2559+0x107b*0x1===this['statusCode'])this['emit']('connect',new _0x16ae4d['ConnectEve'+'nt']());else{var _0x211d5c='Can\x27t\x20esta'+'blish\x20a\x20co'+'nnection\x20t'+'o\x20the\x20serv'+'er\x20at\x20'+this['_origin']['href'];this['emit']('error',new Error(_0x211d5c));}return this['end'](),!this['_paused'];},'end':function(_0x1e1f92){this['writable']&&(void(0x92+-0x2112+0x2080)!==_0x1e1f92&&this['write'](_0x1e1f92),this['readable']=this['writable']=!(0x20de+0x466*-0x2+-0x1811),this['emit']('close'),this['emit']('end'));},'destroy':function(){this['end']();}};for(var _0x4c384c in _0xe624bb)_0x4ec0bf['prototype'][_0x4c384c]=_0xe624bb[_0x4c384c];_0x2cc37e['exports']=_0x4ec0bf;},0xcb1:(_0x310ec8,_0x475e03,_0x1fbfbd)=>{'use strict';var _0x1defc8=_0x1fbfbd(-0x1302+-0x1*0x3637+0x6c78),_0x4b858f=_0x1fbfbd(-0x136+-0x70*0x10+-0xbd7*-0x3),_0x3341bd=_0x1fbfbd(-0x1c09+0x3*0x96b+0x7*0xfd),_0x1567fa=_0x1fbfbd(-0x2*-0x11fc+-0x117*-0x21+-0x3b50),_0x3c2fd7=_0x1fbfbd(0x1bac*-0x1+0x17b6+-0x7*-0x428),_0x55dab0=_0x1fbfbd(-0xb72+0x313d+-0x4d7),_0xaf38ea=function(_0x46639a){_0x3341bd['call'](this,null,null,_0x46639a),this['_http']=new _0x4b858f('request');};_0x1defc8['inherits'](_0xaf38ea,_0x3341bd);var _0x51f2be={'EVENTS':['open','message','error','close','ping','pong'],'_bindEventListeners':function(){this['messages']['on']('error',function(){}),this['on']('error',function(){});},'parse':function(_0x534bac){if(this['_delegate'])return this['_delegate']['parse'](_0x534bac);if(this['_http']['parse'](_0x534bac),this['_http']['isComplete']()){this['method']=this['_http']['method'],this['url']=this['_http']['url'],this['headers']=this['_http']['headers'],this['body']=this['_http']['body'];var _0x7ce41b=this;this['_delegate']=_0xaf38ea['http'](this,this['_options']),this['_delegate']['messages']=this['messages'],this['_delegate']['io']=this['io'],this['_open'](),this['EVENTS']['forEach'](function(_0x544e2e){this['_delegate']['on'](_0x544e2e,function(_0x435651){_0x7ce41b['emit'](_0x544e2e,_0x435651);});},this),this['protocol']=this['_delegate']['protocol'],this['version']=this['_delegate']['version'],this['parse'](this['_http']['body']),this['emit']('connect',new _0x3341bd['ConnectEve'+'nt']());}},'_open':function(){this['__queue']['forEach'](function(_0x5cbfda){this['_delegate'][_0x5cbfda[0x1c7c+-0x2*0x257+-0x17ce*0x1]]['apply'](this['_delegate'],_0x5cbfda[-0xcb*-0x29+-0x1bd5+-0x85*0x9]);},this),this['__queue']=[];}};for(var _0x3ee2aa in(['addExtensi'+'on','setHeader','start','frame','text','binary','ping','close']['forEach'](function(_0x5d553f){_0x51f2be[_0x5d553f]=function(){return this['_delegate']?this['_delegate'][_0x5d553f]['apply'](this['_delegate'],arguments):(this['__queue']['push']([_0x5d553f,arguments]),!(0x808+0x7e*0x4a+-0x2c74));};}),_0x51f2be))_0xaf38ea['prototype'][_0x3ee2aa]=_0x51f2be[_0x3ee2aa];_0xaf38ea['isSecureRe'+'quest']=function(_0x174d84){if(_0x174d84['connection']&&void(0x3*-0x5e7+-0x2258+0xd*0x401)!==_0x174d84['connection']['authorized'])return!(-0xfab+-0x1*-0x5bb+0x9f0);if(_0x174d84['socket']&&_0x174d84['socket']['secure'])return!(0x124f+-0x21ee+-0x81*-0x1f);var _0x4db1a6=_0x174d84['headers'];return!!_0x4db1a6&&('on'===_0x4db1a6['https']||'on'===_0x4db1a6['x-forwarde'+'d-ssl']||'https'===_0x4db1a6['x-forwarde'+'d-scheme']||'https'===_0x4db1a6['x-forwarde'+'d-proto']);},_0xaf38ea['determineU'+'rl']=function(_0x170f0b){return(this['isSecureRe'+'quest'](_0x170f0b)?'wss:':'ws:')+'//'+_0x170f0b['headers']['host']+_0x170f0b['url'];},_0xaf38ea['http']=function(_0x365af1,_0x1f8902){void(-0x2*-0x99b+-0x1*0xe59+-0x4dd)===(_0x1f8902=_0x1f8902||{})['requireMas'+'king']&&(_0x1f8902['requireMas'+'king']=!(0xab5+-0x1c19+-0x1164*-0x1));var _0x53dff1=_0x365af1['headers'],_0x4979e6=_0x53dff1['sec-websoc'+'ket-versio'+'n'],_0x120d6a=_0x53dff1['sec-websoc'+'ket-key'],_0x47b6bd=_0x53dff1['sec-websoc'+'ket-key1'],_0x3ef2e8=_0x53dff1['sec-websoc'+'ket-key2'],_0x202414=this['determineU'+'rl'](_0x365af1);return _0x4979e6||_0x120d6a?new _0x55dab0(_0x365af1,_0x202414,_0x1f8902):_0x47b6bd||_0x3ef2e8?new _0x3c2fd7(_0x365af1,_0x202414,_0x1f8902):new _0x1567fa(_0x365af1,_0x202414,_0x1f8902);},_0x310ec8['exports']=_0xaf38ea;},0x2286:(_0x14b7dd,_0x5205c4,_0x571b18)=>{'use strict';var _0x2577e8=_0x571b18(0x529*0x1+0x3*-0x35b+-0x1*-0x1015)['Buffer'],_0x1179fb=function(){this['_queue']=[],this['_queueSize']=0xc73*0x1+-0x18d+-0xae6,this['_offset']=-0x4*-0x93a+0x7*0x46+-0x26d2;};_0x1179fb['prototype']['put']=function(_0x595ec9){_0x595ec9&&0x14a*-0x3+-0x16df+-0x25*-0xb9!==_0x595ec9['length']&&(_0x2577e8['isBuffer'](_0x595ec9)||(_0x595ec9=_0x2577e8['from'](_0x595ec9)),this['_queue']['push'](_0x595ec9),this['_queueSize']+=_0x595ec9['length']);},_0x1179fb['prototype']['read']=function(_0x2cd58b){if(_0x2cd58b>this['_queueSize'])return null;if(-0x322+-0x22e0+0x2602===_0x2cd58b)return _0x2577e8['alloc'](-0x133*-0x1+-0x1880+0x174d*0x1);this['_queueSize']-=_0x2cd58b;var _0x346b51,_0x5446b0,_0x5b203=this['_queue'],_0x1f3e1a=_0x2cd58b,_0x3b3e3e=_0x5b203[0x2505+0x874+-0x1*0x2d79];if(_0x3b3e3e['length']>=_0x2cd58b)return _0x3b3e3e['length']===_0x2cd58b?_0x5b203['shift']():(_0x5446b0=_0x3b3e3e['slice'](0x9e8*0x1+0x2616+-0x2ffe,_0x2cd58b),_0x5b203[0x1f*-0x8b+0x21f4+0x1*-0x111f]=_0x3b3e3e['slice'](_0x2cd58b),_0x5446b0);for(var _0x4832c2=-0x2428+-0x515+-0x17*-0x1cb,_0x284872=_0x5b203['length'];_0x4832c2<_0x284872&&!(_0x1f3e1a<_0x5b203[_0x4832c2]['length']);_0x4832c2++)_0x1f3e1a-=_0x5b203[_0x4832c2]['length'];return _0x346b51=_0x5b203['splice'](0x1d*0xa3+0x1e*0x82+0x21b3*-0x1,_0x4832c2),_0x1f3e1a>0x5*-0x6ad+0x113+0x204e&&_0x5b203['length']>-0x5c*-0x5+-0x1fb1+0x1de5&&(_0x346b51['push'](_0x5b203[0x74*-0x46+0xc04+0x13b4]['slice'](-0x239*-0xb+-0x2d1+0x3*-0x736,_0x1f3e1a)),_0x5b203[0x1b51+0x1*-0x1b64+-0x1*-0x13]=_0x5b203[0xeb4+0x10*0x234+-0x31f4]['slice'](_0x1f3e1a)),_0x2577e8['concat'](_0x346b51,_0x2cd58b);},_0x1179fb['prototype']['eachByte']=function(_0x358862,_0x3bc89a){for(var _0x356044,_0x477f86,_0x208dc8;this['_queue']['length']>0x147*-0x3+-0x1312+0x215*0xb;){for(_0x477f86=(_0x356044=this['_queue'][-0x1*-0x1b1d+0xfa8+-0x1*0x2ac5])['length'];this['_offset']<_0x477f86;)_0x208dc8=this['_offset'],this['_offset']+=-0x5*0x2fc+0xc9c+0x251,_0x358862['call'](_0x3bc89a,_0x356044[_0x208dc8]);this['_offset']=0x158c+0x114b*-0x2+0xd0a,this['_queue']['shift']();}},_0x14b7dd['exports']=_0x1179fb;},0x1b4f:(_0x59004c,_0x7ff7e5,_0x1ba39c)=>{'use strict';var _0x3bc5e7=_0x1ba39c(-0x21ea+-0x1e5e+-0x3b*-0x17b)['e'],_0x2233c8=_0x1ba39c(0x5*0x186+0x5*0x623+-0x1b20)['Buffer'],_0x36e513={'request':_0x3bc5e7['REQUEST']||'request','response':_0x3bc5e7['RESPONSE']||'response'},_0x3ee6a0=function(_0x5d2cbc){this['_type']=_0x5d2cbc,this['_parser']=new _0x3bc5e7(_0x36e513[_0x5d2cbc]),this['_complete']=!(0x460+-0x25*0xbd+0x16f2),this['headers']={};var _0x5e0ec6=null,_0x1a2bc0=this;this['_parser']['onHeaderFi'+'eld']=function(_0x40fd60,_0x3e8739,_0x3762ed){_0x5e0ec6=_0x40fd60['toString']('utf8',_0x3e8739,_0x3e8739+_0x3762ed)['toLowerCas'+'e']();},this['_parser']['onHeaderVa'+'lue']=function(_0xb9b2c0,_0x185f89,_0x574eb5){var _0x17193f=_0xb9b2c0['toString']('utf8',_0x185f89,_0x185f89+_0x574eb5);_0x1a2bc0['headers']['hasOwnProp'+'erty'](_0x5e0ec6)?_0x1a2bc0['headers'][_0x5e0ec6]+=',\x20'+_0x17193f:_0x1a2bc0['headers'][_0x5e0ec6]=_0x17193f;},this['_parser']['onHeadersC'+'omplete']=this['_parser'][_0x3bc5e7['kOnHeaders'+'Complete']]=function(_0x4978c7,_0x324b8a,_0x1c548b,_0x27e0c8,_0x4724f5,_0x354971){var _0x1abbb8=arguments[-0x1d38+-0x9c9+0x2701*0x1];if('object'==typeof _0x1abbb8&&(_0x27e0c8=_0x1abbb8['method'],_0x4724f5=_0x1abbb8['url'],_0x354971=_0x1abbb8['statusCode'],_0x1c548b=_0x1abbb8['headers']),_0x1a2bc0['method']='number'==typeof _0x27e0c8?_0x3ee6a0['METHODS'][_0x27e0c8]:_0x27e0c8,_0x1a2bc0['statusCode']=_0x354971,_0x1a2bc0['url']=_0x4724f5,_0x1c548b){for(var _0x390cca,_0x354402,_0x5c1910=0x1c57+0x1bab+-0x3802,_0x46bd43=_0x1c548b['length'];_0x5c1910<_0x46bd43;_0x5c1910+=0x821*-0x3+0x43*-0x94+0x3f21)_0x390cca=_0x1c548b[_0x5c1910]['toLowerCas'+'e'](),_0x354402=_0x1c548b[_0x5c1910+(-0x1264*0x1+-0x60*-0x64+-0x131b)],_0x1a2bc0['headers']['hasOwnProp'+'erty'](_0x390cca)?_0x1a2bc0['headers'][_0x390cca]+=',\x20'+_0x354402:_0x1a2bc0['headers'][_0x390cca]=_0x354402;_0x1a2bc0['_complete']=!(-0xfad+-0x135+0x10e2);}};};_0x3ee6a0['METHODS']={0x0:'DELETE',0x1:'GET',0x2:'HEAD',0x3:'POST',0x4:'PUT',0x5:'CONNECT',0x6:'OPTIONS',0x7:'TRACE',0x8:'COPY',0x9:'LOCK',0xa:'MKCOL',0xb:'MOVE',0xc:'PROPFIND',0xd:'PROPPATCH',0xe:'SEARCH',0xf:'UNLOCK',0x10:'BIND',0x11:'REBIND',0x12:'UNBIND',0x13:'ACL',0x14:'REPORT',0x15:'MKACTIVITY',0x16:'CHECKOUT',0x17:'MERGE',0x18:'M-SEARCH',0x19:'NOTIFY',0x1a:'SUBSCRIBE',0x1b:'UNSUBSCRIB'+'E',0x1c:'PATCH',0x1d:'PURGE',0x1e:'MKCALENDAR',0x1f:'LINK',0x20:'UNLINK'};var _0x1486c7=process['version']?process['version']['match'](/[0-9]+/g)['map'](function(_0x52d459){return parseInt(_0x52d459,-0x79d+0x22d9+-0x1b32);}):[];0x4*-0x8a5+0x4*-0x9ad+0x4948===_0x1486c7[0x20d4+-0x34d*0x4+-0x13a0]&&0x421*-0x7+0x24d1*0x1+0x26*-0x35===_0x1486c7[-0x211*0x12+-0x16fd+0x3c30]&&(_0x3ee6a0['METHODS'][-0x32*0x61+0x2*-0xa6+0x144e]='REPORT',_0x3ee6a0['METHODS'][0x2c6*-0x9+-0x1*0x1e7c+-0x3*-0x1281]='MKACTIVITY',_0x3ee6a0['METHODS'][0x1657+-0xcc9*0x2+-0x1*-0x34d]='CHECKOUT',_0x3ee6a0['METHODS'][0x224d*-0x1+0x4*0x95f+-0x1*0x31c]='MERGE',_0x3ee6a0['METHODS'][-0x6*0x525+-0x1618+0x350a]='M-SEARCH',_0x3ee6a0['METHODS'][0x1385+0x13d*0x1+0x4f*-0x43]='NOTIFY',_0x3ee6a0['METHODS'][0x1*0x152b+-0x12c2+-0x77*0x5]='SUBSCRIBE',_0x3ee6a0['METHODS'][0x52*-0x6d+-0x13c3+-0x57a*-0xa]='UNSUBSCRIB'+'E',_0x3ee6a0['METHODS'][0x1ff3*0x1+0x4*-0x17+-0x1f7f]='PATCH',_0x3ee6a0['METHODS'][0x3*0x981+0x2*0x139+0x4f*-0x64]='PURGE'),_0x3ee6a0['prototype']['isComplete']=function(){return this['_complete'];},_0x3ee6a0['prototype']['parse']=function(_0xbddf96){var _0x46fc8b=this['_parser']['execute'](_0xbddf96,-0x23f0+0xd5*0x2+0x1*0x2246,_0xbddf96['length']);if('number'!=typeof _0x46fc8b)return this['error']=_0x46fc8b,void(this['_complete']=!(0x899*0x4+0x1e1+-0x2445));this['_complete']&&(this['body']=_0x46fc8b<_0xbddf96['length']?_0xbddf96['slice'](_0x46fc8b):_0x2233c8['alloc'](0xc5c+-0x11da+0x57e));},_0x59004c['exports']=_0x3ee6a0;},0x11c8:(_0x116408,_0x4fdec9,_0x5d38c3)=>{'use strict';var _0x1c5bf8=_0x5d38c3(-0x1541+0xc8+0x1d14)['Stream'],_0x4b6ae9=_0x5d38c3(-0x2759+-0x8ef*0x4+0x4*0x1b95),_0x5b658c=function(_0x5e02ad){this['readable']=this['writable']=!(-0xbe1+0x74*-0x55+-0x85*-0x61),this['_paused']=!(-0x14df*0x1+-0x1*-0x8dd+0xcd*0xf),this['_driver']=_0x5e02ad;};_0x4b6ae9['inherits'](_0x5b658c,_0x1c5bf8),_0x5b658c['prototype']['pause']=function(){this['_paused']=!(-0x3*0x7c3+0x239d+-0x41c*0x3),this['_driver']['messages']['_paused']=!(-0x3*-0x7b9+-0x154c+-0x1df*0x1);},_0x5b658c['prototype']['resume']=function(){this['_paused']=!(-0xbcb+0x1*0x1771+0xba5*-0x1),this['emit']('drain');var _0x4c18dd=this['_driver']['messages'];_0x4c18dd['_paused']=!(-0x169c+-0x376+-0x10b*-0x19),_0x4c18dd['emit']('drain');},_0x5b658c['prototype']['write']=function(_0x4872be){return!!this['writable']&&(this['_driver']['parse'](_0x4872be),!this['_paused']);},_0x5b658c['prototype']['end']=function(_0x5d5e93){if(this['writable']){void(0x15c3+-0x2251+-0xc8e*-0x1)!==_0x5d5e93&&this['write'](_0x5d5e93),this['writable']=!(0x1a03*0x1+-0x595+-0x146d);var _0x5c3303=this['_driver']['messages'];_0x5c3303['readable']&&(_0x5c3303['readable']=_0x5c3303['writable']=!(0x27c*0xf+0xc12*-0x1+-0x1931*0x1),_0x5c3303['emit']('end'));}},_0x5b658c['prototype']['destroy']=function(){this['end']();};var _0x44d3df=function(_0x250b60){this['readable']=this['writable']=!(-0x9ee+0x20e3+-0x16f5),this['_paused']=!(0xa*0x207+-0x6*-0x32b+-0x2747),this['_driver']=_0x250b60;};_0x4b6ae9['inherits'](_0x44d3df,_0x1c5bf8),_0x44d3df['prototype']['pause']=function(){this['_driver']['io']['_paused']=!(-0x1*0x7d+0x49*0x86+-0x57*0x6f);},_0x44d3df['prototype']['resume']=function(){this['_driver']['io']['_paused']=!(0x269d+-0x3*0x19b+-0x21cb),this['_driver']['io']['emit']('drain');},_0x44d3df['prototype']['write']=function(_0x479ee0){return!!this['writable']&&('string'==typeof _0x479ee0?this['_driver']['text'](_0x479ee0):this['_driver']['binary'](_0x479ee0),!this['_paused']);},_0x44d3df['prototype']['end']=function(_0x2e1ef0){void(-0x25f*-0x5+0x1c52+0x809*-0x5)!==_0x2e1ef0&&this['write'](_0x2e1ef0);},_0x44d3df['prototype']['destroy']=function(){},_0x4fdec9['IO']=_0x5b658c,_0x4fdec9['Messages']=_0x44d3df;},0x93e:_0xcea607=>{'use strict';var _0x39d576=/([!#\$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+)/,_0x5341f3=/([^!#\$%&'\*\+\-\.\^_`\|~0-9A-Za-z])/g,_0x20907b=new RegExp(_0x39d576['source']+'(?:=(?:'+_0x39d576['source']+'|'+/"((?:\\[\x00-\x7f]|[^\x00-\x08\x0a-\x1f\x7f"\\])*)"/['source']+'))?'),_0x39cd4f=new RegExp(_0x39d576['source']+'(?:\x20*;\x20*'+_0x20907b['source']+')*','g'),_0x69f734=new RegExp('^'+_0x39cd4f['source']+'(?:\x20*,\x20*'+_0x39cd4f['source']+')*$'),_0x352964=/^-?(0|[1-9][0-9]*)(\.[0-9]+)?$/,_0x39f231=Object['prototype']['hasOwnProp'+'erty'],_0x742817={'parseHeader':function(_0x313ba7){var _0x735fad=new _0xb1b833();if(''===_0x313ba7||void(-0xfb7+-0x70d*-0x5+-0x138a)===_0x313ba7)return _0x735fad;if(!_0x69f734['test'](_0x313ba7))throw new SyntaxError('Invalid\x20Se'+'c-WebSocke'+'t-Extensio'+'ns\x20header:'+'\x20'+_0x313ba7);return _0x313ba7['match'](_0x39cd4f)['forEach'](function(_0x3f3f78){var _0x2aeb24=_0x3f3f78['match'](new RegExp(_0x20907b['source'],'g')),_0x15df97=_0x2aeb24['shift'](),_0x24e6f6={};_0x2aeb24['forEach'](function(_0x529aa5){var _0x12dd3b,_0x173949=_0x529aa5['match'](_0x20907b),_0x265b06=_0x173949[-0x7*0x468+-0x12*-0xfa+0x4f*0x2b];_0x12dd3b=void(-0x1*0xce5+-0xd33+-0x8*-0x343)!==_0x173949[-0x1b7f+0x12a3+0x8de]?_0x173949[-0x1580+0x4*0x982+-0x1086]:void(0x1*-0x629+0x9cc+-0x3a3)===_0x173949[0x15d4*-0x1+-0xb27+0x20fe]||_0x173949[0x2094+-0x23e1+0x350]['replace'](/\\/g,''),_0x352964['test'](_0x12dd3b)&&(_0x12dd3b=parseFloat(_0x12dd3b)),_0x39f231['call'](_0x24e6f6,_0x265b06)?(_0x24e6f6[_0x265b06]=[]['concat'](_0x24e6f6[_0x265b06]),_0x24e6f6[_0x265b06]['push'](_0x12dd3b)):_0x24e6f6[_0x265b06]=_0x12dd3b;},this),_0x735fad['push'](_0x15df97,_0x24e6f6);},this),_0x735fad;},'serializeParams':function(_0x1c237f,_0x42f925){var _0x57b30c=[],_0x4f1cb7=function(_0x98251a,_0x3c793d){_0x3c793d instanceof Array?_0x3c793d['forEach'](function(_0x5f2465){_0x4f1cb7(_0x98251a,_0x5f2465);}):!(0x24f1+-0x197b+-0xb76)===_0x3c793d?_0x57b30c['push'](_0x98251a):'number'==typeof _0x3c793d?_0x57b30c['push'](_0x98251a+'='+_0x3c793d):_0x5341f3['test'](_0x3c793d)?_0x57b30c['push'](_0x98251a+'=\x22'+_0x3c793d['replace'](/"/g,'\x5c\x22')+'\x22'):_0x57b30c['push'](_0x98251a+'='+_0x3c793d);};for(var _0x48ad23 in _0x42f925)_0x4f1cb7(_0x48ad23,_0x42f925[_0x48ad23]);return[_0x1c237f]['concat'](_0x57b30c)['join'](';\x20');}},_0xb1b833=function(){this['_byName']={},this['_inOrder']=[];};_0xb1b833['prototype']['push']=function(_0xd74b8d,_0x34cd7a){_0x39f231['call'](this['_byName'],_0xd74b8d)||(this['_byName'][_0xd74b8d]=[]),this['_byName'][_0xd74b8d]['push'](_0x34cd7a),this['_inOrder']['push']({'name':_0xd74b8d,'params':_0x34cd7a});},_0xb1b833['prototype']['eachOffer']=function(_0x11dbe5,_0x45263a){for(var _0x8040f1=this['_inOrder'],_0x406d9e=-0x104f+-0x1767+-0x13db*-0x2,_0x555949=_0x8040f1['length'];_0x406d9e<_0x555949;_0x406d9e++)_0x11dbe5['call'](_0x45263a,_0x8040f1[_0x406d9e]['name'],_0x8040f1[_0x406d9e]['params']);},_0xb1b833['prototype']['byName']=function(_0x294213){return this['_byName'][_0x294213]||[];},_0xb1b833['prototype']['toArray']=function(){return this['_inOrder']['slice']();},_0xcea607['exports']=_0x742817;},0x282:(_0x19f580,_0xc9ca18,_0x2b6b71)=>{'use strict';var _0x36c554=_0x2b6b71(0x1*0x67f+0xbdc+0x8*-0x34),_0x56a1aa=_0x2b6b71(-0x10b5+-0x1f*-0x67+-0x1*-0x18a7),_0x19937e=function(_0x3827d0){this['_ext']=_0x3827d0[-0xae6+0xab2+0x34],this['_session']=_0x3827d0[-0x1*0x2289+-0x193b+0x499*0xd],this['_functors']={'incoming':new _0x36c554(this['_session'],'processInc'+'omingMessa'+'ge'),'outgoing':new _0x36c554(this['_session'],'processOut'+'goingMessa'+'ge')};};_0x19937e['prototype']['pending']=function(_0x581f4e){var _0x537125=this['_functors'][_0x581f4e];_0x537125['_stopped']||(_0x537125['pending']+=-0x1*0x2032+-0x1ade+-0x1*-0x3b11);},_0x19937e['prototype']['incoming']=function(_0x5efe0d,_0x7a02e6,_0x43d7f5,_0x4b4297){this['_exec']('incoming',_0x5efe0d,_0x7a02e6,_0x43d7f5,_0x4b4297);},_0x19937e['prototype']['outgoing']=function(_0x232c29,_0x33a902,_0x8f9bc3,_0x33198a){this['_exec']('outgoing',_0x232c29,_0x33a902,_0x8f9bc3,_0x33198a);},_0x19937e['prototype']['close']=function(){return this['_closed']=this['_closed']||new _0x56a1aa(),this['_doClose'](),this['_closed'];},_0x19937e['prototype']['_exec']=function(_0x36e636,_0x5c8f08,_0x569641,_0x47bb25,_0x436c6d){this['_functors'][_0x36e636]['call'](_0x5c8f08,_0x569641,function(_0x19e6a9,_0xb246d9){_0x19e6a9&&(_0x19e6a9['message']=this['_ext']['name']+':\x20'+_0x19e6a9['message']),_0x47bb25['call'](_0x436c6d,_0x19e6a9,_0xb246d9),this['_doClose']();},this);},_0x19937e['prototype']['_doClose']=function(){var _0x1fc439=this['_functors']['incoming'],_0x4754c9=this['_functors']['outgoing'];this['_closed']&&_0x1fc439['pending']+_0x4754c9['pending']===-0x15*0x61+0x35*-0x88+0x241d&&(this['_session']&&this['_session']['close'](),this['_session']=null,this['_closed']['done']());},_0x19f580['exports']=_0x19937e;},0x10bb:(_0x59dea3,_0x259642,_0x2fc02f)=>{'use strict';var _0x275bc1=_0x2fc02f(0x119e+-0x2027+0x1be6),_0x3e3066=function(_0x46d1b8,_0x4b0fdb){this['_session']=_0x46d1b8,this['_method']=_0x4b0fdb,this['_queue']=new _0x275bc1(_0x3e3066['QUEUE_SIZE']),this['_stopped']=!(0x7*-0x10f+-0x13e5*0x1+-0x1*-0x1b4f),this['pending']=-0x8af+0xfe+0xb3*0xb;};_0x3e3066['QUEUE_SIZE']=0x1*-0x1f2e+0x79e+-0x5e6*-0x4,_0x3e3066['prototype']['call']=function(_0x3bbd16,_0x1bb133,_0x5571b,_0x2cef2e){if(!this['_stopped']){var _0x1e0cfc={'error':_0x3bbd16,'message':_0x1bb133,'callback':_0x5571b,'context':_0x2cef2e,'done':!(-0x3*0xc6f+0x51a+0x2034)},_0x1448ea=!(0xa1f*0x3+-0x7*-0x11+-0x1*0x1ed3),_0x3b3ab8=this;if(this['_queue']['push'](_0x1e0cfc),_0x1e0cfc['error'])return _0x1e0cfc['done']=!(0x3*-0x67e+-0x74b+0x1ac5),this['_stop'](),this['_flushQueu'+'e']();var _0x40e649=function(_0x3335ab,_0x3e51f1){_0x1448ea^(_0x1448ea=!(0x25ca+-0x2389+0x1*-0x241))&&(_0x3335ab?(_0x3b3ab8['_stop'](),_0x1e0cfc['error']=_0x3335ab,_0x1e0cfc['message']=null):_0x1e0cfc['message']=_0x3e51f1,_0x1e0cfc['done']=!(-0x2638+0x882+0x1db6),_0x3b3ab8['_flushQueu'+'e']());};try{this['_session'][this['_method']](_0x1bb133,_0x40e649);}catch(_0x4e8958){_0x40e649(_0x4e8958);}}},_0x3e3066['prototype']['_stop']=function(){this['pending']=this['_queue']['length'],this['_stopped']=!(0x1cb3+-0x12d*-0x6+-0x23c1);},_0x3e3066['prototype']['_flushQueu'+'e']=function(){for(var _0x4a8789,_0x40a59f=this['_queue'];_0x40a59f['length']>-0xe*-0x6d+0x33*-0x63+0xdc3&&_0x40a59f['peek']()['done'];)(_0x4a8789=_0x40a59f['shift']())['error']?(this['pending']=-0x9a4+-0x1082*0x1+0x2*0xd13,_0x40a59f['clear']()):this['pending']-=0x1642+-0x14e3*0x1+-0x15e,_0x4a8789['callback']['call'](_0x4a8789['context'],_0x4a8789['error'],_0x4a8789['message']);},_0x59dea3['exports']=_0x3e3066;},0x147c:(_0x23ee21,_0x45047a,_0x1a545f)=>{'use strict';var _0x5abe7b=_0x1a545f(0x1709+0x2*0x1071+-0xb*0x4db),_0x2c6c69=_0x1a545f(-0x1*-0x143f+-0x216*0x3+-0x66e*-0x1),_0x1152f4=function(_0x27b916){this['_cells']=_0x27b916['map'](function(_0x2ea724){return new _0x5abe7b(_0x2ea724);}),this['_stopped']={'incoming':!(0xcc7+0x3b1*-0x4+-0x1e*-0x11),'outgoing':!(0x22a6+-0x2*0xc31+-0xa43)};};_0x1152f4['prototype']['processInc'+'omingMessa'+'ge']=function(_0x86b13f,_0x17eaed,_0x42847d){this['_stopped']['incoming']||this['_loop']('incoming',this['_cells']['length']-(-0x1563+-0xd03*0x2+0x121*0x2a),-(-0x232d+-0x12e0+0x360e),-(0x159f+-0x123d+0x361*-0x1),_0x86b13f,_0x17eaed,_0x42847d);},_0x1152f4['prototype']['processOut'+'goingMessa'+'ge']=function(_0x559282,_0x48d7cf,_0x23f376){this['_stopped']['outgoing']||this['_loop']('outgoing',-0x1ac5+0x1e00+-0x1*0x33b,this['_cells']['length'],0x1*-0xa47+0x2*-0x696+0x1774,_0x559282,_0x48d7cf,_0x23f376);},_0x1152f4['prototype']['close']=function(_0x39bfea,_0x5825bb){this['_stopped']={'incoming':!(-0x5e*-0x44+0x83*0x11+-0x21ab),'outgoing':!(0x8f*-0x6+0xc47+-0x8ed)};var _0x1781d7=this['_cells']['map'](function(_0x242b7a){return _0x242b7a['close']();});_0x39bfea&&_0x2c6c69['all'](_0x1781d7)['then'](function(){_0x39bfea['call'](_0x5825bb);});},_0x1152f4['prototype']['_loop']=function(_0xace727,_0x2bd6c4,_0x3814db,_0x259707,_0xd0b4,_0x59525d,_0xdd3be2){for(var _0x565321=this['_cells'],_0x1a0f17=_0x565321['length'],_0x6b42df=this;_0x1a0f17--;)_0x565321[_0x1a0f17]['pending'](_0xace727);var _0x106df3=function(_0x1f6f11,_0x36b6a6,_0x1932bb){if(_0x1f6f11===_0x3814db)return _0x59525d['call'](_0xdd3be2,_0x36b6a6,_0x1932bb);_0x565321[_0x1f6f11][_0xace727](_0x36b6a6,_0x1932bb,function(_0x908110,_0x4b2203){_0x908110&&(_0x6b42df['_stopped'][_0xace727]=!(-0x306*-0x2+0x1078+-0x2c*0x83)),_0x106df3(_0x1f6f11+_0x259707,_0x908110,_0x4b2203);});};_0x106df3(_0x2bd6c4,null,_0xd0b4);},_0x23ee21['exports']=_0x1152f4;},0x146b:(_0x543e02,_0x34723f,_0x3f3f67)=>{'use strict';var _0x4818cd=_0x3f3f67(0x1c55*-0x1+0x18fd+0x2f*0x5b),_0x3c7a50=function(){this['_complete']=!(0x2b*-0x22+0x1756+0x15b*-0xd),this['_callbacks']=new _0x4818cd(_0x3c7a50['QUEUE_SIZE']);};_0x3c7a50['QUEUE_SIZE']=0x4d9*-0x8+0x8e4+0x1de8,_0x3c7a50['all']=function(_0x58f40d){var _0x46f86b=new _0x3c7a50(),_0x1536ae=_0x58f40d['length'],_0x10556b=_0x1536ae;for(-0x15*0x161+-0x15*0xda+0x2ed7===_0x1536ae&&_0x46f86b['done']();_0x10556b--;)_0x58f40d[_0x10556b]['then'](function(){-0x13f5+0x55d+0xe98==(_0x1536ae-=0x1ec6+0x104c+-0x2f11)&&_0x46f86b['done']();});return _0x46f86b;},_0x3c7a50['prototype']['then']=function(_0x406de0){this['_complete']?_0x406de0():this['_callbacks']['push'](_0x406de0);},_0x3c7a50['prototype']['done']=function(){this['_complete']=!(-0x1e62+-0x218f+-0x1*-0x3ff1);for(var _0x3f11f3,_0x30f0b2=this['_callbacks'];_0x3f11f3=_0x30f0b2['shift']();)_0x3f11f3();},_0x543e02['exports']=_0x3c7a50;},0xd5d:_0xa23c69=>{'use strict';var _0x1042b4=function(_0x5c4c0b){this['_bufferSiz'+'e']=_0x5c4c0b,this['clear']();};_0x1042b4['prototype']['clear']=function(){this['_buffer']=new Array(this['_bufferSiz'+'e']),this['_ringOffse'+'t']=-0x1cda+0x1632+0x6a8,this['_ringSize']=this['_bufferSiz'+'e'],this['_head']=0x1cd*0xf+-0x1*-0x525+-0x2028,this['_tail']=-0x31*-0xa7+-0x619+0x2*-0xcef,this['length']=-0x2*-0x779+-0x1e69+0x1*0xf77;},_0x1042b4['prototype']['push']=function(_0x4fa840){var _0x58d39a=!(-0x86*-0x29+0x1fc8+-0x353d),_0x3654e4=!(0x1a46+-0xf9b+-0xc3*0xe);this['_ringSize']0x1531+-0x5dd+-0xda*0x12?(this['_head']=this['_ringSize'],this['_ringOffse'+'t']=this['length'],this['_ringSize']=this['_bufferSiz'+'e']):this['_head']=(this['_head']+(0x47*-0x4e+-0xdfe+0x517*0x7))%this['_ringSize'],_0x23b9ad;}},_0xa23c69['exports']=_0x1042b4;},0x13b3:(_0xf72e12,_0x22ccf0,_0x20383f)=>{'use strict';var _0x1c636a=_0x20383f(-0x2*0x1eb+0x166e+-0x13*0x7e),_0x7ec77=_0x20383f(-0x1bff*0x1+-0x1*-0xa4e+0x262d),_0x32f31=function(){this['_rsv1']=this['_rsv2']=this['_rsv3']=null,this['_byName']={},this['_inOrder']=[],this['_sessions']=[],this['_index']={};};_0x32f31['MESSAGE_OP'+'CODES']=[-0xd*-0x21d+-0x16*-0x170+0x4*-0xec6,0x1*-0x1081+0x1*0x19e7+-0x964];var _0x710f48={'add':function(_0x2352ab){if('string'!=typeof _0x2352ab['name'])throw new TypeError('extension.'+'name\x20must\x20'+'be\x20a\x20strin'+'g');if('permessage'!==_0x2352ab['type'])throw new TypeError('extension.'+'type\x20must\x20'+'be\x20\x22permes'+'sage\x22');if('boolean'!=typeof _0x2352ab['rsv1'])throw new TypeError('extension.'+'rsv1\x20must\x20'+'be\x20true\x20or'+'\x20false');if('boolean'!=typeof _0x2352ab['rsv2'])throw new TypeError('extension.'+'rsv2\x20must\x20'+'be\x20true\x20or'+'\x20false');if('boolean'!=typeof _0x2352ab['rsv3'])throw new TypeError('extension.'+'rsv3\x20must\x20'+'be\x20true\x20or'+'\x20false');if(this['_byName']['hasOwnProp'+'erty'](_0x2352ab['name']))throw new TypeError('An\x20extensi'+'on\x20with\x20na'+'me\x20\x22'+_0x2352ab['name']+('\x22\x20is\x20alrea'+'dy\x20registe'+'red'));this['_byName'][_0x2352ab['name']]=_0x2352ab,this['_inOrder']['push'](_0x2352ab);},'generateOffer':function(){var _0x4f8c6d=[],_0x333e85=[],_0x5009bc={};return this['_inOrder']['forEach'](function(_0x33676){var _0x477e00=_0x33676['createClie'+'ntSession']();if(_0x477e00){var _0x22c2a1=[_0x33676,_0x477e00];_0x4f8c6d['push'](_0x22c2a1),_0x5009bc[_0x33676['name']]=_0x22c2a1;var _0x360fe6=_0x477e00['generateOf'+'fer']();(_0x360fe6=_0x360fe6?[]['concat'](_0x360fe6):[])['forEach'](function(_0x13fdd7){_0x333e85['push'](_0x1c636a['serializeP'+'arams'](_0x33676['name'],_0x13fdd7));},this);}},this),this['_sessions']=_0x4f8c6d,this['_index']=_0x5009bc,_0x333e85['length']>-0xbf3+0xa5c+0x25*0xb?_0x333e85['join'](',\x20'):null;},'activate':function(_0x12eee6){var _0x551de6=_0x1c636a['parseHeade'+'r'](_0x12eee6),_0x2c3ae7=[];_0x551de6['eachOffer'](function(_0x2ec091,_0x4876c1){var _0x48144f=this['_index'][_0x2ec091];if(!_0x48144f)throw new Error('Server\x20sen'+'t\x20an\x20exten'+'sion\x20respo'+'nse\x20for\x20un'+'known\x20exte'+'nsion\x20\x22'+_0x2ec091+'\x22');var _0x550ad3=_0x48144f[0x113+-0x6f*0x4d+0x2050],_0x94facd=_0x48144f[-0x16e0+0x17*0x112+-0x1bd],_0x373b2d=this['_reserved'](_0x550ad3);if(_0x373b2d)throw new Error('Server\x20sen'+'t\x20two\x20exte'+'nsion\x20resp'+'onses\x20that'+'\x20use\x20the\x20R'+'SV'+_0x373b2d[0x898+-0x975*0x1+0xdd]+'\x20bit:\x20\x22'+_0x373b2d[0x1*-0x5e6+-0x20d5*0x1+0x26bc]+'\x22\x20and\x20\x22'+_0x550ad3['name']+'\x22');if(!(0x1954+-0x1*-0x1529+-0x2e7d)!==_0x94facd['activate'](_0x4876c1))throw new Error('Server\x20sen'+'t\x20unaccept'+'able\x20exten'+'sion\x20param'+'eters:\x20'+_0x1c636a['serializeP'+'arams'](_0x2ec091,_0x4876c1));this['_reserve'](_0x550ad3),_0x2c3ae7['push'](_0x48144f);},this),this['_sessions']=_0x2c3ae7,this['_pipeline']=new _0x7ec77(_0x2c3ae7);},'generateResponse':function(_0x257414){var _0x421e00=[],_0x39f184=[],_0x46d7c3=_0x1c636a['parseHeade'+'r'](_0x257414);return this['_inOrder']['forEach'](function(_0x5beb6e){var _0x4a57bd=_0x46d7c3['byName'](_0x5beb6e['name']);if(0x8d3+0x1*0x1124+0x11*-0x187!==_0x4a57bd['length']&&!this['_reserved'](_0x5beb6e)){var _0xbaf59f=_0x5beb6e['createServ'+'erSession'](_0x4a57bd);_0xbaf59f&&(this['_reserve'](_0x5beb6e),_0x421e00['push']([_0x5beb6e,_0xbaf59f]),_0x39f184['push'](_0x1c636a['serializeP'+'arams'](_0x5beb6e['name'],_0xbaf59f['generateRe'+'sponse']())));}},this),this['_sessions']=_0x421e00,this['_pipeline']=new _0x7ec77(_0x421e00),_0x39f184['length']>-0xfcc+0x2097+-0x3*0x599?_0x39f184['join'](',\x20'):null;},'validFrameRsv':function(_0x4aeaa4){var _0x32c3d7,_0x17aa2f={'rsv1':!(0xb81*0x1+-0x6*-0x396+-0x2104),'rsv2':!(0x258+0xf9*-0x2+-0x65),'rsv3':!(0x39*0x25+0x821+0x105d*-0x1)};if(_0x32f31['MESSAGE_OP'+'CODES']['indexOf'](_0x4aeaa4['opcode'])>=0x1cca+0xcf3+-0x29bd){for(var _0x62b3d=0x1741+0x1*0x2686+0xc5b*-0x5,_0x3ce4c3=this['_sessions']['length'];_0x62b3d<_0x3ce4c3;_0x62b3d++)_0x32c3d7=this['_sessions'][_0x62b3d][0x994+0x183*0x11+-0x2347],_0x17aa2f['rsv1']=_0x17aa2f['rsv1']||_0x32c3d7['rsv1'],_0x17aa2f['rsv2']=_0x17aa2f['rsv2']||_0x32c3d7['rsv2'],_0x17aa2f['rsv3']=_0x17aa2f['rsv3']||_0x32c3d7['rsv3'];}return(_0x17aa2f['rsv1']||!_0x4aeaa4['rsv1'])&&(_0x17aa2f['rsv2']||!_0x4aeaa4['rsv2'])&&(_0x17aa2f['rsv3']||!_0x4aeaa4['rsv3']);},'processIncomingMessage':function(_0x4b64a5,_0xb3a380,_0x470766){this['_pipeline']['processInc'+'omingMessa'+'ge'](_0x4b64a5,_0xb3a380,_0x470766);},'processOutgoingMessage':function(_0x302b24,_0x1e0319,_0x3b7ae1){this['_pipeline']['processOut'+'goingMessa'+'ge'](_0x302b24,_0x1e0319,_0x3b7ae1);},'close':function(_0x474819,_0x2ed4f8){if(!this['_pipeline'])return _0x474819['call'](_0x2ed4f8);this['_pipeline']['close'](_0x474819,_0x2ed4f8);},'_reserve':function(_0x13106c){this['_rsv1']=this['_rsv1']||_0x13106c['rsv1']&&_0x13106c['name'],this['_rsv2']=this['_rsv2']||_0x13106c['rsv2']&&_0x13106c['name'],this['_rsv3']=this['_rsv3']||_0x13106c['rsv3']&&_0x13106c['name'];},'_reserved':function(_0x27d6a7){return this['_rsv1']&&_0x27d6a7['rsv1']?[-0x1256*-0x1+0x10d*0x11+0x1*-0x2432,this['_rsv1']]:this['_rsv2']&&_0x27d6a7['rsv2']?[0x4*0x67d+-0x3*-0x22d+-0x1*0x2079,this['_rsv2']]:!(!this['_rsv3']||!_0x27d6a7['rsv3'])&&[-0x595+0x1*-0x201b+0x25b3,this['_rsv3']];}};for(var _0x4f3cab in _0x710f48)_0x32f31['prototype'][_0x4f3cab]=_0x710f48[_0x4f3cab];_0xf72e12['exports']=_0x32f31;},0xa35:_0x5d355a=>{'use strict';_0x5d355a['exports']=require('assert');},0xb5:_0x1f6b1b=>{'use strict';_0x1f6b1b['exports']=require('buffer');},0x14c5:_0x34f542=>{'use strict';_0x34f542['exports']=require('child_proc'+'ess');},0x1b46:_0x30a16a=>{'use strict';_0x30a16a['exports']=require('crypto');},0x8ca:_0x447d0e=>{'use strict';_0x447d0e['exports']=require('dns');},0xc5f:_0x3df546=>{'use strict';_0x3df546['exports']=require('domain');},0x1152:_0x5ad058=>{'use strict';_0x5ad058['exports']=require('events');},0x26a8:_0x39c866=>{'use strict';_0x39c866['exports']=require('fs');},0x797:_0x5cd805=>{'use strict';_0x5cd805['exports']=require('fs/promise'+'s');},0x21a3:_0x3817a2=>{'use strict';_0x3817a2['exports']=require('http');},0x163c:_0x53cedd=>{'use strict';_0x53cedd['exports']=require('https');},0x243e:_0x4ac04a=>{'use strict';_0x4ac04a['exports']=require('net');},0x359:_0x369102=>{'use strict';_0x369102['exports']=require('os');},0x1b10:_0x2a18cc=>{'use strict';_0x2a18cc['exports']=require('path');},0x130c:_0x21fb8a=>{'use strict';_0x21fb8a['exports']=require('punycode');},0xd98:_0x576385=>{'use strict';_0x576385['exports']=require('querystrin'+'g');},0x89b:_0x7f7eaf=>{'use strict';_0x7f7eaf['exports']=require('stream');},0x1294:_0x3f3db2=>{'use strict';_0x3f3db2['exports']=require('tls');},0x1b68:_0x329291=>{'use strict';_0x329291['exports']=require('url');},0x233f:_0x36f5ff=>{'use strict';_0x36f5ff['exports']=require('util');},0x815:_0x38122a=>{'use strict';_0x38122a['exports']=JSON['parse']('[\x22ac\x22,\x22com'+'.ac\x22,\x22edu.'+'ac\x22,\x22gov.a'+'c\x22,\x22net.ac'+'\x22,\x22mil.ac\x22'+',\x22org.ac\x22,'+'\x22ad\x22,\x22nom.'+'ad\x22,\x22ae\x22,\x22'+'co.ae\x22,\x22ne'+'t.ae\x22,\x22org'+'.ae\x22,\x22sch.'+'ae\x22,\x22ac.ae'+'\x22,\x22gov.ae\x22'+',\x22mil.ae\x22,'+'\x22aero\x22,\x22ac'+'cident-inv'+'estigation'+'.aero\x22,\x22ac'+'cident-pre'+'vention.ae'+'ro\x22,\x22aerob'+'atic.aero\x22'+',\x22aeroclub'+'.aero\x22,\x22ae'+'rodrome.ae'+'ro\x22,\x22agent'+'s.aero\x22,\x22a'+'ircraft.ae'+'ro\x22,\x22airli'+'ne.aero\x22,\x22'+'airport.ae'+'ro\x22,\x22air-s'+'urveillanc'+'e.aero\x22,\x22a'+'irtraffic.'+'aero\x22,\x22air'+'-traffic-c'+'ontrol.aer'+'o\x22,\x22ambula'+'nce.aero\x22,'+'\x22amusement'+'.aero\x22,\x22as'+'sociation.'+'aero\x22,\x22aut'+'hor.aero\x22,'+'\x22balloonin'+'g.aero\x22,\x22b'+'roker.aero'+'\x22,\x22caa.aer'+'o\x22,\x22cargo.'+'aero\x22,\x22cat'+'ering.aero'+'\x22,\x22certifi'+'cation.aer'+'o\x22,\x22champi'+'onship.aer'+'o\x22,\x22charte'+'r.aero\x22,\x22c'+'ivilaviati'+'on.aero\x22,\x22'+'club.aero\x22'+',\x22conferen'+'ce.aero\x22,\x22'+'consultant'+'.aero\x22,\x22co'+'nsulting.a'+'ero\x22,\x22cont'+'rol.aero\x22,'+'\x22council.a'+'ero\x22,\x22crew'+'.aero\x22,\x22de'+'sign.aero\x22'+',\x22dgca.aer'+'o\x22,\x22educat'+'or.aero\x22,\x22'+'emergency.'+'aero\x22,\x22eng'+'ine.aero\x22,'+'\x22engineer.'+'aero\x22,\x22ent'+'ertainment'+'.aero\x22,\x22eq'+'uipment.ae'+'ro\x22,\x22excha'+'nge.aero\x22,'+'\x22express.a'+'ero\x22,\x22fede'+'ration.aer'+'o\x22,\x22flight'+'.aero\x22,\x22fr'+'eight.aero'+'\x22,\x22fuel.ae'+'ro\x22,\x22glidi'+'ng.aero\x22,\x22'+'government'+'.aero\x22,\x22gr'+'oundhandli'+'ng.aero\x22,\x22'+'group.aero'+'\x22,\x22hanggli'+('ding.aero\x22'+',\x22homebuil'+'t.aero\x22,\x22i'+'nsurance.a'+'ero\x22,\x22jour'+'nal.aero\x22,'+'\x22journalis'+'t.aero\x22,\x22l'+'easing.aer'+'o\x22,\x22logist'+'ics.aero\x22,'+'\x22magazine.'+'aero\x22,\x22mai'+'ntenance.a'+'ero\x22,\x22medi'+'a.aero\x22,\x22m'+'icrolight.'+'aero\x22,\x22mod'+'elling.aer'+'o\x22,\x22naviga'+'tion.aero\x22'+',\x22parachut'+'ing.aero\x22,'+'\x22paraglidi'+'ng.aero\x22,\x22'+'passenger-'+'associatio'+'n.aero\x22,\x22p'+'ilot.aero\x22'+',\x22press.ae'+'ro\x22,\x22produ'+'ction.aero'+'\x22,\x22recreat'+'ion.aero\x22,'+'\x22repbody.a'+'ero\x22,\x22res.'+'aero\x22,\x22res'+'earch.aero'+'\x22,\x22rotorcr'+'aft.aero\x22,'+'\x22safety.ae'+'ro\x22,\x22scien'+'tist.aero\x22'+',\x22services'+'.aero\x22,\x22sh'+'ow.aero\x22,\x22'+'skydiving.'+'aero\x22,\x22sof'+'tware.aero'+'\x22,\x22student'+'.aero\x22,\x22tr'+'ader.aero\x22'+',\x22trading.'+'aero\x22,\x22tra'+'iner.aero\x22'+',\x22union.ae'+'ro\x22,\x22worki'+'nggroup.ae'+'ro\x22,\x22works'+'.aero\x22,\x22af'+'\x22,\x22gov.af\x22'+',\x22com.af\x22,'+'\x22org.af\x22,\x22'+'net.af\x22,\x22e'+'du.af\x22,\x22ag'+'\x22,\x22com.ag\x22'+',\x22org.ag\x22,'+'\x22net.ag\x22,\x22'+'co.ag\x22,\x22no'+'m.ag\x22,\x22ai\x22'+',\x22off.ai\x22,'+'\x22com.ai\x22,\x22'+'net.ai\x22,\x22o'+'rg.ai\x22,\x22al'+'\x22,\x22com.al\x22'+',\x22edu.al\x22,'+'\x22gov.al\x22,\x22'+'mil.al\x22,\x22n'+'et.al\x22,\x22or'+'g.al\x22,\x22am\x22'+',\x22co.am\x22,\x22'+'com.am\x22,\x22c'+'ommune.am\x22'+',\x22net.am\x22,'+'\x22org.am\x22,\x22'+'ao\x22,\x22ed.ao'+'\x22,\x22gv.ao\x22,'+'\x22og.ao\x22,\x22c'+'o.ao\x22,\x22pb.'+'ao\x22,\x22it.ao'+'\x22,\x22aq\x22,\x22ar'+'\x22,\x22com.ar\x22'+',\x22edu.ar\x22,'+'\x22gob.ar\x22,\x22'+'gov.ar\x22,\x22i'+'nt.ar\x22,\x22mi'+'l.ar\x22,\x22mus'+'ica.ar\x22,\x22n'+'et.ar\x22,\x22or'+'g.ar\x22,\x22tur')+('.ar\x22,\x22arpa'+'\x22,\x22e164.ar'+'pa\x22,\x22in-ad'+'dr.arpa\x22,\x22'+'ip6.arpa\x22,'+'\x22iris.arpa'+'\x22,\x22uri.arp'+'a\x22,\x22urn.ar'+'pa\x22,\x22as\x22,\x22'+'gov.as\x22,\x22a'+'sia\x22,\x22at\x22,'+'\x22ac.at\x22,\x22c'+'o.at\x22,\x22gv.'+'at\x22,\x22or.at'+'\x22,\x22au\x22,\x22co'+'m.au\x22,\x22net'+'.au\x22,\x22org.'+'au\x22,\x22edu.a'+'u\x22,\x22gov.au'+'\x22,\x22asn.au\x22'+',\x22id.au\x22,\x22'+'info.au\x22,\x22'+'conf.au\x22,\x22'+'oz.au\x22,\x22ac'+'t.au\x22,\x22nsw'+'.au\x22,\x22nt.a'+'u\x22,\x22qld.au'+'\x22,\x22sa.au\x22,'+'\x22tas.au\x22,\x22'+'vic.au\x22,\x22w'+'a.au\x22,\x22act'+'.edu.au\x22,\x22'+'catholic.e'+'du.au\x22,\x22ns'+'w.edu.au\x22,'+'\x22nt.edu.au'+'\x22,\x22qld.edu'+'.au\x22,\x22sa.e'+'du.au\x22,\x22ta'+'s.edu.au\x22,'+'\x22vic.edu.a'+'u\x22,\x22wa.edu'+'.au\x22,\x22qld.'+'gov.au\x22,\x22s'+'a.gov.au\x22,'+'\x22tas.gov.a'+'u\x22,\x22vic.go'+'v.au\x22,\x22wa.'+'gov.au\x22,\x22e'+'ducation.t'+'as.edu.au\x22'+',\x22schools.'+'nsw.edu.au'+'\x22,\x22aw\x22,\x22co'+'m.aw\x22,\x22ax\x22'+',\x22az\x22,\x22com'+'.az\x22,\x22net.'+'az\x22,\x22int.a'+'z\x22,\x22gov.az'+'\x22,\x22org.az\x22'+',\x22edu.az\x22,'+'\x22info.az\x22,'+'\x22pp.az\x22,\x22m'+'il.az\x22,\x22na'+'me.az\x22,\x22pr'+'o.az\x22,\x22biz'+'.az\x22,\x22ba\x22,'+'\x22com.ba\x22,\x22'+'edu.ba\x22,\x22g'+'ov.ba\x22,\x22mi'+'l.ba\x22,\x22net'+'.ba\x22,\x22org.'+'ba\x22,\x22bb\x22,\x22'+'biz.bb\x22,\x22c'+'o.bb\x22,\x22com'+'.bb\x22,\x22edu.'+'bb\x22,\x22gov.b'+'b\x22,\x22info.b'+'b\x22,\x22net.bb'+'\x22,\x22org.bb\x22'+',\x22store.bb'+'\x22,\x22tv.bb\x22,'+'\x22*.bd\x22,\x22be'+'\x22,\x22ac.be\x22,'+'\x22bf\x22,\x22gov.'+'bf\x22,\x22bg\x22,\x22'+'a.bg\x22,\x22b.b'+'g\x22,\x22c.bg\x22,'+'\x22d.bg\x22,\x22e.'+'bg\x22,\x22f.bg\x22'+',\x22g.bg\x22,\x22h'+'.bg\x22,\x22i.bg'+'\x22,\x22j.bg\x22,\x22'+'k.bg\x22,\x22l.b'+'g\x22,\x22m.bg\x22,'+'\x22n.bg\x22,\x22o.'+'bg\x22,\x22p.bg\x22'+',\x22q.bg\x22,\x22r'+'.bg\x22,\x22s.bg'+'\x22,\x22t.bg\x22,\x22')+('u.bg\x22,\x22v.b'+'g\x22,\x22w.bg\x22,'+'\x22x.bg\x22,\x22y.'+'bg\x22,\x22z.bg\x22'+',\x220.bg\x22,\x221'+'.bg\x22,\x222.bg'+'\x22,\x223.bg\x22,\x22'+'4.bg\x22,\x225.b'+'g\x22,\x226.bg\x22,'+'\x227.bg\x22,\x228.'+'bg\x22,\x229.bg\x22'+',\x22bh\x22,\x22com'+'.bh\x22,\x22edu.'+'bh\x22,\x22net.b'+'h\x22,\x22org.bh'+'\x22,\x22gov.bh\x22'+',\x22bi\x22,\x22co.'+'bi\x22,\x22com.b'+'i\x22,\x22edu.bi'+'\x22,\x22or.bi\x22,'+'\x22org.bi\x22,\x22'+'biz\x22,\x22bj\x22,'+'\x22asso.bj\x22,'+'\x22barreau.b'+'j\x22,\x22gouv.b'+'j\x22,\x22bm\x22,\x22c'+'om.bm\x22,\x22ed'+'u.bm\x22,\x22gov'+'.bm\x22,\x22net.'+'bm\x22,\x22org.b'+'m\x22,\x22bn\x22,\x22c'+'om.bn\x22,\x22ed'+'u.bn\x22,\x22gov'+'.bn\x22,\x22net.'+'bn\x22,\x22org.b'+'n\x22,\x22bo\x22,\x22c'+'om.bo\x22,\x22ed'+'u.bo\x22,\x22gob'+'.bo\x22,\x22int.'+'bo\x22,\x22org.b'+'o\x22,\x22net.bo'+'\x22,\x22mil.bo\x22'+',\x22tv.bo\x22,\x22'+'web.bo\x22,\x22a'+'cademia.bo'+'\x22,\x22agro.bo'+'\x22,\x22arte.bo'+'\x22,\x22blog.bo'+'\x22,\x22bolivia'+'.bo\x22,\x22cien'+'cia.bo\x22,\x22c'+'ooperativa'+'.bo\x22,\x22demo'+'cracia.bo\x22'+',\x22deporte.'+'bo\x22,\x22ecolo'+'gia.bo\x22,\x22e'+'conomia.bo'+'\x22,\x22empresa'+'.bo\x22,\x22indi'+'gena.bo\x22,\x22'+'industria.'+'bo\x22,\x22info.'+'bo\x22,\x22medic'+'ina.bo\x22,\x22m'+'ovimiento.'+'bo\x22,\x22music'+'a.bo\x22,\x22nat'+'ural.bo\x22,\x22'+'nombre.bo\x22'+',\x22noticias'+'.bo\x22,\x22patr'+'ia.bo\x22,\x22po'+'litica.bo\x22'+',\x22profesio'+'nal.bo\x22,\x22p'+'lurinacion'+'al.bo\x22,\x22pu'+'eblo.bo\x22,\x22'+'revista.bo'+'\x22,\x22salud.b'+'o\x22,\x22tecnol'+'ogia.bo\x22,\x22'+'tksat.bo\x22,'+'\x22transport'+'e.bo\x22,\x22wik'+'i.bo\x22,\x22br\x22'+',\x229guacu.b'+'r\x22,\x22abc.br'+'\x22,\x22adm.br\x22'+',\x22adv.br\x22,'+'\x22agr.br\x22,\x22'+'aju.br\x22,\x22a'+'m.br\x22,\x22ana'+'ni.br\x22,\x22ap'+'arecida.br'+'\x22,\x22arq.br\x22'+',\x22art.br\x22,'+'\x22ato.br\x22,\x22'+'b.br\x22,\x22bar')+('ueri.br\x22,\x22'+'belem.br\x22,'+'\x22bhz.br\x22,\x22'+'bio.br\x22,\x22b'+'log.br\x22,\x22b'+'md.br\x22,\x22bo'+'avista.br\x22'+',\x22bsb.br\x22,'+'\x22campinagr'+'ande.br\x22,\x22'+'campinas.b'+'r\x22,\x22caxias'+'.br\x22,\x22cim.'+'br\x22,\x22cng.b'+'r\x22,\x22cnt.br'+'\x22,\x22com.br\x22'+',\x22contagem'+'.br\x22,\x22coop'+'.br\x22,\x22cri.'+'br\x22,\x22cuiab'+'a.br\x22,\x22cur'+'itiba.br\x22,'+'\x22def.br\x22,\x22'+'ecn.br\x22,\x22e'+'co.br\x22,\x22ed'+'u.br\x22,\x22emp'+'.br\x22,\x22eng.'+'br\x22,\x22esp.b'+'r\x22,\x22etc.br'+'\x22,\x22eti.br\x22'+',\x22far.br\x22,'+'\x22feira.br\x22'+',\x22flog.br\x22'+',\x22floripa.'+'br\x22,\x22fm.br'+'\x22,\x22fnd.br\x22'+',\x22fortal.b'+'r\x22,\x22fot.br'+'\x22,\x22foz.br\x22'+',\x22fst.br\x22,'+'\x22g12.br\x22,\x22'+'ggf.br\x22,\x22g'+'oiania.br\x22'+',\x22gov.br\x22,'+'\x22ac.gov.br'+'\x22,\x22al.gov.'+'br\x22,\x22am.go'+'v.br\x22,\x22ap.'+'gov.br\x22,\x22b'+'a.gov.br\x22,'+'\x22ce.gov.br'+'\x22,\x22df.gov.'+'br\x22,\x22es.go'+'v.br\x22,\x22go.'+'gov.br\x22,\x22m'+'a.gov.br\x22,'+'\x22mg.gov.br'+'\x22,\x22ms.gov.'+'br\x22,\x22mt.go'+'v.br\x22,\x22pa.'+'gov.br\x22,\x22p'+'b.gov.br\x22,'+'\x22pe.gov.br'+'\x22,\x22pi.gov.'+'br\x22,\x22pr.go'+'v.br\x22,\x22rj.'+'gov.br\x22,\x22r'+'n.gov.br\x22,'+'\x22ro.gov.br'+'\x22,\x22rr.gov.'+'br\x22,\x22rs.go'+'v.br\x22,\x22sc.'+'gov.br\x22,\x22s'+'e.gov.br\x22,'+'\x22sp.gov.br'+'\x22,\x22to.gov.'+'br\x22,\x22gru.b'+'r\x22,\x22imb.br'+'\x22,\x22ind.br\x22'+',\x22inf.br\x22,'+'\x22jab.br\x22,\x22'+'jampa.br\x22,'+'\x22jdf.br\x22,\x22'+'joinville.'+'br\x22,\x22jor.b'+'r\x22,\x22jus.br'+'\x22,\x22leg.br\x22'+',\x22lel.br\x22,'+'\x22londrina.'+'br\x22,\x22macap'+'a.br\x22,\x22mac'+'eio.br\x22,\x22m'+'anaus.br\x22,'+'\x22maringa.b'+'r\x22,\x22mat.br'+'\x22,\x22med.br\x22'+',\x22mil.br\x22,'+'\x22morena.br'+'\x22,\x22mp.br\x22,'+'\x22mus.br\x22,\x22')+('natal.br\x22,'+'\x22net.br\x22,\x22'+'niteroi.br'+'\x22,\x22*.nom.b'+'r\x22,\x22not.br'+'\x22,\x22ntr.br\x22'+',\x22odo.br\x22,'+'\x22ong.br\x22,\x22'+'org.br\x22,\x22o'+'sasco.br\x22,'+'\x22palmas.br'+'\x22,\x22poa.br\x22'+',\x22ppg.br\x22,'+'\x22pro.br\x22,\x22'+'psc.br\x22,\x22p'+'si.br\x22,\x22pv'+'h.br\x22,\x22qsl'+'.br\x22,\x22radi'+'o.br\x22,\x22rec'+'.br\x22,\x22reci'+'fe.br\x22,\x22ri'+'beirao.br\x22'+',\x22rio.br\x22,'+'\x22riobranco'+'.br\x22,\x22riop'+'reto.br\x22,\x22'+'salvador.b'+'r\x22,\x22sampa.'+'br\x22,\x22santa'+'maria.br\x22,'+'\x22santoandr'+'e.br\x22,\x22sao'+'bernardo.b'+'r\x22,\x22saogon'+'ca.br\x22,\x22sj'+'c.br\x22,\x22slg'+'.br\x22,\x22slz.'+'br\x22,\x22soroc'+'aba.br\x22,\x22s'+'rv.br\x22,\x22ta'+'xi.br\x22,\x22tc'+'.br\x22,\x22teo.'+'br\x22,\x22the.b'+'r\x22,\x22tmp.br'+'\x22,\x22trd.br\x22'+',\x22tur.br\x22,'+'\x22tv.br\x22,\x22u'+'di.br\x22,\x22ve'+'t.br\x22,\x22vix'+'.br\x22,\x22vlog'+'.br\x22,\x22wiki'+'.br\x22,\x22zlg.'+'br\x22,\x22bs\x22,\x22'+'com.bs\x22,\x22n'+'et.bs\x22,\x22or'+'g.bs\x22,\x22edu'+'.bs\x22,\x22gov.'+'bs\x22,\x22bt\x22,\x22'+'com.bt\x22,\x22e'+'du.bt\x22,\x22go'+'v.bt\x22,\x22net'+'.bt\x22,\x22org.'+'bt\x22,\x22bv\x22,\x22'+'bw\x22,\x22co.bw'+'\x22,\x22org.bw\x22'+',\x22by\x22,\x22gov'+'.by\x22,\x22mil.'+'by\x22,\x22com.b'+'y\x22,\x22of.by\x22'+',\x22bz\x22,\x22com'+'.bz\x22,\x22net.'+'bz\x22,\x22org.b'+'z\x22,\x22edu.bz'+'\x22,\x22gov.bz\x22'+',\x22ca\x22,\x22ab.'+'ca\x22,\x22bc.ca'+'\x22,\x22mb.ca\x22,'+'\x22nb.ca\x22,\x22n'+'f.ca\x22,\x22nl.'+'ca\x22,\x22ns.ca'+'\x22,\x22nt.ca\x22,'+'\x22nu.ca\x22,\x22o'+'n.ca\x22,\x22pe.'+'ca\x22,\x22qc.ca'+'\x22,\x22sk.ca\x22,'+'\x22yk.ca\x22,\x22g'+'c.ca\x22,\x22cat'+'\x22,\x22cc\x22,\x22cd'+'\x22,\x22gov.cd\x22'+',\x22cf\x22,\x22cg\x22'+',\x22ch\x22,\x22ci\x22'+',\x22org.ci\x22,'+'\x22or.ci\x22,\x22c'+'om.ci\x22,\x22co'+'.ci\x22,\x22edu.'+'ci\x22,\x22ed.ci'+'\x22,\x22ac.ci\x22,'+'\x22net.ci\x22,\x22'+'go.ci\x22,\x22as'+'so.ci\x22,\x22aĆ©')+('roport.ci\x22'+',\x22int.ci\x22,'+'\x22presse.ci'+'\x22,\x22md.ci\x22,'+'\x22gouv.ci\x22,'+'\x22*.ck\x22,\x22!w'+'ww.ck\x22,\x22cl'+'\x22,\x22aprende'+'mas.cl\x22,\x22c'+'o.cl\x22,\x22gob'+'.cl\x22,\x22gov.'+'cl\x22,\x22mil.c'+'l\x22,\x22cm\x22,\x22c'+'o.cm\x22,\x22com'+'.cm\x22,\x22gov.'+'cm\x22,\x22net.c'+'m\x22,\x22cn\x22,\x22a'+'c.cn\x22,\x22com'+'.cn\x22,\x22edu.'+'cn\x22,\x22gov.c'+'n\x22,\x22net.cn'+'\x22,\x22org.cn\x22'+',\x22mil.cn\x22,'+'\x22å…¬åø.cn\x22,\x22网'+'络.cn\x22,\x22網絔.'+'cn\x22,\x22ah.cn'+'\x22,\x22bj.cn\x22,'+'\x22cq.cn\x22,\x22f'+'j.cn\x22,\x22gd.'+'cn\x22,\x22gs.cn'+'\x22,\x22gz.cn\x22,'+'\x22gx.cn\x22,\x22h'+'a.cn\x22,\x22hb.'+'cn\x22,\x22he.cn'+'\x22,\x22hi.cn\x22,'+'\x22hl.cn\x22,\x22h'+'n.cn\x22,\x22jl.'+'cn\x22,\x22js.cn'+'\x22,\x22jx.cn\x22,'+'\x22ln.cn\x22,\x22n'+'m.cn\x22,\x22nx.'+'cn\x22,\x22qh.cn'+'\x22,\x22sc.cn\x22,'+'\x22sd.cn\x22,\x22s'+'h.cn\x22,\x22sn.'+'cn\x22,\x22sx.cn'+'\x22,\x22tj.cn\x22,'+'\x22xj.cn\x22,\x22x'+'z.cn\x22,\x22yn.'+'cn\x22,\x22zj.cn'+'\x22,\x22hk.cn\x22,'+'\x22mo.cn\x22,\x22t'+'w.cn\x22,\x22co\x22'+',\x22arts.co\x22'+',\x22com.co\x22,'+'\x22edu.co\x22,\x22'+'firm.co\x22,\x22'+'gov.co\x22,\x22i'+'nfo.co\x22,\x22i'+'nt.co\x22,\x22mi'+'l.co\x22,\x22net'+'.co\x22,\x22nom.'+'co\x22,\x22org.c'+'o\x22,\x22rec.co'+'\x22,\x22web.co\x22'+',\x22com\x22,\x22co'+'op\x22,\x22cr\x22,\x22'+'ac.cr\x22,\x22co'+'.cr\x22,\x22ed.c'+'r\x22,\x22fi.cr\x22'+',\x22go.cr\x22,\x22'+'or.cr\x22,\x22sa'+'.cr\x22,\x22cu\x22,'+'\x22com.cu\x22,\x22'+'edu.cu\x22,\x22o'+'rg.cu\x22,\x22ne'+'t.cu\x22,\x22gov'+'.cu\x22,\x22inf.'+'cu\x22,\x22cv\x22,\x22'+'cw\x22,\x22com.c'+'w\x22,\x22edu.cw'+'\x22,\x22net.cw\x22'+',\x22org.cw\x22,'+'\x22cx\x22,\x22gov.'+'cx\x22,\x22cy\x22,\x22'+'ac.cy\x22,\x22bi'+'z.cy\x22,\x22com'+'.cy\x22,\x22eklo'+'ges.cy\x22,\x22g'+'ov.cy\x22,\x22lt'+'d.cy\x22,\x22nam'+'e.cy\x22,\x22net'+'.cy\x22,\x22org.'+'cy\x22,\x22parli'+'ament.cy\x22,'+'\x22press.cy\x22'+',\x22pro.cy\x22,'+'\x22tm.cy\x22,\x22c'+'z\x22,\x22de\x22,\x22d'+'j\x22,\x22dk\x22,\x22d')+('m\x22,\x22com.dm'+'\x22,\x22net.dm\x22'+',\x22org.dm\x22,'+'\x22edu.dm\x22,\x22'+'gov.dm\x22,\x22d'+'o\x22,\x22art.do'+'\x22,\x22com.do\x22'+',\x22edu.do\x22,'+'\x22gob.do\x22,\x22'+'gov.do\x22,\x22m'+'il.do\x22,\x22ne'+'t.do\x22,\x22org'+'.do\x22,\x22sld.'+'do\x22,\x22web.d'+'o\x22,\x22dz\x22,\x22c'+'om.dz\x22,\x22or'+'g.dz\x22,\x22net'+'.dz\x22,\x22gov.'+'dz\x22,\x22edu.d'+'z\x22,\x22asso.d'+'z\x22,\x22pol.dz'+'\x22,\x22art.dz\x22'+',\x22ec\x22,\x22com'+'.ec\x22,\x22info'+'.ec\x22,\x22net.'+'ec\x22,\x22fin.e'+'c\x22,\x22k12.ec'+'\x22,\x22med.ec\x22'+',\x22pro.ec\x22,'+'\x22org.ec\x22,\x22'+'edu.ec\x22,\x22g'+'ov.ec\x22,\x22go'+'b.ec\x22,\x22mil'+'.ec\x22,\x22edu\x22'+',\x22ee\x22,\x22edu'+'.ee\x22,\x22gov.'+'ee\x22,\x22riik.'+'ee\x22,\x22lib.e'+'e\x22,\x22med.ee'+'\x22,\x22com.ee\x22'+',\x22pri.ee\x22,'+'\x22aip.ee\x22,\x22'+'org.ee\x22,\x22f'+'ie.ee\x22,\x22eg'+'\x22,\x22com.eg\x22'+',\x22edu.eg\x22,'+'\x22eun.eg\x22,\x22'+'gov.eg\x22,\x22m'+'il.eg\x22,\x22na'+'me.eg\x22,\x22ne'+'t.eg\x22,\x22org'+'.eg\x22,\x22sci.'+'eg\x22,\x22*.er\x22'+',\x22es\x22,\x22com'+'.es\x22,\x22nom.'+'es\x22,\x22org.e'+'s\x22,\x22gob.es'+'\x22,\x22edu.es\x22'+',\x22et\x22,\x22com'+'.et\x22,\x22gov.'+'et\x22,\x22org.e'+'t\x22,\x22edu.et'+'\x22,\x22biz.et\x22'+',\x22name.et\x22'+',\x22info.et\x22'+',\x22net.et\x22,'+'\x22eu\x22,\x22fi\x22,'+'\x22aland.fi\x22'+',\x22fj\x22,\x22ac.'+'fj\x22,\x22biz.f'+'j\x22,\x22com.fj'+'\x22,\x22gov.fj\x22'+',\x22info.fj\x22'+',\x22mil.fj\x22,'+'\x22name.fj\x22,'+'\x22net.fj\x22,\x22'+'org.fj\x22,\x22p'+'ro.fj\x22,\x22*.'+'fk\x22,\x22fm\x22,\x22'+'fo\x22,\x22fr\x22,\x22'+'asso.fr\x22,\x22'+'com.fr\x22,\x22g'+'ouv.fr\x22,\x22n'+'om.fr\x22,\x22pr'+'d.fr\x22,\x22tm.'+'fr\x22,\x22aerop'+'ort.fr\x22,\x22a'+'vocat.fr\x22,'+'\x22avoues.fr'+'\x22,\x22cci.fr\x22'+',\x22chambagr'+'i.fr\x22,\x22chi'+'rurgiens-d'+'entistes.f'+'r\x22,\x22expert'+'s-comptabl'+'es.fr\x22,\x22ge'+'ometre-exp'+'ert.fr\x22,\x22g'+'reta.fr\x22,\x22')+('huissier-j'+'ustice.fr\x22'+',\x22medecin.'+'fr\x22,\x22notai'+'res.fr\x22,\x22p'+'harmacien.'+'fr\x22,\x22port.'+'fr\x22,\x22veter'+'inaire.fr\x22'+',\x22ga\x22,\x22gb\x22'+',\x22gd\x22,\x22ge\x22'+',\x22com.ge\x22,'+'\x22edu.ge\x22,\x22'+'gov.ge\x22,\x22o'+'rg.ge\x22,\x22mi'+'l.ge\x22,\x22net'+'.ge\x22,\x22pvt.'+'ge\x22,\x22gf\x22,\x22'+'gg\x22,\x22co.gg'+'\x22,\x22net.gg\x22'+',\x22org.gg\x22,'+'\x22gh\x22,\x22com.'+'gh\x22,\x22edu.g'+'h\x22,\x22gov.gh'+'\x22,\x22org.gh\x22'+',\x22mil.gh\x22,'+'\x22gi\x22,\x22com.'+'gi\x22,\x22ltd.g'+'i\x22,\x22gov.gi'+'\x22,\x22mod.gi\x22'+',\x22edu.gi\x22,'+'\x22org.gi\x22,\x22'+'gl\x22,\x22co.gl'+'\x22,\x22com.gl\x22'+',\x22edu.gl\x22,'+'\x22net.gl\x22,\x22'+'org.gl\x22,\x22g'+'m\x22,\x22gn\x22,\x22a'+'c.gn\x22,\x22com'+'.gn\x22,\x22edu.'+'gn\x22,\x22gov.g'+'n\x22,\x22org.gn'+'\x22,\x22net.gn\x22'+',\x22gov\x22,\x22gp'+'\x22,\x22com.gp\x22'+',\x22net.gp\x22,'+'\x22mobi.gp\x22,'+'\x22edu.gp\x22,\x22'+'org.gp\x22,\x22a'+'sso.gp\x22,\x22g'+'q\x22,\x22gr\x22,\x22c'+'om.gr\x22,\x22ed'+'u.gr\x22,\x22net'+'.gr\x22,\x22org.'+'gr\x22,\x22gov.g'+'r\x22,\x22gs\x22,\x22g'+'t\x22,\x22com.gt'+'\x22,\x22edu.gt\x22'+',\x22gob.gt\x22,'+'\x22ind.gt\x22,\x22'+'mil.gt\x22,\x22n'+'et.gt\x22,\x22or'+'g.gt\x22,\x22gu\x22'+',\x22com.gu\x22,'+'\x22edu.gu\x22,\x22'+'gov.gu\x22,\x22g'+'uam.gu\x22,\x22i'+'nfo.gu\x22,\x22n'+'et.gu\x22,\x22or'+'g.gu\x22,\x22web'+'.gu\x22,\x22gw\x22,'+'\x22gy\x22,\x22co.g'+'y\x22,\x22com.gy'+'\x22,\x22edu.gy\x22'+',\x22gov.gy\x22,'+'\x22net.gy\x22,\x22'+'org.gy\x22,\x22h'+'k\x22,\x22com.hk'+'\x22,\x22edu.hk\x22'+',\x22gov.hk\x22,'+'\x22idv.hk\x22,\x22'+'net.hk\x22,\x22o'+'rg.hk\x22,\x22å…¬åø'+'.hk\x22,\x22教育.h'+'k\x22,\x22ę•Žč‚².hk\x22'+',\x22ę”æåŗœ.hk\x22,\x22'+'個人.hk\x22,\x22äøŖäŗŗ'+'.hk\x22,\x22箇人.h'+'k\x22,\x22網络.hk\x22'+',\x22ē½‘ē»œ.hk\x22,\x22'+'组織.hk\x22,\x22網絔'+'.hk\x22,\x22网絔.h'+'k\x22,\x22组织.hk\x22'+',\x22組織.hk\x22,\x22'+'組织.hk\x22,\x22hm'+'\x22,\x22hn\x22,\x22co'+'m.hn\x22,\x22edu'+'.hn\x22,\x22org.'+'hn\x22,\x22net.h'+'n\x22,\x22mil.hn')+('\x22,\x22gob.hn\x22'+',\x22hr\x22,\x22iz.'+'hr\x22,\x22from.'+'hr\x22,\x22name.'+'hr\x22,\x22com.h'+'r\x22,\x22ht\x22,\x22c'+'om.ht\x22,\x22sh'+'op.ht\x22,\x22fi'+'rm.ht\x22,\x22in'+'fo.ht\x22,\x22ad'+'ult.ht\x22,\x22n'+'et.ht\x22,\x22pr'+'o.ht\x22,\x22org'+'.ht\x22,\x22med.'+'ht\x22,\x22art.h'+'t\x22,\x22coop.h'+'t\x22,\x22pol.ht'+'\x22,\x22asso.ht'+'\x22,\x22edu.ht\x22'+',\x22rel.ht\x22,'+'\x22gouv.ht\x22,'+'\x22perso.ht\x22'+',\x22hu\x22,\x22co.'+'hu\x22,\x22info.'+'hu\x22,\x22org.h'+'u\x22,\x22priv.h'+'u\x22,\x22sport.'+'hu\x22,\x22tm.hu'+'\x22,\x222000.hu'+'\x22,\x22agrar.h'+'u\x22,\x22bolt.h'+'u\x22,\x22casino'+'.hu\x22,\x22city'+'.hu\x22,\x22erot'+'ica.hu\x22,\x22e'+'rotika.hu\x22'+',\x22film.hu\x22'+',\x22forum.hu'+'\x22,\x22games.h'+'u\x22,\x22hotel.'+'hu\x22,\x22ingat'+'lan.hu\x22,\x22j'+'ogasz.hu\x22,'+'\x22konyvelo.'+'hu\x22,\x22lakas'+'.hu\x22,\x22medi'+'a.hu\x22,\x22new'+'s.hu\x22,\x22rek'+'lam.hu\x22,\x22s'+'ex.hu\x22,\x22sh'+'op.hu\x22,\x22su'+'li.hu\x22,\x22sz'+'ex.hu\x22,\x22to'+'zsde.hu\x22,\x22'+'utazas.hu\x22'+',\x22video.hu'+'\x22,\x22id\x22,\x22ac'+'.id\x22,\x22biz.'+'id\x22,\x22co.id'+'\x22,\x22desa.id'+'\x22,\x22go.id\x22,'+'\x22mil.id\x22,\x22'+'my.id\x22,\x22ne'+'t.id\x22,\x22or.'+'id\x22,\x22ponpe'+'s.id\x22,\x22sch'+'.id\x22,\x22web.'+'id\x22,\x22ie\x22,\x22'+'gov.ie\x22,\x22i'+'l\x22,\x22ac.il\x22'+',\x22co.il\x22,\x22'+'gov.il\x22,\x22i'+'df.il\x22,\x22k1'+'2.il\x22,\x22mun'+'i.il\x22,\x22net'+'.il\x22,\x22org.'+'il\x22,\x22im\x22,\x22'+'ac.im\x22,\x22co'+'.im\x22,\x22com.'+'im\x22,\x22ltd.c'+'o.im\x22,\x22net'+'.im\x22,\x22org.'+'im\x22,\x22plc.c'+'o.im\x22,\x22tt.'+'im\x22,\x22tv.im'+'\x22,\x22in\x22,\x22co'+'.in\x22,\x22firm'+'.in\x22,\x22net.'+'in\x22,\x22org.i'+'n\x22,\x22gen.in'+'\x22,\x22ind.in\x22'+',\x22nic.in\x22,'+'\x22ac.in\x22,\x22e'+'du.in\x22,\x22re'+'s.in\x22,\x22gov'+'.in\x22,\x22mil.'+'in\x22,\x22info\x22'+',\x22int\x22,\x22eu'+'.int\x22,\x22io\x22'+',\x22com.io\x22,')+('\x22iq\x22,\x22gov.'+'iq\x22,\x22edu.i'+'q\x22,\x22mil.iq'+'\x22,\x22com.iq\x22'+',\x22org.iq\x22,'+'\x22net.iq\x22,\x22'+'ir\x22,\x22ac.ir'+'\x22,\x22co.ir\x22,'+'\x22gov.ir\x22,\x22'+'id.ir\x22,\x22ne'+'t.ir\x22,\x22org'+'.ir\x22,\x22sch.'+'ir\x22,\x22Ų§ŪŒŲ±Ų§Ł†'+'.ir\x22,\x22ايرا'+'ن.ir\x22,\x22is\x22'+',\x22net.is\x22,'+'\x22com.is\x22,\x22'+'edu.is\x22,\x22g'+'ov.is\x22,\x22or'+'g.is\x22,\x22int'+'.is\x22,\x22it\x22,'+'\x22gov.it\x22,\x22'+'edu.it\x22,\x22a'+'br.it\x22,\x22ab'+'ruzzo.it\x22,'+'\x22aosta-val'+'ley.it\x22,\x22a'+'ostavalley'+'.it\x22,\x22bas.'+'it\x22,\x22basil'+'icata.it\x22,'+'\x22cal.it\x22,\x22'+'calabria.i'+'t\x22,\x22cam.it'+'\x22,\x22campani'+'a.it\x22,\x22emi'+'lia-romagn'+'a.it\x22,\x22emi'+'liaromagna'+'.it\x22,\x22emr.'+'it\x22,\x22friul'+'i-v-giulia'+'.it\x22,\x22friu'+'li-ve-giul'+'ia.it\x22,\x22fr'+'iuli-vegiu'+'lia.it\x22,\x22f'+'riuli-vene'+'zia-giulia'+'.it\x22,\x22friu'+'li-venezia'+'giulia.it\x22'+',\x22friuli-v'+'giulia.it\x22'+',\x22friuliv-'+'giulia.it\x22'+',\x22friulive'+'-giulia.it'+'\x22,\x22friuliv'+'egiulia.it'+'\x22,\x22friuliv'+'enezia-giu'+'lia.it\x22,\x22f'+'riulivenez'+'iagiulia.i'+'t\x22,\x22friuli'+'vgiulia.it'+'\x22,\x22fvg.it\x22'+',\x22laz.it\x22,'+'\x22lazio.it\x22'+',\x22lig.it\x22,'+'\x22liguria.i'+'t\x22,\x22lom.it'+'\x22,\x22lombard'+'ia.it\x22,\x22lo'+'mbardy.it\x22'+',\x22lucania.'+'it\x22,\x22mar.i'+'t\x22,\x22marche'+'.it\x22,\x22mol.'+'it\x22,\x22molis'+'e.it\x22,\x22pie'+'dmont.it\x22,'+'\x22piemonte.'+'it\x22,\x22pmn.i'+'t\x22,\x22pug.it'+'\x22,\x22puglia.'+'it\x22,\x22sar.i'+'t\x22,\x22sardeg'+'na.it\x22,\x22sa'+'rdinia.it\x22'+',\x22sic.it\x22,'+'\x22sicilia.i'+'t\x22,\x22sicily'+'.it\x22,\x22taa.'+'it\x22,\x22tos.i'+'t\x22,\x22toscan'+'a.it\x22,\x22tre'+'ntin-sud-t'+'irol.it\x22,\x22')+('trentin-sü'+'d-tirol.it'+'\x22,\x22trentin'+'-sudtirol.'+'it\x22,\x22trent'+'in-südtiro'+'l.it\x22,\x22tre'+'ntin-sued-'+'tirol.it\x22,'+'\x22trentin-s'+'uedtirol.i'+'t\x22,\x22trenti'+'no-a-adige'+'.it\x22,\x22tren'+'tino-aadig'+'e.it\x22,\x22tre'+'ntino-alto'+'-adige.it\x22'+',\x22trentino'+'-altoadige'+'.it\x22,\x22tren'+'tino-s-tir'+'ol.it\x22,\x22tr'+'entino-sti'+'rol.it\x22,\x22t'+'rentino-su'+'d-tirol.it'+'\x22,\x22trentin'+'o-süd-tiro'+'l.it\x22,\x22tre'+'ntino-sudt'+'irol.it\x22,\x22'+'trentino-s'+'üdtirol.it'+'\x22,\x22trentin'+'o-sued-tir'+'ol.it\x22,\x22tr'+'entino-sue'+'dtirol.it\x22'+',\x22trentino'+'.it\x22,\x22tren'+'tinoa-adig'+'e.it\x22,\x22tre'+'ntinoaadig'+'e.it\x22,\x22tre'+'ntinoalto-'+'adige.it\x22,'+'\x22trentinoa'+'ltoadige.i'+'t\x22,\x22trenti'+'nos-tirol.'+'it\x22,\x22trent'+'inostirol.'+'it\x22,\x22trent'+'inosud-tir'+'ol.it\x22,\x22tr'+'entinosüd-'+'tirol.it\x22,'+'\x22trentinos'+'udtirol.it'+'\x22,\x22trentin'+'osüdtirol.'+'it\x22,\x22trent'+'inosued-ti'+'rol.it\x22,\x22t'+'rentinosue'+'dtirol.it\x22'+',\x22trentins'+'ud-tirol.i'+'t\x22,\x22trenti'+'nsüd-tirol'+'.it\x22,\x22tren'+'tinsudtiro'+'l.it\x22,\x22tre'+'ntinsüdtir'+'ol.it\x22,\x22tr'+'entinsued-'+'tirol.it\x22,'+'\x22trentinsu'+'edtirol.it'+'\x22,\x22tuscany'+'.it\x22,\x22umb.'+'it\x22,\x22umbri'+'a.it\x22,\x22val'+'-d-aosta.i'+'t\x22,\x22val-da'+'osta.it\x22,\x22'+'vald-aosta'+'.it\x22,\x22vald'+'aosta.it\x22,'+'\x22valle-aos'+'ta.it\x22,\x22va'+'lle-d-aost'+'a.it\x22,\x22val'+'le-daosta.'+'it\x22,\x22valle'+'aosta.it\x22,'+'\x22valled-ao'+'sta.it\x22,\x22v'+'alledaosta')+('.it\x22,\x22vall'+'ee-aoste.i'+'t\x22,\x22vallĆ©e'+'-aoste.it\x22'+',\x22vallee-d'+'-aoste.it\x22'+',\x22vallĆ©e-d'+'-aoste.it\x22'+',\x22valleeao'+'ste.it\x22,\x22v'+'allĆ©eaoste'+'.it\x22,\x22vall'+'eedaoste.i'+'t\x22,\x22vallĆ©e'+'daoste.it\x22'+',\x22vao.it\x22,'+'\x22vda.it\x22,\x22'+'ven.it\x22,\x22v'+'eneto.it\x22,'+'\x22ag.it\x22,\x22a'+'grigento.i'+'t\x22,\x22al.it\x22'+',\x22alessand'+'ria.it\x22,\x22a'+'lto-adige.'+'it\x22,\x22altoa'+'dige.it\x22,\x22'+'an.it\x22,\x22an'+'cona.it\x22,\x22'+'andria-bar'+'letta-tran'+'i.it\x22,\x22and'+'ria-trani-'+'barletta.i'+'t\x22,\x22andria'+'barlettatr'+'ani.it\x22,\x22a'+'ndriatrani'+'barletta.i'+'t\x22,\x22ao.it\x22'+',\x22aosta.it'+'\x22,\x22aoste.i'+'t\x22,\x22ap.it\x22'+',\x22aq.it\x22,\x22'+'aquila.it\x22'+',\x22ar.it\x22,\x22'+'arezzo.it\x22'+',\x22ascoli-p'+'iceno.it\x22,'+'\x22ascolipic'+'eno.it\x22,\x22a'+'sti.it\x22,\x22a'+'t.it\x22,\x22av.'+'it\x22,\x22avell'+'ino.it\x22,\x22b'+'a.it\x22,\x22bal'+'san-sudtir'+'ol.it\x22,\x22ba'+'lsan-südti'+'rol.it\x22,\x22b'+'alsan-sued'+'tirol.it\x22,'+'\x22balsan.it'+'\x22,\x22bari.it'+'\x22,\x22barlett'+'a-trani-an'+'dria.it\x22,\x22'+'barlettatr'+'aniandria.'+'it\x22,\x22bellu'+'no.it\x22,\x22be'+'nevento.it'+'\x22,\x22bergamo'+'.it\x22,\x22bg.i'+'t\x22,\x22bi.it\x22'+',\x22biella.i'+'t\x22,\x22bl.it\x22'+',\x22bn.it\x22,\x22'+'bo.it\x22,\x22bo'+'logna.it\x22,'+'\x22bolzano-a'+'ltoadige.i'+'t\x22,\x22bolzan'+'o.it\x22,\x22boz'+'en-sudtiro'+'l.it\x22,\x22boz'+'en-südtiro'+'l.it\x22,\x22boz'+'en-suedtir'+'ol.it\x22,\x22bo'+'zen.it\x22,\x22b'+'r.it\x22,\x22bre'+'scia.it\x22,\x22'+'brindisi.i'+'t\x22,\x22bs.it\x22'+',\x22bt.it\x22,\x22'+'bulsan-sud'+'tirol.it\x22,'+'\x22bulsan-sü'+'dtirol.it\x22')+(',\x22bulsan-s'+'uedtirol.i'+'t\x22,\x22bulsan'+'.it\x22,\x22bz.i'+'t\x22,\x22ca.it\x22'+',\x22cagliari'+'.it\x22,\x22calt'+'anissetta.'+'it\x22,\x22campi'+'dano-medio'+'.it\x22,\x22camp'+'idanomedio'+'.it\x22,\x22camp'+'obasso.it\x22'+',\x22carbonia'+'-iglesias.'+'it\x22,\x22carbo'+'niaiglesia'+'s.it\x22,\x22car'+'rara-massa'+'.it\x22,\x22carr'+'aramassa.i'+'t\x22,\x22casert'+'a.it\x22,\x22cat'+'ania.it\x22,\x22'+'catanzaro.'+'it\x22,\x22cb.it'+'\x22,\x22ce.it\x22,'+'\x22cesena-fo'+'rli.it\x22,\x22c'+'esena-forl'+'Ƭ.it\x22,\x22ces'+'enaforli.i'+'t\x22,\x22cesena'+'forlƬ.it\x22,'+'\x22ch.it\x22,\x22c'+'hieti.it\x22,'+'\x22ci.it\x22,\x22c'+'l.it\x22,\x22cn.'+'it\x22,\x22co.it'+'\x22,\x22como.it'+'\x22,\x22cosenza'+'.it\x22,\x22cr.i'+'t\x22,\x22cremon'+'a.it\x22,\x22cro'+'tone.it\x22,\x22'+'cs.it\x22,\x22ct'+'.it\x22,\x22cune'+'o.it\x22,\x22cz.'+'it\x22,\x22dell-'+'ogliastra.'+'it\x22,\x22dello'+'gliastra.i'+'t\x22,\x22en.it\x22'+',\x22enna.it\x22'+',\x22fc.it\x22,\x22'+'fe.it\x22,\x22fe'+'rmo.it\x22,\x22f'+'errara.it\x22'+',\x22fg.it\x22,\x22'+'fi.it\x22,\x22fi'+'renze.it\x22,'+'\x22florence.'+'it\x22,\x22fm.it'+'\x22,\x22foggia.'+'it\x22,\x22forli'+'-cesena.it'+'\x22,\x22forlƬ-c'+'esena.it\x22,'+'\x22forlicese'+'na.it\x22,\x22fo'+'rlƬcesena.'+'it\x22,\x22fr.it'+'\x22,\x22frosino'+'ne.it\x22,\x22ge'+'.it\x22,\x22geno'+'a.it\x22,\x22gen'+'ova.it\x22,\x22g'+'o.it\x22,\x22gor'+'izia.it\x22,\x22'+'gr.it\x22,\x22gr'+'osseto.it\x22'+',\x22iglesias'+'-carbonia.'+'it\x22,\x22igles'+'iascarboni'+'a.it\x22,\x22im.'+'it\x22,\x22imper'+'ia.it\x22,\x22is'+'.it\x22,\x22iser'+'nia.it\x22,\x22k'+'r.it\x22,\x22la-'+'spezia.it\x22'+',\x22laquila.'+'it\x22,\x22laspe'+'zia.it\x22,\x22l'+'atina.it\x22,'+'\x22lc.it\x22,\x22l'+'e.it\x22,\x22lec'+'ce.it\x22,\x22le')+('cco.it\x22,\x22l'+'i.it\x22,\x22liv'+'orno.it\x22,\x22'+'lo.it\x22,\x22lo'+'di.it\x22,\x22lt'+'.it\x22,\x22lu.i'+'t\x22,\x22lucca.'+'it\x22,\x22macer'+'ata.it\x22,\x22m'+'antova.it\x22'+',\x22massa-ca'+'rrara.it\x22,'+'\x22massacarr'+'ara.it\x22,\x22m'+'atera.it\x22,'+'\x22mb.it\x22,\x22m'+'c.it\x22,\x22me.'+'it\x22,\x22medio'+'-campidano'+'.it\x22,\x22medi'+'ocampidano'+'.it\x22,\x22mess'+'ina.it\x22,\x22m'+'i.it\x22,\x22mil'+'an.it\x22,\x22mi'+'lano.it\x22,\x22'+'mn.it\x22,\x22mo'+'.it\x22,\x22mode'+'na.it\x22,\x22mo'+'nza-brianz'+'a.it\x22,\x22mon'+'za-e-della'+'-brianza.i'+'t\x22,\x22monza.'+'it\x22,\x22monza'+'brianza.it'+'\x22,\x22monzaeb'+'rianza.it\x22'+',\x22monzaede'+'llabrianza'+'.it\x22,\x22ms.i'+'t\x22,\x22mt.it\x22'+',\x22na.it\x22,\x22'+'naples.it\x22'+',\x22napoli.i'+'t\x22,\x22no.it\x22'+',\x22novara.i'+'t\x22,\x22nu.it\x22'+',\x22nuoro.it'+'\x22,\x22og.it\x22,'+'\x22ogliastra'+'.it\x22,\x22olbi'+'a-tempio.i'+'t\x22,\x22olbiat'+'empio.it\x22,'+'\x22or.it\x22,\x22o'+'ristano.it'+'\x22,\x22ot.it\x22,'+'\x22pa.it\x22,\x22p'+'adova.it\x22,'+'\x22padua.it\x22'+',\x22palermo.'+'it\x22,\x22parma'+'.it\x22,\x22pavi'+'a.it\x22,\x22pc.'+'it\x22,\x22pd.it'+'\x22,\x22pe.it\x22,'+'\x22perugia.i'+'t\x22,\x22pesaro'+'-urbino.it'+'\x22,\x22pesarou'+'rbino.it\x22,'+'\x22pescara.i'+'t\x22,\x22pg.it\x22'+',\x22pi.it\x22,\x22'+'piacenza.i'+'t\x22,\x22pisa.i'+'t\x22,\x22pistoi'+'a.it\x22,\x22pn.'+'it\x22,\x22po.it'+'\x22,\x22pordeno'+'ne.it\x22,\x22po'+'tenza.it\x22,'+'\x22pr.it\x22,\x22p'+'rato.it\x22,\x22'+'pt.it\x22,\x22pu'+'.it\x22,\x22pv.i'+'t\x22,\x22pz.it\x22'+',\x22ra.it\x22,\x22'+'ragusa.it\x22'+',\x22ravenna.'+'it\x22,\x22rc.it'+'\x22,\x22re.it\x22,'+'\x22reggio-ca'+'labria.it\x22'+',\x22reggio-e'+'milia.it\x22,'+'\x22reggiocal'+'abria.it\x22,'+'\x22reggioemi')+('lia.it\x22,\x22r'+'g.it\x22,\x22ri.'+'it\x22,\x22rieti'+'.it\x22,\x22rimi'+'ni.it\x22,\x22rm'+'.it\x22,\x22rn.i'+'t\x22,\x22ro.it\x22'+',\x22roma.it\x22'+',\x22rome.it\x22'+',\x22rovigo.i'+'t\x22,\x22sa.it\x22'+',\x22salerno.'+'it\x22,\x22sassa'+'ri.it\x22,\x22sa'+'vona.it\x22,\x22'+'si.it\x22,\x22si'+'ena.it\x22,\x22s'+'iracusa.it'+'\x22,\x22so.it\x22,'+'\x22sondrio.i'+'t\x22,\x22sp.it\x22'+',\x22sr.it\x22,\x22'+'ss.it\x22,\x22su'+'edtirol.it'+'\x22,\x22südtiro'+'l.it\x22,\x22sv.'+'it\x22,\x22ta.it'+'\x22,\x22taranto'+'.it\x22,\x22te.i'+'t\x22,\x22tempio'+'-olbia.it\x22'+',\x22tempiool'+'bia.it\x22,\x22t'+'eramo.it\x22,'+'\x22terni.it\x22'+',\x22tn.it\x22,\x22'+'to.it\x22,\x22to'+'rino.it\x22,\x22'+'tp.it\x22,\x22tr'+'.it\x22,\x22tran'+'i-andria-b'+'arletta.it'+'\x22,\x22trani-b'+'arletta-an'+'dria.it\x22,\x22'+'traniandri'+'abarletta.'+'it\x22,\x22trani'+'barlettaan'+'dria.it\x22,\x22'+'trapani.it'+'\x22,\x22trento.'+'it\x22,\x22trevi'+'so.it\x22,\x22tr'+'ieste.it\x22,'+'\x22ts.it\x22,\x22t'+'urin.it\x22,\x22'+'tv.it\x22,\x22ud'+'.it\x22,\x22udin'+'e.it\x22,\x22urb'+'ino-pesaro'+'.it\x22,\x22urbi'+'nopesaro.i'+'t\x22,\x22va.it\x22'+',\x22varese.i'+'t\x22,\x22vb.it\x22'+',\x22vc.it\x22,\x22'+'ve.it\x22,\x22ve'+'nezia.it\x22,'+'\x22venice.it'+'\x22,\x22verbani'+'a.it\x22,\x22ver'+'celli.it\x22,'+'\x22verona.it'+'\x22,\x22vi.it\x22,'+'\x22vibo-vale'+'ntia.it\x22,\x22'+'vibovalent'+'ia.it\x22,\x22vi'+'cenza.it\x22,'+'\x22viterbo.i'+'t\x22,\x22vr.it\x22'+',\x22vs.it\x22,\x22'+'vt.it\x22,\x22vv'+'.it\x22,\x22je\x22,'+'\x22co.je\x22,\x22n'+'et.je\x22,\x22or'+'g.je\x22,\x22*.j'+'m\x22,\x22jo\x22,\x22c'+'om.jo\x22,\x22or'+'g.jo\x22,\x22net'+'.jo\x22,\x22edu.'+'jo\x22,\x22sch.j'+'o\x22,\x22gov.jo'+'\x22,\x22mil.jo\x22'+',\x22name.jo\x22'+',\x22jobs\x22,\x22j'+'p\x22,\x22ac.jp\x22'+',\x22ad.jp\x22,\x22'+'co.jp\x22,\x22ed')+('.jp\x22,\x22go.j'+'p\x22,\x22gr.jp\x22'+',\x22lg.jp\x22,\x22'+'ne.jp\x22,\x22or'+'.jp\x22,\x22aich'+'i.jp\x22,\x22aki'+'ta.jp\x22,\x22ao'+'mori.jp\x22,\x22'+'chiba.jp\x22,'+'\x22ehime.jp\x22'+',\x22fukui.jp'+'\x22,\x22fukuoka'+'.jp\x22,\x22fuku'+'shima.jp\x22,'+'\x22gifu.jp\x22,'+'\x22gunma.jp\x22'+',\x22hiroshim'+'a.jp\x22,\x22hok'+'kaido.jp\x22,'+'\x22hyogo.jp\x22'+',\x22ibaraki.'+'jp\x22,\x22ishik'+'awa.jp\x22,\x22i'+'wate.jp\x22,\x22'+'kagawa.jp\x22'+',\x22kagoshim'+'a.jp\x22,\x22kan'+'agawa.jp\x22,'+'\x22kochi.jp\x22'+',\x22kumamoto'+'.jp\x22,\x22kyot'+'o.jp\x22,\x22mie'+'.jp\x22,\x22miya'+'gi.jp\x22,\x22mi'+'yazaki.jp\x22'+',\x22nagano.j'+'p\x22,\x22nagasa'+'ki.jp\x22,\x22na'+'ra.jp\x22,\x22ni'+'igata.jp\x22,'+'\x22oita.jp\x22,'+'\x22okayama.j'+'p\x22,\x22okinaw'+'a.jp\x22,\x22osa'+'ka.jp\x22,\x22sa'+'ga.jp\x22,\x22sa'+'itama.jp\x22,'+'\x22shiga.jp\x22'+',\x22shimane.'+'jp\x22,\x22shizu'+'oka.jp\x22,\x22t'+'ochigi.jp\x22'+',\x22tokushim'+'a.jp\x22,\x22tok'+'yo.jp\x22,\x22to'+'ttori.jp\x22,'+'\x22toyama.jp'+'\x22,\x22wakayam'+'a.jp\x22,\x22yam'+'agata.jp\x22,'+'\x22yamaguchi'+'.jp\x22,\x22yama'+'nashi.jp\x22,'+'\x22栃木.jp\x22,\x22ꄛ'+'矄.jp\x22,\x22愛媛.'+'jp\x22,\x22兵庫.jp'+'\x22,\x22ē†Šęœ¬.jp\x22,'+'\x22čŒØåŸŽ.jp\x22,\x22北'+'굷道.jp\x22,\x22åƒč‘‰'+'.jp\x22,\x22å’Œę­Œå±±.'+'jp\x22,\x22長哎.jp'+'\x22,\x22長野.jp\x22,'+'\x22ę–°ę½Ÿ.jp\x22,\x22青'+'森.jp\x22,\x22静岔.'+'jp\x22,\x22ę±äŗ¬.jp'+'\x22,\x22ēŸ³å·.jp\x22,'+'\x22åŸ¼ēŽ‰.jp\x22,\x22äø‰'+'重.jp\x22,\x22京都.'+'jp\x22,\x22佐賀.jp'+'\x22,\x22大分.jp\x22,'+'\x22大阪.jp\x22,\x22儈'+'良.jp\x22,\x22宮城.'+'jp\x22,\x22宮哎.jp'+'\x22,\x22富山.jp\x22,'+'\x22山口.jp\x22,\x22å±±'+'å½¢.jp\x22,\x22山梨.'+'jp\x22,\x22岩手.jp'+'\x22,\x22岐阜.jp\x22,'+'\x22岔山.jp\x22,\x22å³¶'+'ę ¹.jp\x22,\x22広島.'+'jp\x22,\x22徳島.jp'+'\x22,\x22ę²–ēø„.jp\x22,'+'\x22滋賀.jp\x22,\x22ē„ž'+'儈川.jp\x22,\x22ē¦äŗ•'+'.jp\x22,\x22ē¦å²”.j'+'p\x22,\x22ē¦å³¶.jp\x22'+',\x22ē§‹ē”°.jp\x22,\x22'+'群馬.jp\x22,\x22香川'+'.jp\x22,\x22高矄.j'+'p\x22,\x22鳄取.jp\x22')+(',\x22鹿児島.jp\x22,'+'\x22*.kawasak'+'i.jp\x22,\x22*.k'+'itakyushu.'+'jp\x22,\x22*.kob'+'e.jp\x22,\x22*.n'+'agoya.jp\x22,'+'\x22*.sapporo'+'.jp\x22,\x22*.se'+'ndai.jp\x22,\x22'+'*.yokohama'+'.jp\x22,\x22!cit'+'y.kawasaki'+'.jp\x22,\x22!cit'+'y.kitakyus'+'hu.jp\x22,\x22!c'+'ity.kobe.j'+'p\x22,\x22!city.'+'nagoya.jp\x22'+',\x22!city.sa'+'pporo.jp\x22,'+'\x22!city.sen'+'dai.jp\x22,\x22!'+'city.yokoh'+'ama.jp\x22,\x22a'+'isai.aichi'+'.jp\x22,\x22ama.'+'aichi.jp\x22,'+'\x22anjo.aich'+'i.jp\x22,\x22asu'+'ke.aichi.j'+'p\x22,\x22chiryu'+'.aichi.jp\x22'+',\x22chita.ai'+'chi.jp\x22,\x22f'+'uso.aichi.'+'jp\x22,\x22gamag'+'ori.aichi.'+'jp\x22,\x22handa'+'.aichi.jp\x22'+',\x22hazu.aic'+'hi.jp\x22,\x22he'+'kinan.aich'+'i.jp\x22,\x22hig'+'ashiura.ai'+'chi.jp\x22,\x22i'+'chinomiya.'+'aichi.jp\x22,'+'\x22inazawa.a'+'ichi.jp\x22,\x22'+'inuyama.ai'+'chi.jp\x22,\x22i'+'sshiki.aic'+'hi.jp\x22,\x22iw'+'akura.aich'+'i.jp\x22,\x22kan'+'ie.aichi.j'+'p\x22,\x22kariya'+'.aichi.jp\x22'+',\x22kasugai.'+'aichi.jp\x22,'+'\x22kira.aich'+'i.jp\x22,\x22kiy'+'osu.aichi.'+'jp\x22,\x22komak'+'i.aichi.jp'+'\x22,\x22konan.a'+'ichi.jp\x22,\x22'+'kota.aichi'+'.jp\x22,\x22miha'+'ma.aichi.j'+'p\x22,\x22miyosh'+'i.aichi.jp'+'\x22,\x22nishio.'+'aichi.jp\x22,'+'\x22nisshin.a'+'ichi.jp\x22,\x22'+'obu.aichi.'+'jp\x22,\x22oguch'+'i.aichi.jp'+'\x22,\x22oharu.a'+'ichi.jp\x22,\x22'+'okazaki.ai'+'chi.jp\x22,\x22o'+'wariasahi.'+'aichi.jp\x22,'+'\x22seto.aich'+'i.jp\x22,\x22shi'+'katsu.aich'+'i.jp\x22,\x22shi'+'nshiro.aic'+'hi.jp\x22,\x22sh'+'itara.aich'+'i.jp\x22,\x22tah'+'ara.aichi.'+'jp\x22,\x22takah'+'ama.aichi.'+'jp\x22,\x22tobis'+'hima.aichi'+'.jp\x22,\x22toei')+('.aichi.jp\x22'+',\x22togo.aic'+'hi.jp\x22,\x22to'+'kai.aichi.'+'jp\x22,\x22tokon'+'ame.aichi.'+'jp\x22,\x22toyoa'+'ke.aichi.j'+'p\x22,\x22toyoha'+'shi.aichi.'+'jp\x22,\x22toyok'+'awa.aichi.'+'jp\x22,\x22toyon'+'e.aichi.jp'+'\x22,\x22toyota.'+'aichi.jp\x22,'+'\x22tsushima.'+'aichi.jp\x22,'+'\x22yatomi.ai'+'chi.jp\x22,\x22a'+'kita.akita'+'.jp\x22,\x22dais'+'en.akita.j'+'p\x22,\x22fujisa'+'to.akita.j'+'p\x22,\x22gojome'+'.akita.jp\x22'+',\x22hachirog'+'ata.akita.'+'jp\x22,\x22happo'+'u.akita.jp'+'\x22,\x22higashi'+'naruse.aki'+'ta.jp\x22,\x22ho'+'njo.akita.'+'jp\x22,\x22honjy'+'o.akita.jp'+'\x22,\x22ikawa.a'+'kita.jp\x22,\x22'+'kamikoani.'+'akita.jp\x22,'+'\x22kamioka.a'+'kita.jp\x22,\x22'+'katagami.a'+'kita.jp\x22,\x22'+'kazuno.aki'+'ta.jp\x22,\x22ki'+'taakita.ak'+'ita.jp\x22,\x22k'+'osaka.akit'+'a.jp\x22,\x22kyo'+'wa.akita.j'+'p\x22,\x22misato'+'.akita.jp\x22'+',\x22mitane.a'+'kita.jp\x22,\x22'+'moriyoshi.'+'akita.jp\x22,'+'\x22nikaho.ak'+'ita.jp\x22,\x22n'+'oshiro.aki'+'ta.jp\x22,\x22od'+'ate.akita.'+'jp\x22,\x22oga.a'+'kita.jp\x22,\x22'+'ogata.akit'+'a.jp\x22,\x22sem'+'boku.akita'+'.jp\x22,\x22yoko'+'te.akita.j'+'p\x22,\x22yuriho'+'njo.akita.'+'jp\x22,\x22aomor'+'i.aomori.j'+'p\x22,\x22gonohe'+'.aomori.jp'+'\x22,\x22hachino'+'he.aomori.'+'jp\x22,\x22hashi'+'kami.aomor'+'i.jp\x22,\x22hir'+'anai.aomor'+'i.jp\x22,\x22hir'+'osaki.aomo'+'ri.jp\x22,\x22it'+'ayanagi.ao'+'mori.jp\x22,\x22'+'kuroishi.a'+'omori.jp\x22,'+'\x22misawa.ao'+'mori.jp\x22,\x22'+'mutsu.aomo'+'ri.jp\x22,\x22na'+'kadomari.a'+'omori.jp\x22,'+'\x22noheji.ao'+'mori.jp\x22,\x22'+'oirase.aom'+'ori.jp\x22,\x22o'+'wani.aomor')+('i.jp\x22,\x22rok'+'unohe.aomo'+'ri.jp\x22,\x22sa'+'nnohe.aomo'+'ri.jp\x22,\x22sh'+'ichinohe.a'+'omori.jp\x22,'+'\x22shingo.ao'+'mori.jp\x22,\x22'+'takko.aomo'+'ri.jp\x22,\x22to'+'wada.aomor'+'i.jp\x22,\x22tsu'+'garu.aomor'+'i.jp\x22,\x22tsu'+'ruta.aomor'+'i.jp\x22,\x22abi'+'ko.chiba.j'+'p\x22,\x22asahi.'+'chiba.jp\x22,'+'\x22chonan.ch'+'iba.jp\x22,\x22c'+'hosei.chib'+'a.jp\x22,\x22cho'+'shi.chiba.'+'jp\x22,\x22chuo.'+'chiba.jp\x22,'+'\x22funabashi'+'.chiba.jp\x22'+',\x22futtsu.c'+'hiba.jp\x22,\x22'+'hanamigawa'+'.chiba.jp\x22'+',\x22ichihara'+'.chiba.jp\x22'+',\x22ichikawa'+'.chiba.jp\x22'+',\x22ichinomi'+'ya.chiba.j'+'p\x22,\x22inzai.'+'chiba.jp\x22,'+'\x22isumi.chi'+'ba.jp\x22,\x22ka'+'magaya.chi'+'ba.jp\x22,\x22ka'+'mogawa.chi'+'ba.jp\x22,\x22ka'+'shiwa.chib'+'a.jp\x22,\x22kat'+'ori.chiba.'+'jp\x22,\x22katsu'+'ura.chiba.'+'jp\x22,\x22kimit'+'su.chiba.j'+'p\x22,\x22kisara'+'zu.chiba.j'+'p\x22,\x22kozaki'+'.chiba.jp\x22'+',\x22kujukuri'+'.chiba.jp\x22'+',\x22kyonan.c'+'hiba.jp\x22,\x22'+'matsudo.ch'+'iba.jp\x22,\x22m'+'idori.chib'+'a.jp\x22,\x22mih'+'ama.chiba.'+'jp\x22,\x22minam'+'iboso.chib'+'a.jp\x22,\x22mob'+'ara.chiba.'+'jp\x22,\x22mutsu'+'zawa.chiba'+'.jp\x22,\x22naga'+'ra.chiba.j'+'p\x22,\x22nagare'+'yama.chiba'+'.jp\x22,\x22nara'+'shino.chib'+'a.jp\x22,\x22nar'+'ita.chiba.'+'jp\x22,\x22noda.'+'chiba.jp\x22,'+'\x22oamishira'+'sato.chiba'+'.jp\x22,\x22omig'+'awa.chiba.'+'jp\x22,\x22onjuk'+'u.chiba.jp'+'\x22,\x22otaki.c'+'hiba.jp\x22,\x22'+'sakae.chib'+'a.jp\x22,\x22sak'+'ura.chiba.'+'jp\x22,\x22shimo'+'fusa.chiba'+'.jp\x22,\x22shir'+'ako.chiba.'+'jp\x22,\x22shiro'+'i.chiba.jp')+('\x22,\x22shisui.'+'chiba.jp\x22,'+'\x22sodegaura'+'.chiba.jp\x22'+',\x22sosa.chi'+'ba.jp\x22,\x22ta'+'ko.chiba.j'+'p\x22,\x22tateya'+'ma.chiba.j'+'p\x22,\x22togane'+'.chiba.jp\x22'+',\x22tohnosho'+'.chiba.jp\x22'+',\x22tomisato'+'.chiba.jp\x22'+',\x22urayasu.'+'chiba.jp\x22,'+'\x22yachimata'+'.chiba.jp\x22'+',\x22yachiyo.'+'chiba.jp\x22,'+'\x22yokaichib'+'a.chiba.jp'+'\x22,\x22yokoshi'+'bahikari.c'+'hiba.jp\x22,\x22'+'yotsukaido'+'.chiba.jp\x22'+',\x22ainan.eh'+'ime.jp\x22,\x22h'+'onai.ehime'+'.jp\x22,\x22ikat'+'a.ehime.jp'+'\x22,\x22imabari'+'.ehime.jp\x22'+',\x22iyo.ehim'+'e.jp\x22,\x22kam'+'ijima.ehim'+'e.jp\x22,\x22kih'+'oku.ehime.'+'jp\x22,\x22kumak'+'ogen.ehime'+'.jp\x22,\x22masa'+'ki.ehime.j'+'p\x22,\x22matsun'+'o.ehime.jp'+'\x22,\x22matsuya'+'ma.ehime.j'+'p\x22,\x22namika'+'ta.ehime.j'+'p\x22,\x22niiham'+'a.ehime.jp'+'\x22,\x22ozu.ehi'+'me.jp\x22,\x22sa'+'ijo.ehime.'+'jp\x22,\x22seiyo'+'.ehime.jp\x22'+',\x22shikokuc'+'huo.ehime.'+'jp\x22,\x22tobe.'+'ehime.jp\x22,'+'\x22toon.ehim'+'e.jp\x22,\x22uch'+'iko.ehime.'+'jp\x22,\x22uwaji'+'ma.ehime.j'+'p\x22,\x22yawata'+'hama.ehime'+'.jp\x22,\x22echi'+'zen.fukui.'+'jp\x22,\x22eihei'+'ji.fukui.j'+'p\x22,\x22fukui.'+'fukui.jp\x22,'+'\x22ikeda.fuk'+'ui.jp\x22,\x22ka'+'tsuyama.fu'+'kui.jp\x22,\x22m'+'ihama.fuku'+'i.jp\x22,\x22min'+'amiechizen'+'.fukui.jp\x22'+',\x22obama.fu'+'kui.jp\x22,\x22o'+'hi.fukui.j'+'p\x22,\x22ono.fu'+'kui.jp\x22,\x22s'+'abae.fukui'+'.jp\x22,\x22saka'+'i.fukui.jp'+'\x22,\x22takaham'+'a.fukui.jp'+'\x22,\x22tsuruga'+'.fukui.jp\x22'+',\x22wakasa.f'+'ukui.jp\x22,\x22'+'ashiya.fuk'+'uoka.jp\x22,\x22'+'buzen.fuku'+'oka.jp\x22,\x22c')+('hikugo.fuk'+'uoka.jp\x22,\x22'+'chikuho.fu'+'kuoka.jp\x22,'+'\x22chikujo.f'+'ukuoka.jp\x22'+',\x22chikushi'+'no.fukuoka'+'.jp\x22,\x22chik'+'uzen.fukuo'+'ka.jp\x22,\x22ch'+'uo.fukuoka'+'.jp\x22,\x22daza'+'ifu.fukuok'+'a.jp\x22,\x22fuk'+'uchi.fukuo'+'ka.jp\x22,\x22ha'+'kata.fukuo'+'ka.jp\x22,\x22hi'+'gashi.fuku'+'oka.jp\x22,\x22h'+'irokawa.fu'+'kuoka.jp\x22,'+'\x22hisayama.'+'fukuoka.jp'+'\x22,\x22iizuka.'+'fukuoka.jp'+'\x22,\x22inatsuk'+'i.fukuoka.'+'jp\x22,\x22kaho.'+'fukuoka.jp'+'\x22,\x22kasuga.'+'fukuoka.jp'+'\x22,\x22kasuya.'+'fukuoka.jp'+'\x22,\x22kawara.'+'fukuoka.jp'+'\x22,\x22keisen.'+'fukuoka.jp'+'\x22,\x22koga.fu'+'kuoka.jp\x22,'+'\x22kurate.fu'+'kuoka.jp\x22,'+'\x22kurogi.fu'+'kuoka.jp\x22,'+'\x22kurume.fu'+'kuoka.jp\x22,'+'\x22minami.fu'+'kuoka.jp\x22,'+'\x22miyako.fu'+'kuoka.jp\x22,'+'\x22miyama.fu'+'kuoka.jp\x22,'+'\x22miyawaka.'+'fukuoka.jp'+'\x22,\x22mizumak'+'i.fukuoka.'+'jp\x22,\x22munak'+'ata.fukuok'+'a.jp\x22,\x22nak'+'agawa.fuku'+'oka.jp\x22,\x22n'+'akama.fuku'+'oka.jp\x22,\x22n'+'ishi.fukuo'+'ka.jp\x22,\x22no'+'gata.fukuo'+'ka.jp\x22,\x22og'+'ori.fukuok'+'a.jp\x22,\x22oka'+'gaki.fukuo'+'ka.jp\x22,\x22ok'+'awa.fukuok'+'a.jp\x22,\x22oki'+'.fukuoka.j'+'p\x22,\x22omuta.'+'fukuoka.jp'+'\x22,\x22onga.fu'+'kuoka.jp\x22,'+'\x22onojo.fuk'+'uoka.jp\x22,\x22'+'oto.fukuok'+'a.jp\x22,\x22sai'+'gawa.fukuo'+'ka.jp\x22,\x22sa'+'saguri.fuk'+'uoka.jp\x22,\x22'+'shingu.fuk'+'uoka.jp\x22,\x22'+'shinyoshit'+'omi.fukuok'+'a.jp\x22,\x22sho'+'nai.fukuok'+'a.jp\x22,\x22soe'+'da.fukuoka'+'.jp\x22,\x22sue.'+'fukuoka.jp'+'\x22,\x22tachiar'+'ai.fukuoka'+'.jp\x22,\x22taga')+('wa.fukuoka'+'.jp\x22,\x22taka'+'ta.fukuoka'+'.jp\x22,\x22toho'+'.fukuoka.j'+'p\x22,\x22toyots'+'u.fukuoka.'+'jp\x22,\x22tsuik'+'i.fukuoka.'+'jp\x22,\x22ukiha'+'.fukuoka.j'+'p\x22,\x22umi.fu'+'kuoka.jp\x22,'+'\x22usui.fuku'+'oka.jp\x22,\x22y'+'amada.fuku'+'oka.jp\x22,\x22y'+'ame.fukuok'+'a.jp\x22,\x22yan'+'agawa.fuku'+'oka.jp\x22,\x22y'+'ukuhashi.f'+'ukuoka.jp\x22'+',\x22aizubang'+'e.fukushim'+'a.jp\x22,\x22aiz'+'umisato.fu'+'kushima.jp'+'\x22,\x22aizuwak'+'amatsu.fuk'+'ushima.jp\x22'+',\x22asakawa.'+'fukushima.'+'jp\x22,\x22banda'+'i.fukushim'+'a.jp\x22,\x22dat'+'e.fukushim'+'a.jp\x22,\x22fuk'+'ushima.fuk'+'ushima.jp\x22'+',\x22furudono'+'.fukushima'+'.jp\x22,\x22futa'+'ba.fukushi'+'ma.jp\x22,\x22ha'+'nawa.fukus'+'hima.jp\x22,\x22'+'higashi.fu'+'kushima.jp'+'\x22,\x22hirata.'+'fukushima.'+'jp\x22,\x22hiron'+'o.fukushim'+'a.jp\x22,\x22iit'+'ate.fukush'+'ima.jp\x22,\x22i'+'nawashiro.'+'fukushima.'+'jp\x22,\x22ishik'+'awa.fukush'+'ima.jp\x22,\x22i'+'waki.fukus'+'hima.jp\x22,\x22'+'izumizaki.'+'fukushima.'+'jp\x22,\x22kagam'+'iishi.fuku'+'shima.jp\x22,'+'\x22kaneyama.'+'fukushima.'+'jp\x22,\x22kawam'+'ata.fukush'+'ima.jp\x22,\x22k'+'itakata.fu'+'kushima.jp'+'\x22,\x22kitashi'+'obara.fuku'+'shima.jp\x22,'+'\x22koori.fuk'+'ushima.jp\x22'+',\x22koriyama'+'.fukushima'+'.jp\x22,\x22kuni'+'mi.fukushi'+'ma.jp\x22,\x22mi'+'haru.fukus'+'hima.jp\x22,\x22'+'mishima.fu'+'kushima.jp'+'\x22,\x22namie.f'+'ukushima.j'+'p\x22,\x22nango.'+'fukushima.'+'jp\x22,\x22nishi'+'aizu.fukus'+'hima.jp\x22,\x22'+'nishigo.fu'+'kushima.jp'+'\x22,\x22okuma.f'+'ukushima.j')+('p\x22,\x22omoteg'+'o.fukushim'+'a.jp\x22,\x22ono'+'.fukushima'+'.jp\x22,\x22otam'+'a.fukushim'+'a.jp\x22,\x22sam'+'egawa.fuku'+'shima.jp\x22,'+'\x22shimogo.f'+'ukushima.j'+'p\x22,\x22shirak'+'awa.fukush'+'ima.jp\x22,\x22s'+'howa.fukus'+'hima.jp\x22,\x22'+'soma.fukus'+'hima.jp\x22,\x22'+'sukagawa.f'+'ukushima.j'+'p\x22,\x22taishi'+'n.fukushim'+'a.jp\x22,\x22tam'+'akawa.fuku'+'shima.jp\x22,'+'\x22tanagura.'+'fukushima.'+'jp\x22,\x22tenei'+'.fukushima'+'.jp\x22,\x22yabu'+'ki.fukushi'+'ma.jp\x22,\x22ya'+'mato.fukus'+'hima.jp\x22,\x22'+'yamatsuri.'+'fukushima.'+'jp\x22,\x22yanai'+'zu.fukushi'+'ma.jp\x22,\x22yu'+'gawa.fukus'+'hima.jp\x22,\x22'+'anpachi.gi'+'fu.jp\x22,\x22en'+'a.gifu.jp\x22'+',\x22gifu.gif'+'u.jp\x22,\x22gin'+'an.gifu.jp'+'\x22,\x22godo.gi'+'fu.jp\x22,\x22gu'+'jo.gifu.jp'+'\x22,\x22hashima'+'.gifu.jp\x22,'+'\x22hichiso.g'+'ifu.jp\x22,\x22h'+'ida.gifu.j'+'p\x22,\x22higash'+'ishirakawa'+'.gifu.jp\x22,'+'\x22ibigawa.g'+'ifu.jp\x22,\x22i'+'keda.gifu.'+'jp\x22,\x22kakam'+'igahara.gi'+'fu.jp\x22,\x22ka'+'ni.gifu.jp'+'\x22,\x22kasahar'+'a.gifu.jp\x22'+',\x22kasamats'+'u.gifu.jp\x22'+',\x22kawaue.g'+'ifu.jp\x22,\x22k'+'itagata.gi'+'fu.jp\x22,\x22mi'+'no.gifu.jp'+'\x22,\x22minokam'+'o.gifu.jp\x22'+',\x22mitake.g'+'ifu.jp\x22,\x22m'+'izunami.gi'+'fu.jp\x22,\x22mo'+'tosu.gifu.'+'jp\x22,\x22nakat'+'sugawa.gif'+'u.jp\x22,\x22oga'+'ki.gifu.jp'+'\x22,\x22sakahog'+'i.gifu.jp\x22'+',\x22seki.gif'+'u.jp\x22,\x22sek'+'igahara.gi'+'fu.jp\x22,\x22sh'+'irakawa.gi'+'fu.jp\x22,\x22ta'+'jimi.gifu.'+'jp\x22,\x22takay'+'ama.gifu.j'+'p\x22,\x22tarui.'+'gifu.jp\x22,\x22'+'toki.gifu.'+'jp\x22,\x22tomik')+('a.gifu.jp\x22'+',\x22wanouchi'+'.gifu.jp\x22,'+'\x22yamagata.'+'gifu.jp\x22,\x22'+'yaotsu.gif'+'u.jp\x22,\x22yor'+'o.gifu.jp\x22'+',\x22annaka.g'+'unma.jp\x22,\x22'+'chiyoda.gu'+'nma.jp\x22,\x22f'+'ujioka.gun'+'ma.jp\x22,\x22hi'+'gashiagats'+'uma.gunma.'+'jp\x22,\x22isesa'+'ki.gunma.j'+'p\x22,\x22itakur'+'a.gunma.jp'+'\x22,\x22kanna.g'+'unma.jp\x22,\x22'+'kanra.gunm'+'a.jp\x22,\x22kat'+'ashina.gun'+'ma.jp\x22,\x22ka'+'waba.gunma'+'.jp\x22,\x22kiry'+'u.gunma.jp'+'\x22,\x22kusatsu'+'.gunma.jp\x22'+',\x22maebashi'+'.gunma.jp\x22'+',\x22meiwa.gu'+'nma.jp\x22,\x22m'+'idori.gunm'+'a.jp\x22,\x22min'+'akami.gunm'+'a.jp\x22,\x22nag'+'anohara.gu'+'nma.jp\x22,\x22n'+'akanojo.gu'+'nma.jp\x22,\x22n'+'anmoku.gun'+'ma.jp\x22,\x22nu'+'mata.gunma'+'.jp\x22,\x22oizu'+'mi.gunma.j'+'p\x22,\x22ora.gu'+'nma.jp\x22,\x22o'+'ta.gunma.j'+'p\x22,\x22shibuk'+'awa.gunma.'+'jp\x22,\x22shimo'+'nita.gunma'+'.jp\x22,\x22shin'+'to.gunma.j'+'p\x22,\x22showa.'+'gunma.jp\x22,'+'\x22takasaki.'+'gunma.jp\x22,'+'\x22takayama.'+'gunma.jp\x22,'+'\x22tamamura.'+'gunma.jp\x22,'+'\x22tatebayas'+'hi.gunma.j'+'p\x22,\x22tomiok'+'a.gunma.jp'+'\x22,\x22tsukiyo'+'no.gunma.j'+'p\x22,\x22tsumag'+'oi.gunma.j'+'p\x22,\x22ueno.g'+'unma.jp\x22,\x22'+'yoshioka.g'+'unma.jp\x22,\x22'+'asaminami.'+'hiroshima.'+'jp\x22,\x22daiwa'+'.hiroshima'+'.jp\x22,\x22etaj'+'ima.hirosh'+'ima.jp\x22,\x22f'+'uchu.hiros'+'hima.jp\x22,\x22'+'fukuyama.h'+'iroshima.j'+'p\x22,\x22hatsuk'+'aichi.hiro'+'shima.jp\x22,'+'\x22higashihi'+'roshima.hi'+'roshima.jp'+'\x22,\x22hongo.h'+'iroshima.j'+'p\x22,\x22jinsek'+'ikogen.hir'+'oshima.jp\x22'+',\x22kaita.hi')+('roshima.jp'+'\x22,\x22kui.hir'+'oshima.jp\x22'+',\x22kumano.h'+'iroshima.j'+'p\x22,\x22kure.h'+'iroshima.j'+'p\x22,\x22mihara'+'.hiroshima'+'.jp\x22,\x22miyo'+'shi.hirosh'+'ima.jp\x22,\x22n'+'aka.hirosh'+'ima.jp\x22,\x22o'+'nomichi.hi'+'roshima.jp'+'\x22,\x22osakika'+'mijima.hir'+'oshima.jp\x22'+',\x22otake.hi'+'roshima.jp'+'\x22,\x22saka.hi'+'roshima.jp'+'\x22,\x22sera.hi'+'roshima.jp'+'\x22,\x22seranis'+'hi.hiroshi'+'ma.jp\x22,\x22sh'+'inichi.hir'+'oshima.jp\x22'+',\x22shobara.'+'hiroshima.'+'jp\x22,\x22takeh'+'ara.hirosh'+'ima.jp\x22,\x22a'+'bashiri.ho'+'kkaido.jp\x22'+',\x22abira.ho'+'kkaido.jp\x22'+',\x22aibetsu.'+'hokkaido.j'+'p\x22,\x22akabir'+'a.hokkaido'+'.jp\x22,\x22akke'+'shi.hokkai'+'do.jp\x22,\x22as'+'ahikawa.ho'+'kkaido.jp\x22'+',\x22ashibets'+'u.hokkaido'+'.jp\x22,\x22asho'+'ro.hokkaid'+'o.jp\x22,\x22ass'+'abu.hokkai'+'do.jp\x22,\x22at'+'suma.hokka'+'ido.jp\x22,\x22b'+'ibai.hokka'+'ido.jp\x22,\x22b'+'iei.hokkai'+'do.jp\x22,\x22bi'+'fuka.hokka'+'ido.jp\x22,\x22b'+'ihoro.hokk'+'aido.jp\x22,\x22'+'biratori.h'+'okkaido.jp'+'\x22,\x22chippub'+'etsu.hokka'+'ido.jp\x22,\x22c'+'hitose.hok'+'kaido.jp\x22,'+'\x22date.hokk'+'aido.jp\x22,\x22'+'ebetsu.hok'+'kaido.jp\x22,'+'\x22embetsu.h'+'okkaido.jp'+'\x22,\x22eniwa.h'+'okkaido.jp'+'\x22,\x22erimo.h'+'okkaido.jp'+'\x22,\x22esan.ho'+'kkaido.jp\x22'+',\x22esashi.h'+'okkaido.jp'+'\x22,\x22fukagaw'+'a.hokkaido'+'.jp\x22,\x22fuku'+'shima.hokk'+'aido.jp\x22,\x22'+'furano.hok'+'kaido.jp\x22,'+'\x22furubira.'+'hokkaido.j'+'p\x22,\x22haboro'+'.hokkaido.'+'jp\x22,\x22hakod'+'ate.hokkai'+'do.jp\x22,\x22ha')+('matonbetsu'+'.hokkaido.'+'jp\x22,\x22hidak'+'a.hokkaido'+'.jp\x22,\x22higa'+'shikagura.'+'hokkaido.j'+'p\x22,\x22higash'+'ikawa.hokk'+'aido.jp\x22,\x22'+'hiroo.hokk'+'aido.jp\x22,\x22'+'hokuryu.ho'+'kkaido.jp\x22'+',\x22hokuto.h'+'okkaido.jp'+'\x22,\x22honbets'+'u.hokkaido'+'.jp\x22,\x22horo'+'kanai.hokk'+'aido.jp\x22,\x22'+'horonobe.h'+'okkaido.jp'+'\x22,\x22ikeda.h'+'okkaido.jp'+'\x22,\x22imakane'+'.hokkaido.'+'jp\x22,\x22ishik'+'ari.hokkai'+'do.jp\x22,\x22iw'+'amizawa.ho'+'kkaido.jp\x22'+',\x22iwanai.h'+'okkaido.jp'+'\x22,\x22kamifur'+'ano.hokkai'+'do.jp\x22,\x22ka'+'mikawa.hok'+'kaido.jp\x22,'+'\x22kamishiho'+'ro.hokkaid'+'o.jp\x22,\x22kam'+'isunagawa.'+'hokkaido.j'+'p\x22,\x22kamoen'+'ai.hokkaid'+'o.jp\x22,\x22kay'+'abe.hokkai'+'do.jp\x22,\x22ke'+'mbuchi.hok'+'kaido.jp\x22,'+'\x22kikonai.h'+'okkaido.jp'+'\x22,\x22kimobet'+'su.hokkaid'+'o.jp\x22,\x22kit'+'ahiroshima'+'.hokkaido.'+'jp\x22,\x22kitam'+'i.hokkaido'+'.jp\x22,\x22kiyo'+'sato.hokka'+'ido.jp\x22,\x22k'+'oshimizu.h'+'okkaido.jp'+'\x22,\x22kunnepp'+'u.hokkaido'+'.jp\x22,\x22kuri'+'yama.hokka'+'ido.jp\x22,\x22k'+'uromatsuna'+'i.hokkaido'+'.jp\x22,\x22kush'+'iro.hokkai'+'do.jp\x22,\x22ku'+'tchan.hokk'+'aido.jp\x22,\x22'+'kyowa.hokk'+'aido.jp\x22,\x22'+'mashike.ho'+'kkaido.jp\x22'+',\x22matsumae'+'.hokkaido.'+'jp\x22,\x22mikas'+'a.hokkaido'+'.jp\x22,\x22mina'+'mifurano.h'+'okkaido.jp'+'\x22,\x22mombets'+'u.hokkaido'+'.jp\x22,\x22mose'+'ushi.hokka'+'ido.jp\x22,\x22m'+'ukawa.hokk'+'aido.jp\x22,\x22'+'muroran.ho'+'kkaido.jp\x22'+',\x22naie.hok'+'kaido.jp\x22,'+'\x22nakagawa.')+('hokkaido.j'+'p\x22,\x22nakasa'+'tsunai.hok'+'kaido.jp\x22,'+'\x22nakatombe'+'tsu.hokkai'+'do.jp\x22,\x22na'+'nae.hokkai'+'do.jp\x22,\x22na'+'nporo.hokk'+'aido.jp\x22,\x22'+'nayoro.hok'+'kaido.jp\x22,'+'\x22nemuro.ho'+'kkaido.jp\x22'+',\x22niikappu'+'.hokkaido.'+'jp\x22,\x22niki.'+'hokkaido.j'+'p\x22,\x22nishio'+'koppe.hokk'+'aido.jp\x22,\x22'+'noboribets'+'u.hokkaido'+'.jp\x22,\x22numa'+'ta.hokkaid'+'o.jp\x22,\x22obi'+'hiro.hokka'+'ido.jp\x22,\x22o'+'bira.hokka'+'ido.jp\x22,\x22o'+'keto.hokka'+'ido.jp\x22,\x22o'+'koppe.hokk'+'aido.jp\x22,\x22'+'otaru.hokk'+'aido.jp\x22,\x22'+'otobe.hokk'+'aido.jp\x22,\x22'+'otofuke.ho'+'kkaido.jp\x22'+',\x22otoinepp'+'u.hokkaido'+'.jp\x22,\x22oumu'+'.hokkaido.'+'jp\x22,\x22ozora'+'.hokkaido.'+'jp\x22,\x22pippu'+'.hokkaido.'+'jp\x22,\x22ranko'+'shi.hokkai'+'do.jp\x22,\x22re'+'bun.hokkai'+'do.jp\x22,\x22ri'+'kubetsu.ho'+'kkaido.jp\x22'+',\x22rishiri.'+'hokkaido.j'+'p\x22,\x22rishir'+'ifuji.hokk'+'aido.jp\x22,\x22'+'saroma.hok'+'kaido.jp\x22,'+'\x22sarufutsu'+'.hokkaido.'+'jp\x22,\x22shako'+'tan.hokkai'+'do.jp\x22,\x22sh'+'ari.hokkai'+'do.jp\x22,\x22sh'+'ibecha.hok'+'kaido.jp\x22,'+'\x22shibetsu.'+'hokkaido.j'+'p\x22,\x22shikab'+'e.hokkaido'+'.jp\x22,\x22shik'+'aoi.hokkai'+'do.jp\x22,\x22sh'+'imamaki.ho'+'kkaido.jp\x22'+',\x22shimizu.'+'hokkaido.j'+'p\x22,\x22shimok'+'awa.hokkai'+'do.jp\x22,\x22sh'+'inshinotsu'+'.hokkaido.'+'jp\x22,\x22shint'+'oku.hokkai'+'do.jp\x22,\x22sh'+'iranuka.ho'+'kkaido.jp\x22'+',\x22shiraoi.'+'hokkaido.j'+'p\x22,\x22shiriu'+'chi.hokkai'+'do.jp\x22,\x22so'+'betsu.hokk'+'aido.jp\x22,\x22')+('sunagawa.h'+'okkaido.jp'+'\x22,\x22taiki.h'+'okkaido.jp'+'\x22,\x22takasu.'+'hokkaido.j'+'p\x22,\x22takika'+'wa.hokkaid'+'o.jp\x22,\x22tak'+'inoue.hokk'+'aido.jp\x22,\x22'+'teshikaga.'+'hokkaido.j'+'p\x22,\x22tobets'+'u.hokkaido'+'.jp\x22,\x22tohm'+'a.hokkaido'+'.jp\x22,\x22toma'+'komai.hokk'+'aido.jp\x22,\x22'+'tomari.hok'+'kaido.jp\x22,'+'\x22toya.hokk'+'aido.jp\x22,\x22'+'toyako.hok'+'kaido.jp\x22,'+'\x22toyotomi.'+'hokkaido.j'+'p\x22,\x22toyour'+'a.hokkaido'+'.jp\x22,\x22tsub'+'etsu.hokka'+'ido.jp\x22,\x22t'+'sukigata.h'+'okkaido.jp'+'\x22,\x22urakawa'+'.hokkaido.'+'jp\x22,\x22uraus'+'u.hokkaido'+'.jp\x22,\x22uryu'+'.hokkaido.'+'jp\x22,\x22utash'+'inai.hokka'+'ido.jp\x22,\x22w'+'akkanai.ho'+'kkaido.jp\x22'+',\x22wassamu.'+'hokkaido.j'+'p\x22,\x22yakumo'+'.hokkaido.'+'jp\x22,\x22yoich'+'i.hokkaido'+'.jp\x22,\x22aioi'+'.hyogo.jp\x22'+',\x22akashi.h'+'yogo.jp\x22,\x22'+'ako.hyogo.'+'jp\x22,\x22amaga'+'saki.hyogo'+'.jp\x22,\x22aoga'+'ki.hyogo.j'+'p\x22,\x22asago.'+'hyogo.jp\x22,'+'\x22ashiya.hy'+'ogo.jp\x22,\x22a'+'waji.hyogo'+'.jp\x22,\x22fuku'+'saki.hyogo'+'.jp\x22,\x22gosh'+'iki.hyogo.'+'jp\x22,\x22harim'+'a.hyogo.jp'+'\x22,\x22himeji.'+'hyogo.jp\x22,'+'\x22ichikawa.'+'hyogo.jp\x22,'+'\x22inagawa.h'+'yogo.jp\x22,\x22'+'itami.hyog'+'o.jp\x22,\x22kak'+'ogawa.hyog'+'o.jp\x22,\x22kam'+'igori.hyog'+'o.jp\x22,\x22kam'+'ikawa.hyog'+'o.jp\x22,\x22kas'+'ai.hyogo.j'+'p\x22,\x22kasuga'+'.hyogo.jp\x22'+',\x22kawanish'+'i.hyogo.jp'+'\x22,\x22miki.hy'+'ogo.jp\x22,\x22m'+'inamiawaji'+'.hyogo.jp\x22'+',\x22nishinom'+'iya.hyogo.'+'jp\x22,\x22nishi'+'waki.hyogo'+'.jp\x22,\x22ono.')+('hyogo.jp\x22,'+'\x22sanda.hyo'+'go.jp\x22,\x22sa'+'nnan.hyogo'+'.jp\x22,\x22sasa'+'yama.hyogo'+'.jp\x22,\x22sayo'+'.hyogo.jp\x22'+',\x22shingu.h'+'yogo.jp\x22,\x22'+'shinonsen.'+'hyogo.jp\x22,'+'\x22shiso.hyo'+'go.jp\x22,\x22su'+'moto.hyogo'+'.jp\x22,\x22tais'+'hi.hyogo.j'+'p\x22,\x22taka.h'+'yogo.jp\x22,\x22'+'takarazuka'+'.hyogo.jp\x22'+',\x22takasago'+'.hyogo.jp\x22'+',\x22takino.h'+'yogo.jp\x22,\x22'+'tamba.hyog'+'o.jp\x22,\x22tat'+'suno.hyogo'+'.jp\x22,\x22toyo'+'oka.hyogo.'+'jp\x22,\x22yabu.'+'hyogo.jp\x22,'+'\x22yashiro.h'+'yogo.jp\x22,\x22'+'yoka.hyogo'+'.jp\x22,\x22yoka'+'wa.hyogo.j'+'p\x22,\x22ami.ib'+'araki.jp\x22,'+'\x22asahi.iba'+'raki.jp\x22,\x22'+'bando.ibar'+'aki.jp\x22,\x22c'+'hikusei.ib'+'araki.jp\x22,'+'\x22daigo.iba'+'raki.jp\x22,\x22'+'fujishiro.'+'ibaraki.jp'+'\x22,\x22hitachi'+'.ibaraki.j'+'p\x22,\x22hitach'+'inaka.ibar'+'aki.jp\x22,\x22h'+'itachiomiy'+'a.ibaraki.'+'jp\x22,\x22hitac'+'hiota.ibar'+'aki.jp\x22,\x22i'+'baraki.iba'+'raki.jp\x22,\x22'+'ina.ibarak'+'i.jp\x22,\x22ina'+'shiki.ibar'+'aki.jp\x22,\x22i'+'tako.ibara'+'ki.jp\x22,\x22iw'+'ama.ibarak'+'i.jp\x22,\x22jos'+'o.ibaraki.'+'jp\x22,\x22kamis'+'u.ibaraki.'+'jp\x22,\x22kasam'+'a.ibaraki.'+'jp\x22,\x22kashi'+'ma.ibaraki'+'.jp\x22,\x22kasu'+'migaura.ib'+'araki.jp\x22,'+'\x22koga.ibar'+'aki.jp\x22,\x22m'+'iho.ibarak'+'i.jp\x22,\x22mit'+'o.ibaraki.'+'jp\x22,\x22moriy'+'a.ibaraki.'+'jp\x22,\x22naka.'+'ibaraki.jp'+'\x22,\x22namegat'+'a.ibaraki.'+'jp\x22,\x22oarai'+'.ibaraki.j'+'p\x22,\x22ogawa.'+'ibaraki.jp'+'\x22,\x22omitama'+'.ibaraki.j'+'p\x22,\x22ryugas'+'aki.ibarak'+'i.jp\x22,\x22sak'+'ai.ibaraki')+('.jp\x22,\x22saku'+'ragawa.iba'+'raki.jp\x22,\x22'+'shimodate.'+'ibaraki.jp'+'\x22,\x22shimots'+'uma.ibarak'+'i.jp\x22,\x22shi'+'rosato.iba'+'raki.jp\x22,\x22'+'sowa.ibara'+'ki.jp\x22,\x22su'+'ifu.ibarak'+'i.jp\x22,\x22tak'+'ahagi.ibar'+'aki.jp\x22,\x22t'+'amatsukuri'+'.ibaraki.j'+'p\x22,\x22tokai.'+'ibaraki.jp'+'\x22,\x22tomobe.'+'ibaraki.jp'+'\x22,\x22tone.ib'+'araki.jp\x22,'+'\x22toride.ib'+'araki.jp\x22,'+'\x22tsuchiura'+'.ibaraki.j'+'p\x22,\x22tsukub'+'a.ibaraki.'+'jp\x22,\x22uchih'+'ara.ibarak'+'i.jp\x22,\x22ush'+'iku.ibarak'+'i.jp\x22,\x22yac'+'hiyo.ibara'+'ki.jp\x22,\x22ya'+'magata.iba'+'raki.jp\x22,\x22'+'yawara.iba'+'raki.jp\x22,\x22'+'yuki.ibara'+'ki.jp\x22,\x22an'+'amizu.ishi'+'kawa.jp\x22,\x22'+'hakui.ishi'+'kawa.jp\x22,\x22'+'hakusan.is'+'hikawa.jp\x22'+',\x22kaga.ish'+'ikawa.jp\x22,'+'\x22kahoku.is'+'hikawa.jp\x22'+',\x22kanazawa'+'.ishikawa.'+'jp\x22,\x22kawak'+'ita.ishika'+'wa.jp\x22,\x22ko'+'matsu.ishi'+'kawa.jp\x22,\x22'+'nakanoto.i'+'shikawa.jp'+'\x22,\x22nanao.i'+'shikawa.jp'+'\x22,\x22nomi.is'+'hikawa.jp\x22'+',\x22nonoichi'+'.ishikawa.'+'jp\x22,\x22noto.'+'ishikawa.j'+'p\x22,\x22shika.'+'ishikawa.j'+'p\x22,\x22suzu.i'+'shikawa.jp'+'\x22,\x22tsubata'+'.ishikawa.'+'jp\x22,\x22tsuru'+'gi.ishikaw'+'a.jp\x22,\x22uch'+'inada.ishi'+'kawa.jp\x22,\x22'+'wajima.ish'+'ikawa.jp\x22,'+'\x22fudai.iwa'+'te.jp\x22,\x22fu'+'jisawa.iwa'+'te.jp\x22,\x22ha'+'namaki.iwa'+'te.jp\x22,\x22hi'+'raizumi.iw'+'ate.jp\x22,\x22h'+'irono.iwat'+'e.jp\x22,\x22ich'+'inohe.iwat'+'e.jp\x22,\x22ich'+'inoseki.iw'+'ate.jp\x22,\x22i'+'waizumi.iw'+'ate.jp\x22,\x22i'+'wate.iwate')+('.jp\x22,\x22jobo'+'ji.iwate.j'+'p\x22,\x22kamais'+'hi.iwate.j'+'p\x22,\x22kanega'+'saki.iwate'+'.jp\x22,\x22karu'+'mai.iwate.'+'jp\x22,\x22kawai'+'.iwate.jp\x22'+',\x22kitakami'+'.iwate.jp\x22'+',\x22kuji.iwa'+'te.jp\x22,\x22ku'+'nohe.iwate'+'.jp\x22,\x22kuzu'+'maki.iwate'+'.jp\x22,\x22miya'+'ko.iwate.j'+'p\x22,\x22mizusa'+'wa.iwate.j'+'p\x22,\x22moriok'+'a.iwate.jp'+'\x22,\x22ninohe.'+'iwate.jp\x22,'+'\x22noda.iwat'+'e.jp\x22,\x22ofu'+'nato.iwate'+'.jp\x22,\x22oshu'+'.iwate.jp\x22'+',\x22otsuchi.'+'iwate.jp\x22,'+'\x22rikuzenta'+'kata.iwate'+'.jp\x22,\x22shiw'+'a.iwate.jp'+'\x22,\x22shizuku'+'ishi.iwate'+'.jp\x22,\x22sumi'+'ta.iwate.j'+'p\x22,\x22tanoha'+'ta.iwate.j'+'p\x22,\x22tono.i'+'wate.jp\x22,\x22'+'yahaba.iwa'+'te.jp\x22,\x22ya'+'mada.iwate'+'.jp\x22,\x22ayag'+'awa.kagawa'+'.jp\x22,\x22higa'+'shikagawa.'+'kagawa.jp\x22'+',\x22kanonji.'+'kagawa.jp\x22'+',\x22kotohira'+'.kagawa.jp'+'\x22,\x22manno.k'+'agawa.jp\x22,'+'\x22marugame.'+'kagawa.jp\x22'+',\x22mitoyo.k'+'agawa.jp\x22,'+'\x22naoshima.'+'kagawa.jp\x22'+',\x22sanuki.k'+'agawa.jp\x22,'+'\x22tadotsu.k'+'agawa.jp\x22,'+'\x22takamatsu'+'.kagawa.jp'+'\x22,\x22tonosho'+'.kagawa.jp'+'\x22,\x22uchinom'+'i.kagawa.j'+'p\x22,\x22utazu.'+'kagawa.jp\x22'+',\x22zentsuji'+'.kagawa.jp'+'\x22,\x22akune.k'+'agoshima.j'+'p\x22,\x22amami.'+'kagoshima.'+'jp\x22,\x22hioki'+'.kagoshima'+'.jp\x22,\x22isa.'+'kagoshima.'+'jp\x22,\x22isen.'+'kagoshima.'+'jp\x22,\x22izumi'+'.kagoshima'+'.jp\x22,\x22kago'+'shima.kago'+'shima.jp\x22,'+'\x22kanoya.ka'+'goshima.jp'+'\x22,\x22kawanab'+'e.kagoshim'+'a.jp\x22,\x22kin'+'ko.kagoshi'+'ma.jp\x22,\x22ko')+('uyama.kago'+'shima.jp\x22,'+'\x22makurazak'+'i.kagoshim'+'a.jp\x22,\x22mat'+'sumoto.kag'+'oshima.jp\x22'+',\x22minamita'+'ne.kagoshi'+'ma.jp\x22,\x22na'+'katane.kag'+'oshima.jp\x22'+',\x22nishinoo'+'mote.kagos'+'hima.jp\x22,\x22'+'satsumasen'+'dai.kagosh'+'ima.jp\x22,\x22s'+'oo.kagoshi'+'ma.jp\x22,\x22ta'+'rumizu.kag'+'oshima.jp\x22'+',\x22yusui.ka'+'goshima.jp'+'\x22,\x22aikawa.'+'kanagawa.j'+'p\x22,\x22atsugi'+'.kanagawa.'+'jp\x22,\x22ayase'+'.kanagawa.'+'jp\x22,\x22chiga'+'saki.kanag'+'awa.jp\x22,\x22e'+'bina.kanag'+'awa.jp\x22,\x22f'+'ujisawa.ka'+'nagawa.jp\x22'+',\x22hadano.k'+'anagawa.jp'+'\x22,\x22hakone.'+'kanagawa.j'+'p\x22,\x22hirats'+'uka.kanaga'+'wa.jp\x22,\x22is'+'ehara.kana'+'gawa.jp\x22,\x22'+'kaisei.kan'+'agawa.jp\x22,'+'\x22kamakura.'+'kanagawa.j'+'p\x22,\x22kiyoka'+'wa.kanagaw'+'a.jp\x22,\x22mat'+'suda.kanag'+'awa.jp\x22,\x22m'+'inamiashig'+'ara.kanaga'+'wa.jp\x22,\x22mi'+'ura.kanaga'+'wa.jp\x22,\x22na'+'kai.kanaga'+'wa.jp\x22,\x22ni'+'nomiya.kan'+'agawa.jp\x22,'+'\x22odawara.k'+'anagawa.jp'+'\x22,\x22oi.kana'+'gawa.jp\x22,\x22'+'oiso.kanag'+'awa.jp\x22,\x22s'+'agamihara.'+'kanagawa.j'+'p\x22,\x22samuka'+'wa.kanagaw'+'a.jp\x22,\x22tsu'+'kui.kanaga'+'wa.jp\x22,\x22ya'+'makita.kan'+'agawa.jp\x22,'+'\x22yamato.ka'+'nagawa.jp\x22'+',\x22yokosuka'+'.kanagawa.'+'jp\x22,\x22yugaw'+'ara.kanaga'+'wa.jp\x22,\x22za'+'ma.kanagaw'+'a.jp\x22,\x22zus'+'hi.kanagaw'+'a.jp\x22,\x22aki'+'.kochi.jp\x22'+',\x22geisei.k'+'ochi.jp\x22,\x22'+'hidaka.koc'+'hi.jp\x22,\x22hi'+'gashitsuno'+'.kochi.jp\x22'+',\x22ino.koch'+'i.jp\x22,\x22kag'+'ami.kochi.')+('jp\x22,\x22kami.'+'kochi.jp\x22,'+'\x22kitagawa.'+'kochi.jp\x22,'+'\x22kochi.koc'+'hi.jp\x22,\x22mi'+'hara.kochi'+'.jp\x22,\x22moto'+'yama.kochi'+'.jp\x22,\x22muro'+'to.kochi.j'+'p\x22,\x22nahari'+'.kochi.jp\x22'+',\x22nakamura'+'.kochi.jp\x22'+',\x22nankoku.'+'kochi.jp\x22,'+'\x22nishitosa'+'.kochi.jp\x22'+',\x22niyodoga'+'wa.kochi.j'+'p\x22,\x22ochi.k'+'ochi.jp\x22,\x22'+'okawa.koch'+'i.jp\x22,\x22oto'+'yo.kochi.j'+'p\x22,\x22otsuki'+'.kochi.jp\x22'+',\x22sakawa.k'+'ochi.jp\x22,\x22'+'sukumo.koc'+'hi.jp\x22,\x22su'+'saki.kochi'+'.jp\x22,\x22tosa'+'.kochi.jp\x22'+',\x22tosashim'+'izu.kochi.'+'jp\x22,\x22toyo.'+'kochi.jp\x22,'+'\x22tsuno.koc'+'hi.jp\x22,\x22um'+'aji.kochi.'+'jp\x22,\x22yasud'+'a.kochi.jp'+'\x22,\x22yusuhar'+'a.kochi.jp'+'\x22,\x22amakusa'+'.kumamoto.'+'jp\x22,\x22arao.'+'kumamoto.j'+'p\x22,\x22aso.ku'+'mamoto.jp\x22'+',\x22choyo.ku'+'mamoto.jp\x22'+',\x22gyokuto.'+'kumamoto.j'+'p\x22,\x22kamiam'+'akusa.kuma'+'moto.jp\x22,\x22'+'kikuchi.ku'+'mamoto.jp\x22'+',\x22kumamoto'+'.kumamoto.'+'jp\x22,\x22mashi'+'ki.kumamot'+'o.jp\x22,\x22mif'+'une.kumamo'+'to.jp\x22,\x22mi'+'namata.kum'+'amoto.jp\x22,'+'\x22minamiogu'+'ni.kumamot'+'o.jp\x22,\x22nag'+'asu.kumamo'+'to.jp\x22,\x22ni'+'shihara.ku'+'mamoto.jp\x22'+',\x22oguni.ku'+'mamoto.jp\x22'+',\x22ozu.kuma'+'moto.jp\x22,\x22'+'sumoto.kum'+'amoto.jp\x22,'+'\x22takamori.'+'kumamoto.j'+'p\x22,\x22uki.ku'+'mamoto.jp\x22'+',\x22uto.kuma'+'moto.jp\x22,\x22'+'yamaga.kum'+'amoto.jp\x22,'+'\x22yamato.ku'+'mamoto.jp\x22'+',\x22yatsushi'+'ro.kumamot'+'o.jp\x22,\x22aya'+'be.kyoto.j'+'p\x22,\x22fukuch'+'iyama.kyot'+'o.jp\x22,\x22hig')+('ashiyama.k'+'yoto.jp\x22,\x22'+'ide.kyoto.'+'jp\x22,\x22ine.k'+'yoto.jp\x22,\x22'+'joyo.kyoto'+'.jp\x22,\x22kame'+'oka.kyoto.'+'jp\x22,\x22kamo.'+'kyoto.jp\x22,'+'\x22kita.kyot'+'o.jp\x22,\x22kiz'+'u.kyoto.jp'+'\x22,\x22kumiyam'+'a.kyoto.jp'+'\x22,\x22kyotamb'+'a.kyoto.jp'+'\x22,\x22kyotana'+'be.kyoto.j'+'p\x22,\x22kyotan'+'go.kyoto.j'+'p\x22,\x22maizur'+'u.kyoto.jp'+'\x22,\x22minami.'+'kyoto.jp\x22,'+'\x22minamiyam'+'ashiro.kyo'+'to.jp\x22,\x22mi'+'yazu.kyoto'+'.jp\x22,\x22muko'+'.kyoto.jp\x22'+',\x22nagaokak'+'yo.kyoto.j'+'p\x22,\x22nakagy'+'o.kyoto.jp'+'\x22,\x22nantan.'+'kyoto.jp\x22,'+'\x22oyamazaki'+'.kyoto.jp\x22'+',\x22sakyo.ky'+'oto.jp\x22,\x22s'+'eika.kyoto'+'.jp\x22,\x22tana'+'be.kyoto.j'+'p\x22,\x22uji.ky'+'oto.jp\x22,\x22u'+'jitawara.k'+'yoto.jp\x22,\x22'+'wazuka.kyo'+'to.jp\x22,\x22ya'+'mashina.ky'+'oto.jp\x22,\x22y'+'awata.kyot'+'o.jp\x22,\x22asa'+'hi.mie.jp\x22'+',\x22inabe.mi'+'e.jp\x22,\x22ise'+'.mie.jp\x22,\x22'+'kameyama.m'+'ie.jp\x22,\x22ka'+'wagoe.mie.'+'jp\x22,\x22kiho.'+'mie.jp\x22,\x22k'+'isosaki.mi'+'e.jp\x22,\x22kiw'+'a.mie.jp\x22,'+'\x22komono.mi'+'e.jp\x22,\x22kum'+'ano.mie.jp'+'\x22,\x22kuwana.'+'mie.jp\x22,\x22m'+'atsusaka.m'+'ie.jp\x22,\x22me'+'iwa.mie.jp'+'\x22,\x22mihama.'+'mie.jp\x22,\x22m'+'inamiise.m'+'ie.jp\x22,\x22mi'+'sugi.mie.j'+'p\x22,\x22miyama'+'.mie.jp\x22,\x22'+'nabari.mie'+'.jp\x22,\x22shim'+'a.mie.jp\x22,'+'\x22suzuka.mi'+'e.jp\x22,\x22tad'+'o.mie.jp\x22,'+'\x22taiki.mie'+'.jp\x22,\x22taki'+'.mie.jp\x22,\x22'+'tamaki.mie'+'.jp\x22,\x22toba'+'.mie.jp\x22,\x22'+'tsu.mie.jp'+'\x22,\x22udono.m'+'ie.jp\x22,\x22ur'+'eshino.mie'+'.jp\x22,\x22wata'+'rai.mie.jp'+'\x22,\x22yokkaic')+('hi.mie.jp\x22'+',\x22furukawa'+'.miyagi.jp'+'\x22,\x22higashi'+'matsushima'+'.miyagi.jp'+'\x22,\x22ishinom'+'aki.miyagi'+'.jp\x22,\x22iwan'+'uma.miyagi'+'.jp\x22,\x22kaku'+'da.miyagi.'+'jp\x22,\x22kami.'+'miyagi.jp\x22'+',\x22kawasaki'+'.miyagi.jp'+'\x22,\x22marumor'+'i.miyagi.j'+'p\x22,\x22matsus'+'hima.miyag'+'i.jp\x22,\x22min'+'amisanriku'+'.miyagi.jp'+'\x22,\x22misato.'+'miyagi.jp\x22'+',\x22murata.m'+'iyagi.jp\x22,'+'\x22natori.mi'+'yagi.jp\x22,\x22'+'ogawara.mi'+'yagi.jp\x22,\x22'+'ohira.miya'+'gi.jp\x22,\x22on'+'agawa.miya'+'gi.jp\x22,\x22os'+'aki.miyagi'+'.jp\x22,\x22rifu'+'.miyagi.jp'+'\x22,\x22semine.'+'miyagi.jp\x22'+',\x22shibata.'+'miyagi.jp\x22'+',\x22shichika'+'shuku.miya'+'gi.jp\x22,\x22sh'+'ikama.miya'+'gi.jp\x22,\x22sh'+'iogama.miy'+'agi.jp\x22,\x22s'+'hiroishi.m'+'iyagi.jp\x22,'+'\x22tagajo.mi'+'yagi.jp\x22,\x22'+'taiwa.miya'+'gi.jp\x22,\x22to'+'me.miyagi.'+'jp\x22,\x22tomiy'+'a.miyagi.j'+'p\x22,\x22wakuya'+'.miyagi.jp'+'\x22,\x22watari.'+'miyagi.jp\x22'+',\x22yamamoto'+'.miyagi.jp'+'\x22,\x22zao.miy'+'agi.jp\x22,\x22a'+'ya.miyazak'+'i.jp\x22,\x22ebi'+'no.miyazak'+'i.jp\x22,\x22gok'+'ase.miyaza'+'ki.jp\x22,\x22hy'+'uga.miyaza'+'ki.jp\x22,\x22ka'+'dogawa.miy'+'azaki.jp\x22,'+'\x22kawaminam'+'i.miyazaki'+'.jp\x22,\x22kijo'+'.miyazaki.'+'jp\x22,\x22kitag'+'awa.miyaza'+'ki.jp\x22,\x22ki'+'takata.miy'+'azaki.jp\x22,'+'\x22kitaura.m'+'iyazaki.jp'+'\x22,\x22kobayas'+'hi.miyazak'+'i.jp\x22,\x22kun'+'itomi.miya'+'zaki.jp\x22,\x22'+'kushima.mi'+'yazaki.jp\x22'+',\x22mimata.m'+'iyazaki.jp'+'\x22,\x22miyakon'+'ojo.miyaza'+'ki.jp\x22,\x22mi'+'yazaki.miy')+('azaki.jp\x22,'+'\x22morotsuka'+'.miyazaki.'+'jp\x22,\x22nichi'+'nan.miyaza'+'ki.jp\x22,\x22ni'+'shimera.mi'+'yazaki.jp\x22'+',\x22nobeoka.'+'miyazaki.j'+'p\x22,\x22saito.'+'miyazaki.j'+'p\x22,\x22shiiba'+'.miyazaki.'+'jp\x22,\x22shint'+'omi.miyaza'+'ki.jp\x22,\x22ta'+'kaharu.miy'+'azaki.jp\x22,'+'\x22takanabe.'+'miyazaki.j'+'p\x22,\x22takaza'+'ki.miyazak'+'i.jp\x22,\x22tsu'+'no.miyazak'+'i.jp\x22,\x22ach'+'i.nagano.j'+'p\x22,\x22agemat'+'su.nagano.'+'jp\x22,\x22anan.'+'nagano.jp\x22'+',\x22aoki.nag'+'ano.jp\x22,\x22a'+'sahi.nagan'+'o.jp\x22,\x22azu'+'mino.nagan'+'o.jp\x22,\x22chi'+'kuhoku.nag'+'ano.jp\x22,\x22c'+'hikuma.nag'+'ano.jp\x22,\x22c'+'hino.nagan'+'o.jp\x22,\x22fuj'+'imi.nagano'+'.jp\x22,\x22haku'+'ba.nagano.'+'jp\x22,\x22hara.'+'nagano.jp\x22'+',\x22hiraya.n'+'agano.jp\x22,'+'\x22iida.naga'+'no.jp\x22,\x22ii'+'jima.nagan'+'o.jp\x22,\x22iiy'+'ama.nagano'+'.jp\x22,\x22iizu'+'na.nagano.'+'jp\x22,\x22ikeda'+'.nagano.jp'+'\x22,\x22ikusaka'+'.nagano.jp'+'\x22,\x22ina.nag'+'ano.jp\x22,\x22k'+'aruizawa.n'+'agano.jp\x22,'+'\x22kawakami.'+'nagano.jp\x22'+',\x22kiso.nag'+'ano.jp\x22,\x22k'+'isofukushi'+'ma.nagano.'+'jp\x22,\x22kitaa'+'iki.nagano'+'.jp\x22,\x22koma'+'gane.nagan'+'o.jp\x22,\x22kom'+'oro.nagano'+'.jp\x22,\x22mats'+'ukawa.naga'+'no.jp\x22,\x22ma'+'tsumoto.na'+'gano.jp\x22,\x22'+'miasa.naga'+'no.jp\x22,\x22mi'+'namiaiki.n'+'agano.jp\x22,'+'\x22minamimak'+'i.nagano.j'+'p\x22,\x22minami'+'minowa.nag'+'ano.jp\x22,\x22m'+'inowa.naga'+'no.jp\x22,\x22mi'+'yada.nagan'+'o.jp\x22,\x22miy'+'ota.nagano'+'.jp\x22,\x22moch'+'izuki.naga'+'no.jp\x22,\x22na'+'gano.nagan')+('o.jp\x22,\x22nag'+'awa.nagano'+'.jp\x22,\x22nagi'+'so.nagano.'+'jp\x22,\x22nakag'+'awa.nagano'+'.jp\x22,\x22naka'+'no.nagano.'+'jp\x22,\x22nozaw'+'aonsen.nag'+'ano.jp\x22,\x22o'+'buse.nagan'+'o.jp\x22,\x22oga'+'wa.nagano.'+'jp\x22,\x22okaya'+'.nagano.jp'+'\x22,\x22omachi.'+'nagano.jp\x22'+',\x22omi.naga'+'no.jp\x22,\x22oo'+'kuwa.nagan'+'o.jp\x22,\x22oos'+'hika.nagan'+'o.jp\x22,\x22ota'+'ki.nagano.'+'jp\x22,\x22otari'+'.nagano.jp'+'\x22,\x22sakae.n'+'agano.jp\x22,'+'\x22sakaki.na'+'gano.jp\x22,\x22'+'saku.nagan'+'o.jp\x22,\x22sak'+'uho.nagano'+'.jp\x22,\x22shim'+'osuwa.naga'+'no.jp\x22,\x22sh'+'inanomachi'+'.nagano.jp'+'\x22,\x22shiojir'+'i.nagano.j'+'p\x22,\x22suwa.n'+'agano.jp\x22,'+'\x22suzaka.na'+'gano.jp\x22,\x22'+'takagi.nag'+'ano.jp\x22,\x22t'+'akamori.na'+'gano.jp\x22,\x22'+'takayama.n'+'agano.jp\x22,'+'\x22tateshina'+'.nagano.jp'+'\x22,\x22tatsuno'+'.nagano.jp'+'\x22,\x22togakus'+'hi.nagano.'+'jp\x22,\x22togur'+'a.nagano.j'+'p\x22,\x22tomi.n'+'agano.jp\x22,'+'\x22ueda.naga'+'no.jp\x22,\x22wa'+'da.nagano.'+'jp\x22,\x22yamag'+'ata.nagano'+'.jp\x22,\x22yama'+'nouchi.nag'+'ano.jp\x22,\x22y'+'asaka.naga'+'no.jp\x22,\x22ya'+'suoka.naga'+'no.jp\x22,\x22ch'+'ijiwa.naga'+'saki.jp\x22,\x22'+'futsu.naga'+'saki.jp\x22,\x22'+'goto.nagas'+'aki.jp\x22,\x22h'+'asami.naga'+'saki.jp\x22,\x22'+'hirado.nag'+'asaki.jp\x22,'+'\x22iki.nagas'+'aki.jp\x22,\x22i'+'sahaya.nag'+'asaki.jp\x22,'+'\x22kawatana.'+'nagasaki.j'+'p\x22,\x22kuchin'+'otsu.nagas'+'aki.jp\x22,\x22m'+'atsuura.na'+'gasaki.jp\x22'+',\x22nagasaki'+'.nagasaki.'+'jp\x22,\x22obama'+'.nagasaki.'+'jp\x22,\x22omura'+'.nagasaki.')+('jp\x22,\x22oseto'+'.nagasaki.'+'jp\x22,\x22saika'+'i.nagasaki'+'.jp\x22,\x22sase'+'bo.nagasak'+'i.jp\x22,\x22sei'+'hi.nagasak'+'i.jp\x22,\x22shi'+'mabara.nag'+'asaki.jp\x22,'+'\x22shinkamig'+'oto.nagasa'+'ki.jp\x22,\x22to'+'gitsu.naga'+'saki.jp\x22,\x22'+'tsushima.n'+'agasaki.jp'+'\x22,\x22unzen.n'+'agasaki.jp'+'\x22,\x22ando.na'+'ra.jp\x22,\x22go'+'se.nara.jp'+'\x22,\x22heguri.'+'nara.jp\x22,\x22'+'higashiyos'+'hino.nara.'+'jp\x22,\x22ikaru'+'ga.nara.jp'+'\x22,\x22ikoma.n'+'ara.jp\x22,\x22k'+'amikitayam'+'a.nara.jp\x22'+',\x22kanmaki.'+'nara.jp\x22,\x22'+'kashiba.na'+'ra.jp\x22,\x22ka'+'shihara.na'+'ra.jp\x22,\x22ka'+'tsuragi.na'+'ra.jp\x22,\x22ka'+'wai.nara.j'+'p\x22,\x22kawaka'+'mi.nara.jp'+'\x22,\x22kawanis'+'hi.nara.jp'+'\x22,\x22koryo.n'+'ara.jp\x22,\x22k'+'urotaki.na'+'ra.jp\x22,\x22mi'+'tsue.nara.'+'jp\x22,\x22miyak'+'e.nara.jp\x22'+',\x22nara.nar'+'a.jp\x22,\x22nos'+'egawa.nara'+'.jp\x22,\x22oji.'+'nara.jp\x22,\x22'+'ouda.nara.'+'jp\x22,\x22oyodo'+'.nara.jp\x22,'+'\x22sakurai.n'+'ara.jp\x22,\x22s'+'ango.nara.'+'jp\x22,\x22shimo'+'ichi.nara.'+'jp\x22,\x22shimo'+'kitayama.n'+'ara.jp\x22,\x22s'+'hinjo.nara'+'.jp\x22,\x22soni'+'.nara.jp\x22,'+'\x22takatori.'+'nara.jp\x22,\x22'+'tawaramoto'+'.nara.jp\x22,'+'\x22tenkawa.n'+'ara.jp\x22,\x22t'+'enri.nara.'+'jp\x22,\x22uda.n'+'ara.jp\x22,\x22y'+'amatokoriy'+'ama.nara.j'+'p\x22,\x22yamato'+'takada.nar'+'a.jp\x22,\x22yam'+'azoe.nara.'+'jp\x22,\x22yoshi'+'no.nara.jp'+'\x22,\x22aga.nii'+'gata.jp\x22,\x22'+'agano.niig'+'ata.jp\x22,\x22g'+'osen.niiga'+'ta.jp\x22,\x22it'+'oigawa.nii'+'gata.jp\x22,\x22'+'izumozaki.'+'niigata.jp'+'\x22,\x22joetsu.')+('niigata.jp'+'\x22,\x22kamo.ni'+'igata.jp\x22,'+'\x22kariwa.ni'+'igata.jp\x22,'+'\x22kashiwaza'+'ki.niigata'+'.jp\x22,\x22mina'+'miuonuma.n'+'iigata.jp\x22'+',\x22mitsuke.'+'niigata.jp'+'\x22,\x22muika.n'+'iigata.jp\x22'+',\x22murakami'+'.niigata.j'+'p\x22,\x22myoko.'+'niigata.jp'+'\x22,\x22nagaoka'+'.niigata.j'+'p\x22,\x22niigat'+'a.niigata.'+'jp\x22,\x22ojiya'+'.niigata.j'+'p\x22,\x22omi.ni'+'igata.jp\x22,'+'\x22sado.niig'+'ata.jp\x22,\x22s'+'anjo.niiga'+'ta.jp\x22,\x22se'+'iro.niigat'+'a.jp\x22,\x22sei'+'rou.niigat'+'a.jp\x22,\x22sek'+'ikawa.niig'+'ata.jp\x22,\x22s'+'hibata.nii'+'gata.jp\x22,\x22'+'tagami.nii'+'gata.jp\x22,\x22'+'tainai.nii'+'gata.jp\x22,\x22'+'tochio.nii'+'gata.jp\x22,\x22'+'tokamachi.'+'niigata.jp'+'\x22,\x22tsubame'+'.niigata.j'+'p\x22,\x22tsunan'+'.niigata.j'+'p\x22,\x22uonuma'+'.niigata.j'+'p\x22,\x22yahiko'+'.niigata.j'+'p\x22,\x22yoita.'+'niigata.jp'+'\x22,\x22yuzawa.'+'niigata.jp'+'\x22,\x22beppu.o'+'ita.jp\x22,\x22b'+'ungoono.oi'+'ta.jp\x22,\x22bu'+'ngotakada.'+'oita.jp\x22,\x22'+'hasama.oit'+'a.jp\x22,\x22hij'+'i.oita.jp\x22'+',\x22himeshim'+'a.oita.jp\x22'+',\x22hita.oit'+'a.jp\x22,\x22kam'+'itsue.oita'+'.jp\x22,\x22koko'+'noe.oita.j'+'p\x22,\x22kuju.o'+'ita.jp\x22,\x22k'+'unisaki.oi'+'ta.jp\x22,\x22ku'+'su.oita.jp'+'\x22,\x22oita.oi'+'ta.jp\x22,\x22sa'+'iki.oita.j'+'p\x22,\x22taketa'+'.oita.jp\x22,'+'\x22tsukumi.o'+'ita.jp\x22,\x22u'+'sa.oita.jp'+'\x22,\x22usuki.o'+'ita.jp\x22,\x22y'+'ufu.oita.j'+'p\x22,\x22akaiwa'+'.okayama.j'+'p\x22,\x22asakuc'+'hi.okayama'+'.jp\x22,\x22bize'+'n.okayama.'+'jp\x22,\x22hayas'+'hima.okaya'+'ma.jp\x22,\x22ib'+'ara.okayam')+('a.jp\x22,\x22kag'+'amino.okay'+'ama.jp\x22,\x22k'+'asaoka.oka'+'yama.jp\x22,\x22'+'kibichuo.o'+'kayama.jp\x22'+',\x22kumenan.'+'okayama.jp'+'\x22,\x22kurashi'+'ki.okayama'+'.jp\x22,\x22mani'+'wa.okayama'+'.jp\x22,\x22misa'+'ki.okayama'+'.jp\x22,\x22nagi'+'.okayama.j'+'p\x22,\x22niimi.'+'okayama.jp'+'\x22,\x22nishiaw'+'akura.okay'+'ama.jp\x22,\x22o'+'kayama.oka'+'yama.jp\x22,\x22'+'satosho.ok'+'ayama.jp\x22,'+'\x22setouchi.'+'okayama.jp'+'\x22,\x22shinjo.'+'okayama.jp'+'\x22,\x22shoo.ok'+'ayama.jp\x22,'+'\x22soja.okay'+'ama.jp\x22,\x22t'+'akahashi.o'+'kayama.jp\x22'+',\x22tamano.o'+'kayama.jp\x22'+',\x22tsuyama.'+'okayama.jp'+'\x22,\x22wake.ok'+'ayama.jp\x22,'+'\x22yakage.ok'+'ayama.jp\x22,'+'\x22aguni.oki'+'nawa.jp\x22,\x22'+'ginowan.ok'+'inawa.jp\x22,'+'\x22ginoza.ok'+'inawa.jp\x22,'+'\x22gushikami'+'.okinawa.j'+'p\x22,\x22haebar'+'u.okinawa.'+'jp\x22,\x22higas'+'hi.okinawa'+'.jp\x22,\x22hira'+'ra.okinawa'+'.jp\x22,\x22ihey'+'a.okinawa.'+'jp\x22,\x22ishig'+'aki.okinaw'+'a.jp\x22,\x22ish'+'ikawa.okin'+'awa.jp\x22,\x22i'+'toman.okin'+'awa.jp\x22,\x22i'+'zena.okina'+'wa.jp\x22,\x22ka'+'dena.okina'+'wa.jp\x22,\x22ki'+'n.okinawa.'+'jp\x22,\x22kitad'+'aito.okina'+'wa.jp\x22,\x22ki'+'tanakagusu'+'ku.okinawa'+'.jp\x22,\x22kume'+'jima.okina'+'wa.jp\x22,\x22ku'+'nigami.oki'+'nawa.jp\x22,\x22'+'minamidait'+'o.okinawa.'+'jp\x22,\x22motob'+'u.okinawa.'+'jp\x22,\x22nago.'+'okinawa.jp'+'\x22,\x22naha.ok'+'inawa.jp\x22,'+'\x22nakagusuk'+'u.okinawa.'+'jp\x22,\x22nakij'+'in.okinawa'+'.jp\x22,\x22nanj'+'o.okinawa.'+'jp\x22,\x22nishi'+'hara.okina'+'wa.jp\x22,\x22og'+'imi.okinaw')+('a.jp\x22,\x22oki'+'nawa.okina'+'wa.jp\x22,\x22on'+'na.okinawa'+'.jp\x22,\x22shim'+'oji.okinaw'+'a.jp\x22,\x22tak'+'etomi.okin'+'awa.jp\x22,\x22t'+'arama.okin'+'awa.jp\x22,\x22t'+'okashiki.o'+'kinawa.jp\x22'+',\x22tomigusu'+'ku.okinawa'+'.jp\x22,\x22tona'+'ki.okinawa'+'.jp\x22,\x22uras'+'oe.okinawa'+'.jp\x22,\x22urum'+'a.okinawa.'+'jp\x22,\x22yaese'+'.okinawa.j'+'p\x22,\x22yomita'+'n.okinawa.'+'jp\x22,\x22yonab'+'aru.okinaw'+'a.jp\x22,\x22yon'+'aguni.okin'+'awa.jp\x22,\x22z'+'amami.okin'+'awa.jp\x22,\x22a'+'beno.osaka'+'.jp\x22,\x22chih'+'ayaakasaka'+'.osaka.jp\x22'+',\x22chuo.osa'+'ka.jp\x22,\x22da'+'ito.osaka.'+'jp\x22,\x22fujii'+'dera.osaka'+'.jp\x22,\x22habi'+'kino.osaka'+'.jp\x22,\x22hann'+'an.osaka.j'+'p\x22,\x22higash'+'iosaka.osa'+'ka.jp\x22,\x22hi'+'gashisumiy'+'oshi.osaka'+'.jp\x22,\x22higa'+'shiyodogaw'+'a.osaka.jp'+'\x22,\x22hirakat'+'a.osaka.jp'+'\x22,\x22ibaraki'+'.osaka.jp\x22'+',\x22ikeda.os'+'aka.jp\x22,\x22i'+'zumi.osaka'+'.jp\x22,\x22izum'+'iotsu.osak'+'a.jp\x22,\x22izu'+'misano.osa'+'ka.jp\x22,\x22ka'+'doma.osaka'+'.jp\x22,\x22kaiz'+'uka.osaka.'+'jp\x22,\x22kanan'+'.osaka.jp\x22'+',\x22kashiwar'+'a.osaka.jp'+'\x22,\x22katano.'+'osaka.jp\x22,'+'\x22kawachina'+'gano.osaka'+'.jp\x22,\x22kish'+'iwada.osak'+'a.jp\x22,\x22kit'+'a.osaka.jp'+'\x22,\x22kumator'+'i.osaka.jp'+'\x22,\x22matsuba'+'ra.osaka.j'+'p\x22,\x22minato'+'.osaka.jp\x22'+',\x22minoh.os'+'aka.jp\x22,\x22m'+'isaki.osak'+'a.jp\x22,\x22mor'+'iguchi.osa'+'ka.jp\x22,\x22ne'+'yagawa.osa'+'ka.jp\x22,\x22ni'+'shi.osaka.'+'jp\x22,\x22nose.'+'osaka.jp\x22,'+'\x22osakasaya'+'ma.osaka.j'+'p\x22,\x22sakai.')+('osaka.jp\x22,'+'\x22sayama.os'+'aka.jp\x22,\x22s'+'ennan.osak'+'a.jp\x22,\x22set'+'tsu.osaka.'+'jp\x22,\x22shijo'+'nawate.osa'+'ka.jp\x22,\x22sh'+'imamoto.os'+'aka.jp\x22,\x22s'+'uita.osaka'+'.jp\x22,\x22tada'+'oka.osaka.'+'jp\x22,\x22taish'+'i.osaka.jp'+'\x22,\x22tajiri.'+'osaka.jp\x22,'+'\x22takaishi.'+'osaka.jp\x22,'+'\x22takatsuki'+'.osaka.jp\x22'+',\x22tondabay'+'ashi.osaka'+'.jp\x22,\x22toyo'+'naka.osaka'+'.jp\x22,\x22toyo'+'no.osaka.j'+'p\x22,\x22yao.os'+'aka.jp\x22,\x22a'+'riake.saga'+'.jp\x22,\x22arit'+'a.saga.jp\x22'+',\x22fukudomi'+'.saga.jp\x22,'+'\x22genkai.sa'+'ga.jp\x22,\x22ha'+'matama.sag'+'a.jp\x22,\x22hiz'+'en.saga.jp'+'\x22,\x22imari.s'+'aga.jp\x22,\x22k'+'amimine.sa'+'ga.jp\x22,\x22ka'+'nzaki.saga'+'.jp\x22,\x22kara'+'tsu.saga.j'+'p\x22,\x22kashim'+'a.saga.jp\x22'+',\x22kitagata'+'.saga.jp\x22,'+'\x22kitahata.'+'saga.jp\x22,\x22'+'kiyama.sag'+'a.jp\x22,\x22kou'+'hoku.saga.'+'jp\x22,\x22kyura'+'gi.saga.jp'+'\x22,\x22nishiar'+'ita.saga.j'+'p\x22,\x22ogi.sa'+'ga.jp\x22,\x22om'+'achi.saga.'+'jp\x22,\x22ouchi'+'.saga.jp\x22,'+'\x22saga.saga'+'.jp\x22,\x22shir'+'oishi.saga'+'.jp\x22,\x22taku'+'.saga.jp\x22,'+'\x22tara.saga'+'.jp\x22,\x22tosu'+'.saga.jp\x22,'+'\x22yoshinoga'+'ri.saga.jp'+'\x22,\x22arakawa'+'.saitama.j'+'p\x22,\x22asaka.'+'saitama.jp'+'\x22,\x22chichib'+'u.saitama.'+'jp\x22,\x22fujim'+'i.saitama.'+'jp\x22,\x22fujim'+'ino.saitam'+'a.jp\x22,\x22fuk'+'aya.saitam'+'a.jp\x22,\x22han'+'no.saitama'+'.jp\x22,\x22hany'+'u.saitama.'+'jp\x22,\x22hasud'+'a.saitama.'+'jp\x22,\x22hatog'+'aya.saitam'+'a.jp\x22,\x22hat'+'oyama.sait'+'ama.jp\x22,\x22h'+'idaka.sait'+'ama.jp\x22,\x22h')+('igashichic'+'hibu.saita'+'ma.jp\x22,\x22hi'+'gashimatsu'+'yama.saita'+'ma.jp\x22,\x22ho'+'njo.saitam'+'a.jp\x22,\x22ina'+'.saitama.j'+'p\x22,\x22iruma.'+'saitama.jp'+'\x22,\x22iwatsuk'+'i.saitama.'+'jp\x22,\x22kamii'+'zumi.saita'+'ma.jp\x22,\x22ka'+'mikawa.sai'+'tama.jp\x22,\x22'+'kamisato.s'+'aitama.jp\x22'+',\x22kasukabe'+'.saitama.j'+'p\x22,\x22kawago'+'e.saitama.'+'jp\x22,\x22kawag'+'uchi.saita'+'ma.jp\x22,\x22ka'+'wajima.sai'+'tama.jp\x22,\x22'+'kazo.saita'+'ma.jp\x22,\x22ki'+'tamoto.sai'+'tama.jp\x22,\x22'+'koshigaya.'+'saitama.jp'+'\x22,\x22kounosu'+'.saitama.j'+'p\x22,\x22kuki.s'+'aitama.jp\x22'+',\x22kumagaya'+'.saitama.j'+'p\x22,\x22matsub'+'ushi.saita'+'ma.jp\x22,\x22mi'+'nano.saita'+'ma.jp\x22,\x22mi'+'sato.saita'+'ma.jp\x22,\x22mi'+'yashiro.sa'+'itama.jp\x22,'+'\x22miyoshi.s'+'aitama.jp\x22'+',\x22moroyama'+'.saitama.j'+'p\x22,\x22nagato'+'ro.saitama'+'.jp\x22,\x22name'+'gawa.saita'+'ma.jp\x22,\x22ni'+'iza.saitam'+'a.jp\x22,\x22oga'+'no.saitama'+'.jp\x22,\x22ogaw'+'a.saitama.'+'jp\x22,\x22ogose'+'.saitama.j'+'p\x22,\x22okegaw'+'a.saitama.'+'jp\x22,\x22omiya'+'.saitama.j'+'p\x22,\x22otaki.'+'saitama.jp'+'\x22,\x22ranzan.'+'saitama.jp'+'\x22,\x22ryokami'+'.saitama.j'+'p\x22,\x22saitam'+'a.saitama.'+'jp\x22,\x22sakad'+'o.saitama.'+'jp\x22,\x22satte'+'.saitama.j'+'p\x22,\x22sayama'+'.saitama.j'+'p\x22,\x22shiki.'+'saitama.jp'+'\x22,\x22shiraok'+'a.saitama.'+'jp\x22,\x22soka.'+'saitama.jp'+'\x22,\x22sugito.'+'saitama.jp'+'\x22,\x22toda.sa'+'itama.jp\x22,'+'\x22tokigawa.'+'saitama.jp'+'\x22,\x22tokoroz'+'awa.saitam'+'a.jp\x22,\x22tsu'+'rugashima.')+('saitama.jp'+'\x22,\x22urawa.s'+'aitama.jp\x22'+',\x22warabi.s'+'aitama.jp\x22'+',\x22yashio.s'+'aitama.jp\x22'+',\x22yokoze.s'+'aitama.jp\x22'+',\x22yono.sai'+'tama.jp\x22,\x22'+'yorii.sait'+'ama.jp\x22,\x22y'+'oshida.sai'+'tama.jp\x22,\x22'+'yoshikawa.'+'saitama.jp'+'\x22,\x22yoshimi'+'.saitama.j'+'p\x22,\x22aisho.'+'shiga.jp\x22,'+'\x22gamo.shig'+'a.jp\x22,\x22hig'+'ashiomi.sh'+'iga.jp\x22,\x22h'+'ikone.shig'+'a.jp\x22,\x22kok'+'a.shiga.jp'+'\x22,\x22konan.s'+'higa.jp\x22,\x22'+'kosei.shig'+'a.jp\x22,\x22kot'+'o.shiga.jp'+'\x22,\x22kusatsu'+'.shiga.jp\x22'+',\x22maibara.'+'shiga.jp\x22,'+'\x22moriyama.'+'shiga.jp\x22,'+'\x22nagahama.'+'shiga.jp\x22,'+'\x22nishiazai'+'.shiga.jp\x22'+',\x22notogawa'+'.shiga.jp\x22'+',\x22omihachi'+'man.shiga.'+'jp\x22,\x22otsu.'+'shiga.jp\x22,'+'\x22ritto.shi'+'ga.jp\x22,\x22ry'+'uoh.shiga.'+'jp\x22,\x22takas'+'hima.shiga'+'.jp\x22,\x22taka'+'tsuki.shig'+'a.jp\x22,\x22tor'+'ahime.shig'+'a.jp\x22,\x22toy'+'osato.shig'+'a.jp\x22,\x22yas'+'u.shiga.jp'+'\x22,\x22akagi.s'+'himane.jp\x22'+',\x22ama.shim'+'ane.jp\x22,\x22g'+'otsu.shima'+'ne.jp\x22,\x22ha'+'mada.shima'+'ne.jp\x22,\x22hi'+'gashiizumo'+'.shimane.j'+'p\x22,\x22hikawa'+'.shimane.j'+'p\x22,\x22hikimi'+'.shimane.j'+'p\x22,\x22izumo.'+'shimane.jp'+'\x22,\x22kakinok'+'i.shimane.'+'jp\x22,\x22masud'+'a.shimane.'+'jp\x22,\x22matsu'+'e.shimane.'+'jp\x22,\x22misat'+'o.shimane.'+'jp\x22,\x22nishi'+'noshima.sh'+'imane.jp\x22,'+'\x22ohda.shim'+'ane.jp\x22,\x22o'+'kinoshima.'+'shimane.jp'+'\x22,\x22okuizum'+'o.shimane.'+'jp\x22,\x22shima'+'ne.shimane'+'.jp\x22,\x22tama'+'yu.shimane'+'.jp\x22,\x22tsuw')+('ano.shiman'+'e.jp\x22,\x22unn'+'an.shimane'+'.jp\x22,\x22yaku'+'mo.shimane'+'.jp\x22,\x22yasu'+'gi.shimane'+'.jp\x22,\x22yats'+'uka.shiman'+'e.jp\x22,\x22ara'+'i.shizuoka'+'.jp\x22,\x22atam'+'i.shizuoka'+'.jp\x22,\x22fuji'+'.shizuoka.'+'jp\x22,\x22fujie'+'da.shizuok'+'a.jp\x22,\x22fuj'+'ikawa.shiz'+'uoka.jp\x22,\x22'+'fujinomiya'+'.shizuoka.'+'jp\x22,\x22fukur'+'oi.shizuok'+'a.jp\x22,\x22got'+'emba.shizu'+'oka.jp\x22,\x22h'+'aibara.shi'+'zuoka.jp\x22,'+'\x22hamamatsu'+'.shizuoka.'+'jp\x22,\x22higas'+'hiizu.shiz'+'uoka.jp\x22,\x22'+'ito.shizuo'+'ka.jp\x22,\x22iw'+'ata.shizuo'+'ka.jp\x22,\x22iz'+'u.shizuoka'+'.jp\x22,\x22izun'+'okuni.shiz'+'uoka.jp\x22,\x22'+'kakegawa.s'+'hizuoka.jp'+'\x22,\x22kannami'+'.shizuoka.'+'jp\x22,\x22kawan'+'ehon.shizu'+'oka.jp\x22,\x22k'+'awazu.shiz'+'uoka.jp\x22,\x22'+'kikugawa.s'+'hizuoka.jp'+'\x22,\x22kosai.s'+'hizuoka.jp'+'\x22,\x22makinoh'+'ara.shizuo'+'ka.jp\x22,\x22ma'+'tsuzaki.sh'+'izuoka.jp\x22'+',\x22minamiiz'+'u.shizuoka'+'.jp\x22,\x22mish'+'ima.shizuo'+'ka.jp\x22,\x22mo'+'rimachi.sh'+'izuoka.jp\x22'+',\x22nishiizu'+'.shizuoka.'+'jp\x22,\x22numaz'+'u.shizuoka'+'.jp\x22,\x22omae'+'zaki.shizu'+'oka.jp\x22,\x22s'+'himada.shi'+'zuoka.jp\x22,'+'\x22shimizu.s'+'hizuoka.jp'+'\x22,\x22shimoda'+'.shizuoka.'+'jp\x22,\x22shizu'+'oka.shizuo'+'ka.jp\x22,\x22su'+'sono.shizu'+'oka.jp\x22,\x22y'+'aizu.shizu'+'oka.jp\x22,\x22y'+'oshida.shi'+'zuoka.jp\x22,'+'\x22ashikaga.'+'tochigi.jp'+'\x22,\x22bato.to'+'chigi.jp\x22,'+'\x22haga.toch'+'igi.jp\x22,\x22i'+'chikai.toc'+'higi.jp\x22,\x22'+'iwafune.to'+'chigi.jp\x22,'+'\x22kaminokaw')+('a.tochigi.'+'jp\x22,\x22kanum'+'a.tochigi.'+'jp\x22,\x22karas'+'uyama.toch'+'igi.jp\x22,\x22k'+'uroiso.toc'+'higi.jp\x22,\x22'+'mashiko.to'+'chigi.jp\x22,'+'\x22mibu.toch'+'igi.jp\x22,\x22m'+'oka.tochig'+'i.jp\x22,\x22mot'+'egi.tochig'+'i.jp\x22,\x22nas'+'u.tochigi.'+'jp\x22,\x22nasus'+'hiobara.to'+'chigi.jp\x22,'+'\x22nikko.toc'+'higi.jp\x22,\x22'+'nishikata.'+'tochigi.jp'+'\x22,\x22nogi.to'+'chigi.jp\x22,'+'\x22ohira.toc'+'higi.jp\x22,\x22'+'ohtawara.t'+'ochigi.jp\x22'+',\x22oyama.to'+'chigi.jp\x22,'+'\x22sakura.to'+'chigi.jp\x22,'+'\x22sano.toch'+'igi.jp\x22,\x22s'+'himotsuke.'+'tochigi.jp'+'\x22,\x22shioya.'+'tochigi.jp'+'\x22,\x22takanez'+'awa.tochig'+'i.jp\x22,\x22toc'+'higi.tochi'+'gi.jp\x22,\x22ts'+'uga.tochig'+'i.jp\x22,\x22uji'+'ie.tochigi'+'.jp\x22,\x22utsu'+'nomiya.toc'+'higi.jp\x22,\x22'+'yaita.toch'+'igi.jp\x22,\x22a'+'izumi.toku'+'shima.jp\x22,'+'\x22anan.toku'+'shima.jp\x22,'+'\x22ichiba.to'+'kushima.jp'+'\x22,\x22itano.t'+'okushima.j'+'p\x22,\x22kainan'+'.tokushima'+'.jp\x22,\x22koma'+'tsushima.t'+'okushima.j'+'p\x22,\x22matsus'+'hige.tokus'+'hima.jp\x22,\x22'+'mima.tokus'+'hima.jp\x22,\x22'+'minami.tok'+'ushima.jp\x22'+',\x22miyoshi.'+'tokushima.'+'jp\x22,\x22mugi.'+'tokushima.'+'jp\x22,\x22nakag'+'awa.tokush'+'ima.jp\x22,\x22n'+'aruto.toku'+'shima.jp\x22,'+'\x22sanagochi'+'.tokushima'+'.jp\x22,\x22shis'+'hikui.toku'+'shima.jp\x22,'+'\x22tokushima'+'.tokushima'+'.jp\x22,\x22waji'+'ki.tokushi'+'ma.jp\x22,\x22ad'+'achi.tokyo'+'.jp\x22,\x22akir'+'uno.tokyo.'+'jp\x22,\x22akish'+'ima.tokyo.'+'jp\x22,\x22aogas'+'hima.tokyo'+'.jp\x22,\x22arak')+('awa.tokyo.'+'jp\x22,\x22bunky'+'o.tokyo.jp'+'\x22,\x22chiyoda'+'.tokyo.jp\x22'+',\x22chofu.to'+'kyo.jp\x22,\x22c'+'huo.tokyo.'+'jp\x22,\x22edoga'+'wa.tokyo.j'+'p\x22,\x22fuchu.'+'tokyo.jp\x22,'+'\x22fussa.tok'+'yo.jp\x22,\x22ha'+'chijo.toky'+'o.jp\x22,\x22hac'+'hioji.toky'+'o.jp\x22,\x22ham'+'ura.tokyo.'+'jp\x22,\x22higas'+'hikurume.t'+'okyo.jp\x22,\x22'+'higashimur'+'ayama.toky'+'o.jp\x22,\x22hig'+'ashiyamato'+'.tokyo.jp\x22'+',\x22hino.tok'+'yo.jp\x22,\x22hi'+'node.tokyo'+'.jp\x22,\x22hino'+'hara.tokyo'+'.jp\x22,\x22inag'+'i.tokyo.jp'+'\x22,\x22itabash'+'i.tokyo.jp'+'\x22,\x22katsush'+'ika.tokyo.'+'jp\x22,\x22kita.'+'tokyo.jp\x22,'+'\x22kiyose.to'+'kyo.jp\x22,\x22k'+'odaira.tok'+'yo.jp\x22,\x22ko'+'ganei.toky'+'o.jp\x22,\x22kok'+'ubunji.tok'+'yo.jp\x22,\x22ko'+'mae.tokyo.'+'jp\x22,\x22koto.'+'tokyo.jp\x22,'+'\x22kouzushim'+'a.tokyo.jp'+'\x22,\x22kunitac'+'hi.tokyo.j'+'p\x22,\x22machid'+'a.tokyo.jp'+'\x22,\x22meguro.'+'tokyo.jp\x22,'+'\x22minato.to'+'kyo.jp\x22,\x22m'+'itaka.toky'+'o.jp\x22,\x22miz'+'uho.tokyo.'+'jp\x22,\x22musas'+'himurayama'+'.tokyo.jp\x22'+',\x22musashin'+'o.tokyo.jp'+'\x22,\x22nakano.'+'tokyo.jp\x22,'+'\x22nerima.to'+'kyo.jp\x22,\x22o'+'gasawara.t'+'okyo.jp\x22,\x22'+'okutama.to'+'kyo.jp\x22,\x22o'+'me.tokyo.j'+'p\x22,\x22oshima'+'.tokyo.jp\x22'+',\x22ota.toky'+'o.jp\x22,\x22set'+'agaya.toky'+'o.jp\x22,\x22shi'+'buya.tokyo'+'.jp\x22,\x22shin'+'agawa.toky'+'o.jp\x22,\x22shi'+'njuku.toky'+'o.jp\x22,\x22sug'+'inami.toky'+'o.jp\x22,\x22sum'+'ida.tokyo.'+'jp\x22,\x22tachi'+'kawa.tokyo'+'.jp\x22,\x22tait'+'o.tokyo.jp'+'\x22,\x22tama.to'+'kyo.jp\x22,\x22t'+'oshima.tok')+('yo.jp\x22,\x22ch'+'izu.tottor'+'i.jp\x22,\x22hin'+'o.tottori.'+'jp\x22,\x22kawah'+'ara.tottor'+'i.jp\x22,\x22kog'+'e.tottori.'+'jp\x22,\x22kotou'+'ra.tottori'+'.jp\x22,\x22misa'+'sa.tottori'+'.jp\x22,\x22nanb'+'u.tottori.'+'jp\x22,\x22nichi'+'nan.tottor'+'i.jp\x22,\x22sak'+'aiminato.t'+'ottori.jp\x22'+',\x22tottori.'+'tottori.jp'+'\x22,\x22wakasa.'+'tottori.jp'+'\x22,\x22yazu.to'+'ttori.jp\x22,'+'\x22yonago.to'+'ttori.jp\x22,'+'\x22asahi.toy'+'ama.jp\x22,\x22f'+'uchu.toyam'+'a.jp\x22,\x22fuk'+'umitsu.toy'+'ama.jp\x22,\x22f'+'unahashi.t'+'oyama.jp\x22,'+'\x22himi.toya'+'ma.jp\x22,\x22im'+'izu.toyama'+'.jp\x22,\x22inam'+'i.toyama.j'+'p\x22,\x22johana'+'.toyama.jp'+'\x22,\x22kamiich'+'i.toyama.j'+'p\x22,\x22kurobe'+'.toyama.jp'+'\x22,\x22nakanii'+'kawa.toyam'+'a.jp\x22,\x22nam'+'erikawa.to'+'yama.jp\x22,\x22'+'nanto.toya'+'ma.jp\x22,\x22ny'+'uzen.toyam'+'a.jp\x22,\x22oya'+'be.toyama.'+'jp\x22,\x22taira'+'.toyama.jp'+'\x22,\x22takaoka'+'.toyama.jp'+'\x22,\x22tateyam'+'a.toyama.j'+'p\x22,\x22toga.t'+'oyama.jp\x22,'+'\x22tonami.to'+'yama.jp\x22,\x22'+'toyama.toy'+'ama.jp\x22,\x22u'+'nazuki.toy'+'ama.jp\x22,\x22u'+'ozu.toyama'+'.jp\x22,\x22yama'+'da.toyama.'+'jp\x22,\x22arida'+'.wakayama.'+'jp\x22,\x22arida'+'gawa.wakay'+'ama.jp\x22,\x22g'+'obo.wakaya'+'ma.jp\x22,\x22ha'+'shimoto.wa'+'kayama.jp\x22'+',\x22hidaka.w'+'akayama.jp'+'\x22,\x22hirogaw'+'a.wakayama'+'.jp\x22,\x22inam'+'i.wakayama'+'.jp\x22,\x22iwad'+'e.wakayama'+'.jp\x22,\x22kain'+'an.wakayam'+'a.jp\x22,\x22kam'+'itonda.wak'+'ayama.jp\x22,'+'\x22katsuragi'+'.wakayama.'+'jp\x22,\x22kimin'+'o.wakayama'+'.jp\x22,\x22kino')+('kawa.wakay'+'ama.jp\x22,\x22k'+'itayama.wa'+'kayama.jp\x22'+',\x22koya.wak'+'ayama.jp\x22,'+'\x22koza.waka'+'yama.jp\x22,\x22'+'kozagawa.w'+'akayama.jp'+'\x22,\x22kudoyam'+'a.wakayama'+'.jp\x22,\x22kush'+'imoto.waka'+'yama.jp\x22,\x22'+'mihama.wak'+'ayama.jp\x22,'+'\x22misato.wa'+'kayama.jp\x22'+',\x22nachikat'+'suura.waka'+'yama.jp\x22,\x22'+'shingu.wak'+'ayama.jp\x22,'+'\x22shirahama'+'.wakayama.'+'jp\x22,\x22taiji'+'.wakayama.'+'jp\x22,\x22tanab'+'e.wakayama'+'.jp\x22,\x22waka'+'yama.wakay'+'ama.jp\x22,\x22y'+'uasa.wakay'+'ama.jp\x22,\x22y'+'ura.wakaya'+'ma.jp\x22,\x22as'+'ahi.yamaga'+'ta.jp\x22,\x22fu'+'nagata.yam'+'agata.jp\x22,'+'\x22higashine'+'.yamagata.'+'jp\x22,\x22iide.'+'yamagata.j'+'p\x22,\x22kahoku'+'.yamagata.'+'jp\x22,\x22kamin'+'oyama.yama'+'gata.jp\x22,\x22'+'kaneyama.y'+'amagata.jp'+'\x22,\x22kawanis'+'hi.yamagat'+'a.jp\x22,\x22mam'+'urogawa.ya'+'magata.jp\x22'+',\x22mikawa.y'+'amagata.jp'+'\x22,\x22murayam'+'a.yamagata'+'.jp\x22,\x22naga'+'i.yamagata'+'.jp\x22,\x22naka'+'yama.yamag'+'ata.jp\x22,\x22n'+'anyo.yamag'+'ata.jp\x22,\x22n'+'ishikawa.y'+'amagata.jp'+'\x22,\x22obanaza'+'wa.yamagat'+'a.jp\x22,\x22oe.'+'yamagata.j'+'p\x22,\x22oguni.'+'yamagata.j'+'p\x22,\x22ohkura'+'.yamagata.'+'jp\x22,\x22oishi'+'da.yamagat'+'a.jp\x22,\x22sag'+'ae.yamagat'+'a.jp\x22,\x22sak'+'ata.yamaga'+'ta.jp\x22,\x22sa'+'kegawa.yam'+'agata.jp\x22,'+'\x22shinjo.ya'+'magata.jp\x22'+',\x22shiratak'+'a.yamagata'+'.jp\x22,\x22shon'+'ai.yamagat'+'a.jp\x22,\x22tak'+'ahata.yama'+'gata.jp\x22,\x22'+'tendo.yama'+'gata.jp\x22,\x22'+'tozawa.yam'+'agata.jp\x22,')+('\x22tsuruoka.'+'yamagata.j'+'p\x22,\x22yamaga'+'ta.yamagat'+'a.jp\x22,\x22yam'+'anobe.yama'+'gata.jp\x22,\x22'+'yonezawa.y'+'amagata.jp'+'\x22,\x22yuza.ya'+'magata.jp\x22'+',\x22abu.yama'+'guchi.jp\x22,'+'\x22hagi.yama'+'guchi.jp\x22,'+'\x22hikari.ya'+'maguchi.jp'+'\x22,\x22hofu.ya'+'maguchi.jp'+'\x22,\x22iwakuni'+'.yamaguchi'+'.jp\x22,\x22kuda'+'matsu.yama'+'guchi.jp\x22,'+'\x22mitou.yam'+'aguchi.jp\x22'+',\x22nagato.y'+'amaguchi.j'+'p\x22,\x22oshima'+'.yamaguchi'+'.jp\x22,\x22shim'+'onoseki.ya'+'maguchi.jp'+'\x22,\x22shunan.'+'yamaguchi.'+'jp\x22,\x22tabus'+'e.yamaguch'+'i.jp\x22,\x22tok'+'uyama.yama'+'guchi.jp\x22,'+'\x22toyota.ya'+'maguchi.jp'+'\x22,\x22ube.yam'+'aguchi.jp\x22'+',\x22yuu.yama'+'guchi.jp\x22,'+'\x22chuo.yama'+'nashi.jp\x22,'+'\x22doshi.yam'+'anashi.jp\x22'+',\x22fuefuki.'+'yamanashi.'+'jp\x22,\x22fujik'+'awa.yamana'+'shi.jp\x22,\x22f'+'ujikawaguc'+'hiko.yaman'+'ashi.jp\x22,\x22'+'fujiyoshid'+'a.yamanash'+'i.jp\x22,\x22hay'+'akawa.yama'+'nashi.jp\x22,'+'\x22hokuto.ya'+'manashi.jp'+'\x22,\x22ichikaw'+'amisato.ya'+'manashi.jp'+'\x22,\x22kai.yam'+'anashi.jp\x22'+',\x22kofu.yam'+'anashi.jp\x22'+',\x22koshu.ya'+'manashi.jp'+'\x22,\x22kosuge.'+'yamanashi.'+'jp\x22,\x22minam'+'i-alps.yam'+'anashi.jp\x22'+',\x22minobu.y'+'amanashi.j'+'p\x22,\x22nakami'+'chi.yamana'+'shi.jp\x22,\x22n'+'anbu.yaman'+'ashi.jp\x22,\x22'+'narusawa.y'+'amanashi.j'+'p\x22,\x22nirasa'+'ki.yamanas'+'hi.jp\x22,\x22ni'+'shikatsura'+'.yamanashi'+'.jp\x22,\x22oshi'+'no.yamanas'+'hi.jp\x22,\x22ot'+'suki.yaman'+'ashi.jp\x22,\x22'+'showa.yama'+'nashi.jp\x22,')+('\x22tabayama.'+'yamanashi.'+'jp\x22,\x22tsuru'+'.yamanashi'+'.jp\x22,\x22ueno'+'hara.yaman'+'ashi.jp\x22,\x22'+'yamanakako'+'.yamanashi'+'.jp\x22,\x22yama'+'nashi.yama'+'nashi.jp\x22,'+'\x22ke\x22,\x22ac.k'+'e\x22,\x22co.ke\x22'+',\x22go.ke\x22,\x22'+'info.ke\x22,\x22'+'me.ke\x22,\x22mo'+'bi.ke\x22,\x22ne'+'.ke\x22,\x22or.k'+'e\x22,\x22sc.ke\x22'+',\x22kg\x22,\x22org'+'.kg\x22,\x22net.'+'kg\x22,\x22com.k'+'g\x22,\x22edu.kg'+'\x22,\x22gov.kg\x22'+',\x22mil.kg\x22,'+'\x22*.kh\x22,\x22ki'+'\x22,\x22edu.ki\x22'+',\x22biz.ki\x22,'+'\x22net.ki\x22,\x22'+'org.ki\x22,\x22g'+'ov.ki\x22,\x22in'+'fo.ki\x22,\x22co'+'m.ki\x22,\x22km\x22'+',\x22org.km\x22,'+'\x22nom.km\x22,\x22'+'gov.km\x22,\x22p'+'rd.km\x22,\x22tm'+'.km\x22,\x22edu.'+'km\x22,\x22mil.k'+'m\x22,\x22ass.km'+'\x22,\x22com.km\x22'+',\x22coop.km\x22'+',\x22asso.km\x22'+',\x22presse.k'+'m\x22,\x22medeci'+'n.km\x22,\x22not'+'aires.km\x22,'+'\x22pharmacie'+'ns.km\x22,\x22ve'+'terinaire.'+'km\x22,\x22gouv.'+'km\x22,\x22kn\x22,\x22'+'net.kn\x22,\x22o'+'rg.kn\x22,\x22ed'+'u.kn\x22,\x22gov'+'.kn\x22,\x22kp\x22,'+'\x22com.kp\x22,\x22'+'edu.kp\x22,\x22g'+'ov.kp\x22,\x22or'+'g.kp\x22,\x22rep'+'.kp\x22,\x22tra.'+'kp\x22,\x22kr\x22,\x22'+'ac.kr\x22,\x22co'+'.kr\x22,\x22es.k'+'r\x22,\x22go.kr\x22'+',\x22hs.kr\x22,\x22'+'kg.kr\x22,\x22mi'+'l.kr\x22,\x22ms.'+'kr\x22,\x22ne.kr'+'\x22,\x22or.kr\x22,'+'\x22pe.kr\x22,\x22r'+'e.kr\x22,\x22sc.'+'kr\x22,\x22busan'+'.kr\x22,\x22chun'+'gbuk.kr\x22,\x22'+'chungnam.k'+'r\x22,\x22daegu.'+'kr\x22,\x22daeje'+'on.kr\x22,\x22ga'+'ngwon.kr\x22,'+'\x22gwangju.k'+'r\x22,\x22gyeong'+'buk.kr\x22,\x22g'+'yeonggi.kr'+'\x22,\x22gyeongn'+'am.kr\x22,\x22in'+'cheon.kr\x22,'+'\x22jeju.kr\x22,'+'\x22jeonbuk.k'+'r\x22,\x22jeonna'+'m.kr\x22,\x22seo'+'ul.kr\x22,\x22ul'+'san.kr\x22,\x22k'+'w\x22,\x22com.kw'+'\x22,\x22edu.kw\x22'+',\x22emb.kw\x22,'+'\x22gov.kw\x22,\x22'+'ind.kw\x22,\x22n'+'et.kw\x22,\x22or')+('g.kw\x22,\x22ky\x22'+',\x22edu.ky\x22,'+'\x22gov.ky\x22,\x22'+'com.ky\x22,\x22o'+'rg.ky\x22,\x22ne'+'t.ky\x22,\x22kz\x22'+',\x22org.kz\x22,'+'\x22edu.kz\x22,\x22'+'net.kz\x22,\x22g'+'ov.kz\x22,\x22mi'+'l.kz\x22,\x22com'+'.kz\x22,\x22la\x22,'+'\x22int.la\x22,\x22'+'net.la\x22,\x22i'+'nfo.la\x22,\x22e'+'du.la\x22,\x22go'+'v.la\x22,\x22per'+'.la\x22,\x22com.'+'la\x22,\x22org.l'+'a\x22,\x22lb\x22,\x22c'+'om.lb\x22,\x22ed'+'u.lb\x22,\x22gov'+'.lb\x22,\x22net.'+'lb\x22,\x22org.l'+'b\x22,\x22lc\x22,\x22c'+'om.lc\x22,\x22ne'+'t.lc\x22,\x22co.'+'lc\x22,\x22org.l'+'c\x22,\x22edu.lc'+'\x22,\x22gov.lc\x22'+',\x22li\x22,\x22lk\x22'+',\x22gov.lk\x22,'+'\x22sch.lk\x22,\x22'+'net.lk\x22,\x22i'+'nt.lk\x22,\x22co'+'m.lk\x22,\x22org'+'.lk\x22,\x22edu.'+'lk\x22,\x22ngo.l'+'k\x22,\x22soc.lk'+'\x22,\x22web.lk\x22'+',\x22ltd.lk\x22,'+'\x22assn.lk\x22,'+'\x22grp.lk\x22,\x22'+'hotel.lk\x22,'+'\x22ac.lk\x22,\x22l'+'r\x22,\x22com.lr'+'\x22,\x22edu.lr\x22'+',\x22gov.lr\x22,'+'\x22org.lr\x22,\x22'+'net.lr\x22,\x22l'+'s\x22,\x22ac.ls\x22'+',\x22biz.ls\x22,'+'\x22co.ls\x22,\x22e'+'du.ls\x22,\x22go'+'v.ls\x22,\x22inf'+'o.ls\x22,\x22net'+'.ls\x22,\x22org.'+'ls\x22,\x22sc.ls'+'\x22,\x22lt\x22,\x22go'+'v.lt\x22,\x22lu\x22'+',\x22lv\x22,\x22com'+'.lv\x22,\x22edu.'+'lv\x22,\x22gov.l'+'v\x22,\x22org.lv'+'\x22,\x22mil.lv\x22'+',\x22id.lv\x22,\x22'+'net.lv\x22,\x22a'+'sn.lv\x22,\x22co'+'nf.lv\x22,\x22ly'+'\x22,\x22com.ly\x22'+',\x22net.ly\x22,'+'\x22gov.ly\x22,\x22'+'plc.ly\x22,\x22e'+'du.ly\x22,\x22sc'+'h.ly\x22,\x22med'+'.ly\x22,\x22org.'+'ly\x22,\x22id.ly'+'\x22,\x22ma\x22,\x22co'+'.ma\x22,\x22net.'+'ma\x22,\x22gov.m'+'a\x22,\x22org.ma'+'\x22,\x22ac.ma\x22,'+'\x22press.ma\x22'+',\x22mc\x22,\x22tm.'+'mc\x22,\x22asso.'+'mc\x22,\x22md\x22,\x22'+'me\x22,\x22co.me'+'\x22,\x22net.me\x22'+',\x22org.me\x22,'+'\x22edu.me\x22,\x22'+'ac.me\x22,\x22go'+'v.me\x22,\x22its'+'.me\x22,\x22priv'+'.me\x22,\x22mg\x22,'+'\x22org.mg\x22,\x22'+'nom.mg\x22,\x22g'+'ov.mg\x22,\x22pr'+'d.mg\x22,\x22tm.'+'mg\x22,\x22edu.m'+'g\x22,\x22mil.mg')+('\x22,\x22com.mg\x22'+',\x22co.mg\x22,\x22'+'mh\x22,\x22mil\x22,'+'\x22mk\x22,\x22com.'+'mk\x22,\x22org.m'+'k\x22,\x22net.mk'+'\x22,\x22edu.mk\x22'+',\x22gov.mk\x22,'+'\x22inf.mk\x22,\x22'+'name.mk\x22,\x22'+'ml\x22,\x22com.m'+'l\x22,\x22edu.ml'+'\x22,\x22gouv.ml'+'\x22,\x22gov.ml\x22'+',\x22net.ml\x22,'+'\x22org.ml\x22,\x22'+'presse.ml\x22'+',\x22*.mm\x22,\x22m'+'n\x22,\x22gov.mn'+'\x22,\x22edu.mn\x22'+',\x22org.mn\x22,'+'\x22mo\x22,\x22com.'+'mo\x22,\x22net.m'+'o\x22,\x22org.mo'+'\x22,\x22edu.mo\x22'+',\x22gov.mo\x22,'+'\x22mobi\x22,\x22mp'+'\x22,\x22mq\x22,\x22mr'+'\x22,\x22gov.mr\x22'+',\x22ms\x22,\x22com'+'.ms\x22,\x22edu.'+'ms\x22,\x22gov.m'+'s\x22,\x22net.ms'+'\x22,\x22org.ms\x22'+',\x22mt\x22,\x22com'+'.mt\x22,\x22edu.'+'mt\x22,\x22net.m'+'t\x22,\x22org.mt'+'\x22,\x22mu\x22,\x22co'+'m.mu\x22,\x22net'+'.mu\x22,\x22org.'+'mu\x22,\x22gov.m'+'u\x22,\x22ac.mu\x22'+',\x22co.mu\x22,\x22'+'or.mu\x22,\x22mu'+'seum\x22,\x22aca'+'demy.museu'+'m\x22,\x22agricu'+'lture.muse'+'um\x22,\x22air.m'+'useum\x22,\x22ai'+'rguard.mus'+'eum\x22,\x22alab'+'ama.museum'+'\x22,\x22alaska.'+'museum\x22,\x22a'+'mber.museu'+'m\x22,\x22ambula'+'nce.museum'+'\x22,\x22america'+'n.museum\x22,'+'\x22americana'+'.museum\x22,\x22'+'americanan'+'tiques.mus'+'eum\x22,\x22amer'+'icanart.mu'+'seum\x22,\x22ams'+'terdam.mus'+'eum\x22,\x22and.'+'museum\x22,\x22a'+'nnefrank.m'+'useum\x22,\x22an'+'thro.museu'+'m\x22,\x22anthro'+'pology.mus'+'eum\x22,\x22anti'+'ques.museu'+'m\x22,\x22aquari'+'um.museum\x22'+',\x22arboretu'+'m.museum\x22,'+'\x22archaeolo'+'gical.muse'+'um\x22,\x22archa'+'eology.mus'+'eum\x22,\x22arch'+'itecture.m'+'useum\x22,\x22ar'+'t.museum\x22,'+'\x22artanddes'+'ign.museum'+'\x22,\x22artcent'+'er.museum\x22'+',\x22artdeco.'+'museum\x22,\x22a'+'rteducatio'+'n.museum\x22,'+'\x22artgaller'+'y.museum\x22,')+('\x22arts.muse'+'um\x22,\x22artsa'+'ndcrafts.m'+'useum\x22,\x22as'+'matart.mus'+'eum\x22,\x22assa'+'ssination.'+'museum\x22,\x22a'+'ssisi.muse'+'um\x22,\x22assoc'+'iation.mus'+'eum\x22,\x22astr'+'onomy.muse'+'um\x22,\x22atlan'+'ta.museum\x22'+',\x22austin.m'+'useum\x22,\x22au'+'stralia.mu'+'seum\x22,\x22aut'+'omotive.mu'+'seum\x22,\x22avi'+'ation.muse'+'um\x22,\x22axis.'+'museum\x22,\x22b'+'adajoz.mus'+'eum\x22,\x22bagh'+'dad.museum'+'\x22,\x22bahn.mu'+'seum\x22,\x22bal'+'e.museum\x22,'+'\x22baltimore'+'.museum\x22,\x22'+'barcelona.'+'museum\x22,\x22b'+'aseball.mu'+'seum\x22,\x22bas'+'el.museum\x22'+',\x22baths.mu'+'seum\x22,\x22bau'+'ern.museum'+'\x22,\x22beauxar'+'ts.museum\x22'+',\x22beeldeng'+'eluid.muse'+'um\x22,\x22belle'+'vue.museum'+'\x22,\x22bergbau'+'.museum\x22,\x22'+'berkeley.m'+'useum\x22,\x22be'+'rlin.museu'+'m\x22,\x22bern.m'+'useum\x22,\x22bi'+'ble.museum'+'\x22,\x22bilbao.'+'museum\x22,\x22b'+'ill.museum'+'\x22,\x22birdart'+'.museum\x22,\x22'+'birthplace'+'.museum\x22,\x22'+'bonn.museu'+'m\x22,\x22boston'+'.museum\x22,\x22'+'botanical.'+'museum\x22,\x22b'+'otanicalga'+'rden.museu'+'m\x22,\x22botani'+'cgarden.mu'+'seum\x22,\x22bot'+'any.museum'+'\x22,\x22brandyw'+'inevalley.'+'museum\x22,\x22b'+'rasil.muse'+'um\x22,\x22brist'+'ol.museum\x22'+',\x22british.'+'museum\x22,\x22b'+'ritishcolu'+'mbia.museu'+'m\x22,\x22broadc'+'ast.museum'+'\x22,\x22brunel.'+'museum\x22,\x22b'+'russel.mus'+'eum\x22,\x22brus'+'sels.museu'+'m\x22,\x22bruxel'+'les.museum'+'\x22,\x22buildin'+'g.museum\x22,'+'\x22burghof.m'+'useum\x22,\x22bu'+'s.museum\x22,'+'\x22bushey.mu'+'seum\x22,\x22cad'+'aques.muse'+'um\x22,\x22calif')+('ornia.muse'+'um\x22,\x22cambr'+'idge.museu'+'m\x22,\x22can.mu'+'seum\x22,\x22can'+'ada.museum'+'\x22,\x22capebre'+'ton.museum'+'\x22,\x22carrier'+'.museum\x22,\x22'+'cartoonart'+'.museum\x22,\x22'+'casadelamo'+'neda.museu'+'m\x22,\x22castle'+'.museum\x22,\x22'+'castres.mu'+'seum\x22,\x22cel'+'tic.museum'+'\x22,\x22center.'+'museum\x22,\x22c'+'hattanooga'+'.museum\x22,\x22'+'cheltenham'+'.museum\x22,\x22'+'chesapeake'+'bay.museum'+'\x22,\x22chicago'+'.museum\x22,\x22'+'children.m'+'useum\x22,\x22ch'+'ildrens.mu'+'seum\x22,\x22chi'+'ldrensgard'+'en.museum\x22'+',\x22chiropra'+'ctic.museu'+'m\x22,\x22chocol'+'ate.museum'+'\x22,\x22christi'+'ansburg.mu'+'seum\x22,\x22cin'+'cinnati.mu'+'seum\x22,\x22cin'+'ema.museum'+'\x22,\x22circus.'+'museum\x22,\x22c'+'ivilisatio'+'n.museum\x22,'+'\x22civilizat'+'ion.museum'+'\x22,\x22civilwa'+'r.museum\x22,'+'\x22clinton.m'+'useum\x22,\x22cl'+'ock.museum'+'\x22,\x22coal.mu'+'seum\x22,\x22coa'+'staldefenc'+'e.museum\x22,'+'\x22cody.muse'+'um\x22,\x22coldw'+'ar.museum\x22'+',\x22collecti'+'on.museum\x22'+',\x22colonial'+'williamsbu'+'rg.museum\x22'+',\x22colorado'+'plateau.mu'+'seum\x22,\x22col'+'umbia.muse'+'um\x22,\x22colum'+'bus.museum'+'\x22,\x22communi'+'cation.mus'+'eum\x22,\x22comm'+'unications'+'.museum\x22,\x22'+'community.'+'museum\x22,\x22c'+'omputer.mu'+'seum\x22,\x22com'+'puterhisto'+'ry.museum\x22'+',\x22comunica'+'ƧƵes.museu'+'m\x22,\x22contem'+'porary.mus'+'eum\x22,\x22cont'+'emporaryar'+'t.museum\x22,'+'\x22convent.m'+'useum\x22,\x22co'+'penhagen.m'+'useum\x22,\x22co'+'rporation.'+'museum\x22,\x22c'+'orreios-e-'+'telecomuni')+('caƧƵes.mus'+'eum\x22,\x22corv'+'ette.museu'+'m\x22,\x22costum'+'e.museum\x22,'+'\x22countryes'+'tate.museu'+'m\x22,\x22county'+'.museum\x22,\x22'+'crafts.mus'+'eum\x22,\x22cran'+'brook.muse'+'um\x22,\x22creat'+'ion.museum'+'\x22,\x22cultura'+'l.museum\x22,'+'\x22culturalc'+'enter.muse'+'um\x22,\x22cultu'+'re.museum\x22'+',\x22cyber.mu'+'seum\x22,\x22cym'+'ru.museum\x22'+',\x22dali.mus'+'eum\x22,\x22dall'+'as.museum\x22'+',\x22database'+'.museum\x22,\x22'+'ddr.museum'+'\x22,\x22decorat'+'ivearts.mu'+'seum\x22,\x22del'+'aware.muse'+'um\x22,\x22delme'+'nhorst.mus'+'eum\x22,\x22denm'+'ark.museum'+'\x22,\x22depot.m'+'useum\x22,\x22de'+'sign.museu'+'m\x22,\x22detroi'+'t.museum\x22,'+'\x22dinosaur.'+'museum\x22,\x22d'+'iscovery.m'+'useum\x22,\x22do'+'lls.museum'+'\x22,\x22donosti'+'a.museum\x22,'+'\x22durham.mu'+'seum\x22,\x22eas'+'tafrica.mu'+'seum\x22,\x22eas'+'tcoast.mus'+'eum\x22,\x22educ'+'ation.muse'+'um\x22,\x22educa'+'tional.mus'+'eum\x22,\x22egyp'+'tian.museu'+'m\x22,\x22eisenb'+'ahn.museum'+'\x22,\x22elburg.'+'museum\x22,\x22e'+'lvendrell.'+'museum\x22,\x22e'+'mbroidery.'+'museum\x22,\x22e'+'ncyclopedi'+'c.museum\x22,'+'\x22england.m'+'useum\x22,\x22en'+'tomology.m'+'useum\x22,\x22en'+'vironment.'+'museum\x22,\x22e'+'nvironment'+'alconserva'+'tion.museu'+'m\x22,\x22epilep'+'sy.museum\x22'+',\x22essex.mu'+'seum\x22,\x22est'+'ate.museum'+'\x22,\x22ethnolo'+'gy.museum\x22'+',\x22exeter.m'+'useum\x22,\x22ex'+'hibition.m'+'useum\x22,\x22fa'+'mily.museu'+'m\x22,\x22farm.m'+'useum\x22,\x22fa'+'rmequipmen'+'t.museum\x22,'+'\x22farmers.m'+'useum\x22,\x22fa'+'rmstead.mu'+'seum\x22,\x22fie'+'ld.museum\x22')+(',\x22figueres'+'.museum\x22,\x22'+'filatelia.'+'museum\x22,\x22f'+'ilm.museum'+'\x22,\x22fineart'+'.museum\x22,\x22'+'finearts.m'+'useum\x22,\x22fi'+'nland.muse'+'um\x22,\x22fland'+'ers.museum'+'\x22,\x22florida'+'.museum\x22,\x22'+'force.muse'+'um\x22,\x22fortm'+'issoula.mu'+'seum\x22,\x22for'+'tworth.mus'+'eum\x22,\x22foun'+'dation.mus'+'eum\x22,\x22fran'+'caise.muse'+'um\x22,\x22frank'+'furt.museu'+'m\x22,\x22franzi'+'skaner.mus'+'eum\x22,\x22free'+'masonry.mu'+'seum\x22,\x22fre'+'iburg.muse'+'um\x22,\x22fribo'+'urg.museum'+'\x22,\x22frog.mu'+'seum\x22,\x22fun'+'dacio.muse'+'um\x22,\x22furni'+'ture.museu'+'m\x22,\x22galler'+'y.museum\x22,'+'\x22garden.mu'+'seum\x22,\x22gat'+'eway.museu'+'m\x22,\x22geelvi'+'nck.museum'+'\x22,\x22gemolog'+'ical.museu'+'m\x22,\x22geolog'+'y.museum\x22,'+'\x22georgia.m'+'useum\x22,\x22gi'+'essen.muse'+'um\x22,\x22glas.'+'museum\x22,\x22g'+'lass.museu'+'m\x22,\x22gorge.'+'museum\x22,\x22g'+'randrapids'+'.museum\x22,\x22'+'graz.museu'+'m\x22,\x22guerns'+'ey.museum\x22'+',\x22halloffa'+'me.museum\x22'+',\x22hamburg.'+'museum\x22,\x22h'+'andson.mus'+'eum\x22,\x22harv'+'estcelebra'+'tion.museu'+'m\x22,\x22hawaii'+'.museum\x22,\x22'+'health.mus'+'eum\x22,\x22heim'+'atunduhren'+'.museum\x22,\x22'+'hellas.mus'+'eum\x22,\x22hels'+'inki.museu'+'m\x22,\x22hembyg'+'dsforbund.'+'museum\x22,\x22h'+'eritage.mu'+'seum\x22,\x22his'+'toire.muse'+'um\x22,\x22histo'+'rical.muse'+'um\x22,\x22histo'+'ricalsocie'+'ty.museum\x22'+',\x22historic'+'houses.mus'+'eum\x22,\x22hist'+'orisch.mus'+'eum\x22,\x22hist'+'orisches.m'+'useum\x22,\x22hi'+'story.muse'+'um\x22,\x22histo'+'ryofscienc')+('e.museum\x22,'+'\x22horology.'+'museum\x22,\x22h'+'ouse.museu'+'m\x22,\x22humani'+'ties.museu'+'m\x22,\x22illust'+'ration.mus'+'eum\x22,\x22imag'+'eandsound.'+'museum\x22,\x22i'+'ndian.muse'+'um\x22,\x22india'+'na.museum\x22'+',\x22indianap'+'olis.museu'+'m\x22,\x22indian'+'market.mus'+'eum\x22,\x22inte'+'lligence.m'+'useum\x22,\x22in'+'teractive.'+'museum\x22,\x22i'+'raq.museum'+'\x22,\x22iron.mu'+'seum\x22,\x22isl'+'eofman.mus'+'eum\x22,\x22jami'+'son.museum'+'\x22,\x22jeffers'+'on.museum\x22'+',\x22jerusale'+'m.museum\x22,'+'\x22jewelry.m'+'useum\x22,\x22je'+'wish.museu'+'m\x22,\x22jewish'+'art.museum'+'\x22,\x22jfk.mus'+'eum\x22,\x22jour'+'nalism.mus'+'eum\x22,\x22juda'+'ica.museum'+'\x22,\x22judygar'+'land.museu'+'m\x22,\x22juedis'+'ches.museu'+'m\x22,\x22juif.m'+'useum\x22,\x22ka'+'rate.museu'+'m\x22,\x22karika'+'tur.museum'+'\x22,\x22kids.mu'+'seum\x22,\x22koe'+'benhavn.mu'+'seum\x22,\x22koe'+'ln.museum\x22'+',\x22kunst.mu'+'seum\x22,\x22kun'+'stsammlung'+'.museum\x22,\x22'+'kunstundde'+'sign.museu'+'m\x22,\x22labor.'+'museum\x22,\x22l'+'abour.muse'+'um\x22,\x22lajol'+'la.museum\x22'+',\x22lancashi'+'re.museum\x22'+',\x22landes.m'+'useum\x22,\x22la'+'ns.museum\x22'+',\x22lƤns.mus'+'eum\x22,\x22lars'+'son.museum'+'\x22,\x22lewismi'+'ller.museu'+'m\x22,\x22lincol'+'n.museum\x22,'+'\x22linz.muse'+'um\x22,\x22livin'+'g.museum\x22,'+'\x22livinghis'+'tory.museu'+'m\x22,\x22localh'+'istory.mus'+'eum\x22,\x22lond'+'on.museum\x22'+',\x22losangel'+'es.museum\x22'+',\x22louvre.m'+'useum\x22,\x22lo'+'yalist.mus'+'eum\x22,\x22luce'+'rne.museum'+'\x22,\x22luxembo'+'urg.museum'+'\x22,\x22luzern.'+'museum\x22,\x22m')+('ad.museum\x22'+',\x22madrid.m'+'useum\x22,\x22ma'+'llorca.mus'+'eum\x22,\x22manc'+'hester.mus'+'eum\x22,\x22mans'+'ion.museum'+'\x22,\x22mansion'+'s.museum\x22,'+'\x22manx.muse'+'um\x22,\x22marbu'+'rg.museum\x22'+',\x22maritime'+'.museum\x22,\x22'+'maritimo.m'+'useum\x22,\x22ma'+'ryland.mus'+'eum\x22,\x22mary'+'lhurst.mus'+'eum\x22,\x22medi'+'a.museum\x22,'+'\x22medical.m'+'useum\x22,\x22me'+'dizinhisto'+'risches.mu'+'seum\x22,\x22mee'+'res.museum'+'\x22,\x22memoria'+'l.museum\x22,'+'\x22mesaverde'+'.museum\x22,\x22'+'michigan.m'+'useum\x22,\x22mi'+'datlantic.'+'museum\x22,\x22m'+'ilitary.mu'+'seum\x22,\x22mil'+'l.museum\x22,'+'\x22miners.mu'+'seum\x22,\x22min'+'ing.museum'+'\x22,\x22minneso'+'ta.museum\x22'+',\x22missile.'+'museum\x22,\x22m'+'issoula.mu'+'seum\x22,\x22mod'+'ern.museum'+'\x22,\x22moma.mu'+'seum\x22,\x22mon'+'ey.museum\x22'+',\x22monmouth'+'.museum\x22,\x22'+'monticello'+'.museum\x22,\x22'+'montreal.m'+'useum\x22,\x22mo'+'scow.museu'+'m\x22,\x22motorc'+'ycle.museu'+'m\x22,\x22muench'+'en.museum\x22'+',\x22muenster'+'.museum\x22,\x22'+'mulhouse.m'+'useum\x22,\x22mu'+'ncie.museu'+'m\x22,\x22museet'+'.museum\x22,\x22'+'museumcent'+'er.museum\x22'+',\x22museumve'+'reniging.m'+'useum\x22,\x22mu'+'sic.museum'+'\x22,\x22nationa'+'l.museum\x22,'+'\x22nationalf'+'irearms.mu'+'seum\x22,\x22nat'+'ionalherit'+'age.museum'+'\x22,\x22nativea'+'merican.mu'+'seum\x22,\x22nat'+'uralhistor'+'y.museum\x22,'+'\x22naturalhi'+'storymuseu'+'m.museum\x22,'+'\x22naturalsc'+'iences.mus'+'eum\x22,\x22natu'+'re.museum\x22'+',\x22naturhis'+'torisches.'+'museum\x22,\x22n'+'atuurweten'+'schappen.m')+('useum\x22,\x22na'+'umburg.mus'+'eum\x22,\x22nava'+'l.museum\x22,'+'\x22nebraska.'+'museum\x22,\x22n'+'eues.museu'+'m\x22,\x22newham'+'pshire.mus'+'eum\x22,\x22newj'+'ersey.muse'+'um\x22,\x22newme'+'xico.museu'+'m\x22,\x22newpor'+'t.museum\x22,'+'\x22newspaper'+'.museum\x22,\x22'+'newyork.mu'+'seum\x22,\x22nie'+'pce.museum'+'\x22,\x22norfolk'+'.museum\x22,\x22'+'north.muse'+'um\x22,\x22nrw.m'+'useum\x22,\x22ny'+'c.museum\x22,'+'\x22nyny.muse'+'um\x22,\x22ocean'+'ographic.m'+'useum\x22,\x22oc'+'eanographi'+'que.museum'+'\x22,\x22omaha.m'+'useum\x22,\x22on'+'line.museu'+'m\x22,\x22ontari'+'o.museum\x22,'+'\x22openair.m'+'useum\x22,\x22or'+'egon.museu'+'m\x22,\x22oregon'+'trail.muse'+'um\x22,\x22otago'+'.museum\x22,\x22'+'oxford.mus'+'eum\x22,\x22paci'+'fic.museum'+'\x22,\x22paderbo'+'rn.museum\x22'+',\x22palace.m'+'useum\x22,\x22pa'+'leo.museum'+'\x22,\x22palmspr'+'ings.museu'+'m\x22,\x22panama'+'.museum\x22,\x22'+'paris.muse'+'um\x22,\x22pasad'+'ena.museum'+'\x22,\x22pharmac'+'y.museum\x22,'+'\x22philadelp'+'hia.museum'+'\x22,\x22philade'+'lphiaarea.'+'museum\x22,\x22p'+'hilately.m'+'useum\x22,\x22ph'+'oenix.muse'+'um\x22,\x22photo'+'graphy.mus'+'eum\x22,\x22pilo'+'ts.museum\x22'+',\x22pittsbur'+'gh.museum\x22'+',\x22planetar'+'ium.museum'+'\x22,\x22plantat'+'ion.museum'+'\x22,\x22plants.'+'museum\x22,\x22p'+'laza.museu'+'m\x22,\x22portal'+'.museum\x22,\x22'+'portland.m'+'useum\x22,\x22po'+'rtlligat.m'+'useum\x22,\x22po'+'sts-and-te'+'lecommunic'+'ations.mus'+'eum\x22,\x22pres'+'ervation.m'+'useum\x22,\x22pr'+'esidio.mus'+'eum\x22,\x22pres'+'s.museum\x22,'+'\x22project.m'+'useum\x22,\x22pu'+'blic.museu')+('m\x22,\x22pubol.'+'museum\x22,\x22q'+'uebec.muse'+'um\x22,\x22railr'+'oad.museum'+'\x22,\x22railway'+'.museum\x22,\x22'+'research.m'+'useum\x22,\x22re'+'sistance.m'+'useum\x22,\x22ri'+'odejaneiro'+'.museum\x22,\x22'+'rochester.'+'museum\x22,\x22r'+'ockart.mus'+'eum\x22,\x22roma'+'.museum\x22,\x22'+'russia.mus'+'eum\x22,\x22sain'+'tlouis.mus'+'eum\x22,\x22sale'+'m.museum\x22,'+'\x22salvadord'+'ali.museum'+'\x22,\x22salzbur'+'g.museum\x22,'+'\x22sandiego.'+'museum\x22,\x22s'+'anfrancisc'+'o.museum\x22,'+'\x22santabarb'+'ara.museum'+'\x22,\x22santacr'+'uz.museum\x22'+',\x22santafe.'+'museum\x22,\x22s'+'askatchewa'+'n.museum\x22,'+'\x22satx.muse'+'um\x22,\x22savan'+'nahga.muse'+'um\x22,\x22schle'+'sisches.mu'+'seum\x22,\x22sch'+'oenbrunn.m'+'useum\x22,\x22sc'+'hokoladen.'+'museum\x22,\x22s'+'chool.muse'+'um\x22,\x22schwe'+'iz.museum\x22'+',\x22science.'+'museum\x22,\x22s'+'cienceandh'+'istory.mus'+'eum\x22,\x22scie'+'nceandindu'+'stry.museu'+'m\x22,\x22scienc'+'ecenter.mu'+'seum\x22,\x22sci'+'encecenter'+'s.museum\x22,'+'\x22science-f'+'iction.mus'+'eum\x22,\x22scie'+'ncehistory'+'.museum\x22,\x22'+'sciences.m'+'useum\x22,\x22sc'+'iencesnatu'+'relles.mus'+'eum\x22,\x22scot'+'land.museu'+'m\x22,\x22seapor'+'t.museum\x22,'+'\x22settlemen'+'t.museum\x22,'+'\x22settlers.'+'museum\x22,\x22s'+'hell.museu'+'m\x22,\x22sherbr'+'ooke.museu'+'m\x22,\x22sibeni'+'k.museum\x22,'+'\x22silk.muse'+'um\x22,\x22ski.m'+'useum\x22,\x22sk'+'ole.museum'+'\x22,\x22society'+'.museum\x22,\x22'+'sologne.mu'+'seum\x22,\x22sou'+'ndandvisio'+'n.museum\x22,'+'\x22southcaro'+'lina.museu'+'m\x22,\x22southw'+'est.museum')+('\x22,\x22space.m'+'useum\x22,\x22sp'+'y.museum\x22,'+'\x22square.mu'+'seum\x22,\x22sta'+'dt.museum\x22'+',\x22stalbans'+'.museum\x22,\x22'+'starnberg.'+'museum\x22,\x22s'+'tate.museu'+'m\x22,\x22stateo'+'fdelaware.'+'museum\x22,\x22s'+'tation.mus'+'eum\x22,\x22stea'+'m.museum\x22,'+'\x22steiermar'+'k.museum\x22,'+'\x22stjohn.mu'+'seum\x22,\x22sto'+'ckholm.mus'+'eum\x22,\x22stpe'+'tersburg.m'+'useum\x22,\x22st'+'uttgart.mu'+'seum\x22,\x22sui'+'sse.museum'+'\x22,\x22surgeon'+'shall.muse'+'um\x22,\x22surre'+'y.museum\x22,'+'\x22svizzera.'+'museum\x22,\x22s'+'weden.muse'+'um\x22,\x22sydne'+'y.museum\x22,'+'\x22tank.muse'+'um\x22,\x22tcm.m'+'useum\x22,\x22te'+'chnology.m'+'useum\x22,\x22te'+'lekommunik'+'ation.muse'+'um\x22,\x22telev'+'ision.muse'+'um\x22,\x22texas'+'.museum\x22,\x22'+'textile.mu'+'seum\x22,\x22the'+'ater.museu'+'m\x22,\x22time.m'+'useum\x22,\x22ti'+'mekeeping.'+'museum\x22,\x22t'+'opology.mu'+'seum\x22,\x22tor'+'ino.museum'+'\x22,\x22touch.m'+'useum\x22,\x22to'+'wn.museum\x22'+',\x22transpor'+'t.museum\x22,'+'\x22tree.muse'+'um\x22,\x22troll'+'ey.museum\x22'+',\x22trust.mu'+'seum\x22,\x22tru'+'stee.museu'+'m\x22,\x22uhren.'+'museum\x22,\x22u'+'lm.museum\x22'+',\x22undersea'+'.museum\x22,\x22'+'university'+'.museum\x22,\x22'+'usa.museum'+'\x22,\x22usantiq'+'ues.museum'+'\x22,\x22usarts.'+'museum\x22,\x22u'+'scountryes'+'tate.museu'+'m\x22,\x22uscult'+'ure.museum'+'\x22,\x22usdecor'+'ativearts.'+'museum\x22,\x22u'+'sgarden.mu'+'seum\x22,\x22ush'+'istory.mus'+'eum\x22,\x22ushu'+'aia.museum'+'\x22,\x22uslivin'+'ghistory.m'+'useum\x22,\x22ut'+'ah.museum\x22'+',\x22uvic.mus'+'eum\x22,\x22vall'+'ey.museum\x22')+(',\x22vantaa.m'+'useum\x22,\x22ve'+'rsailles.m'+'useum\x22,\x22vi'+'king.museu'+'m\x22,\x22villag'+'e.museum\x22,'+'\x22virginia.'+'museum\x22,\x22v'+'irtual.mus'+'eum\x22,\x22virt'+'uel.museum'+'\x22,\x22vlaande'+'ren.museum'+'\x22,\x22volkenk'+'unde.museu'+'m\x22,\x22wales.'+'museum\x22,\x22w'+'allonie.mu'+'seum\x22,\x22war'+'.museum\x22,\x22'+'washington'+'dc.museum\x22'+',\x22watchand'+'clock.muse'+'um\x22,\x22watch'+'-and-clock'+'.museum\x22,\x22'+'western.mu'+'seum\x22,\x22wes'+'tfalen.mus'+'eum\x22,\x22whal'+'ing.museum'+'\x22,\x22wildlif'+'e.museum\x22,'+'\x22williamsb'+'urg.museum'+'\x22,\x22windmil'+'l.museum\x22,'+'\x22workshop.'+'museum\x22,\x22y'+'ork.museum'+'\x22,\x22yorkshi'+'re.museum\x22'+',\x22yosemite'+'.museum\x22,\x22'+'youth.muse'+'um\x22,\x22zoolo'+'gical.muse'+'um\x22,\x22zoolo'+'gy.museum\x22'+',\x22×™×Ø×•×©×œ×™×.'+'museum\x22,\x22Šø'+'ком.museum'+'\x22,\x22mv\x22,\x22ae'+'ro.mv\x22,\x22bi'+'z.mv\x22,\x22com'+'.mv\x22,\x22coop'+'.mv\x22,\x22edu.'+'mv\x22,\x22gov.m'+'v\x22,\x22info.m'+'v\x22,\x22int.mv'+'\x22,\x22mil.mv\x22'+',\x22museum.m'+'v\x22,\x22name.m'+'v\x22,\x22net.mv'+'\x22,\x22org.mv\x22'+',\x22pro.mv\x22,'+'\x22mw\x22,\x22ac.m'+'w\x22,\x22biz.mw'+'\x22,\x22co.mw\x22,'+'\x22com.mw\x22,\x22'+'coop.mw\x22,\x22'+'edu.mw\x22,\x22g'+'ov.mw\x22,\x22in'+'t.mw\x22,\x22mus'+'eum.mw\x22,\x22n'+'et.mw\x22,\x22or'+'g.mw\x22,\x22mx\x22'+',\x22com.mx\x22,'+'\x22org.mx\x22,\x22'+'gob.mx\x22,\x22e'+'du.mx\x22,\x22ne'+'t.mx\x22,\x22my\x22'+',\x22com.my\x22,'+'\x22net.my\x22,\x22'+'org.my\x22,\x22g'+'ov.my\x22,\x22ed'+'u.my\x22,\x22mil'+'.my\x22,\x22name'+'.my\x22,\x22mz\x22,'+'\x22ac.mz\x22,\x22a'+'dv.mz\x22,\x22co'+'.mz\x22,\x22edu.'+'mz\x22,\x22gov.m'+'z\x22,\x22mil.mz'+'\x22,\x22net.mz\x22'+',\x22org.mz\x22,'+'\x22na\x22,\x22info'+'.na\x22,\x22pro.')+('na\x22,\x22name.'+'na\x22,\x22schoo'+'l.na\x22,\x22or.'+'na\x22,\x22dr.na'+'\x22,\x22us.na\x22,'+'\x22mx.na\x22,\x22c'+'a.na\x22,\x22in.'+'na\x22,\x22cc.na'+'\x22,\x22tv.na\x22,'+'\x22ws.na\x22,\x22m'+'obi.na\x22,\x22c'+'o.na\x22,\x22com'+'.na\x22,\x22org.'+'na\x22,\x22name\x22'+',\x22nc\x22,\x22ass'+'o.nc\x22,\x22nom'+'.nc\x22,\x22ne\x22,'+'\x22net\x22,\x22nf\x22'+',\x22com.nf\x22,'+'\x22net.nf\x22,\x22'+'per.nf\x22,\x22r'+'ec.nf\x22,\x22we'+'b.nf\x22,\x22art'+'s.nf\x22,\x22fir'+'m.nf\x22,\x22inf'+'o.nf\x22,\x22oth'+'er.nf\x22,\x22st'+'ore.nf\x22,\x22n'+'g\x22,\x22com.ng'+'\x22,\x22edu.ng\x22'+',\x22gov.ng\x22,'+'\x22i.ng\x22,\x22mi'+'l.ng\x22,\x22mob'+'i.ng\x22,\x22nam'+'e.ng\x22,\x22net'+'.ng\x22,\x22org.'+'ng\x22,\x22sch.n'+'g\x22,\x22ni\x22,\x22a'+'c.ni\x22,\x22biz'+'.ni\x22,\x22co.n'+'i\x22,\x22com.ni'+'\x22,\x22edu.ni\x22'+',\x22gob.ni\x22,'+'\x22in.ni\x22,\x22i'+'nfo.ni\x22,\x22i'+'nt.ni\x22,\x22mi'+'l.ni\x22,\x22net'+'.ni\x22,\x22nom.'+'ni\x22,\x22org.n'+'i\x22,\x22web.ni'+'\x22,\x22nl\x22,\x22no'+'\x22,\x22fhs.no\x22'+',\x22vgs.no\x22,'+'\x22fylkesbib'+'l.no\x22,\x22fol'+'kebibl.no\x22'+',\x22museum.n'+'o\x22,\x22idrett'+'.no\x22,\x22priv'+'.no\x22,\x22mil.'+'no\x22,\x22stat.'+'no\x22,\x22dep.n'+'o\x22,\x22kommun'+'e.no\x22,\x22her'+'ad.no\x22,\x22aa'+'.no\x22,\x22ah.n'+'o\x22,\x22bu.no\x22'+',\x22fm.no\x22,\x22'+'hl.no\x22,\x22hm'+'.no\x22,\x22jan-'+'mayen.no\x22,'+'\x22mr.no\x22,\x22n'+'l.no\x22,\x22nt.'+'no\x22,\x22of.no'+'\x22,\x22ol.no\x22,'+'\x22oslo.no\x22,'+'\x22rl.no\x22,\x22s'+'f.no\x22,\x22st.'+'no\x22,\x22svalb'+'ard.no\x22,\x22t'+'m.no\x22,\x22tr.'+'no\x22,\x22va.no'+'\x22,\x22vf.no\x22,'+'\x22gs.aa.no\x22'+',\x22gs.ah.no'+'\x22,\x22gs.bu.n'+'o\x22,\x22gs.fm.'+'no\x22,\x22gs.hl'+'.no\x22,\x22gs.h'+'m.no\x22,\x22gs.'+'jan-mayen.'+'no\x22,\x22gs.mr'+'.no\x22,\x22gs.n'+'l.no\x22,\x22gs.'+'nt.no\x22,\x22gs'+'.of.no\x22,\x22g'+'s.ol.no\x22,\x22'+'gs.oslo.no'+'\x22,\x22gs.rl.n'+'o\x22,\x22gs.sf.')+('no\x22,\x22gs.st'+'.no\x22,\x22gs.s'+'valbard.no'+'\x22,\x22gs.tm.n'+'o\x22,\x22gs.tr.'+'no\x22,\x22gs.va'+'.no\x22,\x22gs.v'+'f.no\x22,\x22akr'+'ehamn.no\x22,'+'\x22Ć„krehamn.'+'no\x22,\x22algar'+'d.no\x22,\x22Ć„lg'+'Ć„rd.no\x22,\x22a'+'rna.no\x22,\x22b'+'rumunddal.'+'no\x22,\x22bryne'+'.no\x22,\x22bron'+'noysund.no'+'\x22,\x22brĆønnĆøy'+'sund.no\x22,\x22'+'drobak.no\x22'+',\x22drĆøbak.n'+'o\x22,\x22egersu'+'nd.no\x22,\x22fe'+'tsund.no\x22,'+'\x22floro.no\x22'+',\x22florĆø.no'+'\x22,\x22fredrik'+'stad.no\x22,\x22'+'hokksund.n'+'o\x22,\x22honefo'+'ss.no\x22,\x22hĆø'+'nefoss.no\x22'+',\x22jessheim'+'.no\x22,\x22jorp'+'eland.no\x22,'+'\x22jĆørpeland'+'.no\x22,\x22kirk'+'enes.no\x22,\x22'+'kopervik.n'+'o\x22,\x22krokst'+'adelva.no\x22'+',\x22langevag'+'.no\x22,\x22lang'+'evĆ„g.no\x22,\x22'+'leirvik.no'+'\x22,\x22mjondal'+'en.no\x22,\x22mj'+'Ćøndalen.no'+'\x22,\x22mo-i-ra'+'na.no\x22,\x22mo'+'sjoen.no\x22,'+'\x22mosjĆøen.n'+'o\x22,\x22nesodd'+'tangen.no\x22'+',\x22orkanger'+'.no\x22,\x22osoy'+'ro.no\x22,\x22os'+'Ćøyro.no\x22,\x22'+'raholt.no\x22'+',\x22rĆ„holt.n'+'o\x22,\x22sandne'+'ssjoen.no\x22'+',\x22sandness'+'jĆøen.no\x22,\x22'+'skedsmokor'+'set.no\x22,\x22s'+'lattum.no\x22'+',\x22spjelkav'+'ik.no\x22,\x22st'+'athelle.no'+'\x22,\x22stavern'+'.no\x22,\x22stjo'+'rdalshalse'+'n.no\x22,\x22stj'+'Ćørdalshals'+'en.no\x22,\x22ta'+'nanger.no\x22'+',\x22tranby.n'+'o\x22,\x22vossev'+'angen.no\x22,'+'\x22afjord.no'+'\x22,\x22Ć„fjord.'+'no\x22,\x22agden'+'es.no\x22,\x22al'+'.no\x22,\x22Ć„l.n'+'o\x22,\x22alesun'+'d.no\x22,\x22Ć„le'+'sund.no\x22,\x22'+'alstahaug.'+'no\x22,\x22alta.'+'no\x22,\x22Ć”ltĆ”.'+'no\x22,\x22alahe'+'adju.no\x22,\x22'+'Ć”laheadju.'+'no\x22,\x22alvda'+'l.no\x22,\x22aml'+'i.no\x22,\x22Ć„ml'+'i.no\x22,\x22amo'+'t.no\x22,\x22Ć„mo')+('t.no\x22,\x22and'+'ebu.no\x22,\x22a'+'ndoy.no\x22,\x22'+'andĆøy.no\x22,'+'\x22andasuolo'+'.no\x22,\x22arda'+'l.no\x22,\x22Ć„rd'+'al.no\x22,\x22ar'+'emark.no\x22,'+'\x22arendal.n'+'o\x22,\x22Ć„s.no\x22'+',\x22aseral.n'+'o\x22,\x22Ć„seral'+'.no\x22,\x22aske'+'r.no\x22,\x22ask'+'im.no\x22,\x22as'+'kvoll.no\x22,'+'\x22askoy.no\x22'+',\x22askĆøy.no'+'\x22,\x22asnes.n'+'o\x22,\x22Ć„snes.'+'no\x22,\x22audne'+'daln.no\x22,\x22'+'aukra.no\x22,'+'\x22aure.no\x22,'+'\x22aurland.n'+'o\x22,\x22aursko'+'g-holand.n'+'o\x22,\x22aursko'+'g-hĆøland.n'+'o\x22,\x22austev'+'oll.no\x22,\x22a'+'ustrheim.n'+'o\x22,\x22averoy'+'.no\x22,\x22aver'+'Ćøy.no\x22,\x22ba'+'lestrand.n'+'o\x22,\x22ballan'+'gen.no\x22,\x22b'+'alat.no\x22,\x22'+'bĆ”lĆ”t.no\x22,'+'\x22balsfjord'+'.no\x22,\x22bahc'+'cavuotna.n'+'o\x22,\x22bĆ”hcca'+'vuotna.no\x22'+',\x22bamble.n'+'o\x22,\x22bardu.'+'no\x22,\x22beard'+'u.no\x22,\x22bei'+'arn.no\x22,\x22b'+'ajddar.no\x22'+',\x22bĆ”jddar.'+'no\x22,\x22baida'+'r.no\x22,\x22bĆ”i'+'dĆ”r.no\x22,\x22b'+'erg.no\x22,\x22b'+'ergen.no\x22,'+'\x22berlevag.'+'no\x22,\x22berle'+'vĆ„g.no\x22,\x22b'+'earalvahki'+'.no\x22,\x22bear'+'alvĆ”hki.no'+'\x22,\x22bindal.'+'no\x22,\x22birke'+'nes.no\x22,\x22b'+'jarkoy.no\x22'+',\x22bjarkĆøy.'+'no\x22,\x22bjerk'+'reim.no\x22,\x22'+'bjugn.no\x22,'+'\x22bodo.no\x22,'+'\x22bodĆø.no\x22,'+'\x22badaddja.'+'no\x22,\x22bĆ„dĆ„d'+'djĆ„.no\x22,\x22b'+'udejju.no\x22'+',\x22bokn.no\x22'+',\x22bremange'+'r.no\x22,\x22bro'+'nnoy.no\x22,\x22'+'brĆønnĆøy.no'+'\x22,\x22bygland'+'.no\x22,\x22bykl'+'e.no\x22,\x22bar'+'um.no\x22,\x22bƦ'+'rum.no\x22,\x22b'+'o.telemark'+'.no\x22,\x22bĆø.t'+'elemark.no'+'\x22,\x22bo.nord'+'land.no\x22,\x22'+'bĆø.nordlan'+'d.no\x22,\x22bie'+'vat.no\x22,\x22b'+'ievĆ”t.no\x22,'+'\x22bomlo.no\x22'+',\x22bĆømlo.no'+'\x22,\x22batsfjo')+('rd.no\x22,\x22bĆ„'+'tsfjord.no'+'\x22,\x22bahcavu'+'otna.no\x22,\x22'+'bĆ”hcavuotn'+'a.no\x22,\x22dov'+'re.no\x22,\x22dr'+'ammen.no\x22,'+'\x22drangedal'+'.no\x22,\x22dyro'+'y.no\x22,\x22dyr'+'Ćøy.no\x22,\x22do'+'nna.no\x22,\x22d'+'Ćønna.no\x22,\x22'+'eid.no\x22,\x22e'+'idfjord.no'+'\x22,\x22eidsber'+'g.no\x22,\x22eid'+'skog.no\x22,\x22'+'eidsvoll.n'+'o\x22,\x22eigers'+'und.no\x22,\x22e'+'lverum.no\x22'+',\x22enebakk.'+'no\x22,\x22enger'+'dal.no\x22,\x22e'+'tne.no\x22,\x22e'+'tnedal.no\x22'+',\x22evenes.n'+'o\x22,\x22evenas'+'si.no\x22,\x22ev'+'enÔŔŔi.no\x22'+',\x22evje-og-'+'hornnes.no'+'\x22,\x22farsund'+'.no\x22,\x22faus'+'ke.no\x22,\x22fu'+'ossko.no\x22,'+'\x22fuoisku.n'+'o\x22,\x22fedje.'+'no\x22,\x22fet.n'+'o\x22,\x22finnoy'+'.no\x22,\x22finn'+'Ćøy.no\x22,\x22fi'+'tjar.no\x22,\x22'+'fjaler.no\x22'+',\x22fjell.no'+'\x22,\x22flaksta'+'d.no\x22,\x22fla'+'tanger.no\x22'+',\x22flekkefj'+'ord.no\x22,\x22f'+'lesberg.no'+'\x22,\x22flora.n'+'o\x22,\x22fla.no'+'\x22,\x22flĆ„.no\x22'+',\x22folldal.'+'no\x22,\x22forsa'+'nd.no\x22,\x22fo'+'snes.no\x22,\x22'+'frei.no\x22,\x22'+'frogn.no\x22,'+'\x22froland.n'+'o\x22,\x22frosta'+'.no\x22,\x22fran'+'a.no\x22,\x22frƦ'+'na.no\x22,\x22fr'+'oya.no\x22,\x22f'+'rĆøya.no\x22,\x22'+'fusa.no\x22,\x22'+'fyresdal.n'+'o\x22,\x22forde.'+'no\x22,\x22fĆørde'+'.no\x22,\x22gamv'+'ik.no\x22,\x22ga'+'ngaviika.n'+'o\x22,\x22gÔŋgav'+'iika.no\x22,\x22'+'gaular.no\x22'+',\x22gausdal.'+'no\x22,\x22gilde'+'skal.no\x22,\x22'+'gildeskĆ„l.'+'no\x22,\x22giske'+'.no\x22,\x22gjem'+'nes.no\x22,\x22g'+'jerdrum.no'+'\x22,\x22gjersta'+'d.no\x22,\x22gje'+'sdal.no\x22,\x22'+'gjovik.no\x22'+',\x22gjĆøvik.n'+'o\x22,\x22gloppe'+'n.no\x22,\x22gol'+'.no\x22,\x22gran'+'.no\x22,\x22gran'+'e.no\x22,\x22gra'+'nvin.no\x22,\x22'+'gratangen.'+'no\x22,\x22grims')+('tad.no\x22,\x22g'+'rong.no\x22,\x22'+'kraanghke.'+'no\x22,\x22krĆ„an'+'ghke.no\x22,\x22'+'grue.no\x22,\x22'+'gulen.no\x22,'+'\x22hadsel.no'+'\x22,\x22halden.'+'no\x22,\x22halsa'+'.no\x22,\x22hama'+'r.no\x22,\x22ham'+'aroy.no\x22,\x22'+'habmer.no\x22'+',\x22hĆ”bmer.n'+'o\x22,\x22hapmir'+'.no\x22,\x22hĆ”pm'+'ir.no\x22,\x22ha'+'mmerfest.n'+'o\x22,\x22hammar'+'feasta.no\x22'+',\x22hĆ”mmĆ”rfe'+'asta.no\x22,\x22'+'haram.no\x22,'+'\x22hareid.no'+'\x22,\x22harstad'+'.no\x22,\x22hasv'+'ik.no\x22,\x22ak'+'noluokta.n'+'o\x22,\x22Ć”kŋolu'+'okta.no\x22,\x22'+'hattfjelld'+'al.no\x22,\x22aa'+'rborte.no\x22'+',\x22haugesun'+'d.no\x22,\x22hem'+'ne.no\x22,\x22he'+'mnes.no\x22,\x22'+'hemsedal.n'+'o\x22,\x22heroy.'+'more-og-ro'+'msdal.no\x22,'+'\x22herĆøy.mĆør'+'e-og-romsd'+'al.no\x22,\x22he'+'roy.nordla'+'nd.no\x22,\x22he'+'rĆøy.nordla'+'nd.no\x22,\x22hi'+'tra.no\x22,\x22h'+'jartdal.no'+'\x22,\x22hjelmel'+'and.no\x22,\x22h'+'obol.no\x22,\x22'+'hobĆøl.no\x22,'+'\x22hof.no\x22,\x22'+'hol.no\x22,\x22h'+'ole.no\x22,\x22h'+'olmestrand'+'.no\x22,\x22holt'+'alen.no\x22,\x22'+'holtĆ„len.n'+'o\x22,\x22hornin'+'dal.no\x22,\x22h'+'orten.no\x22,'+'\x22hurdal.no'+'\x22,\x22hurum.n'+'o\x22,\x22hvaler'+'.no\x22,\x22hyll'+'estad.no\x22,'+'\x22hagebosta'+'d.no\x22,\x22hƦg'+'ebostad.no'+'\x22,\x22hoyange'+'r.no\x22,\x22hĆøy'+'anger.no\x22,'+'\x22hoylandet'+'.no\x22,\x22hĆøyl'+'andet.no\x22,'+'\x22ha.no\x22,\x22h'+'Ć„.no\x22,\x22ibe'+'stad.no\x22,\x22'+'inderoy.no'+'\x22,\x22inderĆøy'+'.no\x22,\x22ivel'+'and.no\x22,\x22j'+'evnaker.no'+'\x22,\x22jondal.'+'no\x22,\x22jolst'+'er.no\x22,\x22jĆø'+'lster.no\x22,'+'\x22karasjok.'+'no\x22,\x22karas'+'johka.no\x22,'+'\x22kĆ”rÔŔjohk'+'a.no\x22,\x22kar'+'lsoy.no\x22,\x22'+'galsa.no\x22,'+'\x22gĆ”lsĆ”.no\x22'+',\x22karmoy.n')+('o\x22,\x22karmĆøy'+'.no\x22,\x22kaut'+'okeino.no\x22'+',\x22guovdage'+'aidnu.no\x22,'+'\x22klepp.no\x22'+',\x22klabu.no'+'\x22,\x22klƦbu.n'+'o\x22,\x22kongsb'+'erg.no\x22,\x22k'+'ongsvinger'+'.no\x22,\x22krag'+'ero.no\x22,\x22k'+'ragerĆø.no\x22'+',\x22kristian'+'sand.no\x22,\x22'+'kristiansu'+'nd.no\x22,\x22kr'+'odsherad.n'+'o\x22,\x22krĆødsh'+'erad.no\x22,\x22'+'kvalsund.n'+'o\x22,\x22rahkke'+'ravju.no\x22,'+'\x22rĆ”hkkerĆ”v'+'ju.no\x22,\x22kv'+'am.no\x22,\x22kv'+'inesdal.no'+'\x22,\x22kvinnhe'+'rad.no\x22,\x22k'+'viteseid.n'+'o\x22,\x22kvitso'+'y.no\x22,\x22kvi'+'tsĆøy.no\x22,\x22'+'kvafjord.n'+'o\x22,\x22kvƦfjo'+'rd.no\x22,\x22gi'+'ehtavuoatn'+'a.no\x22,\x22kva'+'nangen.no\x22'+',\x22kvƦnange'+'n.no\x22,\x22nav'+'uotna.no\x22,'+'\x22nĆ”vuotna.'+'no\x22,\x22kafjo'+'rd.no\x22,\x22kĆ„'+'fjord.no\x22,'+'\x22gaivuotna'+'.no\x22,\x22gĆ”iv'+'uotna.no\x22,'+'\x22larvik.no'+'\x22,\x22lavange'+'n.no\x22,\x22lav'+'agis.no\x22,\x22'+'loabat.no\x22'+',\x22loabĆ”t.n'+'o\x22,\x22lebesb'+'y.no\x22,\x22dav'+'vesiida.no'+'\x22,\x22leikang'+'er.no\x22,\x22le'+'irfjord.no'+'\x22,\x22leka.no'+'\x22,\x22leksvik'+'.no\x22,\x22lenv'+'ik.no\x22,\x22le'+'angaviika.'+'no\x22,\x22leaŋg'+'aviika.no\x22'+',\x22lesja.no'+'\x22,\x22levange'+'r.no\x22,\x22lie'+'r.no\x22,\x22lie'+'rne.no\x22,\x22l'+'illehammer'+'.no\x22,\x22lill'+'esand.no\x22,'+'\x22lindesnes'+'.no\x22,\x22lind'+'as.no\x22,\x22li'+'ndĆ„s.no\x22,\x22'+'lom.no\x22,\x22l'+'oppa.no\x22,\x22'+'lahppi.no\x22'+',\x22lĆ”hppi.n'+'o\x22,\x22lund.n'+'o\x22,\x22lunner'+'.no\x22,\x22luro'+'y.no\x22,\x22lur'+'Ćøy.no\x22,\x22lu'+'ster.no\x22,\x22'+'lyngdal.no'+'\x22,\x22lyngen.'+'no\x22,\x22ivgu.'+'no\x22,\x22larda'+'l.no\x22,\x22ler'+'dal.no\x22,\x22l'+'Ʀrdal.no\x22,'+'\x22lodingen.'+'no\x22,\x22lĆødin')+('gen.no\x22,\x22l'+'orenskog.n'+'o\x22,\x22lĆørens'+'kog.no\x22,\x22l'+'oten.no\x22,\x22'+'lĆøten.no\x22,'+'\x22malvik.no'+'\x22,\x22masoy.n'+'o\x22,\x22mĆ„sĆøy.'+'no\x22,\x22muosa'+'t.no\x22,\x22muo'+'sĆ”t.no\x22,\x22m'+'andal.no\x22,'+'\x22marker.no'+'\x22,\x22marnard'+'al.no\x22,\x22ma'+'sfjorden.n'+'o\x22,\x22meland'+'.no\x22,\x22meld'+'al.no\x22,\x22me'+'lhus.no\x22,\x22'+'meloy.no\x22,'+'\x22melĆøy.no\x22'+',\x22meraker.'+'no\x22,\x22merĆ„k'+'er.no\x22,\x22mo'+'areke.no\x22,'+'\x22moĆ„reke.n'+'o\x22,\x22midsun'+'d.no\x22,\x22mid'+'tre-gaulda'+'l.no\x22,\x22mod'+'alen.no\x22,\x22'+'modum.no\x22,'+'\x22molde.no\x22'+',\x22moskenes'+'.no\x22,\x22moss'+'.no\x22,\x22mosv'+'ik.no\x22,\x22ma'+'lselv.no\x22,'+'\x22mĆ„lselv.n'+'o\x22,\x22malatv'+'uopmi.no\x22,'+'\x22mĆ”latvuop'+'mi.no\x22,\x22na'+'mdalseid.n'+'o\x22,\x22aejrie'+'.no\x22,\x22nams'+'os.no\x22,\x22na'+'msskogan.n'+'o\x22,\x22naames'+'jevuemie.n'+'o\x22,\x22nƄƄmes'+'jevuemie.n'+'o\x22,\x22laakes'+'vuemie.no\x22'+',\x22nannesta'+'d.no\x22,\x22nar'+'vik.no\x22,\x22n'+'arviika.no'+'\x22,\x22naustda'+'l.no\x22,\x22ned'+'re-eiker.n'+'o\x22,\x22nes.ak'+'ershus.no\x22'+',\x22nes.busk'+'erud.no\x22,\x22'+'nesna.no\x22,'+'\x22nesodden.'+'no\x22,\x22nesse'+'by.no\x22,\x22un'+'jarga.no\x22,'+'\x22unjĆ”rga.n'+'o\x22,\x22nesset'+'.no\x22,\x22niss'+'edal.no\x22,\x22'+'nittedal.n'+'o\x22,\x22nord-a'+'urdal.no\x22,'+'\x22nord-fron'+'.no\x22,\x22nord'+'-odal.no\x22,'+'\x22norddal.n'+'o\x22,\x22nordka'+'pp.no\x22,\x22da'+'vvenjarga.'+'no\x22,\x22davve'+'njĆ”rga.no\x22'+',\x22nordre-l'+'and.no\x22,\x22n'+'ordreisa.n'+'o\x22,\x22raisa.'+'no\x22,\x22rĆ”isa'+'.no\x22,\x22nore'+'-og-uvdal.'+'no\x22,\x22notod'+'den.no\x22,\x22n'+'aroy.no\x22,\x22'+'nƦrĆøy.no\x22,'+'\x22notteroy.')+('no\x22,\x22nĆøtte'+'rĆøy.no\x22,\x22o'+'dda.no\x22,\x22o'+'ksnes.no\x22,'+'\x22Ćøksnes.no'+'\x22,\x22oppdal.'+'no\x22,\x22oppeg'+'ard.no\x22,\x22o'+'ppegĆ„rd.no'+'\x22,\x22orkdal.'+'no\x22,\x22orlan'+'d.no\x22,\x22Ćørl'+'and.no\x22,\x22o'+'rskog.no\x22,'+'\x22Ćørskog.no'+'\x22,\x22orsta.n'+'o\x22,\x22Ćørsta.'+'no\x22,\x22os.he'+'dmark.no\x22,'+'\x22os.hordal'+'and.no\x22,\x22o'+'sen.no\x22,\x22o'+'steroy.no\x22'+',\x22osterĆøy.'+'no\x22,\x22ostre'+'-toten.no\x22'+',\x22Ćøstre-to'+'ten.no\x22,\x22o'+'verhalla.n'+'o\x22,\x22ovre-e'+'iker.no\x22,\x22'+'Ćøvre-eiker'+'.no\x22,\x22oyer'+'.no\x22,\x22Ćøyer'+'.no\x22,\x22oyga'+'rden.no\x22,\x22'+'Ćøygarden.n'+'o\x22,\x22oystre'+'-slidre.no'+'\x22,\x22Ćøystre-'+'slidre.no\x22'+',\x22porsange'+'r.no\x22,\x22por'+'sangu.no\x22,'+'\x22porsÔŋgu.'+'no\x22,\x22porsg'+'runn.no\x22,\x22'+'radoy.no\x22,'+'\x22radĆøy.no\x22'+',\x22rakkesta'+'d.no\x22,\x22ran'+'a.no\x22,\x22ruo'+'vat.no\x22,\x22r'+'andaberg.n'+'o\x22,\x22rauma.'+'no\x22,\x22renda'+'len.no\x22,\x22r'+'ennebu.no\x22'+',\x22rennesoy'+'.no\x22,\x22renn'+'esĆøy.no\x22,\x22'+'rindal.no\x22'+',\x22ringebu.'+'no\x22,\x22ringe'+'rike.no\x22,\x22'+'ringsaker.'+'no\x22,\x22rissa'+'.no\x22,\x22riso'+'r.no\x22,\x22ris'+'Ćør.no\x22,\x22ro'+'an.no\x22,\x22ro'+'llag.no\x22,\x22'+'rygge.no\x22,'+'\x22ralingen.'+'no\x22,\x22rƦlin'+'gen.no\x22,\x22r'+'odoy.no\x22,\x22'+'rĆødĆøy.no\x22,'+'\x22romskog.n'+'o\x22,\x22rĆømsko'+'g.no\x22,\x22ror'+'os.no\x22,\x22rĆø'+'ros.no\x22,\x22r'+'ost.no\x22,\x22r'+'Ćøst.no\x22,\x22r'+'oyken.no\x22,'+'\x22rĆøyken.no'+'\x22,\x22royrvik'+'.no\x22,\x22rĆøyr'+'vik.no\x22,\x22r'+'ade.no\x22,\x22r'+'Ć„de.no\x22,\x22s'+'alangen.no'+'\x22,\x22siellak'+'.no\x22,\x22salt'+'dal.no\x22,\x22s'+'alat.no\x22,\x22'+'sĆ”lĆ”t.no\x22,'+'\x22sĆ”lat.no\x22'+',\x22samnange')+('r.no\x22,\x22san'+'de.more-og'+'-romsdal.n'+'o\x22,\x22sande.'+'mĆøre-og-ro'+'msdal.no\x22,'+'\x22sande.ves'+'tfold.no\x22,'+'\x22sandefjor'+'d.no\x22,\x22san'+'dnes.no\x22,\x22'+'sandoy.no\x22'+',\x22sandĆøy.n'+'o\x22,\x22sarpsb'+'org.no\x22,\x22s'+'auda.no\x22,\x22'+'sauherad.n'+'o\x22,\x22sel.no'+'\x22,\x22selbu.n'+'o\x22,\x22selje.'+'no\x22,\x22seljo'+'rd.no\x22,\x22si'+'gdal.no\x22,\x22'+'siljan.no\x22'+',\x22sirdal.n'+'o\x22,\x22skaun.'+'no\x22,\x22skeds'+'mo.no\x22,\x22sk'+'i.no\x22,\x22ski'+'en.no\x22,\x22sk'+'iptvet.no\x22'+',\x22skjervoy'+'.no\x22,\x22skje'+'rvĆøy.no\x22,\x22'+'skierva.no'+'\x22,\x22skiervĆ”'+'.no\x22,\x22skja'+'k.no\x22,\x22skj'+'Ć„k.no\x22,\x22sk'+'odje.no\x22,\x22'+'skanland.n'+'o\x22,\x22skĆ„nla'+'nd.no\x22,\x22sk'+'anit.no\x22,\x22'+'skĆ”nit.no\x22'+',\x22smola.no'+'\x22,\x22smĆøla.n'+'o\x22,\x22snillf'+'jord.no\x22,\x22'+'snasa.no\x22,'+'\x22snĆ„sa.no\x22'+',\x22snoasa.n'+'o\x22,\x22snaase'+'.no\x22,\x22snĆ„a'+'se.no\x22,\x22so'+'gndal.no\x22,'+'\x22sokndal.n'+'o\x22,\x22sola.n'+'o\x22,\x22solund'+'.no\x22,\x22song'+'dalen.no\x22,'+'\x22sortland.'+'no\x22,\x22spyde'+'berg.no\x22,\x22'+'stange.no\x22'+',\x22stavange'+'r.no\x22,\x22ste'+'igen.no\x22,\x22'+'steinkjer.'+'no\x22,\x22stjor'+'dal.no\x22,\x22s'+'tjĆørdal.no'+'\x22,\x22stokke.'+'no\x22,\x22stor-'+'elvdal.no\x22'+',\x22stord.no'+'\x22,\x22stordal'+'.no\x22,\x22stor'+'fjord.no\x22,'+'\x22omasvuotn'+'a.no\x22,\x22str'+'and.no\x22,\x22s'+'tranda.no\x22'+',\x22stryn.no'+'\x22,\x22sula.no'+'\x22,\x22suldal.'+'no\x22,\x22sund.'+'no\x22,\x22sunnd'+'al.no\x22,\x22su'+'rnadal.no\x22'+',\x22sveio.no'+'\x22,\x22svelvik'+'.no\x22,\x22sykk'+'ylven.no\x22,'+'\x22sogne.no\x22'+',\x22sĆøgne.no'+'\x22,\x22somna.n'+'o\x22,\x22sĆømna.'+'no\x22,\x22sondr'+'e-land.no\x22')+(',\x22sĆøndre-l'+'and.no\x22,\x22s'+'or-aurdal.'+'no\x22,\x22sĆør-a'+'urdal.no\x22,'+'\x22sor-fron.'+'no\x22,\x22sĆør-f'+'ron.no\x22,\x22s'+'or-odal.no'+'\x22,\x22sĆør-oda'+'l.no\x22,\x22sor'+'-varanger.'+'no\x22,\x22sĆør-v'+'aranger.no'+'\x22,\x22matta-v'+'arjjat.no\x22'+',\x22mĆ”tta-vĆ”'+'rjjat.no\x22,'+'\x22sorfold.n'+'o\x22,\x22sĆørfol'+'d.no\x22,\x22sor'+'reisa.no\x22,'+'\x22sĆørreisa.'+'no\x22,\x22sorum'+'.no\x22,\x22sĆøru'+'m.no\x22,\x22tan'+'a.no\x22,\x22dea'+'tnu.no\x22,\x22t'+'ime.no\x22,\x22t'+'ingvoll.no'+'\x22,\x22tinn.no'+'\x22,\x22tjeldsu'+'nd.no\x22,\x22di'+'elddanuorr'+'i.no\x22,\x22tjo'+'me.no\x22,\x22tj'+'Ćøme.no\x22,\x22t'+'okke.no\x22,\x22'+'tolga.no\x22,'+'\x22torsken.n'+'o\x22,\x22tranoy'+'.no\x22,\x22tran'+'Ćøy.no\x22,\x22tr'+'omso.no\x22,\x22'+'tromsĆø.no\x22'+',\x22tromsa.n'+'o\x22,\x22romsa.'+'no\x22,\x22trond'+'heim.no\x22,\x22'+'troandin.n'+'o\x22,\x22trysil'+'.no\x22,\x22tran'+'a.no\x22,\x22trƦ'+'na.no\x22,\x22tr'+'ogstad.no\x22'+',\x22trĆøgstad'+'.no\x22,\x22tved'+'estrand.no'+'\x22,\x22tydal.n'+'o\x22,\x22tynset'+'.no\x22,\x22tysf'+'jord.no\x22,\x22'+'divtasvuod'+'na.no\x22,\x22di'+'vttasvuotn'+'a.no\x22,\x22tys'+'nes.no\x22,\x22t'+'ysvar.no\x22,'+'\x22tysvƦr.no'+'\x22,\x22tonsber'+'g.no\x22,\x22tĆøn'+'sberg.no\x22,'+'\x22ullensake'+'r.no\x22,\x22ull'+'ensvang.no'+'\x22,\x22ulvik.n'+'o\x22,\x22utsira'+'.no\x22,\x22vads'+'o.no\x22,\x22vad'+'sĆø.no\x22,\x22ca'+'hcesuolo.n'+'o\x22,\x22ÄĆ”hces'+'uolo.no\x22,\x22'+'vaksdal.no'+'\x22,\x22valle.n'+'o\x22,\x22vang.n'+'o\x22,\x22vanylv'+'en.no\x22,\x22va'+'rdo.no\x22,\x22v'+'ardĆø.no\x22,\x22'+'varggat.no'+'\x22,\x22vĆ”rggĆ”t'+'.no\x22,\x22vefs'+'n.no\x22,\x22vaa'+'pste.no\x22,\x22'+'vega.no\x22,\x22'+'vegarshei.'+'no\x22,\x22vegĆ„r'+'shei.no\x22,\x22'+'vennesla.n')+('o\x22,\x22verdal'+'.no\x22,\x22verr'+'an.no\x22,\x22ve'+'stby.no\x22,\x22'+'vestnes.no'+'\x22,\x22vestre-'+'slidre.no\x22'+',\x22vestre-t'+'oten.no\x22,\x22'+'vestvagoy.'+'no\x22,\x22vestv'+'Ć„gĆøy.no\x22,\x22'+'vevelstad.'+'no\x22,\x22vik.n'+'o\x22,\x22vikna.'+'no\x22,\x22vinda'+'fjord.no\x22,'+'\x22volda.no\x22'+',\x22voss.no\x22'+',\x22varoy.no'+'\x22,\x22vƦrĆøy.n'+'o\x22,\x22vagan.'+'no\x22,\x22vĆ„gan'+'.no\x22,\x22voag'+'at.no\x22,\x22va'+'gsoy.no\x22,\x22'+'vĆ„gsĆøy.no\x22'+',\x22vaga.no\x22'+',\x22vĆ„gĆ„.no\x22'+',\x22valer.os'+'tfold.no\x22,'+'\x22vĆ„ler.Ćøst'+'fold.no\x22,\x22'+'valer.hedm'+'ark.no\x22,\x22v'+'Ć„ler.hedma'+'rk.no\x22,\x22*.'+'np\x22,\x22nr\x22,\x22'+'biz.nr\x22,\x22i'+'nfo.nr\x22,\x22g'+'ov.nr\x22,\x22ed'+'u.nr\x22,\x22org'+'.nr\x22,\x22net.'+'nr\x22,\x22com.n'+'r\x22,\x22nu\x22,\x22n'+'z\x22,\x22ac.nz\x22'+',\x22co.nz\x22,\x22'+'cri.nz\x22,\x22g'+'eek.nz\x22,\x22g'+'en.nz\x22,\x22go'+'vt.nz\x22,\x22he'+'alth.nz\x22,\x22'+'iwi.nz\x22,\x22k'+'iwi.nz\x22,\x22m'+'aori.nz\x22,\x22'+'mil.nz\x22,\x22m'+'āori.nz\x22,\x22'+'net.nz\x22,\x22o'+'rg.nz\x22,\x22pa'+'rliament.n'+'z\x22,\x22school'+'.nz\x22,\x22om\x22,'+'\x22co.om\x22,\x22c'+'om.om\x22,\x22ed'+'u.om\x22,\x22gov'+'.om\x22,\x22med.'+'om\x22,\x22museu'+'m.om\x22,\x22net'+'.om\x22,\x22org.'+'om\x22,\x22pro.o'+'m\x22,\x22onion\x22'+',\x22org\x22,\x22pa'+'\x22,\x22ac.pa\x22,'+'\x22gob.pa\x22,\x22'+'com.pa\x22,\x22o'+'rg.pa\x22,\x22sl'+'d.pa\x22,\x22edu'+'.pa\x22,\x22net.'+'pa\x22,\x22ing.p'+'a\x22,\x22abo.pa'+'\x22,\x22med.pa\x22'+',\x22nom.pa\x22,'+'\x22pe\x22,\x22edu.'+'pe\x22,\x22gob.p'+'e\x22,\x22nom.pe'+'\x22,\x22mil.pe\x22'+',\x22org.pe\x22,'+'\x22com.pe\x22,\x22'+'net.pe\x22,\x22p'+'f\x22,\x22com.pf'+'\x22,\x22org.pf\x22'+',\x22edu.pf\x22,'+'\x22*.pg\x22,\x22ph'+'\x22,\x22com.ph\x22'+',\x22net.ph\x22,'+'\x22org.ph\x22,\x22'+'gov.ph\x22,\x22e'+'du.ph\x22,\x22ng'+'o.ph\x22,\x22mil'+'.ph\x22,\x22i.ph')+('\x22,\x22pk\x22,\x22co'+'m.pk\x22,\x22net'+'.pk\x22,\x22edu.'+'pk\x22,\x22org.p'+'k\x22,\x22fam.pk'+'\x22,\x22biz.pk\x22'+',\x22web.pk\x22,'+'\x22gov.pk\x22,\x22'+'gob.pk\x22,\x22g'+'ok.pk\x22,\x22go'+'n.pk\x22,\x22gop'+'.pk\x22,\x22gos.'+'pk\x22,\x22info.'+'pk\x22,\x22pl\x22,\x22'+'com.pl\x22,\x22n'+'et.pl\x22,\x22or'+'g.pl\x22,\x22aid'+'.pl\x22,\x22agro'+'.pl\x22,\x22atm.'+'pl\x22,\x22auto.'+'pl\x22,\x22biz.p'+'l\x22,\x22edu.pl'+'\x22,\x22gmina.p'+'l\x22,\x22gsm.pl'+'\x22,\x22info.pl'+'\x22,\x22mail.pl'+'\x22,\x22miasta.'+'pl\x22,\x22media'+'.pl\x22,\x22mil.'+'pl\x22,\x22nieru'+'chomosci.p'+'l\x22,\x22nom.pl'+'\x22,\x22pc.pl\x22,'+'\x22powiat.pl'+'\x22,\x22priv.pl'+'\x22,\x22realest'+'ate.pl\x22,\x22r'+'el.pl\x22,\x22se'+'x.pl\x22,\x22sho'+'p.pl\x22,\x22skl'+'ep.pl\x22,\x22so'+'s.pl\x22,\x22szk'+'ola.pl\x22,\x22t'+'argi.pl\x22,\x22'+'tm.pl\x22,\x22to'+'urism.pl\x22,'+'\x22travel.pl'+'\x22,\x22turysty'+'ka.pl\x22,\x22go'+'v.pl\x22,\x22ap.'+'gov.pl\x22,\x22i'+'c.gov.pl\x22,'+'\x22is.gov.pl'+'\x22,\x22us.gov.'+'pl\x22,\x22kmpsp'+'.gov.pl\x22,\x22'+'kppsp.gov.'+'pl\x22,\x22kwpsp'+'.gov.pl\x22,\x22'+'psp.gov.pl'+'\x22,\x22wskr.go'+'v.pl\x22,\x22kwp'+'.gov.pl\x22,\x22'+'mw.gov.pl\x22'+',\x22ug.gov.p'+'l\x22,\x22um.gov'+'.pl\x22,\x22umig'+'.gov.pl\x22,\x22'+'ugim.gov.p'+'l\x22,\x22upow.g'+'ov.pl\x22,\x22uw'+'.gov.pl\x22,\x22'+'starostwo.'+'gov.pl\x22,\x22p'+'a.gov.pl\x22,'+'\x22po.gov.pl'+'\x22,\x22psse.go'+'v.pl\x22,\x22pup'+'.gov.pl\x22,\x22'+'rzgw.gov.p'+'l\x22,\x22sa.gov'+'.pl\x22,\x22so.g'+'ov.pl\x22,\x22sr'+'.gov.pl\x22,\x22'+'wsa.gov.pl'+'\x22,\x22sko.gov'+'.pl\x22,\x22uzs.'+'gov.pl\x22,\x22w'+'iih.gov.pl'+'\x22,\x22winb.go'+'v.pl\x22,\x22pin'+'b.gov.pl\x22,'+'\x22wios.gov.'+'pl\x22,\x22witd.'+'gov.pl\x22,\x22w'+'zmiuw.gov.'+'pl\x22,\x22piw.g'+'ov.pl\x22,\x22wi'+'w.gov.pl\x22,'+'\x22griw.gov.')+('pl\x22,\x22wif.g'+'ov.pl\x22,\x22ou'+'m.gov.pl\x22,'+'\x22sdn.gov.p'+'l\x22,\x22zp.gov'+'.pl\x22,\x22uppo'+'.gov.pl\x22,\x22'+'mup.gov.pl'+'\x22,\x22wuoz.go'+'v.pl\x22,\x22kon'+'sulat.gov.'+'pl\x22,\x22oirm.'+'gov.pl\x22,\x22a'+'ugustow.pl'+'\x22,\x22babia-g'+'ora.pl\x22,\x22b'+'edzin.pl\x22,'+'\x22beskidy.p'+'l\x22,\x22bialow'+'ieza.pl\x22,\x22'+'bialystok.'+'pl\x22,\x22biela'+'wa.pl\x22,\x22bi'+'eszczady.p'+'l\x22,\x22bolesl'+'awiec.pl\x22,'+'\x22bydgoszcz'+'.pl\x22,\x22byto'+'m.pl\x22,\x22cie'+'szyn.pl\x22,\x22'+'czeladz.pl'+'\x22,\x22czest.p'+'l\x22,\x22dlugol'+'eka.pl\x22,\x22e'+'lblag.pl\x22,'+'\x22elk.pl\x22,\x22'+'glogow.pl\x22'+',\x22gniezno.'+'pl\x22,\x22gorli'+'ce.pl\x22,\x22gr'+'ajewo.pl\x22,'+'\x22ilawa.pl\x22'+',\x22jaworzno'+'.pl\x22,\x22jele'+'nia-gora.p'+'l\x22,\x22jgora.'+'pl\x22,\x22kalis'+'z.pl\x22,\x22kaz'+'imierz-dol'+'ny.pl\x22,\x22ka'+'rpacz.pl\x22,'+'\x22kartuzy.p'+'l\x22,\x22kaszub'+'y.pl\x22,\x22kat'+'owice.pl\x22,'+'\x22kepno.pl\x22'+',\x22ketrzyn.'+'pl\x22,\x22klodz'+'ko.pl\x22,\x22ko'+'bierzyce.p'+'l\x22,\x22kolobr'+'zeg.pl\x22,\x22k'+'onin.pl\x22,\x22'+'konskowola'+'.pl\x22,\x22kutn'+'o.pl\x22,\x22lap'+'y.pl\x22,\x22leb'+'ork.pl\x22,\x22l'+'egnica.pl\x22'+',\x22lezajsk.'+'pl\x22,\x22liman'+'owa.pl\x22,\x22l'+'omza.pl\x22,\x22'+'lowicz.pl\x22'+',\x22lubin.pl'+'\x22,\x22lukow.p'+'l\x22,\x22malbor'+'k.pl\x22,\x22mal'+'opolska.pl'+'\x22,\x22mazowsz'+'e.pl\x22,\x22maz'+'ury.pl\x22,\x22m'+'ielec.pl\x22,'+'\x22mielno.pl'+'\x22,\x22mragowo'+'.pl\x22,\x22nakl'+'o.pl\x22,\x22now'+'aruda.pl\x22,'+'\x22nysa.pl\x22,'+'\x22olawa.pl\x22'+',\x22olecko.p'+'l\x22,\x22olkusz'+'.pl\x22,\x22olsz'+'tyn.pl\x22,\x22o'+'poczno.pl\x22'+',\x22opole.pl'+'\x22,\x22ostroda'+'.pl\x22,\x22ostr'+'oleka.pl\x22,'+'\x22ostrowiec')+('.pl\x22,\x22ostr'+'owwlkp.pl\x22'+',\x22pila.pl\x22'+',\x22pisz.pl\x22'+',\x22podhale.'+'pl\x22,\x22podla'+'sie.pl\x22,\x22p'+'olkowice.p'+'l\x22,\x22pomorz'+'e.pl\x22,\x22pom'+'orskie.pl\x22'+',\x22prochowi'+'ce.pl\x22,\x22pr'+'uszkow.pl\x22'+',\x22przewors'+'k.pl\x22,\x22pul'+'awy.pl\x22,\x22r'+'adom.pl\x22,\x22'+'rawa-maz.p'+'l\x22,\x22rybnik'+'.pl\x22,\x22rzes'+'zow.pl\x22,\x22s'+'anok.pl\x22,\x22'+'sejny.pl\x22,'+'\x22slask.pl\x22'+',\x22slupsk.p'+'l\x22,\x22sosnow'+'iec.pl\x22,\x22s'+'talowa-wol'+'a.pl\x22,\x22sko'+'czow.pl\x22,\x22'+'starachowi'+'ce.pl\x22,\x22st'+'argard.pl\x22'+',\x22suwalki.'+'pl\x22,\x22swidn'+'ica.pl\x22,\x22s'+'wiebodzin.'+'pl\x22,\x22swino'+'ujscie.pl\x22'+',\x22szczecin'+'.pl\x22,\x22szcz'+'ytno.pl\x22,\x22'+'tarnobrzeg'+'.pl\x22,\x22tgor'+'y.pl\x22,\x22tur'+'ek.pl\x22,\x22ty'+'chy.pl\x22,\x22u'+'stka.pl\x22,\x22'+'walbrzych.'+'pl\x22,\x22warmi'+'a.pl\x22,\x22war'+'szawa.pl\x22,'+'\x22waw.pl\x22,\x22'+'wegrow.pl\x22'+',\x22wielun.p'+'l\x22,\x22wlocl.'+'pl\x22,\x22wlocl'+'awek.pl\x22,\x22'+'wodzislaw.'+'pl\x22,\x22wolom'+'in.pl\x22,\x22wr'+'oclaw.pl\x22,'+'\x22zachpomor'+'.pl\x22,\x22zaga'+'n.pl\x22,\x22zar'+'ow.pl\x22,\x22zg'+'ora.pl\x22,\x22z'+'gorzelec.p'+'l\x22,\x22pm\x22,\x22p'+'n\x22,\x22gov.pn'+'\x22,\x22co.pn\x22,'+'\x22org.pn\x22,\x22'+'edu.pn\x22,\x22n'+'et.pn\x22,\x22po'+'st\x22,\x22pr\x22,\x22'+'com.pr\x22,\x22n'+'et.pr\x22,\x22or'+'g.pr\x22,\x22gov'+'.pr\x22,\x22edu.'+'pr\x22,\x22isla.'+'pr\x22,\x22pro.p'+'r\x22,\x22biz.pr'+'\x22,\x22info.pr'+'\x22,\x22name.pr'+'\x22,\x22est.pr\x22'+',\x22prof.pr\x22'+',\x22ac.pr\x22,\x22'+'pro\x22,\x22aaa.'+'pro\x22,\x22aca.'+'pro\x22,\x22acct'+'.pro\x22,\x22avo'+'cat.pro\x22,\x22'+'bar.pro\x22,\x22'+'cpa.pro\x22,\x22'+'eng.pro\x22,\x22'+'jur.pro\x22,\x22'+'law.pro\x22,\x22'+'med.pro\x22,\x22'+'recht.pro\x22')+(',\x22ps\x22,\x22edu'+'.ps\x22,\x22gov.'+'ps\x22,\x22sec.p'+'s\x22,\x22plo.ps'+'\x22,\x22com.ps\x22'+',\x22org.ps\x22,'+'\x22net.ps\x22,\x22'+'pt\x22,\x22net.p'+'t\x22,\x22gov.pt'+'\x22,\x22org.pt\x22'+',\x22edu.pt\x22,'+'\x22int.pt\x22,\x22'+'publ.pt\x22,\x22'+'com.pt\x22,\x22n'+'ome.pt\x22,\x22p'+'w\x22,\x22co.pw\x22'+',\x22ne.pw\x22,\x22'+'or.pw\x22,\x22ed'+'.pw\x22,\x22go.p'+'w\x22,\x22belau.'+'pw\x22,\x22py\x22,\x22'+'com.py\x22,\x22c'+'oop.py\x22,\x22e'+'du.py\x22,\x22go'+'v.py\x22,\x22mil'+'.py\x22,\x22net.'+'py\x22,\x22org.p'+'y\x22,\x22qa\x22,\x22c'+'om.qa\x22,\x22ed'+'u.qa\x22,\x22gov'+'.qa\x22,\x22mil.'+'qa\x22,\x22name.'+'qa\x22,\x22net.q'+'a\x22,\x22org.qa'+'\x22,\x22sch.qa\x22'+',\x22re\x22,\x22ass'+'o.re\x22,\x22com'+'.re\x22,\x22nom.'+'re\x22,\x22ro\x22,\x22'+'arts.ro\x22,\x22'+'com.ro\x22,\x22f'+'irm.ro\x22,\x22i'+'nfo.ro\x22,\x22n'+'om.ro\x22,\x22nt'+'.ro\x22,\x22org.'+'ro\x22,\x22rec.r'+'o\x22,\x22store.'+'ro\x22,\x22tm.ro'+'\x22,\x22www.ro\x22'+',\x22rs\x22,\x22ac.'+'rs\x22,\x22co.rs'+'\x22,\x22edu.rs\x22'+',\x22gov.rs\x22,'+'\x22in.rs\x22,\x22o'+'rg.rs\x22,\x22ru'+'\x22,\x22rw\x22,\x22ac'+'.rw\x22,\x22co.r'+'w\x22,\x22coop.r'+'w\x22,\x22gov.rw'+'\x22,\x22mil.rw\x22'+',\x22net.rw\x22,'+'\x22org.rw\x22,\x22'+'sa\x22,\x22com.s'+'a\x22,\x22net.sa'+'\x22,\x22org.sa\x22'+',\x22gov.sa\x22,'+'\x22med.sa\x22,\x22'+'pub.sa\x22,\x22e'+'du.sa\x22,\x22sc'+'h.sa\x22,\x22sb\x22'+',\x22com.sb\x22,'+'\x22edu.sb\x22,\x22'+'gov.sb\x22,\x22n'+'et.sb\x22,\x22or'+'g.sb\x22,\x22sc\x22'+',\x22com.sc\x22,'+'\x22gov.sc\x22,\x22'+'net.sc\x22,\x22o'+'rg.sc\x22,\x22ed'+'u.sc\x22,\x22sd\x22'+',\x22com.sd\x22,'+'\x22net.sd\x22,\x22'+'org.sd\x22,\x22e'+'du.sd\x22,\x22me'+'d.sd\x22,\x22tv.'+'sd\x22,\x22gov.s'+'d\x22,\x22info.s'+'d\x22,\x22se\x22,\x22a'+'.se\x22,\x22ac.s'+'e\x22,\x22b.se\x22,'+'\x22bd.se\x22,\x22b'+'rand.se\x22,\x22'+'c.se\x22,\x22d.s'+'e\x22,\x22e.se\x22,'+'\x22f.se\x22,\x22fh'+'.se\x22,\x22fhsk'+'.se\x22,\x22fhv.'+'se\x22,\x22g.se\x22'+',\x22h.se\x22,\x22i'+'.se\x22,\x22k.se')+('\x22,\x22komforb'+'.se\x22,\x22komm'+'unalforbun'+'d.se\x22,\x22kom'+'vux.se\x22,\x22l'+'.se\x22,\x22lanb'+'ib.se\x22,\x22m.'+'se\x22,\x22n.se\x22'+',\x22naturbru'+'ksgymn.se\x22'+',\x22o.se\x22,\x22o'+'rg.se\x22,\x22p.'+'se\x22,\x22parti'+'.se\x22,\x22pp.s'+'e\x22,\x22press.'+'se\x22,\x22r.se\x22'+',\x22s.se\x22,\x22t'+'.se\x22,\x22tm.s'+'e\x22,\x22u.se\x22,'+'\x22w.se\x22,\x22x.'+'se\x22,\x22y.se\x22'+',\x22z.se\x22,\x22s'+'g\x22,\x22com.sg'+'\x22,\x22net.sg\x22'+',\x22org.sg\x22,'+'\x22gov.sg\x22,\x22'+'edu.sg\x22,\x22p'+'er.sg\x22,\x22sh'+'\x22,\x22com.sh\x22'+',\x22net.sh\x22,'+'\x22gov.sh\x22,\x22'+'org.sh\x22,\x22m'+'il.sh\x22,\x22si'+'\x22,\x22sj\x22,\x22sk'+'\x22,\x22sl\x22,\x22co'+'m.sl\x22,\x22net'+'.sl\x22,\x22edu.'+'sl\x22,\x22gov.s'+'l\x22,\x22org.sl'+'\x22,\x22sm\x22,\x22sn'+'\x22,\x22art.sn\x22'+',\x22com.sn\x22,'+'\x22edu.sn\x22,\x22'+'gouv.sn\x22,\x22'+'org.sn\x22,\x22p'+'erso.sn\x22,\x22'+'univ.sn\x22,\x22'+'so\x22,\x22com.s'+'o\x22,\x22edu.so'+'\x22,\x22gov.so\x22'+',\x22me.so\x22,\x22'+'net.so\x22,\x22o'+'rg.so\x22,\x22sr'+'\x22,\x22ss\x22,\x22bi'+'z.ss\x22,\x22com'+'.ss\x22,\x22edu.'+'ss\x22,\x22gov.s'+'s\x22,\x22net.ss'+'\x22,\x22org.ss\x22'+',\x22st\x22,\x22co.'+'st\x22,\x22com.s'+'t\x22,\x22consul'+'ado.st\x22,\x22e'+'du.st\x22,\x22em'+'baixada.st'+'\x22,\x22gov.st\x22'+',\x22mil.st\x22,'+'\x22net.st\x22,\x22'+'org.st\x22,\x22p'+'rincipe.st'+'\x22,\x22saotome'+'.st\x22,\x22stor'+'e.st\x22,\x22su\x22'+',\x22sv\x22,\x22com'+'.sv\x22,\x22edu.'+'sv\x22,\x22gob.s'+'v\x22,\x22org.sv'+'\x22,\x22red.sv\x22'+',\x22sx\x22,\x22gov'+'.sx\x22,\x22sy\x22,'+'\x22edu.sy\x22,\x22'+'gov.sy\x22,\x22n'+'et.sy\x22,\x22mi'+'l.sy\x22,\x22com'+'.sy\x22,\x22org.'+'sy\x22,\x22sz\x22,\x22'+'co.sz\x22,\x22ac'+'.sz\x22,\x22org.'+'sz\x22,\x22tc\x22,\x22'+'td\x22,\x22tel\x22,'+'\x22tf\x22,\x22tg\x22,'+'\x22th\x22,\x22ac.t'+'h\x22,\x22co.th\x22'+',\x22go.th\x22,\x22'+'in.th\x22,\x22mi'+'.th\x22,\x22net.'+'th\x22,\x22or.th'+'\x22,\x22tj\x22,\x22ac'+'.tj\x22,\x22biz.'+'tj\x22,\x22co.tj')+('\x22,\x22com.tj\x22'+',\x22edu.tj\x22,'+'\x22go.tj\x22,\x22g'+'ov.tj\x22,\x22in'+'t.tj\x22,\x22mil'+'.tj\x22,\x22name'+'.tj\x22,\x22net.'+'tj\x22,\x22nic.t'+'j\x22,\x22org.tj'+'\x22,\x22test.tj'+'\x22,\x22web.tj\x22'+',\x22tk\x22,\x22tl\x22'+',\x22gov.tl\x22,'+'\x22tm\x22,\x22com.'+'tm\x22,\x22co.tm'+'\x22,\x22org.tm\x22'+',\x22net.tm\x22,'+'\x22nom.tm\x22,\x22'+'gov.tm\x22,\x22m'+'il.tm\x22,\x22ed'+'u.tm\x22,\x22tn\x22'+',\x22com.tn\x22,'+'\x22ens.tn\x22,\x22'+'fin.tn\x22,\x22g'+'ov.tn\x22,\x22in'+'d.tn\x22,\x22int'+'l.tn\x22,\x22nat'+'.tn\x22,\x22net.'+'tn\x22,\x22org.t'+'n\x22,\x22info.t'+'n\x22,\x22perso.'+'tn\x22,\x22touri'+'sm.tn\x22,\x22ed'+'unet.tn\x22,\x22'+'rnrt.tn\x22,\x22'+'rns.tn\x22,\x22r'+'nu.tn\x22,\x22mi'+'ncom.tn\x22,\x22'+'agrinet.tn'+'\x22,\x22defense'+'.tn\x22,\x22ture'+'n.tn\x22,\x22to\x22'+',\x22com.to\x22,'+'\x22gov.to\x22,\x22'+'net.to\x22,\x22o'+'rg.to\x22,\x22ed'+'u.to\x22,\x22mil'+'.to\x22,\x22tr\x22,'+'\x22av.tr\x22,\x22b'+'bs.tr\x22,\x22be'+'l.tr\x22,\x22biz'+'.tr\x22,\x22com.'+'tr\x22,\x22dr.tr'+'\x22,\x22edu.tr\x22'+',\x22gen.tr\x22,'+'\x22gov.tr\x22,\x22'+'info.tr\x22,\x22'+'mil.tr\x22,\x22k'+'12.tr\x22,\x22ke'+'p.tr\x22,\x22nam'+'e.tr\x22,\x22net'+'.tr\x22,\x22org.'+'tr\x22,\x22pol.t'+'r\x22,\x22tel.tr'+'\x22,\x22tsk.tr\x22'+',\x22tv.tr\x22,\x22'+'web.tr\x22,\x22n'+'c.tr\x22,\x22gov'+'.nc.tr\x22,\x22t'+'t\x22,\x22co.tt\x22'+',\x22com.tt\x22,'+'\x22org.tt\x22,\x22'+'net.tt\x22,\x22b'+'iz.tt\x22,\x22in'+'fo.tt\x22,\x22pr'+'o.tt\x22,\x22int'+'.tt\x22,\x22coop'+'.tt\x22,\x22jobs'+'.tt\x22,\x22mobi'+'.tt\x22,\x22trav'+'el.tt\x22,\x22mu'+'seum.tt\x22,\x22'+'aero.tt\x22,\x22'+'name.tt\x22,\x22'+'gov.tt\x22,\x22e'+'du.tt\x22,\x22tv'+'\x22,\x22tw\x22,\x22ed'+'u.tw\x22,\x22gov'+'.tw\x22,\x22mil.'+'tw\x22,\x22com.t'+'w\x22,\x22net.tw'+'\x22,\x22org.tw\x22'+',\x22idv.tw\x22,'+'\x22game.tw\x22,'+'\x22ebiz.tw\x22,'+'\x22club.tw\x22,'+'\x22網路.tw\x22,\x22組'+'ē¹”.tw\x22,\x22商愭.'+'tw\x22,\x22tz\x22,\x22'+'ac.tz\x22,\x22co')+('.tz\x22,\x22go.t'+'z\x22,\x22hotel.'+'tz\x22,\x22info.'+'tz\x22,\x22me.tz'+'\x22,\x22mil.tz\x22'+',\x22mobi.tz\x22'+',\x22ne.tz\x22,\x22'+'or.tz\x22,\x22sc'+'.tz\x22,\x22tv.t'+'z\x22,\x22ua\x22,\x22c'+'om.ua\x22,\x22ed'+'u.ua\x22,\x22gov'+'.ua\x22,\x22in.u'+'a\x22,\x22net.ua'+'\x22,\x22org.ua\x22'+',\x22cherkass'+'y.ua\x22,\x22che'+'rkasy.ua\x22,'+'\x22chernigov'+'.ua\x22,\x22cher'+'nihiv.ua\x22,'+'\x22chernivts'+'i.ua\x22,\x22che'+'rnovtsy.ua'+'\x22,\x22ck.ua\x22,'+'\x22cn.ua\x22,\x22c'+'r.ua\x22,\x22cri'+'mea.ua\x22,\x22c'+'v.ua\x22,\x22dn.'+'ua\x22,\x22dnepr'+'opetrovsk.'+'ua\x22,\x22dnipr'+'opetrovsk.'+'ua\x22,\x22domin'+'ic.ua\x22,\x22do'+'netsk.ua\x22,'+'\x22dp.ua\x22,\x22i'+'f.ua\x22,\x22iva'+'no-frankiv'+'sk.ua\x22,\x22kh'+'.ua\x22,\x22khar'+'kiv.ua\x22,\x22k'+'harkov.ua\x22'+',\x22kherson.'+'ua\x22,\x22khmel'+'nitskiy.ua'+'\x22,\x22khmelny'+'tskyi.ua\x22,'+'\x22kiev.ua\x22,'+'\x22kirovogra'+'d.ua\x22,\x22km.'+'ua\x22,\x22kr.ua'+'\x22,\x22krym.ua'+'\x22,\x22ks.ua\x22,'+'\x22kv.ua\x22,\x22k'+'yiv.ua\x22,\x22l'+'g.ua\x22,\x22lt.'+'ua\x22,\x22lugan'+'sk.ua\x22,\x22lu'+'tsk.ua\x22,\x22l'+'v.ua\x22,\x22lvi'+'v.ua\x22,\x22mk.'+'ua\x22,\x22mykol'+'aiv.ua\x22,\x22n'+'ikolaev.ua'+'\x22,\x22od.ua\x22,'+'\x22odesa.ua\x22'+',\x22odessa.u'+'a\x22,\x22pl.ua\x22'+',\x22poltava.'+'ua\x22,\x22rivne'+'.ua\x22,\x22rovn'+'o.ua\x22,\x22rv.'+'ua\x22,\x22sb.ua'+'\x22,\x22sebasto'+'pol.ua\x22,\x22s'+'evastopol.'+'ua\x22,\x22sm.ua'+'\x22,\x22sumy.ua'+'\x22,\x22te.ua\x22,'+'\x22ternopil.'+'ua\x22,\x22uz.ua'+'\x22,\x22uzhgoro'+'d.ua\x22,\x22vin'+'nica.ua\x22,\x22'+'vinnytsia.'+'ua\x22,\x22vn.ua'+'\x22,\x22volyn.u'+'a\x22,\x22yalta.'+'ua\x22,\x22zapor'+'izhzhe.ua\x22'+',\x22zaporizh'+'zhia.ua\x22,\x22'+'zhitomir.u'+'a\x22,\x22zhytom'+'yr.ua\x22,\x22zp'+'.ua\x22,\x22zt.u'+'a\x22,\x22ug\x22,\x22c'+'o.ug\x22,\x22or.'+'ug\x22,\x22ac.ug')+('\x22,\x22sc.ug\x22,'+'\x22go.ug\x22,\x22n'+'e.ug\x22,\x22com'+'.ug\x22,\x22org.'+'ug\x22,\x22uk\x22,\x22'+'ac.uk\x22,\x22co'+'.uk\x22,\x22gov.'+'uk\x22,\x22ltd.u'+'k\x22,\x22me.uk\x22'+',\x22net.uk\x22,'+'\x22nhs.uk\x22,\x22'+'org.uk\x22,\x22p'+'lc.uk\x22,\x22po'+'lice.uk\x22,\x22'+'*.sch.uk\x22,'+'\x22us\x22,\x22dni.'+'us\x22,\x22fed.u'+'s\x22,\x22isa.us'+'\x22,\x22kids.us'+'\x22,\x22nsn.us\x22'+',\x22ak.us\x22,\x22'+'al.us\x22,\x22ar'+'.us\x22,\x22as.u'+'s\x22,\x22az.us\x22'+',\x22ca.us\x22,\x22'+'co.us\x22,\x22ct'+'.us\x22,\x22dc.u'+'s\x22,\x22de.us\x22'+',\x22fl.us\x22,\x22'+'ga.us\x22,\x22gu'+'.us\x22,\x22hi.u'+'s\x22,\x22ia.us\x22'+',\x22id.us\x22,\x22'+'il.us\x22,\x22in'+'.us\x22,\x22ks.u'+'s\x22,\x22ky.us\x22'+',\x22la.us\x22,\x22'+'ma.us\x22,\x22md'+'.us\x22,\x22me.u'+'s\x22,\x22mi.us\x22'+',\x22mn.us\x22,\x22'+'mo.us\x22,\x22ms'+'.us\x22,\x22mt.u'+'s\x22,\x22nc.us\x22'+',\x22nd.us\x22,\x22'+'ne.us\x22,\x22nh'+'.us\x22,\x22nj.u'+'s\x22,\x22nm.us\x22'+',\x22nv.us\x22,\x22'+'ny.us\x22,\x22oh'+'.us\x22,\x22ok.u'+'s\x22,\x22or.us\x22'+',\x22pa.us\x22,\x22'+'pr.us\x22,\x22ri'+'.us\x22,\x22sc.u'+'s\x22,\x22sd.us\x22'+',\x22tn.us\x22,\x22'+'tx.us\x22,\x22ut'+'.us\x22,\x22vi.u'+'s\x22,\x22vt.us\x22'+',\x22va.us\x22,\x22'+'wa.us\x22,\x22wi'+'.us\x22,\x22wv.u'+'s\x22,\x22wy.us\x22'+',\x22k12.ak.u'+'s\x22,\x22k12.al'+'.us\x22,\x22k12.'+'ar.us\x22,\x22k1'+'2.as.us\x22,\x22'+'k12.az.us\x22'+',\x22k12.ca.u'+'s\x22,\x22k12.co'+'.us\x22,\x22k12.'+'ct.us\x22,\x22k1'+'2.dc.us\x22,\x22'+'k12.de.us\x22'+',\x22k12.fl.u'+'s\x22,\x22k12.ga'+'.us\x22,\x22k12.'+'gu.us\x22,\x22k1'+'2.ia.us\x22,\x22'+'k12.id.us\x22'+',\x22k12.il.u'+'s\x22,\x22k12.in'+'.us\x22,\x22k12.'+'ks.us\x22,\x22k1'+'2.ky.us\x22,\x22'+'k12.la.us\x22'+',\x22k12.ma.u'+'s\x22,\x22k12.md'+'.us\x22,\x22k12.'+'me.us\x22,\x22k1'+'2.mi.us\x22,\x22'+'k12.mn.us\x22'+',\x22k12.mo.u'+'s\x22,\x22k12.ms'+'.us\x22,\x22k12.'+'mt.us\x22,\x22k1'+'2.nc.us\x22,\x22'+'k12.ne.us\x22')+(',\x22k12.nh.u'+'s\x22,\x22k12.nj'+'.us\x22,\x22k12.'+'nm.us\x22,\x22k1'+'2.nv.us\x22,\x22'+'k12.ny.us\x22'+',\x22k12.oh.u'+'s\x22,\x22k12.ok'+'.us\x22,\x22k12.'+'or.us\x22,\x22k1'+'2.pa.us\x22,\x22'+'k12.pr.us\x22'+',\x22k12.ri.u'+'s\x22,\x22k12.sc'+'.us\x22,\x22k12.'+'tn.us\x22,\x22k1'+'2.tx.us\x22,\x22'+'k12.ut.us\x22'+',\x22k12.vi.u'+'s\x22,\x22k12.vt'+'.us\x22,\x22k12.'+'va.us\x22,\x22k1'+'2.wa.us\x22,\x22'+'k12.wi.us\x22'+',\x22k12.wy.u'+'s\x22,\x22cc.ak.'+'us\x22,\x22cc.al'+'.us\x22,\x22cc.a'+'r.us\x22,\x22cc.'+'as.us\x22,\x22cc'+'.az.us\x22,\x22c'+'c.ca.us\x22,\x22'+'cc.co.us\x22,'+'\x22cc.ct.us\x22'+',\x22cc.dc.us'+'\x22,\x22cc.de.u'+'s\x22,\x22cc.fl.'+'us\x22,\x22cc.ga'+'.us\x22,\x22cc.g'+'u.us\x22,\x22cc.'+'hi.us\x22,\x22cc'+'.ia.us\x22,\x22c'+'c.id.us\x22,\x22'+'cc.il.us\x22,'+'\x22cc.in.us\x22'+',\x22cc.ks.us'+'\x22,\x22cc.ky.u'+'s\x22,\x22cc.la.'+'us\x22,\x22cc.ma'+'.us\x22,\x22cc.m'+'d.us\x22,\x22cc.'+'me.us\x22,\x22cc'+'.mi.us\x22,\x22c'+'c.mn.us\x22,\x22'+'cc.mo.us\x22,'+'\x22cc.ms.us\x22'+',\x22cc.mt.us'+'\x22,\x22cc.nc.u'+'s\x22,\x22cc.nd.'+'us\x22,\x22cc.ne'+'.us\x22,\x22cc.n'+'h.us\x22,\x22cc.'+'nj.us\x22,\x22cc'+'.nm.us\x22,\x22c'+'c.nv.us\x22,\x22'+'cc.ny.us\x22,'+'\x22cc.oh.us\x22'+',\x22cc.ok.us'+'\x22,\x22cc.or.u'+'s\x22,\x22cc.pa.'+'us\x22,\x22cc.pr'+'.us\x22,\x22cc.r'+'i.us\x22,\x22cc.'+'sc.us\x22,\x22cc'+'.sd.us\x22,\x22c'+'c.tn.us\x22,\x22'+'cc.tx.us\x22,'+'\x22cc.ut.us\x22'+',\x22cc.vi.us'+'\x22,\x22cc.vt.u'+'s\x22,\x22cc.va.'+'us\x22,\x22cc.wa'+'.us\x22,\x22cc.w'+'i.us\x22,\x22cc.'+'wv.us\x22,\x22cc'+'.wy.us\x22,\x22l'+'ib.ak.us\x22,'+'\x22lib.al.us'+'\x22,\x22lib.ar.'+'us\x22,\x22lib.a'+'s.us\x22,\x22lib'+'.az.us\x22,\x22l'+'ib.ca.us\x22,'+'\x22lib.co.us'+'\x22,\x22lib.ct.'+'us\x22,\x22lib.d'+'c.us\x22,\x22lib'+'.fl.us\x22,\x22l'+'ib.ga.us\x22,'+'\x22lib.gu.us')+('\x22,\x22lib.hi.'+'us\x22,\x22lib.i'+'a.us\x22,\x22lib'+'.id.us\x22,\x22l'+'ib.il.us\x22,'+'\x22lib.in.us'+'\x22,\x22lib.ks.'+'us\x22,\x22lib.k'+'y.us\x22,\x22lib'+'.la.us\x22,\x22l'+'ib.ma.us\x22,'+'\x22lib.md.us'+'\x22,\x22lib.me.'+'us\x22,\x22lib.m'+'i.us\x22,\x22lib'+'.mn.us\x22,\x22l'+'ib.mo.us\x22,'+'\x22lib.ms.us'+'\x22,\x22lib.mt.'+'us\x22,\x22lib.n'+'c.us\x22,\x22lib'+'.nd.us\x22,\x22l'+'ib.ne.us\x22,'+'\x22lib.nh.us'+'\x22,\x22lib.nj.'+'us\x22,\x22lib.n'+'m.us\x22,\x22lib'+'.nv.us\x22,\x22l'+'ib.ny.us\x22,'+'\x22lib.oh.us'+'\x22,\x22lib.ok.'+'us\x22,\x22lib.o'+'r.us\x22,\x22lib'+'.pa.us\x22,\x22l'+'ib.pr.us\x22,'+'\x22lib.ri.us'+'\x22,\x22lib.sc.'+'us\x22,\x22lib.s'+'d.us\x22,\x22lib'+'.tn.us\x22,\x22l'+'ib.tx.us\x22,'+'\x22lib.ut.us'+'\x22,\x22lib.vi.'+'us\x22,\x22lib.v'+'t.us\x22,\x22lib'+'.va.us\x22,\x22l'+'ib.wa.us\x22,'+'\x22lib.wi.us'+'\x22,\x22lib.wy.'+'us\x22,\x22pvt.k'+'12.ma.us\x22,'+'\x22chtr.k12.'+'ma.us\x22,\x22pa'+'roch.k12.m'+'a.us\x22,\x22ann'+'-arbor.mi.'+'us\x22,\x22cog.m'+'i.us\x22,\x22dst'+'.mi.us\x22,\x22e'+'aton.mi.us'+'\x22,\x22gen.mi.'+'us\x22,\x22mus.m'+'i.us\x22,\x22tec'+'.mi.us\x22,\x22w'+'ashtenaw.m'+'i.us\x22,\x22uy\x22'+',\x22com.uy\x22,'+'\x22edu.uy\x22,\x22'+'gub.uy\x22,\x22m'+'il.uy\x22,\x22ne'+'t.uy\x22,\x22org'+'.uy\x22,\x22uz\x22,'+'\x22co.uz\x22,\x22c'+'om.uz\x22,\x22ne'+'t.uz\x22,\x22org'+'.uz\x22,\x22va\x22,'+'\x22vc\x22,\x22com.'+'vc\x22,\x22net.v'+'c\x22,\x22org.vc'+'\x22,\x22gov.vc\x22'+',\x22mil.vc\x22,'+'\x22edu.vc\x22,\x22'+'ve\x22,\x22arts.'+'ve\x22,\x22co.ve'+'\x22,\x22com.ve\x22'+',\x22e12.ve\x22,'+'\x22edu.ve\x22,\x22'+'firm.ve\x22,\x22'+'gob.ve\x22,\x22g'+'ov.ve\x22,\x22in'+'fo.ve\x22,\x22in'+'t.ve\x22,\x22mil'+'.ve\x22,\x22net.'+'ve\x22,\x22org.v'+'e\x22,\x22rec.ve'+'\x22,\x22store.v'+'e\x22,\x22tec.ve'+'\x22,\x22web.ve\x22'+',\x22vg\x22,\x22vi\x22'+',\x22co.vi\x22,\x22')+('com.vi\x22,\x22k'+'12.vi\x22,\x22ne'+'t.vi\x22,\x22org'+'.vi\x22,\x22vn\x22,'+'\x22com.vn\x22,\x22'+'net.vn\x22,\x22o'+'rg.vn\x22,\x22ed'+'u.vn\x22,\x22gov'+'.vn\x22,\x22int.'+'vn\x22,\x22ac.vn'+'\x22,\x22biz.vn\x22'+',\x22info.vn\x22'+',\x22name.vn\x22'+',\x22pro.vn\x22,'+'\x22health.vn'+'\x22,\x22vu\x22,\x22co'+'m.vu\x22,\x22edu'+'.vu\x22,\x22net.'+'vu\x22,\x22org.v'+'u\x22,\x22wf\x22,\x22w'+'s\x22,\x22com.ws'+'\x22,\x22net.ws\x22'+',\x22org.ws\x22,'+'\x22gov.ws\x22,\x22'+'edu.ws\x22,\x22y'+'t\x22,\x22Ų§Ł…Ų§Ų±Ų§ŲŖ'+'\x22,\x22Õ°Õ”Õµ\x22,\x22ব'+'াংলা\x22,\x22бг\x22'+',\x22бел\x22,\x22中国'+'\x22,\x22äø­åœ‹\x22,\x22Ų§Ł„'+'Ų¬Ų²Ų§Ų¦Ų±\x22,\x22Ł…Ųµ'+'Ų±\x22,\x22ŠµŃŽ\x22,\x22ε'+'Ļ…\x22,\x22Ł…ŁˆŲ±ŁŠŲŖŲ§'+'Ł†ŁŠŲ§\x22,\x22įƒ’įƒ”\x22,'+'\x22ελ\x22,\x22香港\x22,'+'\x22å…¬åø.香港\x22,\x22ꕙ'+'育.香港\x22,\x22ę”æåŗœ.'+'香港\x22,\x22個人.香港'+'\x22,\x22網絔.香港\x22,'+'\x22組織.香港\x22,\x22ą²­'+'ಾರತ\x22,\x22ଭାରତ'+'\x22,\x22ভাৰত\x22,\x22'+'ą¤­ą¤¾ą¤°ą¤¤ą¤®ą„\x22,\x22भ'+'ą¤¾ą¤°ą„‹ą¤¤\x22,\x22Ś€Ų§Ų±'+'ŲŖ\x22,\x22ą“­ą“¾ą“°ą“¤ą“‚\x22'+',\x22भारत\x22,\x22ŲØ'+'Ų§Ų±ŲŖ\x22,\x22بھار'+'ŲŖ\x22,\x22ą°­ą°¾ą°°ą°¤ą±\x22'+',\x22ભારત\x22,\x22ਭ'+'ਾਰਤ\x22,\x22ভারত'+'\x22,\x22ą®‡ą®ØąÆą®¤ą®æą®Æą®¾'+'\x22,\x22Ų§ŪŒŲ±Ų§Ł†\x22,'+'\x22Ų§ŁŠŲ±Ų§Ł†\x22,\x22Ų¹'+'Ų±Ų§Ł‚\x22,\x22الار'+'دن\x22,\x22ķ•œźµ­\x22,\x22'+'қаз\x22,\x22ą¶½ą¶‚ą¶šą·'+'\x22,\x22ą®‡ą®²ą®™ąÆą®•ąÆˆ\x22'+',\x22المغرب\x22,'+'\x22мкГ\x22,\x22мон'+'\x22,\x22澳門\x22,\x22澳门'+'\x22,\x22Ł…Ł„ŁŠŲ³ŁŠŲ§\x22'+',\x22عمان\x22,\x22پ'+'اکستان\x22,\x22پ'+'Ų§ŁƒŲ³ŲŖŲ§Ł†\x22,\x22ف'+'Ł„Ų³Ų·ŁŠŁ†\x22,\x22ср'+'б\x22,\x22пр.срб'+'\x22,\x22орг.срб'+'\x22,\x22обр.срб'+'\x22,\x22оГ.срб\x22'+',\x22ŃƒŠæŃ€.срб\x22'+',\x22ак.срб\x22,'+'\x22рф\x22,\x22قطر\x22'+',\x22Ų§Ł„Ų³Ų¹ŁˆŲÆŁŠŲ©'+'\x22,\x22Ų§Ł„Ų³Ų¹ŁˆŲÆŪŒ'+'Ų©\x22,\x22Ų§Ł„Ų³Ų¹ŁˆŲÆ'+'یۃ\x22,\x22Ų§Ł„Ų³Ų¹Łˆ'+'ŲÆŁŠŁ‡\x22,\x22سودا'+'ن\x22,\x22ę–°åŠ å”\x22,\x22'+'ą®šą®æą®™ąÆą®•ą®ŖąÆą®ŖąÆ‚ą®°'+'ąÆ\x22,\x22سورية\x22'+',\x22سوريا\x22,\x22'+'ไทย\x22,\x22ศึกษ'+'ąø².ไทย\x22,\x22ธุ'+'รกณจ.ไทย\x22,'+'\x22รัฐบาค.ไท'+'ąø¢\x22,\x22ทหาร.ไ'+'ąø—ąø¢\x22,\x22เน็ต.'+'ไทย\x22,\x22ąø­ąø‡ąø„ą¹Œ'+'กร.ไทย\x22,\x22ŲŖ'+'ŁˆŁ†Ų³\x22,\x22å°ē£\x22,'+'\x22å°ę¹¾\x22,\x22臺灣\x22,'+'\x22ŃƒŠŗŃ€\x22,\x22Ų§Ł„ŁŠ'+'من\x22,\x22xxx\x22,'+'\x22*.ye\x22,\x22ac'+'.za\x22,\x22agri'+'c.za\x22,\x22alt'+'.za\x22,\x22co.z'+'a\x22,\x22edu.za'+'\x22,\x22gov.za\x22'+',\x22grondar.')+('za\x22,\x22law.z'+'a\x22,\x22mil.za'+'\x22,\x22net.za\x22'+',\x22ngo.za\x22,'+'\x22nic.za\x22,\x22'+'nis.za\x22,\x22n'+'om.za\x22,\x22or'+'g.za\x22,\x22sch'+'ool.za\x22,\x22t'+'m.za\x22,\x22web'+'.za\x22,\x22zm\x22,'+'\x22ac.zm\x22,\x22b'+'iz.zm\x22,\x22co'+'.zm\x22,\x22com.'+'zm\x22,\x22edu.z'+'m\x22,\x22gov.zm'+'\x22,\x22info.zm'+'\x22,\x22mil.zm\x22'+',\x22net.zm\x22,'+'\x22org.zm\x22,\x22'+'sch.zm\x22,\x22z'+'w\x22,\x22ac.zw\x22'+',\x22co.zw\x22,\x22'+'gov.zw\x22,\x22m'+'il.zw\x22,\x22or'+'g.zw\x22,\x22aaa'+'\x22,\x22aarp\x22,\x22'+'abarth\x22,\x22a'+'bb\x22,\x22abbot'+'t\x22,\x22abbvie'+'\x22,\x22abc\x22,\x22a'+'ble\x22,\x22abog'+'ado\x22,\x22abud'+'habi\x22,\x22aca'+'demy\x22,\x22acc'+'enture\x22,\x22a'+'ccountant\x22'+',\x22accounta'+'nts\x22,\x22aco\x22'+',\x22actor\x22,\x22'+'adac\x22,\x22ads'+'\x22,\x22adult\x22,'+'\x22aeg\x22,\x22aet'+'na\x22,\x22afami'+'lycompany\x22'+',\x22afl\x22,\x22af'+'rica\x22,\x22aga'+'khan\x22,\x22age'+'ncy\x22,\x22aig\x22'+',\x22aigo\x22,\x22a'+'irbus\x22,\x22ai'+'rforce\x22,\x22a'+'irtel\x22,\x22ak'+'dn\x22,\x22alfar'+'omeo\x22,\x22ali'+'baba\x22,\x22ali'+'pay\x22,\x22allf'+'inanz\x22,\x22al'+'lstate\x22,\x22a'+'lly\x22,\x22alsa'+'ce\x22,\x22alsto'+'m\x22,\x22amazon'+'\x22,\x22america'+'nexpress\x22,'+'\x22americanf'+'amily\x22,\x22am'+'ex\x22,\x22amfam'+'\x22,\x22amica\x22,'+'\x22amsterdam'+'\x22,\x22analyti'+'cs\x22,\x22andro'+'id\x22,\x22anqua'+'n\x22,\x22anz\x22,\x22'+'aol\x22,\x22apar'+'tments\x22,\x22a'+'pp\x22,\x22apple'+'\x22,\x22aquarel'+'le\x22,\x22arab\x22'+',\x22aramco\x22,'+'\x22archi\x22,\x22a'+'rmy\x22,\x22art\x22'+',\x22arte\x22,\x22a'+'sda\x22,\x22asso'+'ciates\x22,\x22a'+'thleta\x22,\x22a'+'ttorney\x22,\x22'+'auction\x22,\x22'+'audi\x22,\x22aud'+'ible\x22,\x22aud'+'io\x22,\x22auspo'+'st\x22,\x22autho'+'r\x22,\x22auto\x22,'+'\x22autos\x22,\x22a'+'vianca\x22,\x22a'+'ws\x22,\x22axa\x22,'+'\x22azure\x22,\x22b'+'aby\x22,\x22baid'+'u\x22,\x22baname'+'x\x22,\x22banana'+'republic\x22,')+('\x22band\x22,\x22ba'+'nk\x22,\x22bar\x22,'+'\x22barcelona'+'\x22,\x22barclay'+'card\x22,\x22bar'+'clays\x22,\x22ba'+'refoot\x22,\x22b'+'argains\x22,\x22'+'baseball\x22,'+'\x22basketbal'+'l\x22,\x22bauhau'+'s\x22,\x22bayern'+'\x22,\x22bbc\x22,\x22b'+'bt\x22,\x22bbva\x22'+',\x22bcg\x22,\x22bc'+'n\x22,\x22beats\x22'+',\x22beauty\x22,'+'\x22beer\x22,\x22be'+'ntley\x22,\x22be'+'rlin\x22,\x22bes'+'t\x22,\x22bestbu'+'y\x22,\x22bet\x22,\x22'+'bharti\x22,\x22b'+'ible\x22,\x22bid'+'\x22,\x22bike\x22,\x22'+'bing\x22,\x22bin'+'go\x22,\x22bio\x22,'+'\x22black\x22,\x22b'+'lackfriday'+'\x22,\x22blockbu'+'ster\x22,\x22blo'+'g\x22,\x22bloomb'+'erg\x22,\x22blue'+'\x22,\x22bms\x22,\x22b'+'mw\x22,\x22bnppa'+'ribas\x22,\x22bo'+'ats\x22,\x22boeh'+'ringer\x22,\x22b'+'ofa\x22,\x22bom\x22'+',\x22bond\x22,\x22b'+'oo\x22,\x22book\x22'+',\x22booking\x22'+',\x22bosch\x22,\x22'+'bostik\x22,\x22b'+'oston\x22,\x22bo'+'t\x22,\x22boutiq'+'ue\x22,\x22box\x22,'+'\x22bradesco\x22'+',\x22bridgest'+'one\x22,\x22broa'+'dway\x22,\x22bro'+'ker\x22,\x22brot'+'her\x22,\x22brus'+'sels\x22,\x22bud'+'apest\x22,\x22bu'+'gatti\x22,\x22bu'+'ild\x22,\x22buil'+'ders\x22,\x22bus'+'iness\x22,\x22bu'+'y\x22,\x22buzz\x22,'+'\x22bzh\x22,\x22cab'+'\x22,\x22cafe\x22,\x22'+'cal\x22,\x22call'+'\x22,\x22calvink'+'lein\x22,\x22cam'+'\x22,\x22camera\x22'+',\x22camp\x22,\x22c'+'ancerresea'+'rch\x22,\x22cano'+'n\x22,\x22capeto'+'wn\x22,\x22capit'+'al\x22,\x22capit'+'alone\x22,\x22ca'+'r\x22,\x22carava'+'n\x22,\x22cards\x22'+',\x22care\x22,\x22c'+'areer\x22,\x22ca'+'reers\x22,\x22ca'+'rs\x22,\x22casa\x22'+',\x22case\x22,\x22c'+'aseih\x22,\x22ca'+'sh\x22,\x22casin'+'o\x22,\x22cateri'+'ng\x22,\x22catho'+'lic\x22,\x22cba\x22'+',\x22cbn\x22,\x22cb'+'re\x22,\x22cbs\x22,'+'\x22ceb\x22,\x22cen'+'ter\x22,\x22ceo\x22'+',\x22cern\x22,\x22c'+'fa\x22,\x22cfd\x22,'+'\x22chanel\x22,\x22'+'channel\x22,\x22'+'charity\x22,\x22'+'chase\x22,\x22ch'+'at\x22,\x22cheap'+'\x22,\x22chintai'+'\x22,\x22christm'+'as\x22,\x22chrom'+'e\x22,\x22church')+('\x22,\x22ciprian'+'i\x22,\x22circle'+'\x22,\x22cisco\x22,'+'\x22citadel\x22,'+'\x22citi\x22,\x22ci'+'tic\x22,\x22city'+'\x22,\x22cityeat'+'s\x22,\x22claims'+'\x22,\x22cleanin'+'g\x22,\x22click\x22'+',\x22clinic\x22,'+'\x22clinique\x22'+',\x22clothing'+'\x22,\x22cloud\x22,'+'\x22club\x22,\x22cl'+'ubmed\x22,\x22co'+'ach\x22,\x22code'+'s\x22,\x22coffee'+'\x22,\x22college'+'\x22,\x22cologne'+'\x22,\x22comcast'+'\x22,\x22commban'+'k\x22,\x22commun'+'ity\x22,\x22comp'+'any\x22,\x22comp'+'are\x22,\x22comp'+'uter\x22,\x22com'+'sec\x22,\x22cond'+'os\x22,\x22const'+'ruction\x22,\x22'+'consulting'+'\x22,\x22contact'+'\x22,\x22contrac'+'tors\x22,\x22coo'+'king\x22,\x22coo'+'kingchanne'+'l\x22,\x22cool\x22,'+'\x22corsica\x22,'+'\x22country\x22,'+'\x22coupon\x22,\x22'+'coupons\x22,\x22'+'courses\x22,\x22'+'cpa\x22,\x22cred'+'it\x22,\x22credi'+'tcard\x22,\x22cr'+'editunion\x22'+',\x22cricket\x22'+',\x22crown\x22,\x22'+'crs\x22,\x22crui'+'se\x22,\x22cruis'+'es\x22,\x22csc\x22,'+'\x22cuisinell'+'a\x22,\x22cymru\x22'+',\x22cyou\x22,\x22d'+'abur\x22,\x22dad'+'\x22,\x22dance\x22,'+'\x22data\x22,\x22da'+'te\x22,\x22datin'+'g\x22,\x22datsun'+'\x22,\x22day\x22,\x22d'+'clk\x22,\x22dds\x22'+',\x22deal\x22,\x22d'+'ealer\x22,\x22de'+'als\x22,\x22degr'+'ee\x22,\x22deliv'+'ery\x22,\x22dell'+'\x22,\x22deloitt'+'e\x22,\x22delta\x22'+',\x22democrat'+'\x22,\x22dental\x22'+',\x22dentist\x22'+',\x22desi\x22,\x22d'+'esign\x22,\x22de'+'v\x22,\x22dhl\x22,\x22'+'diamonds\x22,'+'\x22diet\x22,\x22di'+'gital\x22,\x22di'+'rect\x22,\x22dir'+'ectory\x22,\x22d'+'iscount\x22,\x22'+'discover\x22,'+'\x22dish\x22,\x22di'+'y\x22,\x22dnp\x22,\x22'+'docs\x22,\x22doc'+'tor\x22,\x22dog\x22'+',\x22domains\x22'+',\x22dot\x22,\x22do'+'wnload\x22,\x22d'+'rive\x22,\x22dtv'+'\x22,\x22dubai\x22,'+'\x22duck\x22,\x22du'+'nlop\x22,\x22dup'+'ont\x22,\x22durb'+'an\x22,\x22dvag\x22'+',\x22dvr\x22,\x22ea'+'rth\x22,\x22eat\x22'+',\x22eco\x22,\x22ed'+'eka\x22,\x22educ'+'ation\x22,\x22em'+'ail\x22,\x22emer')+('ck\x22,\x22energ'+'y\x22,\x22engine'+'er\x22,\x22engin'+'eering\x22,\x22e'+'nterprises'+'\x22,\x22epson\x22,'+'\x22equipment'+'\x22,\x22ericsso'+'n\x22,\x22erni\x22,'+'\x22esq\x22,\x22est'+'ate\x22,\x22esur'+'ance\x22,\x22eti'+'salat\x22,\x22eu'+'rovision\x22,'+'\x22eus\x22,\x22eve'+'nts\x22,\x22exch'+'ange\x22,\x22exp'+'ert\x22,\x22expo'+'sed\x22,\x22expr'+'ess\x22,\x22extr'+'aspace\x22,\x22f'+'age\x22,\x22fail'+'\x22,\x22fairwin'+'ds\x22,\x22faith'+'\x22,\x22family\x22'+',\x22fan\x22,\x22fa'+'ns\x22,\x22farm\x22'+',\x22farmers\x22'+',\x22fashion\x22'+',\x22fast\x22,\x22f'+'edex\x22,\x22fee'+'dback\x22,\x22fe'+'rrari\x22,\x22fe'+'rrero\x22,\x22fi'+'at\x22,\x22fidel'+'ity\x22,\x22fido'+'\x22,\x22film\x22,\x22'+'final\x22,\x22fi'+'nance\x22,\x22fi'+'nancial\x22,\x22'+'fire\x22,\x22fir'+'estone\x22,\x22f'+'irmdale\x22,\x22'+'fish\x22,\x22fis'+'hing\x22,\x22fit'+'\x22,\x22fitness'+'\x22,\x22flickr\x22'+',\x22flights\x22'+',\x22flir\x22,\x22f'+'lorist\x22,\x22f'+'lowers\x22,\x22f'+'ly\x22,\x22foo\x22,'+'\x22food\x22,\x22fo'+'odnetwork\x22'+',\x22football'+'\x22,\x22ford\x22,\x22'+'forex\x22,\x22fo'+'rsale\x22,\x22fo'+'rum\x22,\x22foun'+'dation\x22,\x22f'+'ox\x22,\x22free\x22'+',\x22freseniu'+'s\x22,\x22frl\x22,\x22'+'frogans\x22,\x22'+'frontdoor\x22'+',\x22frontier'+'\x22,\x22ftr\x22,\x22f'+'ujitsu\x22,\x22f'+'ujixerox\x22,'+'\x22fun\x22,\x22fun'+'d\x22,\x22furnit'+'ure\x22,\x22futb'+'ol\x22,\x22fyi\x22,'+'\x22gal\x22,\x22gal'+'lery\x22,\x22gal'+'lo\x22,\x22gallu'+'p\x22,\x22game\x22,'+'\x22games\x22,\x22g'+'ap\x22,\x22garde'+'n\x22,\x22gay\x22,\x22'+'gbiz\x22,\x22gdn'+'\x22,\x22gea\x22,\x22g'+'ent\x22,\x22gent'+'ing\x22,\x22geor'+'ge\x22,\x22ggee\x22'+',\x22gift\x22,\x22g'+'ifts\x22,\x22giv'+'es\x22,\x22givin'+'g\x22,\x22glade\x22'+',\x22glass\x22,\x22'+'gle\x22,\x22glob'+'al\x22,\x22globo'+'\x22,\x22gmail\x22,'+'\x22gmbh\x22,\x22gm'+'o\x22,\x22gmx\x22,\x22'+'godaddy\x22,\x22'+'gold\x22,\x22gol'+'dpoint\x22,\x22g'+'olf\x22,\x22goo\x22'+',\x22goodyear')+('\x22,\x22goog\x22,\x22'+'google\x22,\x22g'+'op\x22,\x22got\x22,'+'\x22grainger\x22'+',\x22graphics'+'\x22,\x22gratis\x22'+',\x22green\x22,\x22'+'gripe\x22,\x22gr'+'ocery\x22,\x22gr'+'oup\x22,\x22guar'+'dian\x22,\x22guc'+'ci\x22,\x22guge\x22'+',\x22guide\x22,\x22'+'guitars\x22,\x22'+'guru\x22,\x22hai'+'r\x22,\x22hambur'+'g\x22,\x22hangou'+'t\x22,\x22haus\x22,'+'\x22hbo\x22,\x22hdf'+'c\x22,\x22hdfcba'+'nk\x22,\x22healt'+'h\x22,\x22health'+'care\x22,\x22hel'+'p\x22,\x22helsin'+'ki\x22,\x22here\x22'+',\x22hermes\x22,'+'\x22hgtv\x22,\x22hi'+'phop\x22,\x22his'+'amitsu\x22,\x22h'+'itachi\x22,\x22h'+'iv\x22,\x22hkt\x22,'+'\x22hockey\x22,\x22'+'holdings\x22,'+'\x22holiday\x22,'+'\x22homedepot'+'\x22,\x22homegoo'+'ds\x22,\x22homes'+'\x22,\x22homesen'+'se\x22,\x22honda'+'\x22,\x22horse\x22,'+'\x22hospital\x22'+',\x22host\x22,\x22h'+'osting\x22,\x22h'+'ot\x22,\x22hotel'+'es\x22,\x22hotel'+'s\x22,\x22hotmai'+'l\x22,\x22house\x22'+',\x22how\x22,\x22hs'+'bc\x22,\x22hughe'+'s\x22,\x22hyatt\x22'+',\x22hyundai\x22'+',\x22ibm\x22,\x22ic'+'bc\x22,\x22ice\x22,'+'\x22icu\x22,\x22iee'+'e\x22,\x22ifm\x22,\x22'+'ikano\x22,\x22im'+'amat\x22,\x22imd'+'b\x22,\x22immo\x22,'+'\x22immobilie'+'n\x22,\x22inc\x22,\x22'+'industries'+'\x22,\x22infinit'+'i\x22,\x22ing\x22,\x22'+'ink\x22,\x22inst'+'itute\x22,\x22in'+'surance\x22,\x22'+'insure\x22,\x22i'+'ntel\x22,\x22int'+'ernational'+'\x22,\x22intuit\x22'+',\x22investme'+'nts\x22,\x22ipir'+'anga\x22,\x22iri'+'sh\x22,\x22ismai'+'li\x22,\x22ist\x22,'+'\x22istanbul\x22'+',\x22itau\x22,\x22i'+'tv\x22,\x22iveco'+'\x22,\x22jaguar\x22'+',\x22java\x22,\x22j'+'cb\x22,\x22jcp\x22,'+'\x22jeep\x22,\x22je'+'tzt\x22,\x22jewe'+'lry\x22,\x22jio\x22'+',\x22jll\x22,\x22jm'+'p\x22,\x22jnj\x22,\x22'+'joburg\x22,\x22j'+'ot\x22,\x22joy\x22,'+'\x22jpmorgan\x22'+',\x22jprs\x22,\x22j'+'uegos\x22,\x22ju'+'niper\x22,\x22ka'+'ufen\x22,\x22kdd'+'i\x22,\x22kerryh'+'otels\x22,\x22ke'+'rrylogisti'+'cs\x22,\x22kerry'+'properties'+'\x22,\x22kfh\x22,\x22k'+'ia\x22,\x22kim\x22,')+('\x22kinder\x22,\x22'+'kindle\x22,\x22k'+'itchen\x22,\x22k'+'iwi\x22,\x22koel'+'n\x22,\x22komats'+'u\x22,\x22kosher'+'\x22,\x22kpmg\x22,\x22'+'kpn\x22,\x22krd\x22'+',\x22kred\x22,\x22k'+'uokgroup\x22,'+'\x22kyoto\x22,\x22l'+'acaixa\x22,\x22l'+'amborghini'+'\x22,\x22lamer\x22,'+'\x22lancaster'+'\x22,\x22lancia\x22'+',\x22land\x22,\x22l'+'androver\x22,'+'\x22lanxess\x22,'+'\x22lasalle\x22,'+'\x22lat\x22,\x22lat'+'ino\x22,\x22latr'+'obe\x22,\x22law\x22'+',\x22lawyer\x22,'+'\x22lds\x22,\x22lea'+'se\x22,\x22lecle'+'rc\x22,\x22lefra'+'k\x22,\x22legal\x22'+',\x22lego\x22,\x22l'+'exus\x22,\x22lgb'+'t\x22,\x22lidl\x22,'+'\x22life\x22,\x22li'+'feinsuranc'+'e\x22,\x22lifest'+'yle\x22,\x22ligh'+'ting\x22,\x22lik'+'e\x22,\x22lilly\x22'+',\x22limited\x22'+',\x22limo\x22,\x22l'+'incoln\x22,\x22l'+'inde\x22,\x22lin'+'k\x22,\x22lipsy\x22'+',\x22live\x22,\x22l'+'iving\x22,\x22li'+'xil\x22,\x22llc\x22'+',\x22llp\x22,\x22lo'+'an\x22,\x22loans'+'\x22,\x22locker\x22'+',\x22locus\x22,\x22'+'loft\x22,\x22lol'+'\x22,\x22london\x22'+',\x22lotte\x22,\x22'+'lotto\x22,\x22lo'+'ve\x22,\x22lpl\x22,'+'\x22lplfinanc'+'ial\x22,\x22ltd\x22'+',\x22ltda\x22,\x22l'+'undbeck\x22,\x22'+'lupin\x22,\x22lu'+'xe\x22,\x22luxur'+'y\x22,\x22macys\x22'+',\x22madrid\x22,'+'\x22maif\x22,\x22ma'+'ison\x22,\x22mak'+'eup\x22,\x22man\x22'+',\x22manageme'+'nt\x22,\x22mango'+'\x22,\x22map\x22,\x22m'+'arket\x22,\x22ma'+'rketing\x22,\x22'+'markets\x22,\x22'+'marriott\x22,'+'\x22marshalls'+'\x22,\x22maserat'+'i\x22,\x22mattel'+'\x22,\x22mba\x22,\x22m'+'ckinsey\x22,\x22'+'med\x22,\x22medi'+'a\x22,\x22meet\x22,'+'\x22melbourne'+'\x22,\x22meme\x22,\x22'+'memorial\x22,'+'\x22men\x22,\x22men'+'u\x22,\x22merckm'+'sd\x22,\x22metli'+'fe\x22,\x22miami'+'\x22,\x22microso'+'ft\x22,\x22mini\x22'+',\x22mint\x22,\x22m'+'it\x22,\x22mitsu'+'bishi\x22,\x22ml'+'b\x22,\x22mls\x22,\x22'+'mma\x22,\x22mobi'+'le\x22,\x22moda\x22'+',\x22moe\x22,\x22mo'+'i\x22,\x22mom\x22,\x22'+'monash\x22,\x22m'+'oney\x22,\x22mon'+'ster\x22,\x22mor'+'mon\x22,\x22mort')+('gage\x22,\x22mos'+'cow\x22,\x22moto'+'\x22,\x22motorcy'+'cles\x22,\x22mov'+'\x22,\x22movie\x22,'+'\x22msd\x22,\x22mtn'+'\x22,\x22mtr\x22,\x22m'+'utual\x22,\x22na'+'b\x22,\x22nadex\x22'+',\x22nagoya\x22,'+'\x22nationwid'+'e\x22,\x22natura'+'\x22,\x22navy\x22,\x22'+'nba\x22,\x22nec\x22'+',\x22netbank\x22'+',\x22netflix\x22'+',\x22network\x22'+',\x22neustar\x22'+',\x22new\x22,\x22ne'+'wholland\x22,'+'\x22news\x22,\x22ne'+'xt\x22,\x22nextd'+'irect\x22,\x22ne'+'xus\x22,\x22nfl\x22'+',\x22ngo\x22,\x22nh'+'k\x22,\x22nico\x22,'+'\x22nike\x22,\x22ni'+'kon\x22,\x22ninj'+'a\x22,\x22nissan'+'\x22,\x22nissay\x22'+',\x22nokia\x22,\x22'+'northweste'+'rnmutual\x22,'+'\x22norton\x22,\x22'+'now\x22,\x22nowr'+'uz\x22,\x22nowtv'+'\x22,\x22nra\x22,\x22n'+'rw\x22,\x22ntt\x22,'+'\x22nyc\x22,\x22obi'+'\x22,\x22observe'+'r\x22,\x22off\x22,\x22'+'office\x22,\x22o'+'kinawa\x22,\x22o'+'layan\x22,\x22ol'+'ayangroup\x22'+',\x22oldnavy\x22'+',\x22ollo\x22,\x22o'+'mega\x22,\x22one'+'\x22,\x22ong\x22,\x22o'+'nl\x22,\x22onlin'+'e\x22,\x22onyour'+'side\x22,\x22ooo'+'\x22,\x22open\x22,\x22'+'oracle\x22,\x22o'+'range\x22,\x22or'+'ganic\x22,\x22or'+'igins\x22,\x22os'+'aka\x22,\x22otsu'+'ka\x22,\x22ott\x22,'+'\x22ovh\x22,\x22pag'+'e\x22,\x22panaso'+'nic\x22,\x22pari'+'s\x22,\x22pars\x22,'+'\x22partners\x22'+',\x22parts\x22,\x22'+'party\x22,\x22pa'+'ssagens\x22,\x22'+'pay\x22,\x22pccw'+'\x22,\x22pet\x22,\x22p'+'fizer\x22,\x22ph'+'armacy\x22,\x22p'+'hd\x22,\x22phili'+'ps\x22,\x22phone'+'\x22,\x22photo\x22,'+'\x22photograp'+'hy\x22,\x22photo'+'s\x22,\x22physio'+'\x22,\x22pics\x22,\x22'+'pictet\x22,\x22p'+'ictures\x22,\x22'+'pid\x22,\x22pin\x22'+',\x22ping\x22,\x22p'+'ink\x22,\x22pion'+'eer\x22,\x22pizz'+'a\x22,\x22place\x22'+',\x22play\x22,\x22p'+'laystation'+'\x22,\x22plumbin'+'g\x22,\x22plus\x22,'+'\x22pnc\x22,\x22poh'+'l\x22,\x22poker\x22'+',\x22politie\x22'+',\x22porn\x22,\x22p'+'ramerica\x22,'+'\x22praxi\x22,\x22p'+'ress\x22,\x22pri'+'me\x22,\x22prod\x22'+',\x22producti'+'ons\x22,\x22prof'+'\x22,\x22progres')+('sive\x22,\x22pro'+'mo\x22,\x22prope'+'rties\x22,\x22pr'+'operty\x22,\x22p'+'rotection\x22'+',\x22pru\x22,\x22pr'+'udential\x22,'+'\x22pub\x22,\x22pwc'+'\x22,\x22qpon\x22,\x22'+'quebec\x22,\x22q'+'uest\x22,\x22qvc'+'\x22,\x22racing\x22'+',\x22radio\x22,\x22'+'raid\x22,\x22rea'+'d\x22,\x22reales'+'tate\x22,\x22rea'+'ltor\x22,\x22rea'+'lty\x22,\x22reci'+'pes\x22,\x22red\x22'+',\x22redstone'+'\x22,\x22redumbr'+'ella\x22,\x22reh'+'ab\x22,\x22reise'+'\x22,\x22reisen\x22'+',\x22reit\x22,\x22r'+'eliance\x22,\x22'+'ren\x22,\x22rent'+'\x22,\x22rentals'+'\x22,\x22repair\x22'+',\x22report\x22,'+'\x22republica'+'n\x22,\x22rest\x22,'+'\x22restauran'+'t\x22,\x22review'+'\x22,\x22reviews'+'\x22,\x22rexroth'+'\x22,\x22rich\x22,\x22'+'richardli\x22'+',\x22ricoh\x22,\x22'+'rightathom'+'e\x22,\x22ril\x22,\x22'+'rio\x22,\x22rip\x22'+',\x22rmit\x22,\x22r'+'ocher\x22,\x22ro'+'cks\x22,\x22rode'+'o\x22,\x22rogers'+'\x22,\x22room\x22,\x22'+'rsvp\x22,\x22rug'+'by\x22,\x22ruhr\x22'+',\x22run\x22,\x22rw'+'e\x22,\x22ryukyu'+'\x22,\x22saarlan'+'d\x22,\x22safe\x22,'+'\x22safety\x22,\x22'+'sakura\x22,\x22s'+'ale\x22,\x22salo'+'n\x22,\x22samscl'+'ub\x22,\x22samsu'+'ng\x22,\x22sandv'+'ik\x22,\x22sandv'+'ikcoromant'+'\x22,\x22sanofi\x22'+',\x22sap\x22,\x22sa'+'rl\x22,\x22sas\x22,'+'\x22save\x22,\x22sa'+'xo\x22,\x22sbi\x22,'+'\x22sbs\x22,\x22sca'+'\x22,\x22scb\x22,\x22s'+'chaeffler\x22'+',\x22schmidt\x22'+',\x22scholars'+'hips\x22,\x22sch'+'ool\x22,\x22schu'+'le\x22,\x22schwa'+'rz\x22,\x22scien'+'ce\x22,\x22scjoh'+'nson\x22,\x22sco'+'r\x22,\x22scot\x22,'+'\x22search\x22,\x22'+'seat\x22,\x22sec'+'ure\x22,\x22secu'+'rity\x22,\x22see'+'k\x22,\x22select'+'\x22,\x22sener\x22,'+'\x22services\x22'+',\x22ses\x22,\x22se'+'ven\x22,\x22sew\x22'+',\x22sex\x22,\x22se'+'xy\x22,\x22sfr\x22,'+'\x22shangrila'+'\x22,\x22sharp\x22,'+'\x22shaw\x22,\x22sh'+'ell\x22,\x22shia'+'\x22,\x22shiksha'+'\x22,\x22shoes\x22,'+'\x22shop\x22,\x22sh'+'opping\x22,\x22s'+'houji\x22,\x22sh'+'ow\x22,\x22showt'+'ime\x22,\x22shri')+('ram\x22,\x22silk'+'\x22,\x22sina\x22,\x22'+'singles\x22,\x22'+'site\x22,\x22ski'+'\x22,\x22skin\x22,\x22'+'sky\x22,\x22skyp'+'e\x22,\x22sling\x22'+',\x22smart\x22,\x22'+'smile\x22,\x22sn'+'cf\x22,\x22socce'+'r\x22,\x22social'+'\x22,\x22softban'+'k\x22,\x22softwa'+'re\x22,\x22sohu\x22'+',\x22solar\x22,\x22'+'solutions\x22'+',\x22song\x22,\x22s'+'ony\x22,\x22soy\x22'+',\x22spa\x22,\x22sp'+'ace\x22,\x22spor'+'t\x22,\x22spot\x22,'+'\x22spreadbet'+'ting\x22,\x22srl'+'\x22,\x22stada\x22,'+'\x22staples\x22,'+'\x22star\x22,\x22st'+'atebank\x22,\x22'+'statefarm\x22'+',\x22stc\x22,\x22st'+'cgroup\x22,\x22s'+'tockholm\x22,'+'\x22storage\x22,'+'\x22store\x22,\x22s'+'tream\x22,\x22st'+'udio\x22,\x22stu'+'dy\x22,\x22style'+'\x22,\x22sucks\x22,'+'\x22supplies\x22'+',\x22supply\x22,'+'\x22support\x22,'+'\x22surf\x22,\x22su'+'rgery\x22,\x22su'+'zuki\x22,\x22swa'+'tch\x22,\x22swif'+'tcover\x22,\x22s'+'wiss\x22,\x22syd'+'ney\x22,\x22syma'+'ntec\x22,\x22sys'+'tems\x22,\x22tab'+'\x22,\x22taipei\x22'+',\x22talk\x22,\x22t'+'aobao\x22,\x22ta'+'rget\x22,\x22tat'+'amotors\x22,\x22'+'tatar\x22,\x22ta'+'ttoo\x22,\x22tax'+'\x22,\x22taxi\x22,\x22'+'tci\x22,\x22tdk\x22'+',\x22team\x22,\x22t'+'ech\x22,\x22tech'+'nology\x22,\x22t'+'emasek\x22,\x22t'+'ennis\x22,\x22te'+'va\x22,\x22thd\x22,'+'\x22theater\x22,'+'\x22theatre\x22,'+'\x22tiaa\x22,\x22ti'+'ckets\x22,\x22ti'+'enda\x22,\x22tif'+'fany\x22,\x22tip'+'s\x22,\x22tires\x22'+',\x22tirol\x22,\x22'+'tjmaxx\x22,\x22t'+'jx\x22,\x22tkmax'+'x\x22,\x22tmall\x22'+',\x22today\x22,\x22'+'tokyo\x22,\x22to'+'ols\x22,\x22top\x22'+',\x22toray\x22,\x22'+'toshiba\x22,\x22'+'total\x22,\x22to'+'urs\x22,\x22town'+'\x22,\x22toyota\x22'+',\x22toys\x22,\x22t'+'rade\x22,\x22tra'+'ding\x22,\x22tra'+'ining\x22,\x22tr'+'avel\x22,\x22tra'+'velchannel'+'\x22,\x22travele'+'rs\x22,\x22trave'+'lersinsura'+'nce\x22,\x22trus'+'t\x22,\x22trv\x22,\x22'+'tube\x22,\x22tui'+'\x22,\x22tunes\x22,'+'\x22tushu\x22,\x22t'+'vs\x22,\x22ubank'+'\x22,\x22ubs\x22,\x22u'+'nicom\x22,\x22un')+('iversity\x22,'+'\x22uno\x22,\x22uol'+'\x22,\x22ups\x22,\x22v'+'acations\x22,'+'\x22vana\x22,\x22va'+'nguard\x22,\x22v'+'egas\x22,\x22ven'+'tures\x22,\x22ve'+'risign\x22,\x22v'+'ersicherun'+'g\x22,\x22vet\x22,\x22'+'viajes\x22,\x22v'+'ideo\x22,\x22vig'+'\x22,\x22viking\x22'+',\x22villas\x22,'+'\x22vin\x22,\x22vip'+'\x22,\x22virgin\x22'+',\x22visa\x22,\x22v'+'ision\x22,\x22vi'+'va\x22,\x22vivo\x22'+',\x22vlaander'+'en\x22,\x22vodka'+'\x22,\x22volkswa'+'gen\x22,\x22volv'+'o\x22,\x22vote\x22,'+'\x22voting\x22,\x22'+'voto\x22,\x22voy'+'age\x22,\x22vuel'+'os\x22,\x22wales'+'\x22,\x22walmart'+'\x22,\x22walter\x22'+',\x22wang\x22,\x22w'+'anggou\x22,\x22w'+'atch\x22,\x22wat'+'ches\x22,\x22wea'+'ther\x22,\x22wea'+'therchanne'+'l\x22,\x22webcam'+'\x22,\x22weber\x22,'+'\x22website\x22,'+'\x22wed\x22,\x22wed'+'ding\x22,\x22wei'+'bo\x22,\x22weir\x22'+',\x22whoswho\x22'+',\x22wien\x22,\x22w'+'iki\x22,\x22will'+'iamhill\x22,\x22'+'win\x22,\x22wind'+'ows\x22,\x22wine'+'\x22,\x22winners'+'\x22,\x22wme\x22,\x22w'+'olterskluw'+'er\x22,\x22woods'+'ide\x22,\x22work'+'\x22,\x22works\x22,'+'\x22world\x22,\x22w'+'ow\x22,\x22wtc\x22,'+'\x22wtf\x22,\x22xbo'+'x\x22,\x22xerox\x22'+',\x22xfinity\x22'+',\x22xihuan\x22,'+'\x22xin\x22,\x22ą¤•ą„‰ą¤®'+'\x22,\x22ć‚»ćƒ¼ćƒ«\x22,\x22佛'+'å±±\x22,\x22ę…ˆå–„\x22,\x22集'+'团\x22,\x22在线\x22,\x22大'+'众汽车\x22,\x22ē‚¹ēœ‹\x22,'+'\x22ąø„ąø­ąø”\x22,\x22八卦\x22'+',\x22Ł…ŁˆŁ‚Ų¹\x22,\x22公'+'ē›Š\x22,\x22å…¬åø\x22,\x22香'+'ę ¼é‡Œę‹‰\x22,\x22网站\x22,'+'\x22移动\x22,\x22ęˆ‘ēˆ±ä½ \x22'+',\x22москва\x22,'+'\x22католик\x22,'+'\x22онлайн\x22,\x22'+'сайт\x22,\x22联通\x22'+',\x22קום\x22,\x22ę—¶å°š'+'\x22,\x22微博\x22,\x22귔马'+'é””\x22,\x22ćƒ•ć‚”ćƒƒć‚·ćƒ§ćƒ³'+'\x22,\x22орг\x22,\x22न'+'ą„‡ą¤Ÿ\x22,\x22ć‚¹ćƒˆć‚¢\x22,'+'\x22ć‚¢ćƒžć‚¾ćƒ³\x22,\x22삼성'+'\x22,\x22商标\x22,\x22商店'+'\x22,\x22商城\x22,\x22Ге'+'ти\x22,\x22ćƒć‚¤ćƒ³ćƒˆ\x22'+',\x22ę–°é—»\x22,\x22巄蔌\x22'+',\x22家電\x22,\x22ŁƒŁˆŁ…'+'\x22,\x22中文网\x22,\x22äø­'+'äæ”\x22,\x22娱乐\x22,\x22č°·'+'歌\x22,\x22é›»čØŠē›ˆē§‘\x22,'+'\x22蓭物\x22,\x22ć‚Æćƒ©ć‚¦ćƒ‰'+'\x22,\x22é€šč²©\x22,\x22网店'+'\x22,\x22संगठन\x22,'+'\x22餐厅\x22,\x22ē½‘ē»œ\x22,'+'\x22ком\x22,\x22äŗšé©¬é€Š'+'\x22,\x22诺基亚\x22,\x22食'+'品\x22,\x22é£žåˆ©ęµ¦\x22,\x22'+'手蔨\x22,\x22ę‰‹ęœŗ\x22,\x22'+'Ų§Ų±Ų§Ł…ŁƒŁˆ\x22,\x22Ų§'+'Ł„Ų¹Ł„ŁŠŲ§Ł†\x22,\x22Ų§'+'تصالات\x22,\x22ŲØ')+('Ų§Ų²Ų§Ų±\x22,\x22ابو'+'ظبي\x22,\x22كاثو'+'Ł„ŁŠŁƒ\x22,\x22همرا'+'ه\x22,\x22닷컓\x22,\x22政'+'府\x22,\x22ؓبكة\x22,'+'\x22بيتك\x22,\x22Ų¹Ų±'+'ŲØ\x22,\x22ęœŗęž„\x22,\x22组'+'ē»‡ęœŗęž„\x22,\x22偄康\x22,'+'\x22ꋛ聘\x22,\x22рус\x22'+',\x22ē å®\x22,\x22大拿\x22'+',\x22みんな\x22,\x22ć‚°ćƒ¼'+'ć‚°ćƒ«\x22,\x22äø–ē•Œ\x22,\x22'+'ę›øē±\x22,\x22ē½‘å€\x22,\x22'+'ė‹·ė„·\x22,\x22ć‚³ćƒ \x22,\x22'+'天主教\x22,\x22ęøøęˆ\x22,'+'\x22vermƶgens'+'berater\x22,\x22'+'vermƶgensb'+'eratung\x22,\x22'+'企业\x22,\x22俔息\x22,\x22'+'å˜‰é‡Œå¤§é…’åŗ—\x22,\x22嘉里'+'\x22,\x22广东\x22,\x22ę”æåŠ”'+'\x22,\x22xyz\x22,\x22y'+'achts\x22,\x22ya'+'hoo\x22,\x22yama'+'xun\x22,\x22yand'+'ex\x22,\x22yodob'+'ashi\x22,\x22yog'+'a\x22,\x22yokoha'+'ma\x22,\x22you\x22,'+'\x22youtube\x22,'+'\x22yun\x22,\x22zap'+'pos\x22,\x22zara'+'\x22,\x22zero\x22,\x22'+'zip\x22,\x22zone'+'\x22,\x22zuerich'+'\x22,\x22cc.ua\x22,'+'\x22inf.ua\x22,\x22'+'ltd.ua\x22,\x22a'+'dobeaemclo'+'ud.com\x22,\x22a'+'dobeaemclo'+'ud.net\x22,\x22*'+'.dev.adobe'+'aemcloud.c'+'om\x22,\x22beep.'+'pl\x22,\x22barsy'+'.ca\x22,\x22*.co'+'mpute.esta'+'te\x22,\x22*.alc'+'es.network'+'\x22,\x22altervi'+'sta.org\x22,\x22'+'alwaysdata'+'.net\x22,\x22clo'+'udfront.ne'+'t\x22,\x22*.comp'+'ute.amazon'+'aws.com\x22,\x22'+'*.compute-'+'1.amazonaw'+'s.com\x22,\x22*.'+'compute.am'+'azonaws.co'+'m.cn\x22,\x22us-'+'east-1.ama'+'zonaws.com'+'\x22,\x22cn-nort'+'h-1.eb.ama'+'zonaws.com'+'.cn\x22,\x22cn-n'+'orthwest-1'+'.eb.amazon'+'aws.com.cn'+'\x22,\x22elastic'+'beanstalk.'+'com\x22,\x22ap-n'+'ortheast-1'+'.elasticbe'+'anstalk.co'+'m\x22,\x22ap-nor'+'theast-2.e'+'lasticbean'+'stalk.com\x22'+',\x22ap-north'+'east-3.ela'+'sticbeanst'+'alk.com\x22,\x22'+'ap-south-1'+'.elasticbe'+'anstalk.co'+'m\x22,\x22ap-sou'+'theast-1.e'+'lasticbean'+'stalk.com\x22'+',\x22ap-south'+'east-2.ela'+'sticbeanst'+'alk.com\x22,\x22'+'ca-central')+('-1.elastic'+'beanstalk.'+'com\x22,\x22eu-c'+'entral-1.e'+'lasticbean'+'stalk.com\x22'+',\x22eu-west-'+'1.elasticb'+'eanstalk.c'+'om\x22,\x22eu-we'+'st-2.elast'+'icbeanstal'+'k.com\x22,\x22eu'+'-west-3.el'+'asticbeans'+'talk.com\x22,'+'\x22sa-east-1'+'.elasticbe'+'anstalk.co'+'m\x22,\x22us-eas'+'t-1.elasti'+'cbeanstalk'+'.com\x22,\x22us-'+'east-2.ela'+'sticbeanst'+'alk.com\x22,\x22'+'us-gov-wes'+'t-1.elasti'+'cbeanstalk'+'.com\x22,\x22us-'+'west-1.ela'+'sticbeanst'+'alk.com\x22,\x22'+'us-west-2.'+'elasticbea'+'nstalk.com'+'\x22,\x22*.elb.a'+'mazonaws.c'+'om\x22,\x22*.elb'+'.amazonaws'+'.com.cn\x22,\x22'+'s3.amazona'+'ws.com\x22,\x22s'+'3-ap-north'+'east-1.ama'+'zonaws.com'+'\x22,\x22s3-ap-n'+'ortheast-2'+'.amazonaws'+'.com\x22,\x22s3-'+'ap-south-1'+'.amazonaws'+'.com\x22,\x22s3-'+'ap-southea'+'st-1.amazo'+'naws.com\x22,'+'\x22s3-ap-sou'+'theast-2.a'+'mazonaws.c'+'om\x22,\x22s3-ca'+'-central-1'+'.amazonaws'+'.com\x22,\x22s3-'+'eu-central'+'-1.amazona'+'ws.com\x22,\x22s'+'3-eu-west-'+'1.amazonaw'+'s.com\x22,\x22s3'+'-eu-west-2'+'.amazonaws'+'.com\x22,\x22s3-'+'eu-west-3.'+'amazonaws.'+'com\x22,\x22s3-e'+'xternal-1.'+'amazonaws.'+'com\x22,\x22s3-f'+'ips-us-gov'+'-west-1.am'+'azonaws.co'+'m\x22,\x22s3-sa-'+'east-1.ama'+'zonaws.com'+'\x22,\x22s3-us-g'+'ov-west-1.'+'amazonaws.'+'com\x22,\x22s3-u'+'s-east-2.a'+'mazonaws.c'+'om\x22,\x22s3-us'+'-west-1.am'+'azonaws.co'+'m\x22,\x22s3-us-'+'west-2.ama'+'zonaws.com'+'\x22,\x22s3.ap-n'+'ortheast-2'+'.amazonaws'+'.com\x22,\x22s3.')+('ap-south-1'+'.amazonaws'+'.com\x22,\x22s3.'+'cn-north-1'+'.amazonaws'+'.com.cn\x22,\x22'+'s3.ca-cent'+'ral-1.amaz'+'onaws.com\x22'+',\x22s3.eu-ce'+'ntral-1.am'+'azonaws.co'+'m\x22,\x22s3.eu-'+'west-2.ama'+'zonaws.com'+'\x22,\x22s3.eu-w'+'est-3.amaz'+'onaws.com\x22'+',\x22s3.us-ea'+'st-2.amazo'+'naws.com\x22,'+'\x22s3.dualst'+'ack.ap-nor'+'theast-1.a'+'mazonaws.c'+'om\x22,\x22s3.du'+'alstack.ap'+'-northeast'+'-2.amazona'+'ws.com\x22,\x22s'+'3.dualstac'+'k.ap-south'+'-1.amazona'+'ws.com\x22,\x22s'+'3.dualstac'+'k.ap-south'+'east-1.ama'+'zonaws.com'+'\x22,\x22s3.dual'+'stack.ap-s'+'outheast-2'+'.amazonaws'+'.com\x22,\x22s3.'+'dualstack.'+'ca-central'+'-1.amazona'+'ws.com\x22,\x22s'+'3.dualstac'+'k.eu-centr'+'al-1.amazo'+'naws.com\x22,'+'\x22s3.dualst'+'ack.eu-wes'+'t-1.amazon'+'aws.com\x22,\x22'+'s3.dualsta'+'ck.eu-west'+'-2.amazona'+'ws.com\x22,\x22s'+'3.dualstac'+'k.eu-west-'+'3.amazonaw'+'s.com\x22,\x22s3'+'.dualstack'+'.sa-east-1'+'.amazonaws'+'.com\x22,\x22s3.'+'dualstack.'+'us-east-1.'+'amazonaws.'+'com\x22,\x22s3.d'+'ualstack.u'+'s-east-2.a'+'mazonaws.c'+'om\x22,\x22s3-we'+'bsite-us-e'+'ast-1.amaz'+'onaws.com\x22'+',\x22s3-websi'+'te-us-west'+'-1.amazona'+'ws.com\x22,\x22s'+'3-website-'+'us-west-2.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite-ap-'+'northeast-'+'1.amazonaw'+'s.com\x22,\x22s3'+'-website-a'+'p-southeas'+'t-1.amazon'+'aws.com\x22,\x22'+'s3-website'+'-ap-southe'+'ast-2.amaz'+'onaws.com\x22'+',\x22s3-websi'+'te-eu-west')+('-1.amazona'+'ws.com\x22,\x22s'+'3-website-'+'sa-east-1.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite.ap-'+'northeast-'+'2.amazonaw'+'s.com\x22,\x22s3'+'-website.a'+'p-south-1.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite.ca-'+'central-1.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite.eu-'+'central-1.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite.eu-'+'west-2.ama'+'zonaws.com'+'\x22,\x22s3-webs'+'ite.eu-wes'+'t-3.amazon'+'aws.com\x22,\x22'+'s3-website'+'.us-east-2'+'.amazonaws'+'.com\x22,\x22ams'+'w.nl\x22,\x22t3l'+'3p0rt.net\x22'+',\x22tele.amu'+'ne.org\x22,\x22a'+'pigee.io\x22,'+'\x22on-aptibl'+'e.com\x22,\x22us'+'er.aseinet'+'.ne.jp\x22,\x22g'+'v.vc\x22,\x22d.g'+'v.vc\x22,\x22use'+'r.party.eu'+'s\x22,\x22pimien'+'ta.org\x22,\x22p'+'oivron.org'+'\x22,\x22potager'+'.org\x22,\x22swe'+'etpepper.o'+'rg\x22,\x22myasu'+'stor.com\x22,'+'\x22myfritz.n'+'et\x22,\x22*.awd'+'ev.ca\x22,\x22*.'+'advisor.ws'+'\x22,\x22b-data.'+'io\x22,\x22backp'+'laneapp.io'+'\x22,\x22balena-'+'devices.co'+'m\x22,\x22app.ba'+'nzaicloud.'+'io\x22,\x22betai'+'nabox.com\x22'+',\x22bnr.la\x22,'+'\x22blackbaud'+'cdn.net\x22,\x22'+'boomla.net'+'\x22,\x22boxfuse'+'.io\x22,\x22squa'+'re7.ch\x22,\x22b'+'placed.com'+'\x22,\x22bplaced'+'.de\x22,\x22squa'+'re7.de\x22,\x22b'+'placed.net'+'\x22,\x22square7'+'.net\x22,\x22bro'+'wsersafety'+'mark.io\x22,\x22'+'uk0.bigv.i'+'o\x22,\x22dh.byt'+'emark.co.u'+'k\x22,\x22vm.byt'+'emark.co.u'+'k\x22,\x22mycd.e'+'u\x22,\x22carrd.'+'co\x22,\x22crd.c'+'o\x22,\x22uwu.ai'+'\x22,\x22ae.org\x22'+',\x22ar.com\x22,'+'\x22br.com\x22,\x22'+'cn.com\x22,\x22c'+'om.de\x22,\x22co'+'m.se\x22,\x22de.'+'com\x22,\x22eu.c'+'om\x22,\x22gb.co'+'m\x22,\x22gb.net')+('\x22,\x22hu.com\x22'+',\x22hu.net\x22,'+'\x22jp.net\x22,\x22'+'jpn.com\x22,\x22'+'kr.com\x22,\x22m'+'ex.com\x22,\x22n'+'o.com\x22,\x22qc'+'.com\x22,\x22ru.'+'com\x22,\x22sa.c'+'om\x22,\x22se.ne'+'t\x22,\x22uk.com'+'\x22,\x22uk.net\x22'+',\x22us.com\x22,'+'\x22uy.com\x22,\x22'+'za.bz\x22,\x22za'+'.com\x22,\x22afr'+'ica.com\x22,\x22'+'gr.com\x22,\x22i'+'n.net\x22,\x22us'+'.org\x22,\x22co.'+'com\x22,\x22c.la'+'\x22,\x22certmgr'+'.org\x22,\x22xen'+'apponazure'+'.com\x22,\x22dis'+'course.gro'+'up\x22,\x22disco'+'urse.team\x22'+',\x22virtueel'+'domein.nl\x22'+',\x22cleverap'+'ps.io\x22,\x22*.'+'lcl.dev\x22,\x22'+'*.stg.dev\x22'+',\x22c66.me\x22,'+'\x22cloud66.w'+'s\x22,\x22cloud6'+'6.zone\x22,\x22j'+'devcloud.c'+'om\x22,\x22wpdev'+'cloud.com\x22'+',\x22cloudacc'+'ess.host\x22,'+'\x22freesite.'+'host\x22,\x22clo'+'udaccess.n'+'et\x22,\x22cloud'+'controlled'+'.com\x22,\x22clo'+'udcontrola'+'pp.com\x22,\x22c'+'loudera.si'+'te\x22,\x22trycl'+'oudflare.c'+'om\x22,\x22worke'+'rs.dev\x22,\x22w'+'next.app\x22,'+'\x22co.ca\x22,\x22*'+'.otap.co\x22,'+'\x22co.cz\x22,\x22c'+'.cdn77.org'+'\x22,\x22cdn77-s'+'sl.net\x22,\x22r'+'.cdn77.net'+'\x22,\x22rsc.cdn'+'77.org\x22,\x22s'+'sl.origin.'+'cdn77-secu'+'re.org\x22,\x22c'+'loudns.asi'+'a\x22,\x22cloudn'+'s.biz\x22,\x22cl'+'oudns.club'+'\x22,\x22cloudns'+'.cc\x22,\x22clou'+'dns.eu\x22,\x22c'+'loudns.in\x22'+',\x22cloudns.'+'info\x22,\x22clo'+'udns.org\x22,'+'\x22cloudns.p'+'ro\x22,\x22cloud'+'ns.pw\x22,\x22cl'+'oudns.us\x22,'+'\x22cloudeity'+'.net\x22,\x22cnp'+'y.gdn\x22,\x22co'+'.nl\x22,\x22co.n'+'o\x22,\x22webhos'+'ting.be\x22,\x22'+'hosting-cl'+'uster.nl\x22,'+'\x22ac.ru\x22,\x22e'+'du.ru\x22,\x22go'+'v.ru\x22,\x22int'+'.ru\x22,\x22mil.'+'ru\x22,\x22test.'+'ru\x22,\x22dyn.c'+'osidns.de\x22'+',\x22dynamisc')+('hes-dns.de'+'\x22,\x22dnsupda'+'ter.de\x22,\x22i'+'nternet-dn'+'s.de\x22,\x22l-o'+'-g-i-n.de\x22'+',\x22dynamic-'+'dns.info\x22,'+'\x22feste-ip.'+'net\x22,\x22knx-'+'server.net'+'\x22,\x22static-'+'access.net'+'\x22,\x22realm.c'+'z\x22,\x22*.cryp'+'tonomic.ne'+'t\x22,\x22cupcak'+'e.is\x22,\x22*.c'+'ustomer-oc'+'i.com\x22,\x22*.'+'oci.custom'+'er-oci.com'+'\x22,\x22*.ocp.c'+'ustomer-oc'+'i.com\x22,\x22*.'+'ocs.custom'+'er-oci.com'+'\x22,\x22cyon.li'+'nk\x22,\x22cyon.'+'site\x22,\x22dap'+'lie.me\x22,\x22l'+'ocalhost.d'+'aplie.me\x22,'+'\x22dattoloca'+'l.com\x22,\x22da'+'ttorelay.c'+'om\x22,\x22datto'+'web.com\x22,\x22'+'mydatto.co'+'m\x22,\x22dattol'+'ocal.net\x22,'+'\x22mydatto.n'+'et\x22,\x22biz.d'+'k\x22,\x22co.dk\x22'+',\x22firm.dk\x22'+',\x22reg.dk\x22,'+'\x22store.dk\x22'+',\x22*.dapps.'+'earth\x22,\x22*.'+'bzz.dapps.'+'earth\x22,\x22bu'+'iltwithdar'+'k.com\x22,\x22ed'+'gestack.me'+'\x22,\x22debian.'+'net\x22,\x22dedy'+'n.io\x22,\x22dns'+'home.de\x22,\x22'+'online.th\x22'+',\x22shop.th\x22'+',\x22drayddns'+'.com\x22,\x22dre'+'amhosters.'+'com\x22,\x22mydr'+'obo.com\x22,\x22'+'drud.io\x22,\x22'+'drud.us\x22,\x22'+'duckdns.or'+'g\x22,\x22dy.fi\x22'+',\x22tunk.org'+'\x22,\x22dyndns-'+'at-home.co'+'m\x22,\x22dyndns'+'-at-work.c'+'om\x22,\x22dyndn'+'s-blog.com'+'\x22,\x22dyndns-'+'free.com\x22,'+'\x22dyndns-ho'+'me.com\x22,\x22d'+'yndns-ip.c'+'om\x22,\x22dyndn'+'s-mail.com'+'\x22,\x22dyndns-'+'office.com'+'\x22,\x22dyndns-'+'pics.com\x22,'+'\x22dyndns-re'+'mote.com\x22,'+'\x22dyndns-se'+'rver.com\x22,'+'\x22dyndns-we'+'b.com\x22,\x22dy'+'ndns-wiki.'+'com\x22,\x22dynd'+'ns-work.co'+'m\x22,\x22dyndns'+'.biz\x22,\x22dyn'+'dns.info\x22,'+'\x22dyndns.or')+('g\x22,\x22dyndns'+'.tv\x22,\x22at-b'+'and-camp.n'+'et\x22,\x22ath.c'+'x\x22,\x22barrel'+'-of-knowle'+'dge.info\x22,'+'\x22barrell-o'+'f-knowledg'+'e.info\x22,\x22b'+'etter-than'+'.tv\x22,\x22blog'+'dns.com\x22,\x22'+'blogdns.ne'+'t\x22,\x22blogdn'+'s.org\x22,\x22bl'+'ogsite.org'+'\x22,\x22boldlyg'+'oingnowher'+'e.org\x22,\x22br'+'oke-it.net'+'\x22,\x22buyshou'+'ses.net\x22,\x22'+'cechire.co'+'m\x22,\x22dnsali'+'as.com\x22,\x22d'+'nsalias.ne'+'t\x22,\x22dnsali'+'as.org\x22,\x22d'+'nsdojo.com'+'\x22,\x22dnsdojo'+'.net\x22,\x22dns'+'dojo.org\x22,'+'\x22does-it.n'+'et\x22,\x22doesn'+'texist.com'+'\x22,\x22doesnte'+'xist.org\x22,'+'\x22dontexist'+'.com\x22,\x22don'+'texist.net'+'\x22,\x22dontexi'+'st.org\x22,\x22d'+'oomdns.com'+'\x22,\x22doomdns'+'.org\x22,\x22dvr'+'dns.org\x22,\x22'+'dyn-o-saur'+'.com\x22,\x22dyn'+'alias.com\x22'+',\x22dynalias'+'.net\x22,\x22dyn'+'alias.org\x22'+',\x22dynathom'+'e.net\x22,\x22dy'+'ndns.ws\x22,\x22'+'endofinter'+'net.net\x22,\x22'+'endofinter'+'net.org\x22,\x22'+'endofthein'+'ternet.org'+'\x22,\x22est-a-l'+'a-maison.c'+'om\x22,\x22est-a'+'-la-masion'+'.com\x22,\x22est'+'-le-patron'+'.com\x22,\x22est'+'-mon-blogu'+'eur.com\x22,\x22'+'for-better'+'.biz\x22,\x22for'+'-more.biz\x22'+',\x22for-our.'+'info\x22,\x22for'+'-some.biz\x22'+',\x22for-the.'+'biz\x22,\x22forg'+'ot.her.nam'+'e\x22,\x22forgot'+'.his.name\x22'+',\x22from-ak.'+'com\x22,\x22from'+'-al.com\x22,\x22'+'from-ar.co'+'m\x22,\x22from-a'+'z.net\x22,\x22fr'+'om-ca.com\x22'+',\x22from-co.'+'net\x22,\x22from'+'-ct.com\x22,\x22'+'from-dc.co'+'m\x22,\x22from-d'+'e.com\x22,\x22fr'+'om-fl.com\x22'+',\x22from-ga.'+'com\x22,\x22from'+'-hi.com\x22,\x22'+'from-ia.co')+('m\x22,\x22from-i'+'d.com\x22,\x22fr'+'om-il.com\x22'+',\x22from-in.'+'com\x22,\x22from'+'-ks.com\x22,\x22'+'from-ky.co'+'m\x22,\x22from-l'+'a.net\x22,\x22fr'+'om-ma.com\x22'+',\x22from-md.'+'com\x22,\x22from'+'-me.org\x22,\x22'+'from-mi.co'+'m\x22,\x22from-m'+'n.com\x22,\x22fr'+'om-mo.com\x22'+',\x22from-ms.'+'com\x22,\x22from'+'-mt.com\x22,\x22'+'from-nc.co'+'m\x22,\x22from-n'+'d.com\x22,\x22fr'+'om-ne.com\x22'+',\x22from-nh.'+'com\x22,\x22from'+'-nj.com\x22,\x22'+'from-nm.co'+'m\x22,\x22from-n'+'v.com\x22,\x22fr'+'om-ny.net\x22'+',\x22from-oh.'+'com\x22,\x22from'+'-ok.com\x22,\x22'+'from-or.co'+'m\x22,\x22from-p'+'a.com\x22,\x22fr'+'om-pr.com\x22'+',\x22from-ri.'+'com\x22,\x22from'+'-sc.com\x22,\x22'+'from-sd.co'+'m\x22,\x22from-t'+'n.com\x22,\x22fr'+'om-tx.com\x22'+',\x22from-ut.'+'com\x22,\x22from'+'-va.com\x22,\x22'+'from-vt.co'+'m\x22,\x22from-w'+'a.com\x22,\x22fr'+'om-wi.com\x22'+',\x22from-wv.'+'com\x22,\x22from'+'-wy.com\x22,\x22'+'ftpaccess.'+'cc\x22,\x22fuett'+'ertdasnetz'+'.de\x22,\x22game'+'-host.org\x22'+',\x22game-ser'+'ver.cc\x22,\x22g'+'etmyip.com'+'\x22,\x22gets-it'+'.net\x22,\x22go.'+'dyndns.org'+'\x22,\x22gotdns.'+'com\x22,\x22gotd'+'ns.org\x22,\x22g'+'roks-the.i'+'nfo\x22,\x22grok'+'s-this.inf'+'o\x22,\x22ham-ra'+'dio-op.net'+'\x22,\x22here-fo'+'r-more.inf'+'o\x22,\x22hobby-'+'site.com\x22,'+'\x22hobby-sit'+'e.org\x22,\x22ho'+'me.dyndns.'+'org\x22,\x22home'+'dns.org\x22,\x22'+'homeftp.ne'+'t\x22,\x22homeft'+'p.org\x22,\x22ho'+'meip.net\x22,'+'\x22homelinux'+'.com\x22,\x22hom'+'elinux.net'+'\x22,\x22homelin'+'ux.org\x22,\x22h'+'omeunix.co'+'m\x22,\x22homeun'+'ix.net\x22,\x22h'+'omeunix.or'+'g\x22,\x22iamall'+'ama.com\x22,\x22'+'in-the-ban'+'d.net\x22,\x22is')+('-a-anarchi'+'st.com\x22,\x22i'+'s-a-blogge'+'r.com\x22,\x22is'+'-a-bookkee'+'per.com\x22,\x22'+'is-a-bruin'+'sfan.org\x22,'+'\x22is-a-bull'+'s-fan.com\x22'+',\x22is-a-can'+'didate.org'+'\x22,\x22is-a-ca'+'terer.com\x22'+',\x22is-a-cel'+'ticsfan.or'+'g\x22,\x22is-a-c'+'hef.com\x22,\x22'+'is-a-chef.'+'net\x22,\x22is-a'+'-chef.org\x22'+',\x22is-a-con'+'servative.'+'com\x22,\x22is-a'+'-cpa.com\x22,'+'\x22is-a-cubi'+'cle-slave.'+'com\x22,\x22is-a'+'-democrat.'+'com\x22,\x22is-a'+'-designer.'+'com\x22,\x22is-a'+'-doctor.co'+'m\x22,\x22is-a-f'+'inancialad'+'visor.com\x22'+',\x22is-a-gee'+'k.com\x22,\x22is'+'-a-geek.ne'+'t\x22,\x22is-a-g'+'eek.org\x22,\x22'+'is-a-green'+'.com\x22,\x22is-'+'a-guru.com'+'\x22,\x22is-a-ha'+'rd-worker.'+'com\x22,\x22is-a'+'-hunter.co'+'m\x22,\x22is-a-k'+'night.org\x22'+',\x22is-a-lan'+'dscaper.co'+'m\x22,\x22is-a-l'+'awyer.com\x22'+',\x22is-a-lib'+'eral.com\x22,'+'\x22is-a-libe'+'rtarian.co'+'m\x22,\x22is-a-l'+'inux-user.'+'org\x22,\x22is-a'+'-llama.com'+'\x22,\x22is-a-mu'+'sician.com'+'\x22,\x22is-a-na'+'scarfan.co'+'m\x22,\x22is-a-n'+'urse.com\x22,'+'\x22is-a-pain'+'ter.com\x22,\x22'+'is-a-patsf'+'an.org\x22,\x22i'+'s-a-person'+'altrainer.'+'com\x22,\x22is-a'+'-photograp'+'her.com\x22,\x22'+'is-a-playe'+'r.com\x22,\x22is'+'-a-republi'+'can.com\x22,\x22'+'is-a-rocks'+'tar.com\x22,\x22'+'is-a-socia'+'list.com\x22,'+'\x22is-a-soxf'+'an.org\x22,\x22i'+'s-a-studen'+'t.com\x22,\x22is'+'-a-teacher'+'.com\x22,\x22is-'+'a-techie.c'+'om\x22,\x22is-a-'+'therapist.'+'com\x22,\x22is-a'+'n-accounta'+'nt.com\x22,\x22i'+'s-an-actor'+'.com\x22,\x22is-'+'an-actress')+('.com\x22,\x22is-'+'an-anarchi'+'st.com\x22,\x22i'+'s-an-artis'+'t.com\x22,\x22is'+'-an-engine'+'er.com\x22,\x22i'+'s-an-enter'+'tainer.com'+'\x22,\x22is-by.u'+'s\x22,\x22is-cer'+'tified.com'+'\x22,\x22is-foun'+'d.org\x22,\x22is'+'-gone.com\x22'+',\x22is-into-'+'anime.com\x22'+',\x22is-into-'+'cars.com\x22,'+'\x22is-into-c'+'artoons.co'+'m\x22,\x22is-int'+'o-games.co'+'m\x22,\x22is-lee'+'t.com\x22,\x22is'+'-lost.org\x22'+',\x22is-not-c'+'ertified.c'+'om\x22,\x22is-sa'+'ved.org\x22,\x22'+'is-slick.c'+'om\x22,\x22is-ub'+'erleet.com'+'\x22,\x22is-very'+'-bad.org\x22,'+'\x22is-very-e'+'vil.org\x22,\x22'+'is-very-go'+'od.org\x22,\x22i'+'s-very-nic'+'e.org\x22,\x22is'+'-very-swee'+'t.org\x22,\x22is'+'-with-theb'+'and.com\x22,\x22'+'isa-geek.c'+'om\x22,\x22isa-g'+'eek.net\x22,\x22'+'isa-geek.o'+'rg\x22,\x22isa-h'+'ockeynut.c'+'om\x22,\x22issma'+'rterthanyo'+'u.com\x22,\x22is'+'teingeek.d'+'e\x22,\x22istmei'+'n.de\x22,\x22kic'+'ks-ass.net'+'\x22,\x22kicks-a'+'ss.org\x22,\x22k'+'nowsitall.'+'info\x22,\x22lan'+'d-4-sale.u'+'s\x22,\x22lebtim'+'netz.de\x22,\x22'+'leitungsen'+'.de\x22,\x22like'+'s-pie.com\x22'+',\x22likescan'+'dy.com\x22,\x22m'+'erseine.nu'+'\x22,\x22mine.nu'+'\x22,\x22misconf'+'used.org\x22,'+'\x22mypets.ws'+'\x22,\x22myphoto'+'s.cc\x22,\x22nea'+'t-url.com\x22'+',\x22office-o'+'n-the.net\x22'+',\x22on-the-w'+'eb.tv\x22,\x22po'+'dzone.net\x22'+',\x22podzone.'+'org\x22,\x22read'+'myblog.org'+'\x22,\x22saves-t'+'he-whales.'+'com\x22,\x22scra'+'pper-site.'+'net\x22,\x22scra'+'pping.cc\x22,'+'\x22selfip.bi'+'z\x22,\x22selfip'+'.com\x22,\x22sel'+'fip.info\x22,'+'\x22selfip.ne'+'t\x22,\x22selfip'+'.org\x22,\x22sel'+'ls-for-les')+('s.com\x22,\x22se'+'lls-for-u.'+'com\x22,\x22sell'+'s-it.net\x22,'+'\x22sellsyour'+'home.org\x22,'+'\x22servebbs.'+'com\x22,\x22serv'+'ebbs.net\x22,'+'\x22servebbs.'+'org\x22,\x22serv'+'eftp.net\x22,'+'\x22serveftp.'+'org\x22,\x22serv'+'egame.org\x22'+',\x22shacknet'+'.nu\x22,\x22simp'+'le-url.com'+'\x22,\x22space-t'+'o-rent.com'+'\x22,\x22stuff-4'+'-sale.org\x22'+',\x22stuff-4-'+'sale.us\x22,\x22'+'teaches-yo'+'ga.com\x22,\x22t'+'hruhere.ne'+'t\x22,\x22traeum'+'tgerade.de'+'\x22,\x22webhop.'+'biz\x22,\x22webh'+'op.info\x22,\x22'+'webhop.net'+'\x22,\x22webhop.'+'org\x22,\x22wors'+'e-than.tv\x22'+',\x22writesth'+'isblog.com'+'\x22,\x22ddnss.d'+'e\x22,\x22dyn.dd'+'nss.de\x22,\x22d'+'yndns.ddns'+'s.de\x22,\x22dyn'+'dns1.de\x22,\x22'+'dyn-ip24.d'+'e\x22,\x22home-w'+'ebserver.d'+'e\x22,\x22dyn.ho'+'me-webserv'+'er.de\x22,\x22my'+'home-serve'+'r.de\x22,\x22ddn'+'ss.org\x22,\x22d'+'efinima.ne'+'t\x22,\x22defini'+'ma.io\x22,\x22bc'+'i.dnstrace'+'.pro\x22,\x22ddn'+'sfree.com\x22'+',\x22ddnsgeek'+'.com\x22,\x22gii'+'ze.com\x22,\x22g'+'leeze.com\x22'+',\x22kozow.co'+'m\x22,\x22loseyo'+'urip.com\x22,'+'\x22ooguy.com'+'\x22,\x22thework'+'pc.com\x22,\x22c'+'asacam.net'+'\x22,\x22dynu.ne'+'t\x22,\x22access'+'cam.org\x22,\x22'+'camdvr.org'+'\x22,\x22freeddn'+'s.org\x22,\x22my'+'wire.org\x22,'+'\x22webredire'+'ct.org\x22,\x22m'+'yddns.rock'+'s\x22,\x22blogsi'+'te.xyz\x22,\x22d'+'ynv6.net\x22,'+'\x22e4.cz\x22,\x22e'+'n-root.fr\x22'+',\x22mytuleap'+'.com\x22,\x22onr'+'ed.one\x22,\x22s'+'taging.onr'+'ed.one\x22,\x22e'+'nonic.io\x22,'+'\x22customer.'+'enonic.io\x22'+',\x22eu.org\x22,'+'\x22al.eu.org'+'\x22,\x22asso.eu'+'.org\x22,\x22at.'+'eu.org\x22,\x22a'+'u.eu.org\x22,'+'\x22be.eu.org')+('\x22,\x22bg.eu.o'+'rg\x22,\x22ca.eu'+'.org\x22,\x22cd.'+'eu.org\x22,\x22c'+'h.eu.org\x22,'+'\x22cn.eu.org'+'\x22,\x22cy.eu.o'+'rg\x22,\x22cz.eu'+'.org\x22,\x22de.'+'eu.org\x22,\x22d'+'k.eu.org\x22,'+'\x22edu.eu.or'+'g\x22,\x22ee.eu.'+'org\x22,\x22es.e'+'u.org\x22,\x22fi'+'.eu.org\x22,\x22'+'fr.eu.org\x22'+',\x22gr.eu.or'+'g\x22,\x22hr.eu.'+'org\x22,\x22hu.e'+'u.org\x22,\x22ie'+'.eu.org\x22,\x22'+'il.eu.org\x22'+',\x22in.eu.or'+'g\x22,\x22int.eu'+'.org\x22,\x22is.'+'eu.org\x22,\x22i'+'t.eu.org\x22,'+'\x22jp.eu.org'+'\x22,\x22kr.eu.o'+'rg\x22,\x22lt.eu'+'.org\x22,\x22lu.'+'eu.org\x22,\x22l'+'v.eu.org\x22,'+'\x22mc.eu.org'+'\x22,\x22me.eu.o'+'rg\x22,\x22mk.eu'+'.org\x22,\x22mt.'+'eu.org\x22,\x22m'+'y.eu.org\x22,'+'\x22net.eu.or'+'g\x22,\x22ng.eu.'+'org\x22,\x22nl.e'+'u.org\x22,\x22no'+'.eu.org\x22,\x22'+'nz.eu.org\x22'+',\x22paris.eu'+'.org\x22,\x22pl.'+'eu.org\x22,\x22p'+'t.eu.org\x22,'+'\x22q-a.eu.or'+'g\x22,\x22ro.eu.'+'org\x22,\x22ru.e'+'u.org\x22,\x22se'+'.eu.org\x22,\x22'+'si.eu.org\x22'+',\x22sk.eu.or'+'g\x22,\x22tr.eu.'+'org\x22,\x22uk.e'+'u.org\x22,\x22us'+'.eu.org\x22,\x22'+'eu-1.evenn'+'ode.com\x22,\x22'+'eu-2.evenn'+'ode.com\x22,\x22'+'eu-3.evenn'+'ode.com\x22,\x22'+'eu-4.evenn'+'ode.com\x22,\x22'+'us-1.evenn'+'ode.com\x22,\x22'+'us-2.evenn'+'ode.com\x22,\x22'+'us-3.evenn'+'ode.com\x22,\x22'+'us-4.evenn'+'ode.com\x22,\x22'+'twmail.cc\x22'+',\x22twmail.n'+'et\x22,\x22twmai'+'l.org\x22,\x22my'+'mailer.com'+'.tw\x22,\x22url.'+'tw\x22,\x22apps.'+'fbsbx.com\x22'+',\x22ru.net\x22,'+'\x22adygeya.r'+'u\x22,\x22bashki'+'ria.ru\x22,\x22b'+'ir.ru\x22,\x22cb'+'g.ru\x22,\x22com'+'.ru\x22,\x22dage'+'stan.ru\x22,\x22'+'grozny.ru\x22'+',\x22kalmykia'+'.ru\x22,\x22kust'+'anai.ru\x22,\x22'+'marine.ru\x22'+',\x22mordovia'+'.ru\x22,\x22msk.')+('ru\x22,\x22mytis'+'.ru\x22,\x22nalc'+'hik.ru\x22,\x22n'+'ov.ru\x22,\x22py'+'atigorsk.r'+'u\x22,\x22spb.ru'+'\x22,\x22vladika'+'vkaz.ru\x22,\x22'+'vladimir.r'+'u\x22,\x22abkhaz'+'ia.su\x22,\x22ad'+'ygeya.su\x22,'+'\x22aktyubins'+'k.su\x22,\x22ark'+'hangelsk.s'+'u\x22,\x22armeni'+'a.su\x22,\x22ash'+'gabad.su\x22,'+'\x22azerbaija'+'n.su\x22,\x22bal'+'ashov.su\x22,'+'\x22bashkiria'+'.su\x22,\x22brya'+'nsk.su\x22,\x22b'+'ukhara.su\x22'+',\x22chimkent'+'.su\x22,\x22dage'+'stan.su\x22,\x22'+'east-kazak'+'hstan.su\x22,'+'\x22exnet.su\x22'+',\x22georgia.'+'su\x22,\x22grozn'+'y.su\x22,\x22iva'+'novo.su\x22,\x22'+'jambyl.su\x22'+',\x22kalmykia'+'.su\x22,\x22kalu'+'ga.su\x22,\x22ka'+'racol.su\x22,'+'\x22karaganda'+'.su\x22,\x22kare'+'lia.su\x22,\x22k'+'hakassia.s'+'u\x22,\x22krasno'+'dar.su\x22,\x22k'+'urgan.su\x22,'+'\x22kustanai.'+'su\x22,\x22lenug'+'.su\x22,\x22mang'+'yshlak.su\x22'+',\x22mordovia'+'.su\x22,\x22msk.'+'su\x22,\x22murma'+'nsk.su\x22,\x22n'+'alchik.su\x22'+',\x22navoi.su'+'\x22,\x22north-k'+'azakhstan.'+'su\x22,\x22nov.s'+'u\x22,\x22obnins'+'k.su\x22,\x22pen'+'za.su\x22,\x22po'+'krovsk.su\x22'+',\x22sochi.su'+'\x22,\x22spb.su\x22'+',\x22tashkent'+'.su\x22,\x22term'+'ez.su\x22,\x22to'+'gliatti.su'+'\x22,\x22troitsk'+'.su\x22,\x22tsel'+'inograd.su'+'\x22,\x22tula.su'+'\x22,\x22tuva.su'+'\x22,\x22vladika'+'vkaz.su\x22,\x22'+'vladimir.s'+'u\x22,\x22vologd'+'a.su\x22,\x22cha'+'nnelsdvr.n'+'et\x22,\x22u.cha'+'nnelsdvr.n'+'et\x22,\x22fastl'+'y-terrariu'+'m.com\x22,\x22fa'+'stlylb.net'+'\x22,\x22map.fas'+'tlylb.net\x22'+',\x22freetls.'+'fastly.net'+'\x22,\x22map.fas'+'tly.net\x22,\x22'+'a.prod.fas'+'tly.net\x22,\x22'+'global.pro'+'d.fastly.n'+'et\x22,\x22a.ssl'+'.fastly.ne'+'t\x22,\x22b.ssl.')+('fastly.net'+'\x22,\x22global.'+'ssl.fastly'+'.net\x22,\x22fas'+'tpanel.dir'+'ect\x22,\x22fast'+'vps-server'+'.com\x22,\x22fha'+'pp.xyz\x22,\x22f'+'edorainfra'+'cloud.org\x22'+',\x22fedorape'+'ople.org\x22,'+'\x22cloud.fed'+'oraproject'+'.org\x22,\x22app'+'.os.fedora'+'project.or'+'g\x22,\x22app.os'+'.stg.fedor'+'aproject.o'+'rg\x22,\x22mydob'+'iss.com\x22,\x22'+'filegear.m'+'e\x22,\x22filege'+'ar-au.me\x22,'+'\x22filegear-'+'de.me\x22,\x22fi'+'legear-gb.'+'me\x22,\x22fileg'+'ear-ie.me\x22'+',\x22filegear'+'-jp.me\x22,\x22f'+'ilegear-sg'+'.me\x22,\x22fire'+'baseapp.co'+'m\x22,\x22flynnh'+'ub.com\x22,\x22f'+'lynnhostin'+'g.net\x22,\x220e'+'.vc\x22,\x22free'+'box-os.com'+'\x22,\x22freebox'+'os.com\x22,\x22f'+'bx-os.fr\x22,'+'\x22fbxos.fr\x22'+',\x22freebox-'+'os.fr\x22,\x22fr'+'eeboxos.fr'+'\x22,\x22freedes'+'ktop.org\x22,'+'\x22*.futurec'+'ms.at\x22,\x22*.'+'ex.futurec'+'ms.at\x22,\x22*.'+'in.futurec'+'ms.at\x22,\x22fu'+'turehostin'+'g.at\x22,\x22fut'+'uremailing'+'.at\x22,\x22*.ex'+'.ortsinfo.'+'at\x22,\x22*.kun'+'den.ortsin'+'fo.at\x22,\x22*.'+'statics.cl'+'oud\x22,\x22serv'+'ice.gov.uk'+'\x22,\x22gehirn.'+'ne.jp\x22,\x22us'+'ercontent.'+'jp\x22,\x22genta'+'pps.com\x22,\x22'+'lab.ms\x22,\x22g'+'ithub.io\x22,'+'\x22githubuse'+'rcontent.c'+'om\x22,\x22gitla'+'b.io\x22,\x22gli'+'tch.me\x22,\x22l'+'olipop.io\x22'+',\x22cloudapp'+'s.digital\x22'+',\x22london.c'+'loudapps.d'+'igital\x22,\x22h'+'omeoffice.'+'gov.uk\x22,\x22r'+'o.im\x22,\x22sho'+'p.ro\x22,\x22goi'+'p.de\x22,\x22run'+'.app\x22,\x22a.r'+'un.app\x22,\x22w'+'eb.app\x22,\x22*'+'.0emm.com\x22'+',\x22appspot.'+'com\x22,\x22*.r.'+'appspot.co'+'m\x22,\x22blogsp'+'ot.ae\x22,\x22bl')+('ogspot.al\x22'+',\x22blogspot'+'.am\x22,\x22blog'+'spot.ba\x22,\x22'+'blogspot.b'+'e\x22,\x22blogsp'+'ot.bg\x22,\x22bl'+'ogspot.bj\x22'+',\x22blogspot'+'.ca\x22,\x22blog'+'spot.cf\x22,\x22'+'blogspot.c'+'h\x22,\x22blogsp'+'ot.cl\x22,\x22bl'+'ogspot.co.'+'at\x22,\x22blogs'+'pot.co.id\x22'+',\x22blogspot'+'.co.il\x22,\x22b'+'logspot.co'+'.ke\x22,\x22blog'+'spot.co.nz'+'\x22,\x22blogspo'+'t.co.uk\x22,\x22'+'blogspot.c'+'o.za\x22,\x22blo'+'gspot.com\x22'+',\x22blogspot'+'.com.ar\x22,\x22'+'blogspot.c'+'om.au\x22,\x22bl'+'ogspot.com'+'.br\x22,\x22blog'+'spot.com.b'+'y\x22,\x22blogsp'+'ot.com.co\x22'+',\x22blogspot'+'.com.cy\x22,\x22'+'blogspot.c'+'om.ee\x22,\x22bl'+'ogspot.com'+'.eg\x22,\x22blog'+'spot.com.e'+'s\x22,\x22blogsp'+'ot.com.mt\x22'+',\x22blogspot'+'.com.ng\x22,\x22'+'blogspot.c'+'om.tr\x22,\x22bl'+'ogspot.com'+'.uy\x22,\x22blog'+'spot.cv\x22,\x22'+'blogspot.c'+'z\x22,\x22blogsp'+'ot.de\x22,\x22bl'+'ogspot.dk\x22'+',\x22blogspot'+'.fi\x22,\x22blog'+'spot.fr\x22,\x22'+'blogspot.g'+'r\x22,\x22blogsp'+'ot.hk\x22,\x22bl'+'ogspot.hr\x22'+',\x22blogspot'+'.hu\x22,\x22blog'+'spot.ie\x22,\x22'+'blogspot.i'+'n\x22,\x22blogsp'+'ot.is\x22,\x22bl'+'ogspot.it\x22'+',\x22blogspot'+'.jp\x22,\x22blog'+'spot.kr\x22,\x22'+'blogspot.l'+'i\x22,\x22blogsp'+'ot.lt\x22,\x22bl'+'ogspot.lu\x22'+',\x22blogspot'+'.md\x22,\x22blog'+'spot.mk\x22,\x22'+'blogspot.m'+'r\x22,\x22blogsp'+'ot.mx\x22,\x22bl'+'ogspot.my\x22'+',\x22blogspot'+'.nl\x22,\x22blog'+'spot.no\x22,\x22'+'blogspot.p'+'e\x22,\x22blogsp'+'ot.pt\x22,\x22bl'+'ogspot.qa\x22'+',\x22blogspot'+'.re\x22,\x22blog'+'spot.ro\x22,\x22'+'blogspot.r'+'s\x22,\x22blogsp'+'ot.ru\x22,\x22bl'+'ogspot.se\x22'+',\x22blogspot'+'.sg\x22,\x22blog')+('spot.si\x22,\x22'+'blogspot.s'+'k\x22,\x22blogsp'+'ot.sn\x22,\x22bl'+'ogspot.td\x22'+',\x22blogspot'+'.tw\x22,\x22blog'+'spot.ug\x22,\x22'+'blogspot.v'+'n\x22,\x22cloudf'+'unctions.n'+'et\x22,\x22cloud'+'.goog\x22,\x22co'+'despot.com'+'\x22,\x22googlea'+'pis.com\x22,\x22'+'googlecode'+'.com\x22,\x22pag'+'espeedmobi'+'lizer.com\x22'+',\x22publishp'+'roxy.com\x22,'+'\x22withgoogl'+'e.com\x22,\x22wi'+'thyoutube.'+'com\x22,\x22awsm'+'ppl.com\x22,\x22'+'fin.ci\x22,\x22f'+'ree.hr\x22,\x22c'+'aa.li\x22,\x22ua'+'.rs\x22,\x22conf'+'.se\x22,\x22hs.z'+'one\x22,\x22hs.r'+'un\x22,\x22hashb'+'ang.sh\x22,\x22h'+'asura.app\x22'+',\x22hasura-a'+'pp.io\x22,\x22he'+'pforge.org'+'\x22,\x22herokua'+'pp.com\x22,\x22h'+'erokussl.c'+'om\x22,\x22myrav'+'endb.com\x22,'+'\x22ravendb.c'+'ommunity\x22,'+'\x22ravendb.m'+'e\x22,\x22develo'+'pment.run\x22'+',\x22ravendb.'+'run\x22,\x22bpl.'+'biz\x22,\x22orx.'+'biz\x22,\x22ng.c'+'ity\x22,\x22biz.'+'gl\x22,\x22ng.in'+'k\x22,\x22col.ng'+'\x22,\x22firm.ng'+'\x22,\x22gen.ng\x22'+',\x22ltd.ng\x22,'+'\x22ngo.ng\x22,\x22'+'ng.school\x22'+',\x22sch.so\x22,'+'\x22hƤkkinen.'+'fi\x22,\x22*.moo'+'nscale.io\x22'+',\x22moonscal'+'e.net\x22,\x22ik'+'i.fi\x22,\x22dyn'+'-berlin.de'+'\x22,\x22in-berl'+'in.de\x22,\x22in'+'-brb.de\x22,\x22'+'in-butter.'+'de\x22,\x22in-ds'+'l.de\x22,\x22in-'+'dsl.net\x22,\x22'+'in-dsl.org'+'\x22,\x22in-vpn.'+'de\x22,\x22in-vp'+'n.net\x22,\x22in'+'-vpn.org\x22,'+'\x22biz.at\x22,\x22'+'info.at\x22,\x22'+'info.cx\x22,\x22'+'ac.leg.br\x22'+',\x22al.leg.b'+'r\x22,\x22am.leg'+'.br\x22,\x22ap.l'+'eg.br\x22,\x22ba'+'.leg.br\x22,\x22'+'ce.leg.br\x22'+',\x22df.leg.b'+'r\x22,\x22es.leg'+'.br\x22,\x22go.l'+'eg.br\x22,\x22ma'+'.leg.br\x22,\x22'+'mg.leg.br\x22'+',\x22ms.leg.b'+'r\x22,\x22mt.leg'+'.br\x22,\x22pa.l')+('eg.br\x22,\x22pb'+'.leg.br\x22,\x22'+'pe.leg.br\x22'+',\x22pi.leg.b'+'r\x22,\x22pr.leg'+'.br\x22,\x22rj.l'+'eg.br\x22,\x22rn'+'.leg.br\x22,\x22'+'ro.leg.br\x22'+',\x22rr.leg.b'+'r\x22,\x22rs.leg'+'.br\x22,\x22sc.l'+'eg.br\x22,\x22se'+'.leg.br\x22,\x22'+'sp.leg.br\x22'+',\x22to.leg.b'+'r\x22,\x22pixoli'+'no.com\x22,\x22i'+'pifony.net'+'\x22,\x22mein-is'+'erv.de\x22,\x22t'+'est-iserv.'+'de\x22,\x22iserv'+'.dev\x22,\x22iob'+'b.net\x22,\x22my'+'jino.ru\x22,\x22'+'*.hosting.'+'myjino.ru\x22'+',\x22*.landin'+'g.myjino.r'+'u\x22,\x22*.spec'+'trum.myjin'+'o.ru\x22,\x22*.v'+'ps.myjino.'+'ru\x22,\x22*.tri'+'ton.zone\x22,'+'\x22*.cns.joy'+'ent.com\x22,\x22'+'js.org\x22,\x22k'+'aas.gg\x22,\x22k'+'hplay.nl\x22,'+'\x22keymachin'+'e.de\x22,\x22kin'+'ghost.net\x22'+',\x22uni5.net'+'\x22,\x22knightp'+'oint.syste'+'ms\x22,\x22oya.t'+'o\x22,\x22co.krd'+'\x22,\x22edu.krd'+'\x22,\x22git-rep'+'os.de\x22,\x22lc'+'ube-server'+'.de\x22,\x22svn-'+'repos.de\x22,'+'\x22leadpages'+'.co\x22,\x22lpag'+'es.co\x22,\x22lp'+'userconten'+'t.com\x22,\x22le'+'lux.site\x22,'+'\x22co.busine'+'ss\x22,\x22co.ed'+'ucation\x22,\x22'+'co.events\x22'+',\x22co.finan'+'cial\x22,\x22co.'+'network\x22,\x22'+'co.place\x22,'+'\x22co.techno'+'logy\x22,\x22app'+'.lmpm.com\x22'+',\x22linkitoo'+'ls.space\x22,'+'\x22linkyard.'+'cloud\x22,\x22li'+'nkyard-clo'+'ud.ch\x22,\x22me'+'mbers.lino'+'de.com\x22,\x22n'+'odebalance'+'r.linode.c'+'om\x22,\x22we.bs'+'\x22,\x22loginli'+'ne.app\x22,\x22l'+'oginline.d'+'ev\x22,\x22login'+'line.io\x22,\x22'+'loginline.'+'services\x22,'+'\x22loginline'+'.site\x22,\x22kr'+'asnik.pl\x22,'+'\x22leczna.pl'+'\x22,\x22lubarto'+'w.pl\x22,\x22lub'+'lin.pl\x22,\x22p'+'oniatowa.p'+'l\x22,\x22swidni'+'k.pl\x22,\x22ukl')+('ugs.org\x22,\x22'+'glug.org.u'+'k\x22,\x22lug.or'+'g.uk\x22,\x22lug'+'s.org.uk\x22,'+'\x22barsy.bg\x22'+',\x22barsy.co'+'.uk\x22,\x22bars'+'yonline.co'+'.uk\x22,\x22bars'+'ycenter.co'+'m\x22,\x22barsyo'+'nline.com\x22'+',\x22barsy.cl'+'ub\x22,\x22barsy'+'.de\x22,\x22bars'+'y.eu\x22,\x22bar'+'sy.in\x22,\x22ba'+'rsy.info\x22,'+'\x22barsy.io\x22'+',\x22barsy.me'+'\x22,\x22barsy.m'+'enu\x22,\x22bars'+'y.mobi\x22,\x22b'+'arsy.net\x22,'+'\x22barsy.onl'+'ine\x22,\x22bars'+'y.org\x22,\x22ba'+'rsy.pro\x22,\x22'+'barsy.pub\x22'+',\x22barsy.sh'+'op\x22,\x22barsy'+'.site\x22,\x22ba'+'rsy.suppor'+'t\x22,\x22barsy.'+'uk\x22,\x22*.mag'+'entosite.c'+'loud\x22,\x22may'+'first.info'+'\x22,\x22mayfirs'+'t.org\x22,\x22hb'+'.cldmail.r'+'u\x22,\x22minise'+'rver.com\x22,'+'\x22memset.ne'+'t\x22,\x22cloud.'+'metacentru'+'m.cz\x22,\x22cus'+'tom.metace'+'ntrum.cz\x22,'+'\x22flt.cloud'+'.muni.cz\x22,'+'\x22usr.cloud'+'.muni.cz\x22,'+'\x22meteorapp'+'.com\x22,\x22eu.'+'meteorapp.'+'com\x22,\x22co.p'+'l\x22,\x22azurec'+'ontainer.i'+'o\x22,\x22azurew'+'ebsites.ne'+'t\x22,\x22azure-'+'mobile.net'+'\x22,\x22cloudap'+'p.net\x22,\x22mo'+'zilla-iot.'+'org\x22,\x22bmoa'+'ttachments'+'.org\x22,\x22net'+'.ru\x22,\x22org.'+'ru\x22,\x22pp.ru'+'\x22,\x22ui.nabu'+'.casa\x22,\x22po'+'ny.club\x22,\x22'+'of.fashion'+'\x22,\x22on.fash'+'ion\x22,\x22of.f'+'ootball\x22,\x22'+'in.london\x22'+',\x22of.londo'+'n\x22,\x22for.me'+'n\x22,\x22and.mo'+'m\x22,\x22for.mo'+'m\x22,\x22for.on'+'e\x22,\x22for.sa'+'le\x22,\x22of.wo'+'rk\x22,\x22to.wo'+'rk\x22,\x22nctu.'+'me\x22,\x22bitba'+'lloon.com\x22'+',\x22netlify.'+'com\x22,\x224u.c'+'om\x22,\x22ngrok'+'.io\x22,\x22nh-s'+'erv.co.uk\x22'+',\x22nfshost.'+'com\x22,\x22dnsk'+'ing.ch\x22,\x22m'+'ypi.co\x22,\x22n')+('4t.co\x22,\x2200'+'1www.com\x22,'+'\x22ddnslive.'+'com\x22,\x22myip'+'host.com\x22,'+'\x22forumz.in'+'fo\x22,\x2216-b.'+'it\x22,\x2232-b.'+'it\x22,\x2264-b.'+'it\x22,\x22sound'+'cast.me\x22,\x22'+'tcp4.me\x22,\x22'+'dnsup.net\x22'+',\x22hicam.ne'+'t\x22,\x22now-dn'+'s.net\x22,\x22ow'+'nip.net\x22,\x22'+'vpndns.net'+'\x22,\x22dynserv'+'.org\x22,\x22now'+'-dns.org\x22,'+'\x22x443.pw\x22,'+'\x22now-dns.t'+'op\x22,\x22ntdll'+'.top\x22,\x22fre'+'eddns.us\x22,'+'\x22crafting.'+'xyz\x22,\x22zapt'+'o.xyz\x22,\x22ns'+'update.inf'+'o\x22,\x22nerdpo'+'l.ovh\x22,\x22bl'+'ogsyte.com'+'\x22,\x22brasili'+'a.me\x22,\x22cab'+'le-modem.o'+'rg\x22,\x22cisco'+'freak.com\x22'+',\x22collegef'+'an.org\x22,\x22c'+'ouchpotato'+'fries.org\x22'+',\x22damnserv'+'er.com\x22,\x22d'+'dns.me\x22,\x22d'+'itchyourip'+'.com\x22,\x22dns'+'for.me\x22,\x22d'+'nsiskinky.'+'com\x22,\x22dvrc'+'am.info\x22,\x22'+'dynns.com\x22'+',\x22eating-o'+'rganic.net'+'\x22,\x22fantasy'+'league.cc\x22'+',\x22geekgala'+'xy.com\x22,\x22g'+'olffan.us\x22'+',\x22health-c'+'arereform.'+'com\x22,\x22home'+'securityma'+'c.com\x22,\x22ho'+'mesecurity'+'pc.com\x22,\x22h'+'opto.me\x22,\x22'+'ilovecolle'+'ge.info\x22,\x22'+'loginto.me'+'\x22,\x22mlbfan.'+'org\x22,\x22mmaf'+'an.biz\x22,\x22m'+'yactivedir'+'ectory.com'+'\x22,\x22mydisse'+'nt.net\x22,\x22m'+'yeffect.ne'+'t\x22,\x22mymedi'+'apc.net\x22,\x22'+'mypsx.net\x22'+',\x22mysecuri'+'tycamera.c'+'om\x22,\x22mysec'+'uritycamer'+'a.net\x22,\x22my'+'securityca'+'mera.org\x22,'+'\x22net-freak'+'s.com\x22,\x22nf'+'lfan.org\x22,'+'\x22nhlfan.ne'+'t\x22,\x22no-ip.'+'ca\x22,\x22no-ip'+'.co.uk\x22,\x22n'+'o-ip.net\x22,'+'\x22noip.us\x22,'+'\x22onthewifi'+'.com\x22,\x22pga'+'fan.net\x22,\x22')+('point2this'+'.com\x22,\x22poi'+'ntto.us\x22,\x22'+'privatizeh'+'ealthinsur'+'ance.net\x22,'+'\x22quicksyte'+'s.com\x22,\x22re'+'ad-books.o'+'rg\x22,\x22secur'+'itytactics'+'.com\x22,\x22ser'+'veexchange'+'.com\x22,\x22ser'+'vehumour.c'+'om\x22,\x22serve'+'p2p.com\x22,\x22'+'servesarca'+'sm.com\x22,\x22s'+'tufftoread'+'.com\x22,\x22ufc'+'fan.org\x22,\x22'+'unusualper'+'son.com\x22,\x22'+'workisbori'+'ng.com\x22,\x223'+'utilities.'+'com\x22,\x22boun'+'ceme.net\x22,'+'\x22ddns.net\x22'+',\x22ddnsking'+'.com\x22,\x22got'+'dns.ch\x22,\x22h'+'opto.org\x22,'+'\x22myftp.biz'+'\x22,\x22myftp.o'+'rg\x22,\x22myvnc'+'.com\x22,\x22no-'+'ip.biz\x22,\x22n'+'o-ip.info\x22'+',\x22no-ip.or'+'g\x22,\x22noip.m'+'e\x22,\x22redire'+'ctme.net\x22,'+'\x22servebeer'+'.com\x22,\x22ser'+'veblog.net'+'\x22,\x22serveco'+'unterstrik'+'e.com\x22,\x22se'+'rveftp.com'+'\x22,\x22servega'+'me.com\x22,\x22s'+'ervehalfli'+'fe.com\x22,\x22s'+'ervehttp.c'+'om\x22,\x22serve'+'irc.com\x22,\x22'+'serveminec'+'raft.net\x22,'+'\x22servemp3.'+'com\x22,\x22serv'+'epics.com\x22'+',\x22servequa'+'ke.com\x22,\x22s'+'ytes.net\x22,'+'\x22webhop.me'+'\x22,\x22zapto.o'+'rg\x22,\x22stage'+'.nodeart.i'+'o\x22,\x22nodum.'+'co\x22,\x22nodum'+'.io\x22,\x22pclo'+'ud.host\x22,\x22'+'nyc.mn\x22,\x22n'+'om.ae\x22,\x22no'+'m.af\x22,\x22nom'+'.ai\x22,\x22nom.'+'al\x22,\x22nym.b'+'y\x22,\x22nom.bz'+'\x22,\x22nym.bz\x22'+',\x22nom.cl\x22,'+'\x22nym.ec\x22,\x22'+'nom.gd\x22,\x22n'+'om.ge\x22,\x22no'+'m.gl\x22,\x22nym'+'.gr\x22,\x22nom.'+'gt\x22,\x22nym.g'+'y\x22,\x22nym.hk'+'\x22,\x22nom.hn\x22'+',\x22nym.ie\x22,'+'\x22nom.im\x22,\x22'+'nom.ke\x22,\x22n'+'ym.kz\x22,\x22ny'+'m.la\x22,\x22nym'+'.lc\x22,\x22nom.'+'li\x22,\x22nym.l'+'i\x22,\x22nym.lt'+'\x22,\x22nym.lu\x22'+',\x22nom.lv\x22,')+('\x22nym.me\x22,\x22'+'nom.mk\x22,\x22n'+'ym.mn\x22,\x22ny'+'m.mx\x22,\x22nom'+'.nu\x22,\x22nym.'+'nz\x22,\x22nym.p'+'e\x22,\x22nym.pt'+'\x22,\x22nom.pw\x22'+',\x22nom.qa\x22,'+'\x22nym.ro\x22,\x22'+'nom.rs\x22,\x22n'+'om.si\x22,\x22ny'+'m.sk\x22,\x22nom'+'.st\x22,\x22nym.'+'su\x22,\x22nym.s'+'x\x22,\x22nom.tj'+'\x22,\x22nym.tw\x22'+',\x22nom.ug\x22,'+'\x22nom.uy\x22,\x22'+'nom.vc\x22,\x22n'+'om.vg\x22,\x22st'+'atic.obser'+'vableuserc'+'ontent.com'+'\x22,\x22cya.gg\x22'+',\x22cloudycl'+'uster.net\x22'+',\x22nid.io\x22,'+'\x22opencraft'+'.hosting\x22,'+'\x22operaunit'+'e.com\x22,\x22sk'+'ygearapp.c'+'om\x22,\x22outsy'+'stemscloud'+'.com\x22,\x22own'+'provider.c'+'om\x22,\x22own.p'+'m\x22,\x22ox.rs\x22'+',\x22oy.lc\x22,\x22'+'pgfog.com\x22'+',\x22pagefron'+'tapp.com\x22,'+'\x22art.pl\x22,\x22'+'gliwice.pl'+'\x22,\x22krakow.'+'pl\x22,\x22pozna'+'n.pl\x22,\x22wro'+'c.pl\x22,\x22zak'+'opane.pl\x22,'+'\x22pantheons'+'ite.io\x22,\x22g'+'otpantheon'+'.com\x22,\x22myp'+'ep.link\x22,\x22'+'perspecta.'+'cloud\x22,\x22on'+'-web.fr\x22,\x22'+'*.platform'+'.sh\x22,\x22*.pl'+'atformsh.s'+'ite\x22,\x22dyn5'+'3.io\x22,\x22co.'+'bn\x22,\x22xen.p'+'rgmr.com\x22,'+'\x22priv.at\x22,'+'\x22prvcy.pag'+'e\x22,\x22*.dweb'+'.link\x22,\x22pr'+'otonet.io\x22'+',\x22chirurgi'+'ens-dentis'+'tes-en-fra'+'nce.fr\x22,\x22b'+'yen.site\x22,'+'\x22pubtls.or'+'g\x22,\x22qualif'+'ioapp.com\x22'+',\x22qbuser.c'+'om\x22,\x22insta'+'ntcloud.cn'+'\x22,\x22ras.ru\x22'+',\x22qa2.com\x22'+',\x22qcx.io\x22,'+'\x22*.sys.qcx'+'.io\x22,\x22dev-'+'myqnapclou'+'d.com\x22,\x22al'+'pha-myqnap'+'cloud.com\x22'+',\x22myqnapcl'+'oud.com\x22,\x22'+'*.quipelem'+'ents.com\x22,'+'\x22vapor.clo'+'ud\x22,\x22vapor'+'cloud.io\x22,'+'\x22rackmaze.'+'com\x22,\x22rack'+'maze.net\x22,')+('\x22*.on-k3s.'+'io\x22,\x22*.on-'+'rancher.cl'+'oud\x22,\x22*.on'+'-rio.io\x22,\x22'+'readthedoc'+'s.io\x22,\x22rhc'+'loud.com\x22,'+'\x22app.rende'+'r.com\x22,\x22on'+'render.com'+'\x22,\x22repl.co'+'\x22,\x22repl.ru'+'n\x22,\x22resind'+'evice.io\x22,'+'\x22devices.r'+'esinstagin'+'g.io\x22,\x22hzc'+'.io\x22,\x22well'+'beingzone.'+'eu\x22,\x22ptplu'+'s.fit\x22,\x22we'+'llbeingzon'+'e.co.uk\x22,\x22'+'git-pages.'+'rit.edu\x22,\x22'+'sandcats.i'+'o\x22,\x22logoip'+'.de\x22,\x22logo'+'ip.com\x22,\x22s'+'chokokeks.'+'net\x22,\x22gov.'+'scot\x22,\x22scr'+'ysec.com\x22,'+'\x22firewall-'+'gateway.co'+'m\x22,\x22firewa'+'ll-gateway'+'.de\x22,\x22my-g'+'ateway.de\x22'+',\x22my-route'+'r.de\x22,\x22spd'+'ns.de\x22,\x22sp'+'dns.eu\x22,\x22f'+'irewall-ga'+'teway.net\x22'+',\x22my-firew'+'all.org\x22,\x22'+'myfirewall'+'.org\x22,\x22spd'+'ns.org\x22,\x22s'+'enseering.'+'net\x22,\x22biz.'+'ua\x22,\x22co.ua'+'\x22,\x22pp.ua\x22,'+'\x22shiftedit'+'.io\x22,\x22mysh'+'opblocks.c'+'om\x22,\x22shopi'+'tsite.com\x22'+',\x22mo-sieme'+'ns.io\x22,\x221k'+'app.com\x22,\x22'+'appchizi.c'+'om\x22,\x22appli'+'nzi.com\x22,\x22'+'sinaapp.co'+'m\x22,\x22vipsin'+'aapp.com\x22,'+'\x22siteleaf.'+'net\x22,\x22boun'+'ty-full.co'+'m\x22,\x22alpha.'+'bounty-ful'+'l.com\x22,\x22be'+'ta.bounty-'+'full.com\x22,'+'\x22stackhero'+'-network.c'+'om\x22,\x22stati'+'c.land\x22,\x22d'+'ev.static.'+'land\x22,\x22sit'+'es.static.'+'land\x22,\x22app'+'s.lair.io\x22'+',\x22*.stolos'+'.io\x22,\x22spac'+'ekit.io\x22,\x22'+'customer.s'+'peedpartne'+'r.de\x22,\x22api'+'.stdlib.co'+'m\x22,\x22storj.'+'farm\x22,\x22utw'+'ente.io\x22,\x22'+'soc.srcf.n'+'et\x22,\x22user.'+'srcf.net\x22,'+'\x22temp-dns.')+('com\x22,\x22appl'+'icationclo'+'ud.io\x22,\x22sc'+'app.io\x22,\x22*'+'.s5y.io\x22,\x22'+'*.sensiosi'+'te.cloud\x22,'+'\x22syncloud.'+'it\x22,\x22disks'+'tation.me\x22'+',\x22dscloud.'+'biz\x22,\x22dscl'+'oud.me\x22,\x22d'+'scloud.mob'+'i\x22,\x22dsmyna'+'s.com\x22,\x22ds'+'mynas.net\x22'+',\x22dsmynas.'+'org\x22,\x22fami'+'lyds.com\x22,'+'\x22familyds.'+'net\x22,\x22fami'+'lyds.org\x22,'+'\x22i234.me\x22,'+'\x22myds.me\x22,'+'\x22synology.'+'me\x22,\x22vpnpl'+'us.to\x22,\x22di'+'rect.quick'+'connect.to'+'\x22,\x22taifun-'+'dns.de\x22,\x22g'+'da.pl\x22,\x22gd'+'ansk.pl\x22,\x22'+'gdynia.pl\x22'+',\x22med.pl\x22,'+'\x22sopot.pl\x22'+',\x22edugit.o'+'rg\x22,\x22teleb'+'it.app\x22,\x22t'+'elebit.io\x22'+',\x22*.telebi'+'t.xyz\x22,\x22gw'+'iddle.co.u'+'k\x22,\x22thingd'+'ustdata.co'+'m\x22,\x22cust.d'+'ev.thingdu'+'st.io\x22,\x22cu'+'st.disrec.'+'thingdust.'+'io\x22,\x22cust.'+'prod.thing'+'dust.io\x22,\x22'+'cust.testi'+'ng.thingdu'+'st.io\x22,\x22ar'+'vo.network'+'\x22,\x22azimuth'+'.network\x22,'+'\x22bloxcms.c'+'om\x22,\x22townn'+'ews-stagin'+'g.com\x22,\x2212'+'hp.at\x22,\x222i'+'x.at\x22,\x224li'+'ma.at\x22,\x22li'+'ma-city.at'+'\x22,\x2212hp.ch'+'\x22,\x222ix.ch\x22'+',\x224lima.ch'+'\x22,\x22lima-ci'+'ty.ch\x22,\x22tr'+'afficplex.'+'cloud\x22,\x22de'+'.cool\x22,\x2212'+'hp.de\x22,\x222i'+'x.de\x22,\x224li'+'ma.de\x22,\x22li'+'ma-city.de'+'\x22,\x221337.pi'+'ctures\x22,\x22c'+'lan.rip\x22,\x22'+'lima-city.'+'rocks\x22,\x22we'+'bspace.roc'+'ks\x22,\x22lima.'+'zone\x22,\x22*.t'+'ransurl.be'+'\x22,\x22*.trans'+'url.eu\x22,\x22*'+'.transurl.'+'nl\x22,\x22tuxfa'+'mily.org\x22,'+'\x22dd-dns.de'+'\x22,\x22disksta'+'tion.eu\x22,\x22'+'diskstatio'+'n.org\x22,\x22dr'+'ay-dns.de\x22')+(',\x22draydns.'+'de\x22,\x22dyn-v'+'pn.de\x22,\x22dy'+'nvpn.de\x22,\x22'+'mein-vigor'+'.de\x22,\x22my-v'+'igor.de\x22,\x22'+'my-wan.de\x22'+',\x22syno-ds.'+'de\x22,\x22synol'+'ogy-diskst'+'ation.de\x22,'+'\x22synology-'+'ds.de\x22,\x22ub'+'er.space\x22,'+'\x22*.uberspa'+'ce.de\x22,\x22hk'+'.com\x22,\x22hk.'+'org\x22,\x22ltd.'+'hk\x22,\x22inc.h'+'k\x22,\x22virtua'+'luser.de\x22,'+'\x22virtual-u'+'ser.de\x22,\x22u'+'rown.cloud'+'\x22,\x22dnsupda'+'te.info\x22,\x22'+'lib.de.us\x22'+',\x222038.io\x22'+',\x22router.m'+'anagement\x22'+',\x22v-info.i'+'nfo\x22,\x22voor'+'loper.clou'+'d\x22,\x22v.ua\x22,'+'\x22wafflecel'+'l.com\x22,\x22*.'+'webhare.de'+'v\x22,\x22wedepl'+'oy.io\x22,\x22we'+'deploy.me\x22'+',\x22wedeploy'+'.sh\x22,\x22remo'+'tewd.com\x22,'+'\x22wmflabs.o'+'rg\x22,\x22myfor'+'um.communi'+'ty\x22,\x22commu'+'nity-pro.d'+'e\x22,\x22diskus'+'sionsberei'+'ch.de\x22,\x22co'+'mmunity-pr'+'o.net\x22,\x22me'+'inforum.ne'+'t\x22,\x22half.h'+'ost\x22,\x22xnba'+'y.com\x22,\x22u2'+'.xnbay.com'+'\x22,\x22u2-loca'+'l.xnbay.co'+'m\x22,\x22cistro'+'n.nl\x22,\x22dem'+'on.nl\x22,\x22xs'+'4all.space'+'\x22,\x22yandexc'+'loud.net\x22,'+'\x22storage.y'+'andexcloud'+'.net\x22,\x22web'+'site.yande'+'xcloud.net'+'\x22,\x22officia'+'l.academy\x22'+',\x22yolasite'+'.com\x22,\x22ybo'+'.faith\x22,\x22y'+'ombo.me\x22,\x22'+'homelink.o'+'ne\x22,\x22ybo.p'+'arty\x22,\x22ybo'+'.review\x22,\x22'+'ybo.scienc'+'e\x22,\x22ybo.tr'+'ade\x22,\x22noho'+'st.me\x22,\x22no'+'ho.st\x22,\x22za'+'.net\x22,\x22za.'+'org\x22,\x22now.'+'sh\x22,\x22bss.d'+'esign\x22,\x22ba'+'sicserver.'+'io\x22,\x22virtu'+'alserver.i'+'o\x22,\x22enterp'+'risecloud.'+'nu\x22]'));}},_0x5c66cb={};function _0x1dcccb(_0x5bc362){var _0x40660d=_0x5c66cb[_0x5bc362];if(void(0x4e5*0x1+-0x21*-0x43+-0x6c4*0x2)!==_0x40660d)return _0x40660d['exports'];var _0x50b7ef=_0x5c66cb[_0x5bc362]={'exports':{}};return _0x5ceca3[_0x5bc362]['call'](_0x50b7ef['exports'],_0x50b7ef,_0x50b7ef['exports'],_0x1dcccb),_0x50b7ef['exports'];}_0x1dcccb['d']=(_0x418487,_0x24f7d3)=>{for(var _0x3b90e0 in _0x24f7d3)_0x1dcccb['o'](_0x24f7d3,_0x3b90e0)&&!_0x1dcccb['o'](_0x418487,_0x3b90e0)&&Object['defineProp'+'erty'](_0x418487,_0x3b90e0,{'enumerable':!(-0x2673+0x9*-0x5+-0xce0*-0x3),'get':_0x24f7d3[_0x3b90e0]});},_0x1dcccb['o']=(_0x32ee76,_0x310c2e)=>Object['prototype']['hasOwnProp'+'erty']['call'](_0x32ee76,_0x310c2e),_0x1dcccb['r']=_0x408b0c=>{'undefined'!=typeof Symbol&&Symbol['toStringTa'+'g']&&Object['defineProp'+'erty'](_0x408b0c,Symbol['toStringTa'+'g'],{'value':'Module'}),Object['defineProp'+'erty'](_0x408b0c,'__esModule',{'value':!(-0x1353+-0x379*-0x1+0xfda)});};var _0x1e180c=_0x1dcccb(-0x1fe7+0x19d+0x3a6*0x13);module['exports']=_0x1e180c;})()); \ No newline at end of file +((()=>{var _0x37fdef={0x3d7:(_0x4d9666,_0x1de682,_0x230ec9)=>{'use strict';var _0x1fb8b8=_0x230ec9(-0x1*0x2437+-0x2761+0x6846),_0x5dd3b0=[];function _0x424841(){this['task']=null,this['domain']=null;}_0x4d9666['exports']=function(_0x194882){var _0x29746f;(_0x29746f=_0x5dd3b0['length']?_0x5dd3b0['pop']():new _0x424841())['task']=_0x194882,_0x29746f['domain']=process['domain'],_0x1fb8b8(_0x29746f);},_0x424841['prototype']['call']=function(){this['domain']&&this['domain']['enter']();var _0x8f606e=!(-0x6ee*0x1+-0x25d4+0x2cc2);try{this['task']['call'](),_0x8f606e=!(0x13ee+-0x1367+0x2*-0x43),this['domain']&&this['domain']['exit']();}finally{_0x8f606e&&_0x1fb8b8['requestFlu'+'sh'](),this['task']=null,this['domain']=null,_0x5dd3b0['push'](this);}};},0x1cae:(_0x2cd235,_0x2f4ac8,_0x4628bc)=>{'use strict';var _0x43558b,_0x237288='function'==typeof setImmediate;function _0x2c5274(_0x46abdd){_0x38a87b['length']||(_0x1ea15a(),_0x2658dd=!(0x1cb5+0x2245+0x14fe*-0x3)),_0x38a87b[_0x38a87b['length']]=_0x46abdd;}_0x2cd235['exports']=_0x2c5274;var _0x38a87b=[],_0x2658dd=!(-0x90*-0x27+0x26f0+-0x3cdf),_0x3e9a6b=0x20cb*0x1+0x2000+-0x40cb,_0x388720=-0x56*-0x1a+-0x183+-0xb*0x4b;function _0x32335b(){for(;_0x3e9a6b<_0x38a87b['length'];){var _0x44c4a0=_0x3e9a6b;if(_0x3e9a6b+=0x289*-0xe+-0x4*-0x1ac+0x1ccf,_0x38a87b[_0x44c4a0]['call'](),_0x3e9a6b>_0x388720){for(var _0x1e9919=0x1*0x1b19+-0xe*-0x241+-0x3aa7,_0x36e0ef=_0x38a87b['length']-_0x3e9a6b;_0x1e9919<_0x36e0ef;_0x1e9919++)_0x38a87b[_0x1e9919]=_0x38a87b[_0x1e9919+_0x3e9a6b];_0x38a87b['length']-=_0x3e9a6b,_0x3e9a6b=0x21ab+0x1*0x4cd+-0x2678;}}_0x38a87b['length']=0x87e+0x25c4+-0xbf*0x3e,_0x3e9a6b=-0x1*0x1c4b+-0x1c75+0x40*0xe3,_0x2658dd=!(-0x8e9+-0x1b98+0x2482);}function _0x1ea15a(){var _0xf80d2f=process['domain'];_0xf80d2f&&(_0x43558b||(_0x43558b=_0x4628bc(-0x1*0x20df+0xe2f*0x1+0x1f0f*0x1)),_0x43558b['active']=process['domain']=null),_0x2658dd&&_0x237288?setImmediate(_0x32335b):process['nextTick'](_0x32335b),_0xf80d2f&&(_0x43558b['active']=process['domain']=_0xf80d2f);}_0x2c5274['requestFlu'+'sh']=_0x1ea15a;},0x923:(_0x5d7193,_0x54a9d8,_0x44946c)=>{var _0x355d43=('0123456789'+'abcdefghij'+'klmnopqrst'+'uvwxyz')['split'](''),_0xf9b7de=_0x44946c(-0xc3+0x1aa2+-0x1*-0x167),_0x4c42d4=_0x44946c(0x1112+-0x2f*0x1f+0x1a72);_0x5d7193['exports']=function(_0x43e5f9,_0x141e8f){if(_0x43e5f9=_0x43e5f9||0xc92+-0x1343+0x731,(_0x141e8f=_0x141e8f||-0xe*0x1e2+-0x160*0x1+-0xde6*-0x2)<0x87c+-0x12d7+0xa5d||_0x141e8f>0x1*-0x5c0+-0x664*0x2+0x12ac)throw new Error('radix\x20argu'+'ment\x20must\x20'+'be\x20between'+'\x202\x20and\x2036');for(var _0x1367d4=Math['ceil'](_0x43e5f9*Math['log'](-0x1e61+-0x2*-0xbeb+0x68d)/Math['log'](_0x141e8f)),_0x11d339=_0xf9b7de['randomByte'+'s'](_0x43e5f9),_0x316e50=new _0x4c42d4(_0x11d339),_0x476550='';_0x476550['length']<_0x1367d4;)_0x476550+=_0x355d43[_0x316e50['generate'](_0x141e8f)];return _0x476550;};},0x108b:(_0xef5430,_0x487f5d,_0x218b19)=>{'use strict';var _0x5d4ea8=_0x218b19(0x2125*-0x1+-0x6*0x2c5+-0x1e2*-0x1f)['Stream'],_0x79d545=_0x218b19(-0x2638+-0x39d4+0x13*0x6e9),_0xeec79a=_0x218b19(0x2363*0x1+-0x7*0x3f5+-0xb3*-0x1),_0x4bfee6=_0x218b19(-0x202a+-0x1475+-0x3f6d*-0x1),_0x24ec04=_0x218b19(0x16*-0xb+-0x30c7+0x4c77),_0x1597a6=_0x218b19(0x833+0x245*-0x6+0xf38),_0x2eb819=_0x218b19(-0x1*0x24e+-0xa*-0x1d3+0x1*0x4f5),_0x448024=function(_0xa35cde,_0x34516c,_0x50b70d){this['writable']=!(0x22d1+-0x18d0+-0xa01),_0x50b70d=_0x50b70d||{},this['_stream']=_0x34516c['socket'],this['_ping']=_0x50b70d['ping']||this['DEFAULT_PI'+'NG'],this['_retry']=_0x50b70d['retry']||this['DEFAULT_RE'+'TRY'];var _0x5d65f9=_0xeec79a['isSecureRe'+'quest'](_0xa35cde)?'https:':'http:';this['url']=_0x5d65f9+'//'+_0xa35cde['headers']['host']+_0xa35cde['url'],this['lastEventI'+'d']=_0xa35cde['headers']['last-event'+'-id']||'',this['readyState']=_0x24ec04['CONNECTING'];var _0x418910=new _0x4bfee6(),_0x262cc8=this;if(_0x50b70d['headers']){for(var _0xd2b53b in _0x50b70d['headers'])_0x418910['set'](_0xd2b53b,_0x50b70d['headers'][_0xd2b53b]);}if(this['_stream']&&this['_stream']['writable']){process['nextTick'](function(){_0x262cc8['_open']();}),this['_stream']['setTimeout'](-0x1dc0+-0x2086+0x3e46),this['_stream']['setNoDelay'](!(0x1*0x249b+0x397*0x9+-0x44ea));var _0x58fb39='HTTP/1.1\x202'+'00\x20OK\x0d\x0aCon'+'tent-Type:'+'\x20text/even'+'t-stream\x0d\x0a'+'Cache-Cont'+'rol:\x20no-ca'+'che,\x20no-st'+'ore\x0d\x0aConne'+'ction:\x20clo'+'se\x0d\x0a'+_0x418910['toString']()+'\x0d\x0aretry:\x20'+Math['floor']((-0x90f*0x2+0x9*-0x1d+-0x1*-0x170b)*this['_retry'])+'\x0d\x0a\x0d\x0a';this['_write'](_0x58fb39),this['_stream']['on']('drain',function(){_0x262cc8['emit']('drain');}),this['_ping']&&(this['_pingTimer']=setInterval(function(){_0x262cc8['ping']();},(0x309+0x2*-0x83d+0x1159)*this['_ping'])),['error','end']['forEach'](function(_0x2497cd){_0x262cc8['_stream']['on'](_0x2497cd,function(){_0x262cc8['close']();});});}};_0x79d545['inherits'](_0x448024,_0x5d4ea8),_0x448024['isEventSou'+'rce']=function(_0x2cf50f){return'GET'===_0x2cf50f['method']&&(_0x2cf50f['headers']['accept']||'')['split'](/\s*,\s*/)['indexOf']('text/event'+'-stream')>=0x2079+0x1fdf+-0x4058;};var _0x21ed2a={'DEFAULT_PING':0xa,'DEFAULT_RETRY':0x5,'_write':function(_0x3bb271){if(!this['writable'])return!(0x64e*-0x3+-0x801*-0x1+-0xfe*-0xb);try{return this['_stream']['write'](_0x3bb271,'utf8');}catch(_0x4213d2){return!(-0x94*0x2a+0x1030+0x819);}},'_open':function(){if(this['readyState']===_0x24ec04['CONNECTING']){this['readyState']=_0x24ec04['OPEN'];var _0x5699fd=new _0x2eb819('open');_0x5699fd['initEvent']('open',!(-0x18a1+0x2*0xca3+-0xa4),!(-0x311*0x4+0x54a*0x2+0x1b1)),this['dispatchEv'+'ent'](_0x5699fd);}},'write':function(_0x4570a1){return this['send'](_0x4570a1);},'end':function(_0x185098){void(0xb55*-0x2+0xb*-0x32e+0x39a4)!==_0x185098&&this['write'](_0x185098),this['close']();},'send':function(_0x2aed96,_0x3b650f){if(this['readyState']>_0x24ec04['OPEN'])return!(0x2685+0x1*0x166b+0x335*-0x13);_0x2aed96=String(_0x2aed96)['replace'](/(\r\n|\r|\n)/g,'$1data:\x20');var _0x1927de='';return(_0x3b650f=_0x3b650f||{})['event']&&(_0x1927de+='event:\x20'+_0x3b650f['event']+'\x0d\x0a'),_0x3b650f['id']&&(_0x1927de+='id:\x20'+_0x3b650f['id']+'\x0d\x0a'),_0x1927de+='data:\x20'+_0x2aed96+'\x0d\x0a\x0d\x0a',this['_write'](_0x1927de);},'ping':function(){return this['_write'](':\x0d\x0a\x0d\x0a');},'close':function(){if(this['readyState']>_0x24ec04['OPEN'])return!(-0x1db3+-0xf07+-0xb*-0x411);this['readyState']=_0x24ec04['CLOSED'],this['writable']=!(0xac1*0x1+0x18b1+-0x2371),this['_pingTimer']&&clearInterval(this['_pingTimer']),this['_stream']&&this['_stream']['end']();var _0x3da3c1=new _0x2eb819('close');return _0x3da3c1['initEvent']('close',!(-0xf08+0x15ab*0x1+-0x6a2),!(0x1b17+-0x7cf+0x1*-0x1347)),this['dispatchEv'+'ent'](_0x3da3c1),!(-0x2*-0x21b+-0xa2f+0x5f9*0x1);}};for(var _0x419fde in _0x21ed2a)_0x448024['prototype'][_0x419fde]=_0x21ed2a[_0x419fde];for(var _0x440da8 in _0x1597a6)_0x448024['prototype'][_0x440da8]=_0x1597a6[_0x440da8];_0xef5430['exports']=_0x448024;},0x32d:(_0x4ed43e,_0x2f5ce1,_0x524a5b)=>{'use strict';var _0x2277a5=_0x524a5b(-0x2c23*-0x1+-0x31*0x61+0x9ad),_0x5c03ae=_0x524a5b(-0x2a5+-0x1*-0x1611+-0xb09),_0x5350a5=_0x524a5b(0x1*0xf76+-0x1716+0x225e),_0x43af68=function(_0x19b76e,_0x436868,_0x55e927,_0x27dd73,_0x1073f0){_0x1073f0=_0x1073f0||{},this['_stream']=_0x436868,this['_driver']=_0x5c03ae['http'](_0x19b76e,{'maxLength':_0x1073f0['maxLength'],'protocols':_0x27dd73});var _0x1a912b=this;if(this['_stream']&&this['_stream']['writable']){if(!this['_stream']['readable'])return this['_stream']['end']();var _0x4de68a=function(){_0x1a912b['_stream']['removeList'+'ener']('data',_0x4de68a);};this['_stream']['on']('data',_0x4de68a),_0x5350a5['call'](this,_0x1073f0),process['nextTick'](function(){_0x1a912b['_driver']['start'](),_0x1a912b['_driver']['io']['write'](_0x55e927);});}};_0x2277a5['inherits'](_0x43af68,_0x5350a5),_0x43af68['isWebSocke'+'t']=function(_0x1a73a5){return _0x5c03ae['isWebSocke'+'t'](_0x1a73a5);},_0x43af68['validateOp'+'tions']=function(_0x216bc9,_0x5ee404){_0x5c03ae['validateOp'+'tions'](_0x216bc9,_0x5ee404);},_0x43af68['WebSocket']=_0x43af68,_0x43af68['Client']=_0x524a5b(-0x1*0x7ed+0x1fa0+-0x10a4),_0x43af68['EventSourc'+'e']=_0x524a5b(0xf8f+0x1e5+-0xe9),_0x4ed43e['exports']=_0x43af68;},0x1abe:(_0x22b49a,_0x521d0f,_0x1b2afc)=>{'use strict';var _0x514240=_0x1b2afc(-0x86d*0x2+0x2052+-0x7*0xfb)['Stream'],_0x22ba29=_0x1b2afc(-0xbf6+0x43d2+-0x149d),_0x5e14bd=_0x1b2afc(-0x6b*0x37+-0xdad+0x2d0d),_0x4b3b66=_0x1b2afc(-0xf38+-0xb*-0x317+-0x148*0x7),_0x2c8257=_0x1b2afc(0x1d*0xf4+-0x21*-0xb+-0x1*0x82a),_0x23d599=function(_0x4867a3){_0x4867a3=_0x4867a3||{},_0x5e14bd['validateOp'+'tions'](_0x4867a3,['headers','extensions','maxLength','ping','proxy','tls','ca']),this['readable']=this['writable']=!(-0x20fa+-0x6be*-0x1+0x1a3c);var _0x47eeef=_0x4867a3['headers'];if(_0x47eeef){for(var _0x488e97 in _0x47eeef)this['_driver']['setHeader'](_0x488e97,_0x47eeef[_0x488e97]);}var _0x39753c=_0x4867a3['extensions'];_0x39753c&&[]['concat'](_0x39753c)['forEach'](this['_driver']['addExtensi'+'on'],this['_driver']),this['_ping']=_0x4867a3['ping'],this['_pingId']=-0x693+-0x1*-0xe43+-0x7b0,this['readyState']=_0x23d599['CONNECTING'],this['bufferedAm'+'ount']=0x20f+0x2a5*-0xb+-0xa*-0x2b4,this['protocol']='',this['url']=this['_driver']['url'],this['version']=this['_driver']['version'];var _0x4810c7=this;this['_driver']['on']('open',function(_0x28762e){_0x4810c7['_open']();}),this['_driver']['on']('message',function(_0xc10c31){_0x4810c7['_receiveMe'+'ssage'](_0xc10c31['data']);}),this['_driver']['on']('close',function(_0x42c494){_0x4810c7['_beginClos'+'e'](_0x42c494['reason'],_0x42c494['code']);}),this['_driver']['on']('error',function(_0x30e1d8){_0x4810c7['_emitError'](_0x30e1d8['message']);}),this['on']('error',function(){}),this['_driver']['messages']['on']('drain',function(){_0x4810c7['emit']('drain');}),this['_ping']&&(this['_pingTimer']=setInterval(function(){_0x4810c7['_pingId']+=0xb5*-0x29+0x19f1+-0xb*-0x47,_0x4810c7['ping'](_0x4810c7['_pingId']['toString']());},(0x1*0x99e+-0x25a5+0x1fef)*this['_ping'])),this['_configure'+'Stream'](),this['_proxy']||(this['_stream']['pipe'](this['_driver']['io']),this['_driver']['io']['pipe'](this['_stream']));};_0x22ba29['inherits'](_0x23d599,_0x514240),_0x23d599['CONNECTING']=-0xd6a*-0x2+0x11ef+-0x665*0x7,_0x23d599['OPEN']=0xd53+0x1936+-0x66c*0x6,_0x23d599['CLOSING']=-0x1fff+-0x1527+-0xa2*-0x54,_0x23d599['CLOSED']=-0x1f*0x11b+-0x1*-0x19ab+0x2df*0x3,_0x23d599['CLOSE_TIME'+'OUT']=-0x120f*-0x2+0x1*-0x40d1+0x91e3;var _0x5c02ee={'write':function(_0x11e996){return this['send'](_0x11e996);},'end':function(_0xd68595){void(0x1a6a+-0xe*0xc5+-0xfa4)!==_0xd68595&&this['send'](_0xd68595),this['close']();},'pause':function(){return this['_driver']['messages']['pause']();},'resume':function(){return this['_driver']['messages']['resume']();},'send':function(_0x436991){return!(this['readyState']>_0x23d599['OPEN'])&&(_0x436991 instanceof Buffer||(_0x436991=String(_0x436991)),this['_driver']['messages']['write'](_0x436991));},'ping':function(_0x5629f0,_0x41445b){return!(this['readyState']>_0x23d599['OPEN'])&&this['_driver']['ping'](_0x5629f0,_0x41445b);},'close':function(_0x47debe,_0x1b0b35){if(void(0x2*0x26b+0xe59+0x1*-0x132f)===_0x47debe&&(_0x47debe=-0x495+0x4*0xe+0x845),void(-0x1*-0x185f+0x1335+0x2b94*-0x1)===_0x1b0b35&&(_0x1b0b35=''),-0x9f3+0x2110+-0x21*0x95!==_0x47debe&&(_0x47debe<0x1807*0x1+0x1b8b+-0x1*0x27da||_0x47debe>0x1*0x10b1+0x47d*0x6+0x4*-0x606))throw new Error('Failed\x20to\x20'+'execute\x20\x27c'+'lose\x27\x20on\x20W'+'ebSocket:\x20'+'The\x20code\x20m'+'ust\x20be\x20eit'+'her\x201000,\x20'+'or\x20between'+'\x203000\x20and\x20'+'4999.\x20'+_0x47debe+('\x20is\x20neithe'+'r.'));if(this['readyState']<_0x23d599['CLOSING']){var _0x52c063=this;this['_closeTime'+'r']=setTimeout(function(){_0x52c063['_beginClos'+'e']('',0x1ed0+-0x1*-0x1ce5+-0x37c7);},_0x23d599['CLOSE_TIME'+'OUT']);}this['readyState']!==_0x23d599['CLOSED']&&(this['readyState']=_0x23d599['CLOSING']),this['_driver']['close'](_0x1b0b35,_0x47debe);},'_configureStream':function(){var _0x3a2b76=this;this['_stream']['setTimeout'](0xa7e+-0x22af+0x1831),this['_stream']['setNoDelay'](!(0x2*0x593+0x1f2*-0x11+-0x5c*-0x3d)),['close','end']['forEach'](function(_0x4981d2){this['_stream']['on'](_0x4981d2,function(){_0x3a2b76['_finalizeC'+'lose']();});},this),this['_stream']['on']('error',function(_0x119629){_0x3a2b76['_emitError']('Network\x20er'+'ror:\x20'+_0x3a2b76['url']+':\x20'+_0x119629['message']),_0x3a2b76['_finalizeC'+'lose']();});},'_open':function(){if(this['readyState']===_0x23d599['CONNECTING']){this['readyState']=_0x23d599['OPEN'],this['protocol']=this['_driver']['protocol']||'';var _0x4eb617=new _0x2c8257('open');_0x4eb617['initEvent']('open',!(-0x26ae*-0x1+-0x117e*0x1+-0x1d*0xbb),!(0x272*0x1+-0x998+0x1*0x727)),this['dispatchEv'+'ent'](_0x4eb617);}},'_receiveMessage':function(_0x2b2d47){if(this['readyState']>_0x23d599['OPEN'])return!(-0x26b+-0xf54+-0x11c*-0x10);this['readable']&&this['emit']('data',_0x2b2d47);var _0x24f9e8=new _0x2c8257('message',{'data':_0x2b2d47});_0x24f9e8['initEvent']('message',!(0x20ca+-0xb*0x2b9+-0x2d6),!(0x57*0x37+-0x25f6+0x1346)),this['dispatchEv'+'ent'](_0x24f9e8);},'_emitError':function(_0x3a356d){if(!(this['readyState']>=_0x23d599['CLOSING'])){var _0x168ff6=new _0x2c8257('error',{'message':_0x3a356d});_0x168ff6['initEvent']('error',!(-0x1*0x15f4+0xf*-0x33+0x18f2),!(0x1942*-0x1+-0x8f2+0x3cd*0x9)),this['dispatchEv'+'ent'](_0x168ff6);}},'_beginClose':function(_0x5b80a7,_0x42b6ca){this['readyState']!==_0x23d599['CLOSED']&&(this['readyState']=_0x23d599['CLOSING'],this['_closePara'+'ms']=[_0x5b80a7,_0x42b6ca],this['_stream']&&(this['_stream']['destroy'](),this['_stream']['readable']||this['_finalizeC'+'lose']()));},'_finalizeClose':function(){if(this['readyState']!==_0x23d599['CLOSED']){this['readyState']=_0x23d599['CLOSED'],this['_closeTime'+'r']&&clearTimeout(this['_closeTime'+'r']),this['_pingTimer']&&clearInterval(this['_pingTimer']),this['_stream']&&this['_stream']['end'](),this['readable']&&this['emit']('end'),this['readable']=this['writable']=!(-0x604+-0x2*0xcff+0x2003);var _0x4823ff=this['_closePara'+'ms']?this['_closePara'+'ms'][0x1a32+0x1208*-0x1+0x16*-0x5f]:'',_0xb9a5b=this['_closePara'+'ms']?this['_closePara'+'ms'][0x8b7+-0x1451+-0xb9b*-0x1]:0x1b0a+-0x13*-0x5+0x1*-0x177b,_0x2f11fb=new _0x2c8257('close',{'code':_0xb9a5b,'reason':_0x4823ff});_0x2f11fb['initEvent']('close',!(-0x1e5+0x1141+-0xf5b*0x1),!(0x20dd+-0x4*-0x8ad+-0x4390)),this['dispatchEv'+'ent'](_0x2f11fb);}}};for(var _0xcfec2e in _0x5c02ee)_0x23d599['prototype'][_0xcfec2e]=_0x5c02ee[_0xcfec2e];for(var _0x4c992b in _0x4b3b66)_0x23d599['prototype'][_0x4c992b]=_0x4b3b66[_0x4c992b];_0x22b49a['exports']=_0x23d599;},0x14e5:_0x1c846f=>{'use strict';var _0x3d48f6=function(_0x379fe7,_0x47f7be){for(var _0x535eb0 in(this['type']=_0x379fe7,_0x47f7be))this[_0x535eb0]=_0x47f7be[_0x535eb0];};_0x3d48f6['prototype']['initEvent']=function(_0x17c193,_0x88d592,_0x34bf0a){this['type']=_0x17c193,this['bubbles']=_0x88d592,this['cancelable']=_0x34bf0a;},_0x3d48f6['prototype']['stopPropag'+'ation']=function(){},_0x3d48f6['prototype']['preventDef'+'ault']=function(){},_0x3d48f6['CAPTURING_'+'PHASE']=0x22*0xd2+0xe2d+0x1*-0x2a10,_0x3d48f6['AT_TARGET']=0x7*-0x4e1+0x456+0x1dd3,_0x3d48f6['BUBBLING_P'+'HASE']=0x2*0x589+-0x688+-0x487,_0x1c846f['exports']=_0x3d48f6;},0x9cd:(_0x52a972,_0x200c8b,_0x501590)=>{'use strict';var _0x2321a5=_0x501590(0x3b*-0x4a+0x182+0x2471),_0x1222b0={'onopen':null,'onmessage':null,'onerror':null,'onclose':null,'addEventListener':function(_0x4f5378,_0x2ff4ac,_0x55c9cf){this['on'](_0x4f5378,_0x2ff4ac);},'removeEventListener':function(_0x439360,_0x22faa4,_0x18899d){this['removeList'+'ener'](_0x439360,_0x22faa4);},'dispatchEvent':function(_0x232eb4){_0x232eb4['target']=_0x232eb4['currentTar'+'get']=this,_0x232eb4['eventPhase']=_0x2321a5['AT_TARGET'],this['on'+_0x232eb4['type']]&&this['on'+_0x232eb4['type']](_0x232eb4),this['emit'](_0x232eb4['type'],_0x232eb4);}};_0x52a972['exports']=_0x1222b0;},0x70f:(_0x790c35,_0x1bb598,_0x545b8c)=>{'use strict';var _0x17ea86=_0x545b8c(0x29*0xcb+0x61*-0xb3+-0x1785*-0x3),_0x528fe0=_0x545b8c(0x98*0x3b+-0x2*-0x165e+-0x2b86),_0x45cc23=_0x545b8c(0x8df+0xa54+-0x9f),_0x7e7810=_0x545b8c(0x35e1+-0x1*-0x1ee2+-0x395b),_0x30384d=_0x545b8c(0x1*-0x5de+-0x4*0x763+0x2bcd),_0x22b8cc=_0x545b8c(-0x344d+0x17cc+0x373f),_0x218592=(_0x545b8c(0x1bb8+0x23b0+-0x2a83),{'http:':0x50,'https:':0x1bb,'ws:':0x50,'wss:':0x1bb}),_0x3526d9=['https:','wss:'],_0x14c1be=function(_0x52f7cd,_0x1248a9,_0xc53c2c){_0xc53c2c=_0xc53c2c||{},this['url']=_0x52f7cd,this['_driver']=_0x30384d['client'](this['url'],{'maxLength':_0xc53c2c['maxLength'],'protocols':_0x1248a9}),['open','error']['forEach'](function(_0x113f27){this['_driver']['on'](_0x113f27,function(){_0x3d2a5d['headers']=_0x3d2a5d['_driver']['headers'],_0x3d2a5d['statusCode']=_0x3d2a5d['_driver']['statusCode'];});},this);var _0xfa5d1a=_0xc53c2c['proxy']||{},_0x61b6e1=_0x7e7810['parse'](_0xfa5d1a['origin']||this['url']),_0x2a47f2=_0x61b6e1['port']||_0x218592[_0x61b6e1['protocol']],_0x26be63=_0x3526d9['indexOf'](_0x61b6e1['protocol'])>=-0x211b+-0x88e+-0x3*-0xde3,_0x5edba7=function(){_0x3d2a5d['_onConnect']();},_0x291983=_0xc53c2c['net']||{},_0x1b94fe=_0xc53c2c['tls']||{},_0x2cc1df=_0xfa5d1a['origin']?_0xfa5d1a['tls']||{}:_0x1b94fe,_0x3d2a5d=this;_0x291983['host']=_0x2cc1df['host']=_0x61b6e1['hostname'],_0x291983['port']=_0x2cc1df['port']=_0x2a47f2,_0x1b94fe['ca']=_0x1b94fe['ca']||_0xc53c2c['ca'],_0x2cc1df['servername']=_0x2cc1df['servername']||_0x61b6e1['hostname'],this['_stream']=_0x26be63?_0x45cc23['connect'](_0x2cc1df,_0x5edba7):_0x528fe0['connect'](_0x291983,_0x5edba7),_0xfa5d1a['origin']&&this['_configure'+'Proxy'](_0xfa5d1a,_0x1b94fe),_0x22b8cc['call'](this,_0xc53c2c);};_0x17ea86['inherits'](_0x14c1be,_0x22b8cc),_0x14c1be['prototype']['_onConnect']=function(){(this['_proxy']||this['_driver'])['start']();},_0x14c1be['prototype']['_configure'+'Proxy']=function(_0x1df029,_0x1647d0){var _0xae5b2d,_0x14e055=_0x7e7810['parse'](this['url']),_0x5bc084=_0x3526d9['indexOf'](_0x14e055['protocol'])>=0x1e6e*0x1+-0x1*-0xbb+-0x3*0xa63,_0x3265e5=this;if(this['_proxy']=this['_driver']['proxy'](_0x1df029['origin']),_0x1df029['headers']){for(_0xae5b2d in _0x1df029['headers'])this['_proxy']['setHeader'](_0xae5b2d,_0x1df029['headers'][_0xae5b2d]);}this['_proxy']['pipe'](this['_stream'],{'end':!(-0x7*-0x36f+-0x9e*-0x1d+0x3*-0xdfa)}),this['_stream']['pipe'](this['_proxy']),this['_proxy']['on']('connect',function(){if(_0x5bc084){var _0x1dfa5e={'socket':_0x3265e5['_stream'],'servername':_0x14e055['hostname']};for(_0xae5b2d in _0x1647d0)_0x1dfa5e[_0xae5b2d]=_0x1647d0[_0xae5b2d];_0x3265e5['_stream']=_0x45cc23['connect'](_0x1dfa5e),_0x3265e5['_configure'+'Stream']();}_0x3265e5['_driver']['io']['pipe'](_0x3265e5['_stream']),_0x3265e5['_stream']['pipe'](_0x3265e5['_driver']['io']),_0x3265e5['_driver']['start']();}),this['_proxy']['on']('error',function(_0x49f6d9){_0x3265e5['_driver']['emit']('error',_0x49f6d9);});},_0x790c35['exports']=_0x14c1be;},0x22bb:_0x3bc226=>{_0x3bc226['exports']={'TYPE_JSON':{'Content-Type':'applicatio'+'n/json;\x20ch'+'arset=utf-'+'8'},'TYPE_SCRIPT':{'Content-Type':'text/javas'+'cript;\x20cha'+'rset=utf-8'},'TYPE_TEXT':{'Content-Type':'text/plain'+';\x20charset='+'utf-8'}};},0xdf6:(_0x3e8d5e,_0x10d7a4,_0x44a147)=>{'use strict';var _0x227316=_0x44a147(0x22d9+-0xd*-0x13+-0x18a3)['Buffer'],_0x1f4aa6=_0x44a147(0x1*-0x19b5+0x2a7b+0x1b7*0x6),_0x40f93c=_0x44a147(0x1*-0x187a+-0x1*-0x4a7+0x216b),_0x4a15dc=_0x44a147(0x76b+0x22aa+-0x121*0xd),_0x22787a=_0x44a147(-0x9*-0xbd+-0x2000+0x1c88),_0x3d962=_0x22787a['EventSourc'+'e'],_0x30ffac=_0x44a147(0x1*0xe3e+-0x1*-0x1212+-0x180b),_0x24dbda=_0x44a147(0x1c6b+-0x7*0x329+0x1*0x6f7),_0xbdcbc3=_0x44a147(0x3486+-0x2*-0x595+-0x1*0x223b),_0xbe7afd=_0x44a147(-0x9ff+0x18*-0x72+0x1*0x321b),_0xe8ce4=_0x44a147(-0x9a*-0x3+0x3d3*-0x1+0x116a),_0x1dbc7d=_0x44a147(-0x1651+-0x2010+0x466d),_0x102d58=_0x44a147(0x230f+0x9cd+-0x1b45),_0x31aeab=_0x44a147(-0x3433+-0x1c*0x1d9+-0x2b73*-0x3),_0x2294a9=_0x44a147(-0x2c9*0xe+-0x1*-0x191+0x2cce),_0x3f14b5=_0x44a147(0x1eb9+0x1970+0x15e2*-0x2),_0x1fcfdd=_0x44a147(-0x1afe+-0x927+0x46e0),_0x5c9cc7=_0x44a147(-0x146f+-0x1e9c+0x69d*0xb),_0x185a90=_0x1dbc7d({'className':'NodeAdapte'+'r','DEFAULT_ENDPOINT':'/bayeux','SCRIPT_PATH':'faye-brows'+'er-min.js','VALID_JSONP_CALLBACK':/^[a-z_\$][a-z0-9_\$]*(\.[a-z_\$][a-z0-9_\$]*)*$/i,'initialize':function(_0x5af99e){this['_options']=_0x5af99e||{},_0xe8ce4(this['_options'],['engine','mount','ping','timeout','extensions','websocketE'+'xtensions']),this['_extension'+'s']=[],this['_endpoint']=this['_options']['mount']||this['DEFAULT_EN'+'DPOINT'],this['_endpointR'+'e']=new RegExp('^'+this['_endpoint']['replace'](/\/$/,'')+('(/[^/]*)*('+'\x5c.[^\x5c.]+)?'+'$')),this['_server']=_0x3f14b5['create'](this['_options']),this['_static']=new _0x5c9cc7(_0x1f4aa6['join'](__dirname,'..','..','client'),/\.(?:js|map)$/),this['_static']['map'](_0x1f4aa6['basename'](this['_endpoint'])+'.js',this['SCRIPT_PAT'+'H']),this['_static']['map']('client.js',this['SCRIPT_PAT'+'H']);var _0x4665ff,_0x203bfd,_0x1be9df=this['_options']['extensions'],_0x160b24=this['_options']['websocketE'+'xtensions'];if(_0x1be9df){for(_0x4665ff=0x8ed*0x1+0x2*0xacf+-0x1e8b,_0x203bfd=(_0x1be9df=[]['concat'](_0x1be9df))['length'];_0x4665ff<_0x203bfd;_0x4665ff++)this['addExtensi'+'on'](_0x1be9df[_0x4665ff]);}if(_0x160b24){for(_0x4665ff=-0x106+-0x4*-0x3e8+-0x2a*0x59,_0x203bfd=(_0x160b24=[]['concat'](_0x160b24))['length'];_0x4665ff<_0x203bfd;_0x4665ff++)this['addWebsock'+'etExtensio'+'n'](_0x160b24[_0x4665ff]);}},'listen':function(){throw new Error('The\x20listen'+'()\x20method\x20'+'is\x20depreca'+'ted\x20-\x20use\x20'+'the\x20attach'+'()\x20method\x20'+'to\x20bind\x20Fa'+'ye\x20to\x20an\x20h'+'ttp.Server');},'addExtension':function(_0x4321dc){return this['_server']['addExtensi'+'on'](_0x4321dc);},'removeExtension':function(_0x194934){return this['_server']['removeExte'+'nsion'](_0x194934);},'addWebsocketExtension':function(_0x3b3dc6){this['_extension'+'s']['push'](_0x3b3dc6);},'close':function(){return this['_server']['close']();},'getClient':function(){return this['_client']=this['_client']||new _0x2294a9(this['_server']);},'attach':function(_0x1c15db){this['_overrideL'+'isteners'](_0x1c15db,'request','handle'),this['_overrideL'+'isteners'](_0x1c15db,'upgrade','handleUpgr'+'ade');},'_overrideListeners':function(_0x102262,_0xbf7f10,_0x4ae1d3){var _0x108944=_0x102262['listeners'](_0xbf7f10),_0x2cb955=this;_0x102262['removeAllL'+'isteners'](_0xbf7f10),_0x102262['on'](_0xbf7f10,function(_0x466cfa){if(_0x2cb955['check'](_0x466cfa))return _0x2cb955[_0x4ae1d3]['apply'](_0x2cb955,arguments);for(var _0x4b509e=0x2*-0x732+-0xd4f+0x1*0x1bb3,_0x2a02b5=_0x108944['length'];_0x4b509e<_0x2a02b5;_0x4b509e++)_0x108944[_0x4b509e]['apply'](this,arguments);});},'check':function(_0x20e41b){var _0x3f3638=_0x4a15dc['parse'](_0x20e41b['url'],!(-0x1*-0xc11+0x26f7+0x8e*-0x5c))['pathname'];return!!this['_endpointR'+'e']['test'](_0x3f3638);},'handle':function(_0x20bbd2,_0x4d6f53){var _0x3a7e63=_0x4a15dc['parse'](_0x20bbd2['url'],!(-0x2*0x30e+-0xa0c+0x16*0xbc)),_0x3382b7=_0x20bbd2['method'],_0x587ca8=this;return _0x20bbd2['originalUr'+'l']=_0x20bbd2['url'],_0x20bbd2['on']('error',function(_0x375e3d){_0x587ca8['_returnErr'+'or'](_0x4d6f53,_0x375e3d);}),_0x4d6f53['on']('error',function(_0x4e10e4){_0x587ca8['_returnErr'+'or'](null,_0x4e10e4);}),this['_static']['test'](_0x3a7e63['pathname'])?this['_static']['call'](_0x20bbd2,_0x4d6f53):'OPTIONS'===_0x3382b7||'POST'===_0x20bbd2['headers']['access-con'+'trol-reque'+'st-method']?this['_handleOpt'+'ions'](_0x20bbd2,_0x4d6f53):_0x3d962['isEventSou'+'rce'](_0x20bbd2)?this['handleEven'+'tSource'](_0x20bbd2,_0x4d6f53):'GET'===_0x3382b7?this['_callWithP'+'arams'](_0x20bbd2,_0x4d6f53,_0x3a7e63['query']):'POST'===_0x3382b7?this['_concatStr'+'eam'](_0x20bbd2,function(_0x5336b3){var _0x4acdca='applicatio'+'n/json'===(_0x20bbd2['headers']['content-ty'+'pe']||'')['split'](';')[0x79*0x3e+0x1a*-0xef+-0x508]?{'message':_0x5336b3}:_0x40f93c['parse'](_0x5336b3);_0x20bbd2['body']=_0x5336b3,this['_callWithP'+'arams'](_0x20bbd2,_0x4d6f53,_0x4acdca);},this):void this['_returnErr'+'or'](_0x4d6f53,{'message':'Unrecogniz'+'ed\x20request'+'\x20type'});},'_callWithParams':function(_0x3fc8dc,_0x4cc126,_0x3c375e){if(!_0x3c375e['message'])return this['_returnErr'+'or'](_0x4cc126,{'message':'Received\x20r'+'equest\x20wit'+'h\x20no\x20messa'+'ge:\x20'+this['_formatReq'+'uest'](_0x3fc8dc)});try{this['debug']('Received\x20m'+'essage\x20via'+'\x20HTTP\x20'+_0x3fc8dc['method']+':\x20?',_0x3c375e['message']);var _0x29ba81=this['_parseJSON'](_0x3c375e['message']),_0x2941e6=_0x3c375e['jsonp']||_0x30ffac['JSONP_CALL'+'BACK'],_0x4ea341='GET'===_0x3fc8dc['method'],_0x35c840=_0x4ea341?_0x1fcfdd['TYPE_SCRIP'+'T']:_0x1fcfdd['TYPE_JSON'],_0x4773cf=_0x24dbda({},_0x35c840),_0x18e59b=_0x3fc8dc['headers']['origin'];if(!this['VALID_JSON'+'P_CALLBACK']['test'](_0x2941e6))return this['_returnErr'+'or'](_0x4cc126,{'message':'Invalid\x20JS'+'ON-P\x20callb'+'ack:\x20'+_0x2941e6});_0x4773cf['Cache-Cont'+'rol']='no-cache,\x20'+'no-store',_0x4773cf['X-Content-'+'Type-Optio'+'ns']='nosniff',_0x18e59b&&(_0x4773cf['Access-Con'+'trol-Allow'+'-Credentia'+'ls']='true',_0x4773cf['Access-Con'+'trol-Allow'+'-Origin']=_0x18e59b),this['_server']['process'](_0x29ba81,_0x3fc8dc,function(_0x57fbe0){var _0x80fbf9=_0xbe7afd(_0x57fbe0);_0x4ea341&&(_0x80fbf9='/**/'+_0x2941e6+'('+this['_jsonpEsca'+'pe'](_0x80fbf9)+');',_0x4773cf['Content-Di'+'sposition']='attachment'+';\x20filename'+'=f.txt'),_0x4773cf['Content-Le'+'ngth']=_0x227316['from'](_0x80fbf9,'utf8')['length']['toString'](),this['debug']('HTTP\x20respo'+'nse:\x20?',_0x80fbf9),_0x4cc126['writeHead'](-0xdf1+-0x2206+0x30bf,_0x4773cf),_0x4cc126['end'](_0x80fbf9);},this);}catch(_0x6d1e6c){this['_returnErr'+'or'](_0x4cc126,_0x6d1e6c);}},'_jsonpEscape':function(_0x4dc350){return _0x4dc350['replace'](/\u2028/g,'\x5cu2028')['replace'](/\u2029/g,'\x5cu2029');},'handleUpgrade':function(_0x5f427b,_0x2b121a,_0x5612f7){var _0xeb68d={'extensions':this['_extension'+'s'],'ping':this['_options']['ping']},_0x2ec846=new _0x22787a(_0x5f427b,_0x2b121a,_0x5612f7,[],_0xeb68d),_0x321a72=null,_0x45bd0c=this;_0x5f427b['originalUr'+'l']=_0x5f427b['url'],_0x2ec846['onmessage']=function(_0x42d025){try{_0x45bd0c['debug']('Received\x20m'+'essage\x20via'+'\x20WebSocket'+'['+_0x2ec846['version']+']:\x20?',_0x42d025['data']);var _0x4e03a3=_0x45bd0c['_parseJSON'](_0x42d025['data']),_0x508f50=_0xbdcbc3(_0x4e03a3);_0x321a72&&_0x508f50&&_0x508f50!==_0x321a72&&_0x45bd0c['_server']['closeSocke'+'t'](_0x321a72,!(0x2439+-0x87c+-0x1bbc)),_0x45bd0c['_server']['openSocket'](_0x508f50,_0x2ec846,_0x5f427b),_0x508f50&&(_0x321a72=_0x508f50),_0x45bd0c['_server']['process'](_0x4e03a3,_0x5f427b,function(_0xfc95b4){_0x2ec846&&_0x2ec846['send'](_0xbe7afd(_0xfc95b4));});}catch(_0x488594){console['log'](_0x488594['stack']),_0x45bd0c['error'](_0x488594['message']+('\x0aBacktrace'+':\x0a')+_0x488594['stack']);}},_0x2ec846['onclose']=function(_0x758c2){_0x45bd0c['_server']['closeSocke'+'t'](_0x321a72),_0x2ec846=null;};},'handleEventSource':function(_0x580408,_0x14f0b3){var _0x70f4e4=new _0x3d962(_0x580408,_0x14f0b3,{'ping':this['_options']['ping']}),_0x3ceca2=_0x70f4e4['url']['split']('/')['pop'](),_0x298e54=this;this['debug']('Opened\x20Eve'+'ntSource\x20c'+'onnection\x20'+'for\x20?',_0x3ceca2),this['_server']['openSocket'](_0x3ceca2,_0x70f4e4,_0x580408),_0x70f4e4['onclose']=function(_0x19e5e5){_0x298e54['_server']['closeSocke'+'t'](_0x3ceca2),_0x70f4e4=null;};},'_handleOptions':function(_0x2cc2ec,_0x7bd2dc){var _0x478cde={'Access-Control-Allow-Credentials':'true','Access-Control-Allow-Headers':'Accept,\x20Au'+'thorizatio'+'n,\x20Content'+'-Type,\x20Pra'+'gma,\x20X-Req'+'uested-Wit'+'h','Access-Control-Allow-Methods':'POST,\x20GET','Access-Control-Allow-Origin':_0x2cc2ec['headers']['origin']||_0x2cc2ec['headers']['referer']||'*','Access-Control-Max-Age':'86400'};_0x7bd2dc['writeHead'](-0x1*-0x1ef1+-0x1*-0x16f4+-0x351d,_0x478cde),_0x7bd2dc['end']('');},'_concatStream':function(_0x49f3ab,_0x4297d5,_0x4fec3a){var _0x494d8f=[],_0x58ad96=-0xc*-0x89+0xd92+-0x13fe;_0x49f3ab['on']('data',function(_0x51b338){_0x494d8f['push'](_0x51b338),_0x58ad96+=_0x51b338['length'];}),_0x49f3ab['on']('end',function(){for(var _0x1388c6=_0x227316['alloc'](_0x58ad96),_0x5fe93f=-0x15+0x151*-0xb+-0x1*-0xe90,_0x44c584=-0x971+0x1fd5*-0x1+0x2946,_0xf2296e=_0x494d8f['length'];_0x44c584<_0xf2296e;_0x44c584++)_0x494d8f[_0x44c584]['copy'](_0x1388c6,_0x5fe93f),_0x5fe93f+=_0x494d8f[_0x44c584]['length'];_0x4297d5['call'](_0x4fec3a,_0x1388c6['toString']('utf8'));});},'_parseJSON':function(_0x166040){var _0x50a4ca=JSON['parse'](_0x166040);if('object'==typeof _0x50a4ca)return _0x50a4ca;throw new SyntaxError('JSON\x20messa'+'ges\x20must\x20c'+'ontain\x20an\x20'+'object\x20or\x20'+'array');},'_formatRequest':function(_0x28e265){var _0x5ce33c=_0x28e265['method']['toUpperCas'+'e'](),_0x23e3e2='curl\x20-X\x20'+_0x5ce33c;return _0x23e3e2+='\x20\x27http://'+_0x28e265['headers']['host']+_0x28e265['url']+'\x27','POST'===_0x5ce33c&&(_0x23e3e2+='\x20-H\x20\x27Conte'+'nt-Type:\x20'+_0x28e265['headers']['content-ty'+'pe']+'\x27',_0x23e3e2+='\x20-d\x20\x27'+_0x28e265['body']+'\x27'),_0x23e3e2;},'_returnError':function(_0x2181a3,_0x5d9d69){var _0x2fd24f=_0x5d9d69['message'];_0x5d9d69['stack']&&(_0x2fd24f+='\x0aBacktrace'+':\x0a'+_0x5d9d69['stack']),this['error'](_0x2fd24f),_0x2181a3&&(_0x2181a3['writeHead'](0x18ac+-0x2691+0xf75,_0x1fcfdd['TYPE_TEXT']),_0x2181a3['end']('Bad\x20reques'+'t'));}});for(var _0x681dd0 in _0x31aeab)!function(_0x230c1e){_0x185a90['prototype'][_0x230c1e]=function(){return this['_server']['_engine'][_0x230c1e]['apply'](this['_server']['_engine'],arguments);};}(_0x681dd0);_0x24dbda(_0x185a90['prototype'],_0x102d58),_0x3e8d5e['exports']=_0x185a90;},0x15b4:(_0x276b3a,_0x44220c,_0x57ff3a)=>{'use strict';var _0x280b78=_0x57ff3a(-0x2*-0xbcb+-0x18bc+0x44*0x6b),_0x4a7ee4=_0x57ff3a(0x2fb9+-0xa*0x139+0x329),_0x7bd346=_0x57ff3a(-0x4f1+0x19*-0x7f+0x1d*0x188),_0x736149=_0x57ff3a(-0x12e*-0x29+0xaad*-0x1+0xa49*-0x1),_0x19d9bf=_0x57ff3a(0x8*0x177+-0xf4f+-0x1c9*-0xb),_0x218184=_0x57ff3a(-0x25dd+-0x200f+0x532f),_0xfbdee3=_0x57ff3a(0x39f*0x6+-0x17*0xb7+0x1d72),_0x20f8fd=_0x19d9bf({'initialize':function(_0x24efd5,_0x29c4a0){this['_directory']=_0x24efd5,this['_pathRegex']=_0x29c4a0,this['_pathMap']={},this['_index']={};},'map':function(_0x24fb3b,_0x51d00d){this['_pathMap'][_0x24fb3b]=_0x51d00d;},'test':function(_0x4653e5){return this['_pathRegex']['test'](_0x4653e5);},'call':function(_0x189647,_0x9c70b6){var _0x455df9=_0x736149['parse'](_0x189647['url'],!(-0x3*0xa3e+-0x1*-0x1151+-0xd69*-0x1))['pathname'],_0x4cf428=_0x7bd346['basename'](_0x455df9);_0x4cf428=this['_pathMap'][_0x4cf428]||_0x4cf428,this['_index'][_0x4cf428]=this['_index'][_0x4cf428]||{};var _0x5445c2=this['_index'][_0x4cf428],_0x459845=_0x7bd346['join'](this['_directory'],_0x4cf428);try{_0x5445c2['content']=_0x5445c2['content']||_0x4a7ee4['readFileSy'+'nc'](_0x459845),_0x5445c2['digest']=_0x5445c2['digest']||_0x280b78['createHash']('sha1')['update'](_0x5445c2['content'])['digest']('hex'),_0x5445c2['mtime']=_0x5445c2['mtime']||_0x4a7ee4['statSync'](_0x459845)['mtime'];}catch(_0x1a60d8){return _0x9c70b6['writeHead'](0x1*-0x1fa2+-0x1329+0x345f,{}),_0x9c70b6['end']();}var _0xb9fc8c=/\.js$/['test'](_0x455df9)?'TYPE_SCRIP'+'T':'TYPE_JSON',_0x3fa586=_0x189647['headers']['if-modifie'+'d-since'],_0x28b25f={'ETag':_0x5445c2['digest'],'Last-Modified':_0x5445c2['mtime']['toGMTStrin'+'g']()};_0x189647['headers']['if-none-ma'+'tch']===_0x5445c2['digest']||_0x3fa586&&_0x5445c2['mtime']<=new Date(_0x3fa586)?(_0x9c70b6['writeHead'](0xfd+0xd9*-0x1+-0x86*-0x2,_0x28b25f),_0x9c70b6['end']()):(_0x28b25f['Content-Le'+'ngth']=_0x5445c2['content']['length'],_0x218184(_0x28b25f,_0xfbdee3[_0xb9fc8c]),_0x9c70b6['writeHead'](-0xe71+-0x465+0x139e,_0x28b25f),_0x9c70b6['end'](_0x5445c2['content']));}});_0x276b3a['exports']=_0x20f8fd;},0x15bf:(_0x55ef55,_0x32d5da,_0x26d7fb)=>{'use strict';var _0x15c553=_0x26d7fb(0x2655+0x234d+-0x83a*0x7),_0x28c75d=_0x26d7fb(-0x2fb*0xd+-0x1b5+0x35b7),_0x12ded8=_0x26d7fb(0xa*-0x9a+-0x7*0x6c+0x2102),_0x39a9eb=_0x26d7fb(0x29f5*0x1+0x19cf*0x1+-0x1f6c),_0x488bbb=_0x15c553({'initialize':function(_0x26e35d,_0xed663a,_0xba96c1){this['_engine']=_0x26e35d,this['_id']=_0xed663a,this['_options']=_0xba96c1,this['_inbox']=[];},'deliver':function(_0x77ea61){if(delete _0x77ea61['clientId'],this['socket'])return this['socket']['send'](_0x77ea61);this['_inbox']['push'](_0x77ea61),this['_beginDeli'+'veryTimeou'+'t']();},'connect':function(_0x46cc4c,_0x53af10,_0x207e0f){var _0x322e1b=void(-0xc*-0x1bc+-0x1874+-0x2*-0x1d2)!==(_0x46cc4c=_0x46cc4c||{})['timeout']?_0x46cc4c['timeout']/(0x11d5+-0x49*-0x6+-0xfa3):this['_engine']['timeout'];this['setDeferre'+'dStatus']('unknown'),this['callback'](_0x53af10,_0x207e0f),this['_beginDeli'+'veryTimeou'+'t'](),this['_beginConn'+'ectionTime'+'out'](_0x322e1b);},'flush':function(){this['removeTime'+'out']('connection'),this['removeTime'+'out']('delivery'),this['setDeferre'+'dStatus']('succeeded',this['_inbox']),this['_inbox']=[],this['socket']||this['_engine']['closeConne'+'ction'](this['_id']);},'_beginDeliveryTimeout':function(){0x66+0x1*-0x9e8+0x982!==this['_inbox']['length']&&this['addTimeout']('delivery',this['_engine']['MAX_DELAY'],this['flush'],this);},'_beginConnectionTimeout':function(_0x3b95f7){this['addTimeout']('connection',_0x3b95f7,this['flush'],this);}});_0x28c75d(_0x488bbb['prototype'],_0x12ded8),_0x28c75d(_0x488bbb['prototype'],_0x39a9eb),_0x55ef55['exports']=_0x488bbb;},0x1628:(_0x5d9a77,_0x466509,_0x1343e0)=>{'use strict';var _0x3b968e=_0x1343e0(-0xe75*0x1+0x1e65+-0x1*0x257),_0x6ef055=_0x1343e0(-0xcd*0x27+-0x1776+0x10fd*0x4),_0x4d8d2f=_0x1343e0(-0xb6*-0x1f+0x1804+0x9*-0x33f),_0x774662=_0x1343e0(0x118+-0xbd3*-0x2+-0x51e),_0x555eed=_0x1343e0(0x7*-0x405+0x25*-0xe9+0x6228),_0xd5a44d=function(_0x22b995,_0x1b5899){this['_server']=_0x22b995,this['_options']=_0x1b5899||{},this['reset']();};_0xd5a44d['create']=function(_0x4a206e,_0xf1fb86){return new _0xd5a44d(_0x4a206e,_0xf1fb86);},_0x6ef055(_0xd5a44d['prototype']={'disconnect':function(){this['reset'](),this['removeAllT'+'imeouts']();},'reset':function(){this['_namespace']=new _0x4d8d2f(),this['_clients']={},this['_channels']={},this['_messages']={};},'createClient':function(_0x5d8013,_0x30a530){var _0x5874d0=this['_namespace']['generate']();this['_server']['debug']('Created\x20ne'+'w\x20client\x20?',_0x5874d0),this['ping'](_0x5874d0),this['_server']['trigger']('handshake',_0x5874d0),_0x5d8013['call'](_0x30a530,_0x5874d0);},'destroyClient':function(_0x1d441d,_0x512c63,_0x157a4c){if(this['_namespace']['exists'](_0x1d441d)){var _0x460bac=this['_clients'];_0x460bac[_0x1d441d]&&_0x460bac[_0x1d441d]['forEach'](function(_0x39d776){this['unsubscrib'+'e'](_0x1d441d,_0x39d776);},this),this['removeTime'+'out'](_0x1d441d),this['_namespace']['release'](_0x1d441d),delete this['_messages'][_0x1d441d],this['_server']['debug']('Destroyed\x20'+'client\x20?',_0x1d441d),this['_server']['trigger']('disconnect',_0x1d441d),this['_server']['trigger']('close',_0x1d441d),_0x512c63&&_0x512c63['call'](_0x157a4c);}},'clientExists':function(_0x3a5d9f,_0x42836c,_0x4cbd17){_0x42836c['call'](_0x4cbd17,this['_namespace']['exists'](_0x3a5d9f));},'ping':function(_0x825470){var _0x525917=this['_server']['timeout'];'number'==typeof _0x525917&&(this['_server']['debug']('Ping\x20?,\x20?',_0x825470,_0x525917),this['removeTime'+'out'](_0x825470),this['addTimeout'](_0x825470,(0x2042*-0x1+-0x1b*0xda+-0x506*-0xb)*_0x525917,function(){this['destroyCli'+'ent'](_0x825470);},this));},'subscribe':function(_0x314a70,_0x5dcc52,_0x11e2af,_0x16f490){var _0x2c8e82=this['_clients'],_0x31e49b=this['_channels'];_0x2c8e82[_0x314a70]=_0x2c8e82[_0x314a70]||new _0x774662();var _0x2ec427=_0x2c8e82[_0x314a70]['add'](_0x5dcc52);_0x31e49b[_0x5dcc52]=_0x31e49b[_0x5dcc52]||new _0x774662(),_0x31e49b[_0x5dcc52]['add'](_0x314a70),this['_server']['debug']('Subscribed'+'\x20client\x20?\x20'+'to\x20channel'+'\x20?',_0x314a70,_0x5dcc52),_0x2ec427&&this['_server']['trigger']('subscribe',_0x314a70,_0x5dcc52),_0x11e2af&&_0x11e2af['call'](_0x16f490,!(0xa9d*0x3+-0x1151+-0xe86));},'unsubscribe':function(_0x541dad,_0x398068,_0x25215f,_0x426907){var _0x4b310e=this['_clients'],_0x103f00=this['_channels'],_0x415bcd=!(-0x1*0x24ef+-0x1190+-0x368*-0x10);_0x4b310e[_0x541dad]&&(_0x415bcd=_0x4b310e[_0x541dad]['remove'](_0x398068),_0x4b310e[_0x541dad]['isEmpty']()&&delete _0x4b310e[_0x541dad]),_0x103f00[_0x398068]&&(_0x103f00[_0x398068]['remove'](_0x541dad),_0x103f00[_0x398068]['isEmpty']()&&delete _0x103f00[_0x398068]),this['_server']['debug']('Unsubscrib'+'ed\x20client\x20'+'?\x20from\x20cha'+'nnel\x20?',_0x541dad,_0x398068),_0x415bcd&&this['_server']['trigger']('unsubscrib'+'e',_0x541dad,_0x398068),_0x25215f&&_0x25215f['call'](_0x426907,!(-0x8d+0x991*-0x2+0x13af));},'publish':function(_0x42c4ad,_0x58f981){this['_server']['debug']('Publishing'+'\x20message\x20?',_0x42c4ad);for(var _0x191994,_0x57cd5c=this['_messages'],_0xdf808b=new _0x774662(),_0x4aedf1=0x1cd*0x15+0xf16*0x2+-0xd99*0x5,_0x51df2f=_0x58f981['length'];_0x4aedf1<_0x51df2f;_0x4aedf1++)(_0x191994=this['_channels'][_0x58f981[_0x4aedf1]])&&_0x191994['forEach'](_0xdf808b['add'],_0xdf808b);_0xdf808b['forEach'](function(_0x519caa){this['_server']['debug']('Queueing\x20f'+'or\x20client\x20'+'?:\x20?',_0x519caa,_0x42c4ad),_0x57cd5c[_0x519caa]=_0x57cd5c[_0x519caa]||[],_0x57cd5c[_0x519caa]['push'](_0x3b968e(_0x42c4ad)),this['emptyQueue'](_0x519caa);},this),this['_server']['trigger']('publish',_0x42c4ad['clientId'],_0x42c4ad['channel'],_0x42c4ad['data']);},'emptyQueue':function(_0x4c5312){this['_server']['hasConnect'+'ion'](_0x4c5312)&&(this['_server']['deliver'](_0x4c5312,this['_messages'][_0x4c5312]),delete this['_messages'][_0x4c5312]);}},_0x555eed),_0x5d9a77['exports']=_0xd5a44d;},0x24af:(_0x1f32a8,_0x751d,_0x21c249)=>{'use strict';var _0x4de2a0=_0x21c249(0x1*-0x5ab+0xd03+-0x381),_0x2e62fb=_0x21c249(-0x1*0x24d+0x1d*0x3a+-0x1*-0x8fe),_0x1d8fce=_0x21c249(-0x1*0xec3+0x13e8+0x4e0),_0x3d8dd3=_0x21c249(-0x1*-0x1567+0x38b*-0x5+-0x1c4*-0x7),_0xe2ea65=(_0x21c249(0x18a+0x9*-0x1fb+0x109e),_0x21c249(-0x8b3+-0x62f+0x1e9*0x11)),_0xe3eb26=_0x21c249(0xcd1+-0x611*-0x5+-0x3f*0x44),_0x248ff1=_0x21c249(-0x1109+0x1*-0x3f67+0x709b),_0x4bb99f=_0x21c249(-0x8f*0x17+-0x22*-0x11+0x1*0x2056),_0x244dba=_0x21c249(0x272e+0x7c*0x49+-0x3462*0x1),_0x242919=_0x2e62fb(_0x3d8dd3({'className':'Engine.Pro'+'xy','MAX_DELAY':0x0,'INTERVAL':0x0,'TIMEOUT':0x3c,'initialize':function(_0x3a8daa){this['_options']=_0x3a8daa||{},this['_connectio'+'ns']={},this['interval']=this['_options']['interval']||this['INTERVAL'],this['timeout']=this['_options']['timeout']||this['TIMEOUT'];var _0x23ed04=this['_options']['type']||_0x244dba;this['_engine']=_0x23ed04['create'](this,this['_options']),this['bind']('close',function(_0x22d8a4){var _0x5c834c=this;_0x4de2a0(function(){_0x5c834c['flushConne'+'ction'](_0x22d8a4);});},this),this['debug']('Created\x20ne'+'w\x20engine:\x20'+'?',this['_options']);},'connect':function(_0x1d84cb,_0x4206d5,_0x7d545a,_0x32ec80){this['debug']('Accepting\x20'+'connection'+'\x20from\x20?',_0x1d84cb),this['_engine']['ping'](_0x1d84cb),this['connection'](_0x1d84cb,!(-0x5e*0x5a+-0x57*-0x3+0x2007))['connect'](_0x4206d5,_0x7d545a,_0x32ec80),this['_engine']['emptyQueue'](_0x1d84cb);},'hasConnection':function(_0x463527){return this['_connectio'+'ns']['hasOwnProp'+'erty'](_0x463527);},'connection':function(_0x24c7e5,_0x3c53f3){var _0x407754=this['_connectio'+'ns'][_0x24c7e5];return _0x407754||!_0x3c53f3?_0x407754:(this['_connectio'+'ns'][_0x24c7e5]=new _0x4bb99f(this,_0x24c7e5),this['trigger']('connection'+':open',_0x24c7e5),this['_connectio'+'ns'][_0x24c7e5]);},'closeConnection':function(_0x1b6a55){this['debug']('Closing\x20co'+'nnection\x20f'+'or\x20?',_0x1b6a55);var _0x36db30=this['_connectio'+'ns'][_0x1b6a55];_0x36db30&&(_0x36db30['socket']&&_0x36db30['socket']['close'](),this['trigger']('connection'+':close',_0x1b6a55),delete this['_connectio'+'ns'][_0x1b6a55]);},'openSocket':function(_0x42a271,_0x2fc614){this['connection'](_0x42a271,!(-0x1b5a+-0x266f*0x1+0x1*0x41c9))['socket']=_0x2fc614;},'deliver':function(_0x126305,_0x1cc900){if(!_0x1cc900||-0x1*0x206a+0x1ce2+0x71*0x8===_0x1cc900['length'])return!(-0x43a+0xe19*0x2+-0x17f7);var _0x5b4182=this['connection'](_0x126305,!(-0x371*-0x7+0xa86+-0x229c));if(!_0x5b4182)return!(-0x1311+0x236+0x10dc);for(var _0x138ed0=0x16b9+-0x107d+0x2a*-0x26,_0x73f5cc=_0x1cc900['length'];_0x138ed0<_0x73f5cc;_0x138ed0++)_0x5b4182['deliver'](_0x1cc900[_0x138ed0]);return!(0x2*-0x549+-0x1331+-0x1*-0x1dc3);},'generateId':function(){return _0x1d8fce();},'flushConnection':function(_0x485f82,_0x5cdb65){if(_0x485f82){this['debug']('Flushing\x20c'+'onnection\x20'+'for\x20?',_0x485f82);var _0x33bc6e=this['connection'](_0x485f82,!(-0x1d55+-0xf13*-0x1+0xe43));_0x33bc6e&&(!(0x165f+0xddf+-0x243d)===_0x5cdb65&&(_0x33bc6e['socket']=null),_0x33bc6e['flush'](),this['closeConne'+'ction'](_0x485f82));}},'close':function(){for(var _0x14840d in this['_connectio'+'ns'])this['flushConne'+'ction'](_0x14840d);this['_engine']['disconnect']();},'disconnect':function(){if(this['_engine']['disconnect'])return this['_engine']['disconnect']();},'publish':function(_0x59e45c){var _0x5d7039=_0x248ff1['expand'](_0x59e45c['channel']);return this['_engine']['publish'](_0x59e45c,_0x5d7039);}}),{'get':function(_0x5e2ce0){return new _0x242919(_0x5e2ce0);}});['createClie'+'nt','clientExis'+'ts','destroyCli'+'ent','ping','subscribe','unsubscrib'+'e']['forEach'](function(_0x5dd6a4){_0x242919['prototype'][_0x5dd6a4]=function(){return this['_engine'][_0x5dd6a4]['apply'](this['_engine'],arguments);};}),_0x2e62fb(_0x242919['prototype'],_0xe3eb26),_0x2e62fb(_0x242919['prototype'],_0xe2ea65),_0x1f32a8['exports']=_0x242919;},0xa37:(_0x3e949e,_0x48f478,_0x4de845)=>{'use strict';var _0x5bf95c=_0x4de845(0x2094+0x1947+0x3196*-0x1),_0x430161=_0x4de845(0x1c49+-0x9fd*0x2+0x948),_0x3eb428={'VERSION':_0x5bf95c['VERSION'],'Client':_0x4de845(-0x1376+-0x4*0x1cf+0x2213),'Scheduler':_0x4de845(-0x5da+0xced+0x1342),'NodeAdapter':_0x4de845(-0x1*-0x25c5+0x5a7+-0x4e9*0x6)};_0x430161['wrapper']=_0x3eb428,_0x3e949e['exports']=_0x3eb428;},0x180a:(_0x2fd05d,_0x1855a8,_0x2e5e39)=>{'use strict';var _0x5ecca0=_0x2e5e39(0x2529+-0x1150+0x9c2*-0x2);_0x2fd05d['exports']={'then':function(_0x53144e,_0x5ce45){var _0x164460=this;return this['_promise']||(this['_promise']=new _0x5ecca0(function(_0x976935,_0x25f32d){_0x164460['_resolve']=_0x976935,_0x164460['_reject']=_0x25f32d;})),0x102b+-0x19a9+0x5*0x1e6===arguments['length']?this['_promise']:this['_promise']['then'](_0x53144e,_0x5ce45);},'callback':function(_0x306159,_0x422430){return this['then'](function(_0x594801){_0x306159['call'](_0x422430,_0x594801);});},'errback':function(_0x131f46,_0x325c2f){return this['then'](null,function(_0x512af4){_0x131f46['call'](_0x325c2f,_0x512af4);});},'timeout':function(_0x64c61d,_0x520e76){this['then']();var _0x17c89d=this;this['_timer']=global['setTimeout'](function(){_0x17c89d['_reject'](_0x520e76);},(-0x1a0+0xeb*0x6+-0x6*-0x1)*_0x64c61d);},'setDeferredStatus':function(_0x48957a,_0xe702ba){this['_timer']&&global['clearTimeo'+'ut'](this['_timer']),this['then'](),'succeeded'===_0x48957a?this['_resolve'](_0xe702ba):'failed'===_0x48957a?this['_reject'](_0xe702ba):delete this['_promise'];}};},0x1197:(_0x4099be,_0x55c2a2,_0x58ae0e)=>{'use strict';var _0x496c1b=_0x58ae0e(0x1011+0x22d4+0xef*-0x17),_0x46054a={'LOG_LEVELS':{'fatal':0x4,'error':0x3,'warn':0x2,'info':0x1,'debug':0x0},'writeLog':function(_0x328a96,_0x465faa){var _0x4662c4=_0x46054a['logger']||(_0x46054a['wrapper']||_0x46054a)['logger'];if(_0x4662c4){var _0x4d9973=Array['prototype']['slice']['apply'](_0x328a96),_0x264ee2='[Faye',_0x176e94=this['className'],_0x302105=_0x4d9973['shift']()['replace'](/\?/g,function(){try{return _0x496c1b(_0x4d9973['shift']());}catch(_0x3b4222){return'[Object]';}});_0x176e94&&(_0x264ee2+='.'+_0x176e94),_0x264ee2+=']\x20','function'==typeof _0x4662c4[_0x465faa]?_0x4662c4[_0x465faa](_0x264ee2+_0x302105):'function'==typeof _0x4662c4&&_0x4662c4(_0x264ee2+_0x302105);}}};for(var _0x20a561 in _0x46054a['LOG_LEVELS'])!function(_0x39c1c7){_0x46054a[_0x39c1c7]=function(){this['writeLog'](arguments,_0x39c1c7);};}(_0x20a561);_0x4099be['exports']=_0x46054a;},0x1a6a:(_0x403796,_0x43c41e,_0xc5a56)=>{'use strict';var _0x1d0889={'countListeners':function(_0x3f9fb0){return this['listeners'](_0x3f9fb0)['length'];},'bind':function(_0x3497ab,_0x394a65,_0x15ceba){var _0x38aa3c=Array['prototype']['slice'],_0x460949=function(){_0x394a65['apply'](_0x15ceba,_0x38aa3c['call'](arguments));};return this['_listeners']=this['_listeners']||[],this['_listeners']['push']([_0x3497ab,_0x394a65,_0x15ceba,_0x460949]),this['on'](_0x3497ab,_0x460949);},'unbind':function(_0x3e7f36,_0x24fb18,_0x272643){this['_listeners']=this['_listeners']||[];for(var _0x5e4810,_0x2bce02=this['_listeners']['length'];_0x2bce02--;)(_0x5e4810=this['_listeners'][_0x2bce02])[-0x95a+-0x57f*0x6+0x2a54]===_0x3e7f36&&(!_0x24fb18||_0x5e4810[-0x2*-0x3fb+0xb4f*0x3+-0x29e2]===_0x24fb18&&_0x5e4810[0x673+0x13f5+-0xda*0x1f]===_0x272643)&&(this['_listeners']['splice'](_0x2bce02,0x1*0x110f+-0x2188+0x107a),this['removeList'+'ener'](_0x3e7f36,_0x5e4810[-0x1*-0x38f+0xa4b+0x3*-0x49d]));}};_0xc5a56(0x12f5*0x2+0x8*-0x110+-0x5*0x33b)(_0x1d0889,_0xc5a56(0x6a3+0x1*-0x1e8b+-0x1a71*-0x1)['prototype']),_0x1d0889['trigger']=_0x1d0889['emit'],_0x403796['exports']=_0x1d0889;},0x2458:_0x20fcc2=>{'use strict';_0x20fcc2['exports']={'addTimeout':function(_0x169fad,_0x59aa85,_0x1bb86b,_0x1027c9){if(this['_timeouts']=this['_timeouts']||{},!this['_timeouts']['hasOwnProp'+'erty'](_0x169fad)){var _0x1f7447=this;this['_timeouts'][_0x169fad]=global['setTimeout'](function(){delete _0x1f7447['_timeouts'][_0x169fad],_0x1bb86b['call'](_0x1027c9);},(-0x138b*-0x1+-0xa3*-0x13+-0x1bbc)*_0x59aa85);}},'removeTimeout':function(_0x86c903){this['_timeouts']=this['_timeouts']||{};var _0x1211b7=this['_timeouts'][_0x86c903];_0x1211b7&&(global['clearTimeo'+'ut'](_0x1211b7),delete this['_timeouts'][_0x86c903]);},'removeAllTimeouts':function(){for(var _0x4eb040 in(this['_timeouts']=this['_timeouts']||{},this['_timeouts']))this['removeTime'+'out'](_0x4eb040);}};},0x202b:(_0x320686,_0x491cf9,_0x27791c)=>{'use strict';var _0x12ed47=_0x27791c(-0x114a+-0x380+-0x24d6*-0x1),_0x22cf5f=_0x27791c(-0x5f*-0x62+0x86*-0x1c+-0x873),_0x52a8d1=_0x27791c(-0x83*-0x62+0x9a8+-0x2164),_0x54ecef=(_0x27791c(-0xaaa*0x1+-0x570+0x17*0x13d),_0x12ed47({'initialize':function(_0x52b3d0){this['id']=this['name']=_0x52b3d0;},'push':function(_0x170866){this['trigger']('message',_0x170866);},'isUnused':function(){return-0x2*0xb5a+0x24*0xb5+-0xb0*0x4===this['countListe'+'ners']('message');}}));_0x22cf5f(_0x54ecef['prototype'],_0x52a8d1),_0x22cf5f(_0x54ecef,{'HANDSHAKE':'/meta/hand'+'shake','CONNECT':'/meta/conn'+'ect','SUBSCRIBE':'/meta/subs'+'cribe','UNSUBSCRIBE':'/meta/unsu'+'bscribe','DISCONNECT':'/meta/disc'+'onnect','META':'meta','SERVICE':'service','expand':function(_0x104c6b){var _0x10390f=this['parse'](_0x104c6b),_0x2e9192=['/**',_0x104c6b],_0x1e188e=_0x10390f['slice']();_0x1e188e[_0x1e188e['length']-(-0x1*0x122e+0x92*0x29+-0x533)]='*',_0x2e9192['push'](this['unparse'](_0x1e188e));for(var _0x52b2d5=0xceb*-0x3+0x1a*0xd9+0x10b8,_0xe422c=_0x10390f['length'];_0x52b2d5<_0xe422c;_0x52b2d5++)(_0x1e188e=_0x10390f['slice'](-0x19d8+0x7a1+0x1*0x1237,_0x52b2d5))['push']('**'),_0x2e9192['push'](this['unparse'](_0x1e188e));return _0x2e9192;},'isValid':function(){return!(-0x25f8+-0x57b*0x3+0x3669);},'parse':function(_0x2601e1){return this['isValid'](_0x2601e1)?_0x2601e1['split']('/')['slice'](-0x36*-0x8e+-0xc97+0x457*-0x4):null;},'unparse':function(_0x36b3f8){return'/'+_0x36b3f8['join']('/');},'isMeta':function(_0x12db2d){var _0x4e0c5c=this['parse'](_0x12db2d);return _0x4e0c5c?_0x4e0c5c[0x65e+-0x450+-0x20e]===this['META']:null;},'isService':function(_0x459258){var _0x2a92a0=this['parse'](_0x459258);return _0x2a92a0?_0x2a92a0[0x2174+0x25d7*-0x1+0x463*0x1]===this['SERVICE']:null;},'isSubscribable':function(_0x4b5dc2){return this['isValid'](_0x4b5dc2)?!this['isMeta'](_0x4b5dc2)&&!this['isService'](_0x4b5dc2):null;},'Set':_0x12ed47({'initialize':function(){this['_channels']={};},'getKeys':function(){var _0x5f53c0=[];for(var _0x653089 in this['_channels'])_0x5f53c0['push'](_0x653089);return _0x5f53c0;},'remove':function(_0x1f154d){delete this['_channels'][_0x1f154d];},'hasSubscription':function(_0x38b9f1){return this['_channels']['hasOwnProp'+'erty'](_0x38b9f1);},'subscribe':function(_0x200fe0,_0x22686c){for(var _0x563f23,_0x5268ed=-0x65*-0x45+0xd*-0x10a+0x1*-0xdb7,_0xe099ac=_0x200fe0['length'];_0x5268ed<_0xe099ac;_0x5268ed++)_0x563f23=_0x200fe0[_0x5268ed],(this['_channels'][_0x563f23]=this['_channels'][_0x563f23]||new _0x54ecef(_0x563f23))['bind']('message',_0x22686c);},'unsubscribe':function(_0x24f2bb,_0x461064){var _0x20c858=this['_channels'][_0x24f2bb];return!!_0x20c858&&(_0x20c858['unbind']('message',_0x461064),!!_0x20c858['isUnused']()&&(this['remove'](_0x24f2bb),!(-0x18b*0x2+-0x2648+0x295e)));},'distributeMessage':function(_0x1887f2){for(var _0x5535ad=_0x54ecef['expand'](_0x1887f2['channel']),_0x228f4d=0x9*-0x37f+0x4e7*0x2+0x15a9,_0x5231ae=_0x5535ad['length'];_0x228f4d<_0x5231ae;_0x228f4d++){var _0x359f1a=this['_channels'][_0x5535ad[_0x228f4d]];_0x359f1a&&_0x359f1a['trigger']('message',_0x1887f2);}}})}),_0x320686['exports']=_0x54ecef;},0x761:(_0x474ba6,_0x4528f8,_0x5df341)=>{'use strict';var _0x15e78a=_0x5df341(-0x1*0x1d3f+0x233e+-0x228),_0x5ed74e=_0x5df341(-0x2662+0xc9b+0x29d3),_0x182685=(_0x5df341(-0x54a*-0x7+0xe*-0x1cd+0x1*-0xb7b),_0x5df341(0x22c6*0x1+0x1*0x1814+0x1*-0x3991)),_0x1db18c=_0x5df341(0x2*-0x49+-0x1715*-0x1+-0x8*0xc0),_0x477190=_0x5df341(0x1*-0x23d1+-0xa60+0x3676),_0x3884d7=_0x5df341(0x14b*-0x3+-0x12ba+0x23de),_0xbc3306=_0x5df341(0x241c+-0x2613+0x115c),_0x8d17d1=_0x5df341(-0x26f7+0x16b*0x15+0x213a),_0x2d4b9a=_0x5df341(0x1*-0x263f+0x1553+0x1f*0x11d),_0x4fd57a=_0x5df341(0x2a8a+0x19fc+-0x2a1c),_0x210b41=_0x5df341(0x1f47+-0xf*0x287+-0x4d*-0x81),_0x4ad288=_0x5df341(0x1*0x599+0x2*0x8c4+0xa6d*-0x2),_0x306430=_0x5df341(-0x128e+0x5f9*0x1+0x145f),_0xbd96f=_0x5df341(-0x2cd1+0xe23+-0x19*-0x271),_0x312710=_0x5df341(0x9ae+-0x2a4+-0x14*0x59),_0x434878=_0x5df341(-0x151+-0x80*0x56+0x4344),_0x25b1d3=_0x5ed74e({'className':'Client','UNCONNECTED':0x1,'CONNECTING':0x2,'CONNECTED':0x3,'DISCONNECTED':0x4,'HANDSHAKE':'handshake','RETRY':'retry','NONE':'none','CONNECTION_TIMEOUT':0x3c,'DEFAULT_ENDPOINT':'/bayeux','INTERVAL':0x0,'initialize':function(_0x152e5d,_0x4f1aec){this['info']('New\x20client'+'\x20created\x20f'+'or\x20?',_0x152e5d),_0xbc3306(_0x4f1aec=_0x4f1aec||{},['interval','timeout','endpoints','proxy','retry','scheduler','websocketE'+'xtensions','tls','ca']),this['_channels']=new _0x210b41['Set'](),this['_dispatche'+'r']=_0x4ad288['create'](this,_0x152e5d||this['DEFAULT_EN'+'DPOINT'],_0x4f1aec),this['_messageId']=0x1*0xd3b+-0x94*-0x29+-0x24ef,this['_state']=this['UNCONNECTE'+'D'],this['_responseC'+'allbacks']={},this['_advice']={'reconnect':this['RETRY'],'interval':(-0x8e5+0x71*-0x2a+0x1*0x1f57)*(_0x4f1aec['interval']||this['INTERVAL']),'timeout':(0xf4a+0x4c*-0x13+-0x5be)*(_0x4f1aec['timeout']||this['CONNECTION'+'_TIMEOUT'])},this['_dispatche'+'r']['timeout']=this['_advice']['timeout']/(0x610+0x30b+-0x533),this['_dispatche'+'r']['bind']('message',this['_receiveMe'+'ssage'],this),_0x1db18c['Event']&&void(-0x17*-0x31+-0x2e*0xd6+-0x17*-0x17b)!==global['onbeforeun'+'load']&&_0x1db18c['Event']['on'](global,'beforeunlo'+'ad',function(){_0x182685['indexOf'](this['_dispatche'+'r']['_disabled'],'autodiscon'+'nect')<-0x1505*0x1+0x1a50+-0x54b&&this['disconnect']();},this);},'addWebsocketExtension':function(_0x2e5dbe){return this['_dispatche'+'r']['addWebsock'+'etExtensio'+'n'](_0x2e5dbe);},'disable':function(_0x40b48e){return this['_dispatche'+'r']['disable'](_0x40b48e);},'setHeader':function(_0x2dd71e,_0x21cf1d){return this['_dispatche'+'r']['setHeader'](_0x2dd71e,_0x21cf1d);},'handshake':function(_0x532059,_0x165d97){if(this['_advice']['reconnect']!==this['NONE']&&this['_state']===this['UNCONNECTE'+'D']){this['_state']=this['CONNECTING'];var _0x12d13f=this;this['info']('Initiating'+'\x20handshake'+'\x20with\x20?',this['_dispatche'+'r']['endpoint']['href']),this['_dispatche'+'r']['selectTran'+'sport'](_0x477190['MANDATORY_'+'CONNECTION'+'_TYPES']),this['_sendMessa'+'ge']({'channel':_0x210b41['HANDSHAKE'],'version':_0x477190['BAYEUX_VER'+'SION'],'supportedConnectionTypes':this['_dispatche'+'r']['getConnect'+'ionTypes']()},{},function(_0x499b2c){_0x499b2c['successful']?(this['_state']=this['CONNECTED'],this['_dispatche'+'r']['clientId']=_0x499b2c['clientId'],this['_dispatche'+'r']['selectTran'+'sport'](_0x499b2c['supportedC'+'onnectionT'+'ypes']),this['info']('Handshake\x20'+'successful'+':\x20?',this['_dispatche'+'r']['clientId']),this['subscribe'](this['_channels']['getKeys'](),!(-0x923*0x3+0x1*-0x6fd+0x2266)),_0x532059&&_0x15e78a(function(){_0x532059['call'](_0x165d97);})):(this['info']('Handshake\x20'+'unsuccessf'+'ul'),global['setTimeout'](function(){_0x12d13f['handshake'](_0x532059,_0x165d97);},(0x1389+0x355*0x7+-0x26f4)*this['_dispatche'+'r']['retry']),this['_state']=this['UNCONNECTE'+'D']);},this);}},'connect':function(_0x212940,_0x2fd482){if(this['_advice']['reconnect']!==this['NONE']&&this['_state']!==this['DISCONNECT'+'ED']){if(this['_state']===this['UNCONNECTE'+'D'])return this['handshake'](function(){this['connect'](_0x212940,_0x2fd482);},this);this['callback'](_0x212940,_0x2fd482),this['_state']===this['CONNECTED']&&(this['info']('Calling\x20de'+'ferred\x20act'+'ions\x20for\x20?',this['_dispatche'+'r']['clientId']),this['setDeferre'+'dStatus']('succeeded'),this['setDeferre'+'dStatus']('unknown'),this['_connectRe'+'quest']||(this['_connectRe'+'quest']=!(-0x1497+-0x25be+-0x3a55*-0x1),this['info']('Initiating'+'\x20connectio'+'n\x20for\x20?',this['_dispatche'+'r']['clientId']),this['_sendMessa'+'ge']({'channel':_0x210b41['CONNECT'],'clientId':this['_dispatche'+'r']['clientId'],'connectionType':this['_dispatche'+'r']['connection'+'Type']},{},this['_cycleConn'+'ection'],this)));}},'disconnect':function(){if(this['_state']===this['CONNECTED']){this['_state']=this['DISCONNECT'+'ED'],this['info']('Disconnect'+'ing\x20?',this['_dispatche'+'r']['clientId']);var _0xa9a889=new _0x312710();return this['_sendMessa'+'ge']({'channel':_0x210b41['DISCONNECT'],'clientId':this['_dispatche'+'r']['clientId']},{},function(_0x5260c8){_0x5260c8['successful']?(this['_dispatche'+'r']['close'](),_0xa9a889['setDeferre'+'dStatus']('succeeded')):_0xa9a889['setDeferre'+'dStatus']('failed',_0x306430['parse'](_0x5260c8['error']));},this),this['info']('Clearing\x20c'+'hannel\x20lis'+'teners\x20for'+'\x20?',this['_dispatche'+'r']['clientId']),this['_channels']=new _0x210b41['Set'](),_0xa9a889;}},'subscribe':function(_0x665580,_0x43bb0f,_0x2288e9){if(_0x665580 instanceof Array)return _0x182685['map'](_0x665580,function(_0x4cbf72){return this['subscribe'](_0x4cbf72,_0x43bb0f,_0x2288e9);},this);var _0x1f7a1d=new _0x434878(this,_0x665580,_0x43bb0f,_0x2288e9),_0x329fda=!(0xa78+-0x1c*0x141+0x26*0xa6)===_0x43bb0f;return this['_channels']['hasSubscri'+'ption'](_0x665580)&&!_0x329fda?(this['_channels']['subscribe']([_0x665580],_0x1f7a1d),_0x1f7a1d['setDeferre'+'dStatus']('succeeded'),_0x1f7a1d):(this['connect'](function(){this['info']('Client\x20?\x20a'+'ttempting\x20'+'to\x20subscri'+'be\x20to\x20?',this['_dispatche'+'r']['clientId'],_0x665580),_0x329fda||this['_channels']['subscribe']([_0x665580],_0x1f7a1d),this['_sendMessa'+'ge']({'channel':_0x210b41['SUBSCRIBE'],'clientId':this['_dispatche'+'r']['clientId'],'subscription':_0x665580},{},function(_0xb50008){if(!_0xb50008['successful'])return _0x1f7a1d['setDeferre'+'dStatus']('failed',_0x306430['parse'](_0xb50008['error'])),this['_channels']['unsubscrib'+'e'](_0x665580,_0x1f7a1d);var _0x501050=[]['concat'](_0xb50008['subscripti'+'on']);this['info']('Subscripti'+'on\x20acknowl'+'edged\x20for\x20'+'?\x20to\x20?',this['_dispatche'+'r']['clientId'],_0x501050),_0x1f7a1d['setDeferre'+'dStatus']('succeeded');},this);},this),_0x1f7a1d);},'unsubscribe':function(_0x6b99c1,_0x433f31){if(_0x6b99c1 instanceof Array)return _0x182685['map'](_0x6b99c1,function(_0x1e6d27){return this['unsubscrib'+'e'](_0x1e6d27,_0x433f31);},this);this['_channels']['unsubscrib'+'e'](_0x6b99c1,_0x433f31)&&this['connect'](function(){this['info']('Client\x20?\x20a'+'ttempting\x20'+'to\x20unsubsc'+'ribe\x20from\x20'+'?',this['_dispatche'+'r']['clientId'],_0x6b99c1),this['_sendMessa'+'ge']({'channel':_0x210b41['UNSUBSCRIB'+'E'],'clientId':this['_dispatche'+'r']['clientId'],'subscription':_0x6b99c1},{},function(_0x3df052){if(_0x3df052['successful']){var _0x5b1317=[]['concat'](_0x3df052['subscripti'+'on']);this['info']('Unsubscrip'+'tion\x20ackno'+'wledged\x20fo'+'r\x20?\x20from\x20?',this['_dispatche'+'r']['clientId'],_0x5b1317);}},this);},this);},'publish':function(_0x18fcf3,_0x181f38,_0x491471){_0xbc3306(_0x491471||{},['attempts','deadline']);var _0x591e2a=new _0x312710();return this['connect'](function(){this['info']('Client\x20?\x20q'+'ueueing\x20pu'+'blished\x20me'+'ssage\x20to\x20?'+':\x20?',this['_dispatche'+'r']['clientId'],_0x18fcf3,_0x181f38),this['_sendMessa'+'ge']({'channel':_0x18fcf3,'data':_0x181f38,'clientId':this['_dispatche'+'r']['clientId']},_0x491471,function(_0x591c8b){_0x591c8b['successful']?_0x591e2a['setDeferre'+'dStatus']('succeeded'):_0x591e2a['setDeferre'+'dStatus']('failed',_0x306430['parse'](_0x591c8b['error']));},this);},this),_0x591e2a;},'_sendMessage':function(_0x54c983,_0x546eb4,_0x503798,_0x337b7f){_0x54c983['id']=this['_generateM'+'essageId']();var _0x4d5f5f=this['_advice']['timeout']?(0xb88+-0x4f*0x65+0x13a4+0.19999999999999996)*this['_advice']['timeout']/(0x21dc+0x49*-0x4d+-0x7ff):(-0x1315+-0x9*-0x419+-0x5*0x38f+0.19999999999999996)*this['_dispatche'+'r']['retry'];this['pipeThroug'+'hExtension'+'s']('outgoing',_0x54c983,null,function(_0x1adad3){_0x1adad3&&(_0x503798&&(this['_responseC'+'allbacks'][_0x1adad3['id']]=[_0x503798,_0x337b7f]),this['_dispatche'+'r']['sendMessag'+'e'](_0x1adad3,_0x4d5f5f,_0x546eb4||{}));},this);},'_generateMessageId':function(){return this['_messageId']+=0x25*0xdd+0x1261*0x2+-0x44b2,this['_messageId']>=Math['pow'](0xf40+-0x1337*-0x2+-0x35ac,0x1de7+-0x3c7*0x7+-0x356)&&(this['_messageId']=0x83*-0x31+0x3*-0xcb5+0x2*0x1f99),this['_messageId']['toString'](0x1*0x11d1+-0x4*-0x7e2+-0x3135);},'_receiveMessage':function(_0x39bafc){var _0x38fccd,_0x400529=_0x39bafc['id'];void(0x1*0x2653+-0x1*-0x16fe+0x593*-0xb)!==_0x39bafc['successful']&&(_0x38fccd=this['_responseC'+'allbacks'][_0x400529],delete this['_responseC'+'allbacks'][_0x400529]),this['pipeThroug'+'hExtension'+'s']('incoming',_0x39bafc,null,function(_0x31fca7){_0x31fca7&&(_0x31fca7['advice']&&this['_handleAdv'+'ice'](_0x31fca7['advice']),this['_deliverMe'+'ssage'](_0x31fca7),_0x38fccd&&_0x38fccd[0x1fb3+0x20df+0x3*-0x1586]['call'](_0x38fccd[0xa0*-0x2b+0xd3f*0x2+0x63],_0x31fca7));},this);},'_handleAdvice':function(_0x9f2560){_0x3884d7(this['_advice'],_0x9f2560),this['_dispatche'+'r']['timeout']=this['_advice']['timeout']/(0xe8f+0xc23+-0x2*0xb65),this['_advice']['reconnect']===this['HANDSHAKE']&&this['_state']!==this['DISCONNECT'+'ED']&&(this['_state']=this['UNCONNECTE'+'D'],this['_dispatche'+'r']['clientId']=null,this['_cycleConn'+'ection']());},'_deliverMessage':function(_0x275174){_0x275174['channel']&&void(-0x1d02+0x182*0x18+0x72e*-0x1)!==_0x275174['data']&&(this['info']('Client\x20?\x20c'+'alling\x20lis'+'teners\x20for'+'\x20?\x20with\x20?',this['_dispatche'+'r']['clientId'],_0x275174['channel'],_0x275174['data']),this['_channels']['distribute'+'Message'](_0x275174));},'_cycleConnection':function(){this['_connectRe'+'quest']&&(this['_connectRe'+'quest']=null,this['info']('Closed\x20con'+'nection\x20fo'+'r\x20?',this['_dispatche'+'r']['clientId']));var _0x327d16=this;global['setTimeout'](function(){_0x327d16['connect']();},this['_advice']['interval']);}});_0x3884d7(_0x25b1d3['prototype'],_0x8d17d1),_0x3884d7(_0x25b1d3['prototype'],_0x4fd57a),_0x3884d7(_0x25b1d3['prototype'],_0x2d4b9a),_0x3884d7(_0x25b1d3['prototype'],_0xbd96f),_0x474ba6['exports']=_0x25b1d3;},0x247:(_0x4555a8,_0x29ce9d,_0x1797cc)=>{'use strict';var _0x2e75e6=_0x1797cc(0x936+-0x1*-0x1519+-0xe43),_0x363037=_0x1797cc(-0x2*-0x180+-0x42e*-0x3+-0x3e6*0x2),_0x58ed97=_0x1797cc(-0x99a*-0x2+0x1*0xc3d+0x1*-0x3cf),_0x3b6197=_0x1797cc(-0x76*-0x11+-0x1*0x1b31+-0x1*-0x209e),_0x5a7d1e=_0x1797cc(0xb9b*-0x1+0xc97+0x109b),_0x341622=_0x1797cc(-0x2575+0xa49*-0x2+0x5471),_0x1fdb35=_0x1797cc(0x3*0xc92+0x810+-0x74*0x3d),_0x5e00b1=_0x1797cc(0x11+0x102d*0x3+0x1643*-0x1),_0x1d03e0=_0x2e75e6({'className':'Dispatcher','MAX_REQUEST_SIZE':0x800,'DEFAULT_RETRY':0x5,'UP':0x1,'DOWN':0x2,'initialize':function(_0x43e1d9,_0x27f652,_0x39f88f){this['_client']=_0x43e1d9,this['endpoint']=_0x363037['parse'](_0x27f652),this['_alternate'+'s']=_0x39f88f['endpoints']||{},this['cookies']=_0x58ed97['CookieJar']&&new _0x58ed97['CookieJar'](),this['_disabled']=[],this['_envelopes']={},this['headers']={},this['retry']=_0x39f88f['retry']||this['DEFAULT_RE'+'TRY'],this['_scheduler']=_0x39f88f['scheduler']||_0x5e00b1,this['_state']=-0x1*-0x1931+-0x1*-0x725+-0x2056,this['transports']={},this['wsExtensio'+'ns']=[],this['proxy']=_0x39f88f['proxy']||{},'string'==typeof this['_proxy']&&(this['_proxy']={'origin':this['_proxy']});var _0x1873db=_0x39f88f['websocketE'+'xtensions'];if(_0x1873db){for(var _0x3100e4=-0x17ff+-0x1909+0x3108,_0x11a72b=(_0x1873db=[]['concat'](_0x1873db))['length'];_0x3100e4<_0x11a72b;_0x3100e4++)this['addWebsock'+'etExtensio'+'n'](_0x1873db[_0x3100e4]);}for(var _0x365eab in(this['tls']=_0x39f88f['tls']||{},this['tls']['ca']=this['tls']['ca']||_0x39f88f['ca'],this['_alternate'+'s']))this['_alternate'+'s'][_0x365eab]=_0x363037['parse'](this['_alternate'+'s'][_0x365eab]);this['maxRequest'+'Size']=this['MAX_REQUES'+'T_SIZE'];},'endpointFor':function(_0x9144e){return this['_alternate'+'s'][_0x9144e]||this['endpoint'];},'addWebsocketExtension':function(_0x1a94e5){this['wsExtensio'+'ns']['push'](_0x1a94e5);},'disable':function(_0x84ba60){this['_disabled']['push'](_0x84ba60),_0x1fdb35['disable'](_0x84ba60);},'setHeader':function(_0x72fbbe,_0x13c79a){this['headers'][_0x72fbbe]=_0x13c79a;},'close':function(){var _0x1bb5b1=this['_transport'];delete this['_transport'],_0x1bb5b1&&_0x1bb5b1['close']();},'getConnectionTypes':function(){return _0x1fdb35['getConnect'+'ionTypes']();},'selectTransport':function(_0x13c221){_0x1fdb35['get'](this,_0x13c221,this['_disabled'],function(_0x411289){this['debug']('Selected\x20?'+'\x20transport'+'\x20for\x20?',_0x411289['connection'+'Type'],_0x411289['endpoint']['href']),_0x411289!==this['_transport']&&(this['_transport']&&this['_transport']['close'](),this['_transport']=_0x411289,this['connection'+'Type']=_0x411289['connection'+'Type']);},this);},'sendMessage':function(_0x1cd773,_0x1a1402,_0x356ac5){_0x356ac5=_0x356ac5||{};var _0x469dcd,_0x49b5a3=_0x1cd773['id'],_0x2d8521=_0x356ac5['attempts'],_0x18ab6b=_0x356ac5['deadline']&&new Date()['getTime']()+(-0x2394+-0x1*-0x24b+0x2531)*_0x356ac5['deadline'],_0x3baa52=this['_envelopes'][_0x49b5a3];_0x3baa52||(_0x469dcd=new this['_scheduler'](_0x1cd773,{'timeout':_0x1a1402,'interval':this['retry'],'attempts':_0x2d8521,'deadline':_0x18ab6b}),_0x3baa52=this['_envelopes'][_0x49b5a3]={'message':_0x1cd773,'scheduler':_0x469dcd}),this['_sendEnvel'+'ope'](_0x3baa52);},'_sendEnvelope':function(_0xc3294e){if(this['_transport']&&!_0xc3294e['request']&&!_0xc3294e['timer']){var _0x1c634c=_0xc3294e['message'],_0x9fae03=_0xc3294e['scheduler'],_0x4c4a0c=this;if(!_0x9fae03['isDelivera'+'ble']())return _0x9fae03['abort'](),void delete this['_envelopes'][_0x1c634c['id']];_0xc3294e['timer']=global['setTimeout'](function(){_0x4c4a0c['handleErro'+'r'](_0x1c634c);},(0x3d*0x4f+-0x2553+0x2*0xb34)*_0x9fae03['getTimeout']()),_0x9fae03['send'](),_0xc3294e['request']=this['_transport']['sendMessag'+'e'](_0x1c634c);}},'handleResponse':function(_0x2bab6f){var _0x4abe8e=this['_envelopes'][_0x2bab6f['id']];void(0x78*0x2d+0x239b+-0x1*0x38b3)!==_0x2bab6f['successful']&&_0x4abe8e&&(_0x4abe8e['scheduler']['succeed'](),delete this['_envelopes'][_0x2bab6f['id']],global['clearTimeo'+'ut'](_0x4abe8e['timer'])),this['trigger']('message',_0x2bab6f),this['_state']!==this['UP']&&(this['_state']=this['UP'],this['_client']['trigger']('transport:'+'up'));},'handleError':function(_0x2ab490,_0x59326f){var _0x3a15d9=this['_envelopes'][_0x2ab490['id']],_0x2648ad=_0x3a15d9&&_0x3a15d9['request'],_0x800bff=this;if(_0x2648ad){_0x2648ad['then'](function(_0x5045dc){_0x5045dc&&_0x5045dc['abort']&&_0x5045dc['abort']();});var _0xb93d2d=_0x3a15d9['scheduler'];_0xb93d2d['fail'](),global['clearTimeo'+'ut'](_0x3a15d9['timer']),_0x3a15d9['request']=_0x3a15d9['timer']=null,_0x59326f?this['_sendEnvel'+'ope'](_0x3a15d9):_0x3a15d9['timer']=global['setTimeout'](function(){_0x3a15d9['timer']=null,_0x800bff['_sendEnvel'+'ope'](_0x3a15d9);},(-0x1679+-0x1*0x1770+-0x147*-0x27)*_0xb93d2d['getInterva'+'l']()),this['_state']!==this['DOWN']&&(this['_state']=this['DOWN'],this['_client']['trigger']('transport:'+'down'));}}});_0x1d03e0['create']=function(_0x398118,_0x142cf0,_0x3a4d3f){return new _0x1d03e0(_0x398118,_0x142cf0,_0x3a4d3f);},_0x3b6197(_0x1d03e0['prototype'],_0x341622),_0x3b6197(_0x1d03e0['prototype'],_0x5a7d1e),_0x4555a8['exports']=_0x1d03e0;},0x7ca:(_0x5849ec,_0x39a5c5,_0x2c1305)=>{'use strict';var _0x3f076f=_0x2c1305(-0x1619+-0x1d1f+0x7b*0x8c),_0x1d7b78=_0x2c1305(-0x885+-0x323*0x1+-0x803*-0x3),_0x570997=_0x3f076f({'initialize':function(_0x32cd4e,_0x5179e9,_0x580a65){this['code']=_0x32cd4e,this['params']=Array['prototype']['slice']['call'](_0x5179e9),this['message']=_0x580a65;},'toString':function(){return this['code']+':'+this['params']['join'](',')+':'+this['message'];}});_0x570997['parse']=function(_0x41529e){if(_0x41529e=_0x41529e||'',!_0x1d7b78['ERROR']['test'](_0x41529e))return new _0x570997(null,[],_0x41529e);var _0x218e6c=_0x41529e['split'](':'),_0xd2bc=parseInt(_0x218e6c[0x6*0x221+-0x1a5e+0xd98]),_0x7adaf7=_0x218e6c[-0x136b+0x1cc0+0x31c*-0x3]['split'](',');return _0x41529e=_0x218e6c[0x1*-0x20a1+-0x927*0x2+0x5a9*0x9],new _0x570997(_0xd2bc,_0x7adaf7,_0x41529e);};var _0x14e60f={'versionMismatch':[0x17e7+0x355*-0x7+0x4*0x26,'Version\x20mi'+'smatch'],'conntypeMismatch':[0x50*0x43+0xd4c+0xd9*-0x27,'Connection'+'\x20types\x20not'+'\x20supported'],'extMismatch':[0xb00+0x20a3+-0x2a75,'Extension\x20'+'mismatch'],'badRequest':[0x371*-0xb+0x3c9+0x23a2,'Bad\x20reques'+'t'],'clientUnknown':[0x782+-0xef6+-0x1*-0x905,'Unknown\x20cl'+'ient'],'parameterMissing':[0x1*-0x4a3+-0x1e95*0x1+0x24ca,'Missing\x20re'+'quired\x20par'+'ameter'],'channelForbidden':[-0x311*0xb+-0x230f+0x465d,'Forbidden\x20'+'channel'],'channelUnknown':[0x1*-0x1235+-0x2506+0x38cf*0x1,'Unknown\x20ch'+'annel'],'channelInvalid':[0xe3*-0x11+0x864+0x844,'Invalid\x20ch'+'annel'],'extUnknown':[-0x8b7*0x2+0x1*-0x1376+0x267a,'Unknown\x20ex'+'tension'],'publishFailed':[-0x1133+0x6*0xd+0x127c,'Failed\x20to\x20'+'publish'],'serverError':[-0x53*-0x41+0xf8b+-0x22aa,'Internal\x20s'+'erver\x20erro'+'r']};for(var _0x2076c7 in _0x14e60f)!function(_0x2fab61){_0x570997[_0x2fab61]=function(){return new _0x570997(_0x14e60f[_0x2fab61][-0x16*-0x164+0x1*0x60e+0x1253*-0x2],arguments,_0x14e60f[_0x2fab61][0x1e29+0x3*-0x4b6+-0x1006])['toString']();};}(_0x2076c7);_0x5849ec['exports']=_0x570997;},0x1e5b:(_0x5a7cb8,_0x523f9b,_0x386e13)=>{'use strict';var _0x418cc7={'addExtension':function(_0x15e601){this['_extension'+'s']=this['_extension'+'s']||[],this['_extension'+'s']['push'](_0x15e601),_0x15e601['added']&&_0x15e601['added'](this);},'removeExtension':function(_0x57d2cd){if(this['_extension'+'s']){for(var _0x27b283=this['_extension'+'s']['length'];_0x27b283--;)this['_extension'+'s'][_0x27b283]===_0x57d2cd&&(this['_extension'+'s']['splice'](_0x27b283,0x1903+-0xd*-0x189+0x9*-0x4ff),_0x57d2cd['removed']&&_0x57d2cd['removed'](this));}},'pipeThroughExtensions':function(_0xb2c57e,_0x4cf213,_0x4417d1,_0x54c11a,_0x4ef64b){if(this['debug']('Passing\x20th'+'rough\x20?\x20ex'+'tensions:\x20'+'?',_0xb2c57e,_0x4cf213),!this['_extension'+'s'])return _0x54c11a['call'](_0x4ef64b,_0x4cf213);var _0x293288=this['_extension'+'s']['slice'](),_0x56c6e8=function(_0x3ed74b){if(!_0x3ed74b)return _0x54c11a['call'](_0x4ef64b,_0x3ed74b);var _0x128b8c=_0x293288['shift']();if(!_0x128b8c)return _0x54c11a['call'](_0x4ef64b,_0x3ed74b);var _0x1dee49=_0x128b8c[_0xb2c57e];if(!_0x1dee49)return _0x56c6e8(_0x3ed74b);_0x1dee49['length']>=-0x977+-0x10ed+0x1a67?_0x128b8c[_0xb2c57e](_0x3ed74b,_0x4417d1,_0x56c6e8):_0x128b8c[_0xb2c57e](_0x3ed74b,_0x56c6e8);};_0x56c6e8(_0x4cf213);}};_0x386e13(0x2018+0x104b+0x464*-0x8)(_0x418cc7,_0x386e13(-0x2073+0x1f12*0x1+0x4be*0x4)),_0x5a7cb8['exports']=_0x418cc7;},0xc61:_0x253fb8=>{'use strict';_0x253fb8['exports']={'CHANNEL_NAME':/^\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,'CHANNEL_PATTERN':/^(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*\/\*{1,2}$/,'ERROR':/^([0-9][0-9][0-9]:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*|[0-9][0-9][0-9]::(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)$/,'VERSION':/^([0-9])+(\.(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*)*$/};},0x16:(_0x3cceff,_0x1c78c7,_0x5a9070)=>{'use strict';var _0x4a501c=_0x5a9070(-0x207f+-0x1*0x1591+0x7*0xa04),_0x48c3c0=_0x5a9070(0x2364+0x9b9+-0x1513*0x1);_0x3cceff['exports']=_0x4a501c(_0x48c3c0);},0x1a55:(_0x2fcc59,_0x13af10,_0x321e3b)=>{'use strict';var _0x30b0b8=function(_0x5f4b83,_0x1554e3){this['message']=_0x5f4b83,this['options']=_0x1554e3,this['attempts']=-0x1855*0x1+-0x2695*-0x1+-0xe40;};_0x321e3b(0x1efe+-0x5d9+-0xbe2)(_0x30b0b8['prototype'],{'getTimeout':function(){return this['options']['timeout'];},'getInterval':function(){return this['options']['interval'];},'isDeliverable':function(){var _0x2ca750=this['options']['attempts'],_0x11cb3b=this['attempts'],_0x4ff1ff=this['options']['deadline'],_0x2e52fc=new Date()['getTime']();return!(void(-0xa2e+-0x1755+0x2183)!==_0x2ca750&&_0x11cb3b>=_0x2ca750||void(-0x2*-0xaa5+0x1*-0xb2d+0x3*-0x35f)!==_0x4ff1ff&&_0x2e52fc>_0x4ff1ff);},'send':function(){this['attempts']+=0x13bf+-0x977*-0x1+0x1*-0x1d35;},'succeed':function(){},'fail':function(){},'abort':function(){}}),_0x2fcc59['exports']=_0x30b0b8;},0xc65:(_0x411ba6,_0x41c8b5,_0x426858)=>{'use strict';var _0x2ae2f4=_0x426858(0x51*0x2c+0x13*-0x6d+0x20b*0x5),_0x2681e5=_0x426858(0x24fc+-0x113c+-0x1277),_0x48d13b=_0x426858(-0xc2+-0x4*-0x905+0x1*-0x160f),_0x5d0a0f=_0x426858(0x2355+0xf9+-0x1c09),_0x40cbd1=_0x426858(0x163c+-0x1687+0x11e2),_0x5a5df5=_0x426858(0x14a1*-0x2+0xf09+0x3ee8),_0x19bec3=_0x426858(0x2d0d+-0x37a2*0x1+0x2ac0),_0x1c8f63=_0x426858(-0x1893+-0x17bc+0x3819),_0x123f2f=_0x426858(0xb*0x201+0x23*-0x44+0x142*0xe),_0x2e5267=_0x426858(-0xb0e*0x3+0x68*0x4+0x2beb),_0x415ff6=_0x426858(0x6b2*-0x5+0x572+-0x11c9*-0x3),_0x17bbe5=_0x2ae2f4({'className':'Server','initialize':function(_0x242e86){this['_options']=_0x242e86||{};var _0x249158=this['_options']['engine']||{};_0x249158['timeout']=this['_options']['timeout'],this['_engine']=_0x5a5df5['get'](_0x249158),this['info']('Created\x20ne'+'w\x20server:\x20'+'?',this['_options']);},'close':function(){return this['_engine']['close']();},'openSocket':function(_0x127e53,_0x3691f0,_0x19b8f8){_0x127e53&&_0x3691f0&&this['_engine']['openSocket'](_0x127e53,new _0x415ff6(this,_0x3691f0,_0x19b8f8));},'closeSocket':function(_0x80ea9e,_0x4f328f){this['_engine']['flushConne'+'ction'](_0x80ea9e,_0x4f328f);},'process':function(_0x2fbab1,_0x19c2b9,_0x485e31,_0xa94fa1){var _0x13e94=null===_0x19c2b9;if(_0x2fbab1=[]['concat'](_0x2fbab1),this['info']('Processing'+'\x20messages:'+'\x20?\x20(local:'+'\x20?)',_0x2fbab1,_0x13e94),0x6*0x434+0xd*0x212+-0x3422===_0x2fbab1['length'])return _0x485e31['call'](_0xa94fa1,[]);for(var _0x141bbd=0x1a3*0x5+0x26e4+-0x1*0x2f13,_0x42ebc0=[],_0x1b11f2=this,_0x2b2f7a=function(_0x33aa22){if(_0x42ebc0=_0x42ebc0['concat'](_0x33aa22),!((_0x141bbd+=0x1f55+0x69b+-0x9*0x437)<_0x2fbab1['length'])){for(var _0x502f5c=_0x42ebc0['length'];_0x502f5c--;)_0x42ebc0[_0x502f5c]||_0x42ebc0['splice'](_0x502f5c,-0x11a5+0x1deb+-0xc45*0x1);_0x1b11f2['info']('Returning\x20'+'replies:\x20?',_0x42ebc0),_0x485e31['call'](_0xa94fa1,_0x42ebc0);}},_0x30313b=function(_0x166371){var _0x138a80=0x2496+-0x218a+0x82*-0x6,_0x43eb28=_0x166371['length'];-0x15*0x1a3+0x97c*-0x2+0x3557===_0x43eb28&&_0x2b2f7a(_0x166371);for(var _0x4c6a58=-0xb49+-0x209*-0x10+-0x1*0x1547,_0x1a450b=_0x166371['length'];_0x4c6a58<_0x1a450b;_0x4c6a58++)this['debug']('Processing'+'\x20reply:\x20?',_0x166371[_0x4c6a58]),function(_0x453de4){_0x1b11f2['pipeThroug'+'hExtension'+'s']('outgoing',_0x166371[_0x453de4],_0x19c2b9,function(_0x584bd9){_0x166371[_0x453de4]=_0x584bd9,(_0x138a80+=-0x1*-0x1781+-0x1b7d*0x1+0x3fd)===_0x43eb28&&_0x2b2f7a(_0x166371);});}(_0x4c6a58);},_0x349447=-0x767+0x1*-0x1a74+-0x3c3*-0x9,_0x17c462=_0x2fbab1['length'];_0x349447<_0x17c462;_0x349447++)this['pipeThroug'+'hExtension'+'s']('incoming',_0x2fbab1[_0x349447],_0x19c2b9,function(_0x12dbc6){this['_handle'](_0x12dbc6,_0x13e94,_0x30313b,this);},this);},'_makeResponse':function(_0x494466){var _0x3bf2e6={};return _0x494466['id']&&(_0x3bf2e6['id']=_0x494466['id']),_0x494466['clientId']&&(_0x3bf2e6['clientId']=_0x494466['clientId']),_0x494466['channel']&&(_0x3bf2e6['channel']=_0x494466['channel']),_0x494466['error']&&(_0x3bf2e6['error']=_0x494466['error']),_0x3bf2e6['successful']=!_0x3bf2e6['error'],_0x3bf2e6;},'_handle':function(_0x3ad7ba,_0x2dcd52,_0x4cd264,_0x646055){if(!_0x3ad7ba)return _0x4cd264['call'](_0x646055,[]);this['info']('Handling\x20m'+'essage:\x20?\x20'+'(local:\x20?)',_0x3ad7ba,_0x2dcd52);var _0x383926,_0x5305c4=_0x3ad7ba['channel'],_0x14498a=_0x3ad7ba['error'];if(_0x19bec3['isMeta'](_0x5305c4))return this['_handleMet'+'a'](_0x3ad7ba,_0x2dcd52,_0x4cd264,_0x646055);_0x2e5267['CHANNEL_NA'+'ME']['test'](_0x5305c4)||(_0x14498a=_0x1c8f63['channelInv'+'alid'](_0x5305c4)),void(0x1*0x19b4+0x9f+-0x1a53)===_0x3ad7ba['data']&&(_0x14498a=_0x1c8f63['parameterM'+'issing']('data')),_0x14498a||this['_engine']['publish'](_0x3ad7ba),_0x383926=this['_makeRespo'+'nse'](_0x3ad7ba),_0x14498a&&(_0x383926['error']=_0x14498a),_0x383926['successful']=!_0x383926['error'],_0x4cd264['call'](_0x646055,[_0x383926]);},'_handleMeta':function(_0x597c32,_0x3869e3,_0x1c5a8c,_0x40bfce){var _0x26a189,_0x472eea=this['_methodFor'](_0x597c32);if(null===_0x472eea)return(_0x26a189=this['_makeRespo'+'nse'](_0x597c32))['error']=_0x1c8f63['channelFor'+'bidden'](_0x597c32['channel']),_0x26a189['successful']=!(-0x18b*0x16+-0x1*0x1aa1+-0xf25*-0x4),_0x1c5a8c['call'](_0x40bfce,[_0x26a189]);this[_0x472eea](_0x597c32,_0x3869e3,function(_0x2a4760){for(var _0x268ab9=0x1*-0x1304+0x1c*-0xc9+0x2900,_0x440e9c=(_0x2a4760=[]['concat'](_0x2a4760))['length'];_0x268ab9<_0x440e9c;_0x268ab9++)this['_advize'](_0x2a4760[_0x268ab9],_0x597c32['connection'+'Type']);_0x1c5a8c['call'](_0x40bfce,_0x2a4760);},this);},'_methodFor':function(_0x5dcc55){var _0x2fa792=_0x5dcc55['channel'];return _0x2fa792===_0x19bec3['HANDSHAKE']?'handshake':_0x2fa792===_0x19bec3['CONNECT']?'connect':_0x2fa792===_0x19bec3['SUBSCRIBE']?'subscribe':_0x2fa792===_0x19bec3['UNSUBSCRIB'+'E']?'unsubscrib'+'e':_0x2fa792===_0x19bec3['DISCONNECT']?'disconnect':null;},'_advize':function(_0x1aea2c,_0x4b6f77){var _0x3f4b81,_0x146cad;_0x2681e5['indexOf']([_0x19bec3['HANDSHAKE'],_0x19bec3['CONNECT']],_0x1aea2c['channel'])<-0x200c+0x1095+0xf77||('eventsourc'+'e'===_0x4b6f77?(_0x3f4b81=Math['floor']((0x1*-0x444+0xc82+-0x456)*this['_engine']['timeout']),_0x146cad=0x62*-0x7+-0x17af+0x1a5d*0x1):(_0x3f4b81=Math['floor']((0x10d2+-0x1b5c+0xe72)*this['_engine']['interval']),_0x146cad=Math['floor']((-0x256a*0x1+-0x6fa*0x2+0x3746)*this['_engine']['timeout'])),_0x1aea2c['advice']=_0x1aea2c['advice']||{},_0x1aea2c['error']?_0x48d13b(_0x1aea2c['advice'],{'reconnect':'handshake'},!(-0x1823+0x1*-0xd8d+0x25b1*0x1)):_0x48d13b(_0x1aea2c['advice'],{'reconnect':'retry','interval':_0x3f4b81,'timeout':_0x146cad},!(0x979+-0x1244+0x8cc)));},'handshake':function(_0x59ad03,_0x588cc0,_0x141711,_0x1a60cc){var _0x5d67a3=this['_makeRespo'+'nse'](_0x59ad03);_0x5d67a3['version']=_0x5d0a0f['BAYEUX_VER'+'SION'],_0x59ad03['version']||(_0x5d67a3['error']=_0x1c8f63['parameterM'+'issing']('version'));var _0x3b281a=_0x59ad03['supportedC'+'onnectionT'+'ypes'];if(_0x5d67a3['supportedC'+'onnectionT'+'ypes']=_0x5d0a0f['CONNECTION'+'_TYPES'],_0x3b281a?0x6*-0x66+0x2*0xf1b+-0x1bd2*0x1===_0x2681e5['filter'](_0x3b281a,function(_0x443126){return _0x2681e5['indexOf'](_0x5d0a0f['CONNECTION'+'_TYPES'],_0x443126)>=-0xcf5+-0x162b+0x2320;})['length']&&(_0x5d67a3['error']=_0x1c8f63['conntypeMi'+'smatch'](_0x3b281a)):_0x5d67a3['error']=_0x1c8f63['parameterM'+'issing']('supportedC'+'onnectionT'+'ypes'),_0x5d67a3['successful']=!_0x5d67a3['error'],!_0x5d67a3['successful'])return _0x141711['call'](_0x1a60cc,_0x5d67a3);this['_engine']['createClie'+'nt'](function(_0xbacea9){_0x5d67a3['clientId']=_0xbacea9,_0x141711['call'](_0x1a60cc,_0x5d67a3);},this);},'connect':function(_0x57c6ea,_0x3d1dff,_0x2525b5,_0x2e8f3b){var _0x526406=this['_makeRespo'+'nse'](_0x57c6ea),_0x5a9b1b=_0x57c6ea['clientId'],_0x27f95a=_0x57c6ea['connection'+'Type'];this['_engine']['clientExis'+'ts'](_0x5a9b1b,function(_0x1afdbc){if(_0x1afdbc||(_0x526406['error']=_0x1c8f63['clientUnkn'+'own'](_0x5a9b1b)),_0x5a9b1b||(_0x526406['error']=_0x1c8f63['parameterM'+'issing']('clientId')),_0x2681e5['indexOf'](_0x5d0a0f['CONNECTION'+'_TYPES'],_0x27f95a)<-0x480+-0x3cd+0x84d&&(_0x526406['error']=_0x1c8f63['conntypeMi'+'smatch'](_0x27f95a)),_0x27f95a||(_0x526406['error']=_0x1c8f63['parameterM'+'issing']('connection'+'Type')),_0x526406['successful']=!_0x526406['error'],!_0x526406['successful'])return delete _0x526406['clientId'],_0x2525b5['call'](_0x2e8f3b,_0x526406);'eventsourc'+'e'===_0x57c6ea['connection'+'Type']&&(_0x57c6ea['advice']=_0x57c6ea['advice']||{},_0x57c6ea['advice']['timeout']=0x11de*-0x1+0xa4a+0x794),this['_engine']['connect'](_0x526406['clientId'],_0x57c6ea['advice'],function(_0x224232){_0x2525b5['call'](_0x2e8f3b,[_0x526406]['concat'](_0x224232));});},this);},'disconnect':function(_0x1aaa01,_0x2f73c8,_0x2ebb6a,_0x4007b2){var _0x1bca5a=this['_makeRespo'+'nse'](_0x1aaa01),_0x35fc44=_0x1aaa01['clientId'];this['_engine']['clientExis'+'ts'](_0x35fc44,function(_0x5be189){_0x5be189||(_0x1bca5a['error']=_0x1c8f63['clientUnkn'+'own'](_0x35fc44)),_0x35fc44||(_0x1bca5a['error']=_0x1c8f63['parameterM'+'issing']('clientId')),_0x1bca5a['successful']=!_0x1bca5a['error'],_0x1bca5a['successful']||delete _0x1bca5a['clientId'],_0x1bca5a['successful']&&this['_engine']['destroyCli'+'ent'](_0x35fc44),_0x2ebb6a['call'](_0x4007b2,_0x1bca5a);},this);},'subscribe':function(_0x9e1acc,_0x55a17b,_0x195d41,_0x1241ea){var _0x433337,_0x10c657=this['_makeRespo'+'nse'](_0x9e1acc),_0xad4a46=_0x9e1acc['clientId'],_0x5ec014=_0x9e1acc['subscripti'+'on'];_0x5ec014=_0x5ec014?[]['concat'](_0x5ec014):[],this['_engine']['clientExis'+'ts'](_0xad4a46,function(_0x215a19){_0x215a19||(_0x10c657['error']=_0x1c8f63['clientUnkn'+'own'](_0xad4a46)),_0xad4a46||(_0x10c657['error']=_0x1c8f63['parameterM'+'issing']('clientId')),_0x9e1acc['subscripti'+'on']||(_0x10c657['error']=_0x1c8f63['parameterM'+'issing']('subscripti'+'on')),_0x10c657['subscripti'+'on']=_0x9e1acc['subscripti'+'on']||[];for(var _0x12ac0a=-0xbee*-0x2+-0x8*0x38+0x5*-0x46c,_0x1b7464=_0x5ec014['length'];_0x12ac0a<_0x1b7464&&(_0x433337=_0x5ec014[_0x12ac0a],!_0x10c657['error'])&&(_0x55a17b||_0x19bec3['isSubscrib'+'able'](_0x433337)||(_0x10c657['error']=_0x1c8f63['channelFor'+'bidden'](_0x433337)),_0x19bec3['isValid'](_0x433337)||(_0x10c657['error']=_0x1c8f63['channelInv'+'alid'](_0x433337)),!_0x10c657['error']);_0x12ac0a++)this['_engine']['subscribe'](_0xad4a46,_0x433337);_0x10c657['successful']=!_0x10c657['error'],_0x195d41['call'](_0x1241ea,_0x10c657);},this);},'unsubscribe':function(_0x4d4f0f,_0x44c736,_0x15fe07,_0x3d032c){var _0x5639ec,_0x38c176=this['_makeRespo'+'nse'](_0x4d4f0f),_0x1360ce=_0x4d4f0f['clientId'],_0x471e5a=_0x4d4f0f['subscripti'+'on'];_0x471e5a=_0x471e5a?[]['concat'](_0x471e5a):[],this['_engine']['clientExis'+'ts'](_0x1360ce,function(_0x1366fd){_0x1366fd||(_0x38c176['error']=_0x1c8f63['clientUnkn'+'own'](_0x1360ce)),_0x1360ce||(_0x38c176['error']=_0x1c8f63['parameterM'+'issing']('clientId')),_0x4d4f0f['subscripti'+'on']||(_0x38c176['error']=_0x1c8f63['parameterM'+'issing']('subscripti'+'on')),_0x38c176['subscripti'+'on']=_0x4d4f0f['subscripti'+'on']||[];for(var _0x34352c=0x34*0x17+0xd*0x2ab+-0x1*0x275b,_0x4bd066=_0x471e5a['length'];_0x34352c<_0x4bd066&&(_0x5639ec=_0x471e5a[_0x34352c],!_0x38c176['error'])&&(_0x44c736||_0x19bec3['isSubscrib'+'able'](_0x5639ec)||(_0x38c176['error']=_0x1c8f63['channelFor'+'bidden'](_0x5639ec)),_0x19bec3['isValid'](_0x5639ec)||(_0x38c176['error']=_0x1c8f63['channelInv'+'alid'](_0x5639ec)),!_0x38c176['error']);_0x34352c++)this['_engine']['unsubscrib'+'e'](_0x1360ce,_0x5639ec);_0x38c176['successful']=!_0x38c176['error'],_0x15fe07['call'](_0x3d032c,_0x38c176);},this);}});_0x17bbe5['create']=function(_0x1001e){return new _0x17bbe5(_0x1001e);},_0x48d13b(_0x17bbe5['prototype'],_0x40cbd1),_0x48d13b(_0x17bbe5['prototype'],_0x123f2f),_0x411ba6['exports']=_0x17bbe5;},0x1953:(_0x3af09b,_0x5cb10a,_0x224d71)=>{'use strict';var _0x5b4752=_0x224d71(-0x3*0x54a+0x6*0x443+0x658),_0x32b172=_0x224d71(0xbd5+-0x2c8e+0x3e25*0x1);_0x3af09b['exports']=_0x5b4752({'initialize':function(_0x1992ed,_0x543729,_0x398dbc){this['_server']=_0x1992ed,this['_socket']=_0x543729,this['_request']=_0x398dbc;},'send':function(_0x3d90b6){this['_server']['pipeThroug'+'hExtension'+'s']('outgoing',_0x3d90b6,this['_request'],function(_0x1a33d3){this['_socket']&&this['_socket']['send'](_0x32b172([_0x1a33d3]));},this);},'close':function(){this['_socket']&&this['_socket']['close'](),delete this['_socket'];}});},0x16f3:(_0x51c2ad,_0x1f7734,_0x4c7965)=>{'use strict';var _0x5b0dc5=_0x4c7965(-0xd8c+-0x396+0x3e*0x89),_0x196c05=_0x4c7965(-0x329*-0x1+-0x3c3*-0x9+-0x3*0x7eb),_0x1ef3f7=_0x4c7965(-0x5f*0x61+-0x2fc0+0x6bc9),_0x94bedf=_0x5b0dc5({'initialize':function(_0x3a1169,_0x984641,_0x2732d4,_0x4cc4c6){this['_client']=_0x3a1169,this['_channels']=_0x984641,this['_callback']=_0x2732d4,this['_context']=_0x4cc4c6,this['_cancelled']=!(-0x13*0x2f+-0x2c4+-0x9*-0xb2);},'withChannel':function(_0x585478,_0x2d38c4){return this['_withChann'+'el']=[_0x585478,_0x2d38c4],this;},'apply':function(_0x115462,_0x52d056){var _0xf30a77=_0x52d056[-0xcd7*0x2+0x1aff+-0x151];this['_callback']&&this['_callback']['call'](this['_context'],_0xf30a77['data']),this['_withChann'+'el']&&this['_withChann'+'el'][-0x1512+0xae+0x6*0x366]['call'](this['_withChann'+'el'][0x1*0x1abf+0x3*-0x35b+-0x3*0x58f],_0xf30a77['channel'],_0xf30a77['data']);},'cancel':function(){this['_cancelled']||(this['_client']['unsubscrib'+'e'](this['_channels'],this),this['_cancelled']=!(-0x10e7+-0x194c+0x2a33));},'unsubscribe':function(){this['cancel']();}});_0x196c05(_0x94bedf['prototype'],_0x1ef3f7),_0x51c2ad['exports']=_0x94bedf;},0xbe0:(_0x402a43,_0x12cb8e,_0x4067d9)=>{'use strict';var _0x383ed7=_0x4067d9(0x8b8+0x11b*0x11+-0x1056)['Buffer'],_0x2f105f=_0x4067d9(-0x17b7+0x1be2+0xebc*0x2),_0x1bf818=_0x4067d9(0x1bfa+-0x27a6+0x21e8),_0x128f39=_0x4067d9(-0x6bb*-0x5+-0xd*-0x1af+-0x2833),_0x1c6b22=_0x4067d9(0x645*0x6+0x1*0xae8+-0x207a),_0xf0f783=_0x4067d9(0x796+0x1ba0+-0x1b78),_0x48cbd6=_0x4067d9(-0xb72*-0x3+-0x4*-0x5ae+-0x25*0x12f),_0x2a5b23=_0x4067d9(0x3a48+-0x10b5+-0x1*0xc27),_0x41ac1f=_0x4067d9(-0x1ed6*-0x1+0xf*0x2cd+-0x2eb5),_0x199be6=_0x48cbd6(_0x1c6b22(_0x41ac1f,{'className':'NodeHttp','SECURE_PROTOCOLS':['https:','wss:'],'initialize':function(){_0x41ac1f['prototype']['initialize']['apply'](this,arguments),this['_endpointS'+'ecure']=this['SECURE_PRO'+'TOCOLS']['indexOf'](this['endpoint']['protocol'])>=0x1687+0x1c79+-0x330*0x10,this['_httpClien'+'t']=this['_endpointS'+'ecure']?_0x1bf818:_0x2f105f;var _0x53435d=this['_proxy'];if(_0x53435d['origin']){if(this['_proxyUri']=_0xf0f783['parse'](_0x53435d['origin']),this['_proxySecu'+'re']=this['SECURE_PRO'+'TOCOLS']['indexOf'](this['_proxyUri']['protocol'])>=0x23bd+-0x1b30+-0x88d,this['_endpointS'+'ecure']){var _0x42e852=_0x48cbd6({'proxy':{'host':this['_proxyUri']['hostname'],'port':this['_proxyUri']['port']||this['DEFAULT_PO'+'RTS'][this['_proxyUri']['protocol']],'proxyAuth':this['_proxyUri']['auth'],'headers':_0x48cbd6({'host':this['endpoint']['host']},_0x53435d['headers'])}},this['_dispatche'+'r']['tls']);this['_proxySecu'+'re']?(_0x48cbd6(_0x42e852['proxy'],_0x53435d['tls']),this['_tunnel']=_0x128f39['httpsOverH'+'ttps'](_0x42e852)):this['_tunnel']=_0x128f39['httpsOverH'+'ttp'](_0x42e852);}else this['_httpClien'+'t']=this['_proxySecu'+'re']?_0x1bf818:_0x2f105f;}},'encode':function(_0x2021d9){return _0x2a5b23(_0x2021d9);},'request':function(_0x538f75){var _0x433de0=_0x383ed7['from'](this['encode'](_0x538f75),'utf8'),_0x5416ea=this['_buildPara'+'ms'](_0x433de0),_0x21b8e6=this['_httpClien'+'t']['request'](_0x5416ea),_0x234ce1=this;return _0x21b8e6['on']('response',function(_0x34c78f){_0x234ce1['_handleRes'+'ponse'](_0x538f75,_0x34c78f),_0x234ce1['_storeCook'+'ies'](_0x34c78f['headers']['set-cookie']);}),_0x21b8e6['on']('error',function(_0x39fed0){_0x234ce1['error']('HTTP\x20error'+':\x20'+_0x39fed0['message']),_0x234ce1['_handleErr'+'or'](_0x538f75);}),_0x21b8e6['end'](_0x433de0),_0x21b8e6;},'_buildParams':function(_0x5eaf26){var _0xa1b64a=this['endpoint'],_0x168ed3=this['_proxyUri'],_0x34dfc1=this['_tunnel']?_0xa1b64a:_0x168ed3||_0xa1b64a,_0x4b8b67={'Content-Length':_0x5eaf26['length'],'Content-Type':'applicatio'+'n/json','Host':_0xa1b64a['host']};_0xa1b64a['auth']&&(_0x4b8b67['Authorizat'+'ion']='Basic\x20'+_0x383ed7['from'](_0xa1b64a['auth'],'utf8')['toString']('base64'));var _0x44b127={'method':'POST','host':_0x34dfc1['hostname'],'port':_0x34dfc1['port']||this['DEFAULT_PO'+'RTS'][_0x34dfc1['protocol']],'path':_0xa1b64a['path'],'headers':_0x48cbd6(_0x4b8b67,this['_dispatche'+'r']['headers'])},_0x3f5d08=this['_getCookie'+'s']();return''!==_0x3f5d08&&(_0x44b127['headers']['Cookie']=_0x3f5d08),this['_tunnel']?_0x44b127['agent']=this['_tunnel']:this['_endpointS'+'ecure']?_0x48cbd6(_0x44b127,this['_dispatche'+'r']['tls']):_0x168ed3&&(_0x44b127['path']=this['endpoint']['href'],_0x48cbd6(_0x44b127,this['_proxy']['tls']),_0x168ed3['auth']&&(_0x44b127['headers']['Proxy-Auth'+'orization']=_0x383ed7['from'](_0x168ed3['auth'],'utf8')['toString']('base64'))),_0x44b127;},'_handleResponse':function(_0x463031,_0x338480){var _0x57421d='',_0x58c0d1=this;_0x338480['setEncodin'+'g']('utf8'),_0x338480['on']('data',function(_0x9f6b53){_0x57421d+=_0x9f6b53;}),_0x338480['on']('end',function(){var _0xed8fc2;try{_0xed8fc2=JSON['parse'](_0x57421d);}catch(_0x265436){}_0xed8fc2?_0x58c0d1['_receive'](_0xed8fc2):_0x58c0d1['_handleErr'+'or'](_0x463031);});}}),{'isUsable':function(_0x1de03f,_0x1280e2,_0x335d69,_0x2133cc){_0x335d69['call'](_0x2133cc,_0xf0f783['isURI'](_0x1280e2));}});_0x402a43['exports']=_0x199be6;},0x1aed:(_0x2f35fc,_0x433eaf,_0xdb3c96)=>{'use strict';var _0x2d6a37=_0xdb3c96(0x739+0x133a+-0x169c),_0x255898=_0xdb3c96(-0x7f4+-0xd61*-0x1+-0xa9f*-0x1),_0x2dbcd6=(_0xdb3c96(0xad8+0x100b+-0x1325),_0xdb3c96(-0x1*0x174b+-0x1*0x765+-0x1*-0x2c49)),_0x2c915c=_0xdb3c96(0xc0*0x25+-0x49d*0x4+0x1*0x3f7),_0x1839cd=_0xdb3c96(-0x20d4+-0x1321*-0x2+0x1*0x6f7),_0x3a6cb3=_0x2c915c(_0x255898(_0xdb3c96(-0xba8+-0x42b+0x29f7),{'batching':!(0x1b4d+0x3*-0xc1+-0x1909),'request':function(_0x17331b){_0x17331b=_0x2dbcd6(_0x17331b);var _0x21a286=this;_0x2d6a37(function(){_0x21a286['endpoint']['process'](_0x17331b,null,function(_0x3269ae){_0x21a286['_receive'](_0x2dbcd6(_0x3269ae));});});}}),{'isUsable':function(_0x2a43f3,_0x3dcf35,_0x376457,_0x287339){_0x376457['call'](_0x287339,_0x3dcf35 instanceof _0x1839cd);}});_0x2f35fc['exports']=_0x3a6cb3;},0x1222:(_0x342ed8,_0xb66bd4,_0x2f5861)=>{'use strict';var _0x268d63=_0x2f5861(0x773+0x1*-0x1136+0x23e7*0x1);_0x268d63['register']('in-process',_0x2f5861(0x23ce+-0x2b0a+0x2229)),_0x268d63['register']('websocket',_0x2f5861(-0x376*0x9+0x3*-0x957+0x4632)),_0x268d63['register']('long-polli'+'ng',_0x2f5861(0x1d2c+-0x1ff9*-0x1+0x1*-0x3145)),_0x342ed8['exports']=_0x268d63;},0x1a24:(_0x4d1042,_0x3b5d99,_0x262129)=>{'use strict';var _0x33e22d=_0x262129(-0x1*-0xe21+-0x236e+-0x1*-0x2559),_0x4b6901=_0x262129(0x1902+-0x11c5+-0x1*-0x1465)['Cookie'],_0x451dd9=_0x262129(-0x16d*-0x19+0x18bd*-0x1+0x1*-0xa93),_0x44fd84=_0x262129(-0x1916+-0x1*0x1478+0x2ed7),_0x1ca76a=_0x262129(0x6+0x617*-0x6+0x31c7),_0x56ed18=_0x262129(0x266b+0x1*0x2599+-0x3a6d),_0x5cc4fd=_0x262129(-0x287b*-0x1+0x31dc+-0x35ff),_0x54bfef=_0x262129(0x355a+-0x598+-0xf97),_0xc6c1a3=_0x1ca76a(_0x33e22d({'className':'Transport','DEFAULT_PORTS':{'http:':0x50,'https:':0x1bb,'ws:':0x50,'wss:':0x1bb},'MAX_DELAY':0x0,'batching':!(0x130a+-0x1c69+-0x95f*-0x1),'initialize':function(_0x49b151,_0x25a3a0){this['_dispatche'+'r']=_0x49b151,this['endpoint']=_0x25a3a0,this['_outbox']=[],this['_proxy']=_0x1ca76a({},this['_dispatche'+'r']['proxy']),this['_proxy']['origin']||(this['_proxy']['origin']=this['_findProxy']());},'close':function(){},'encode':function(_0x344da0){return'';},'sendMessage':function(_0x4aed3c){return this['debug']('Client\x20?\x20s'+'ending\x20mes'+'sage\x20to\x20?:'+'\x20?',this['_dispatche'+'r']['clientId'],this['endpoint']['href'],_0x4aed3c),this['batching']?(this['_outbox']['push'](_0x4aed3c),this['_flushLarg'+'eBatch'](),_0x4aed3c['channel']===_0x54bfef['HANDSHAKE']?this['_publish'](0x93e+-0x1*0x137+-0x807+0.01):(_0x4aed3c['channel']===_0x54bfef['CONNECT']&&(this['_connectMe'+'ssage']=_0x4aed3c),this['_publish'](this['MAX_DELAY']))):_0x451dd9['resolve'](this['request']([_0x4aed3c]));},'_makePromise':function(){var _0xea243b=this;this['_requestPr'+'omise']=this['_requestPr'+'omise']||new _0x451dd9(function(_0x2bf783){_0xea243b['_resolvePr'+'omise']=_0x2bf783;});},'_publish':function(_0x4629b5){return this['_makePromi'+'se'](),this['addTimeout']('publish',_0x4629b5,function(){this['_flush'](),delete this['_requestPr'+'omise'];},this),this['_requestPr'+'omise'];},'_flush':function(){this['removeTime'+'out']('publish'),this['_outbox']['length']>0x5a1+-0x1fc3+0x1a23&&this['_connectMe'+'ssage']&&(this['_connectMe'+'ssage']['advice']={'timeout':0x0}),this['_resolvePr'+'omise'](this['request'](this['_outbox'])),this['_connectMe'+'ssage']=null,this['_outbox']=[];},'_flushLargeBatch':function(){if(!(this['encode'](this['_outbox'])['length']0xa20+0x3f3+-0xe12&&(_0x450ad8=_0x30d358[_0x11ca98]),_0x450ad8=_0x450ad8||_0x30d358['CGI_'+_0x313f75]):(_0x450ad8=_0x30d358[_0x11ca98]||_0x30d358[_0x313f75])&&!_0x30d358[_0x11ca98]&&console['warn']('The\x20enviro'+'nment\x20vari'+'able\x20'+_0x313f75+('\x20is\x20discou'+'raged.\x20Use'+'\x20')+_0x11ca98+'.'),_0x450ad8;}}}}),{'get':function(_0x39e766,_0x42b30f,_0x1e3c78,_0x5668d4,_0x2afa8d){var _0x3d3caf=_0x39e766['endpoint'];_0x44fd84['asyncEach'](this['_transport'+'s'],function(_0x4ea4a2,_0x208052){var _0x4ab355=_0x4ea4a2[0x6*0x47d+0x18cb+-0x33b9],_0x34b5a3=_0x4ea4a2[-0x3*-0xbfa+0x2f*-0x87+-0x3e*0x2e],_0x420c7d=_0x39e766['endpointFo'+'r'](_0x4ab355);return _0x44fd84['indexOf'](_0x1e3c78,_0x4ab355)>=-0x21be+0x241a+0x25c*-0x1?_0x208052():_0x44fd84['indexOf'](_0x42b30f,_0x4ab355)<0x216c+-0xa92+-0x16da?(_0x34b5a3['isUsable'](_0x39e766,_0x420c7d,function(){}),_0x208052()):void _0x34b5a3['isUsable'](_0x39e766,_0x420c7d,function(_0x397a39){if(!_0x397a39)return _0x208052();var _0x25f751=_0x34b5a3['hasOwnProp'+'erty']('create')?_0x34b5a3['create'](_0x39e766,_0x420c7d):new _0x34b5a3(_0x39e766,_0x420c7d);_0x5668d4['call'](_0x2afa8d,_0x25f751);});},function(){throw new Error('Could\x20not\x20'+'find\x20a\x20usa'+'ble\x20connec'+'tion\x20type\x20'+'for\x20'+_0x3d3caf['href']);});},'register':function(_0x695da2,_0x53d35b){this['_transport'+'s']['push']([_0x695da2,_0x53d35b]),_0x53d35b['prototype']['connection'+'Type']=_0x695da2;},'getConnectionTypes':function(){return _0x44fd84['map'](this['_transport'+'s'],function(_0x5c1722){return _0x5c1722[-0x16e*-0x18+-0x31*0x71+-0xcaf];});},'disable':function(_0x1ae14a){if('autodiscon'+'nect'===_0x1ae14a){for(var _0x12227a=0x2588+0x121*0x1b+0x2f5*-0x17;_0x12227a{'use strict';var _0x57ee7d=_0x5cee2a(-0x25a*0x6+-0xc0b+0x2a33),_0x4ceda1=_0x5cee2a(0xc17+0x115a+-0x1d1c),_0x8527df=_0x5cee2a(-0x16d*0x1+0x990+0xb7d),_0xab2e9a=_0x5cee2a(0x1*-0x907+0x2ee+0xdd7),_0x2fbb39=_0x5cee2a(0x1fa7+-0x90d+-0x617),_0x5198c2=_0x5cee2a(0x1*0x1c8e+-0x3*-0xa93+-0x32*0xef),_0x1e9411=_0x5cee2a(0x6*-0x407+0xb*-0x1a7+0x379a),_0x33fa7b=_0x5cee2a(-0xcf3+0x3727*-0x1+0x6186),_0x144f8c=_0x5cee2a(-0x18f9*-0x1+0xf*0x1be+0x3071*-0x1),_0x534bb3=_0x5cee2a(0x1a9b*-0x1+-0x10d*-0x3+-0x2*-0x17bf),_0x8d06f5=_0x1e9411(_0x57ee7d(_0x5cee2a(0x1beb+0x4a*-0x33+-0x1*-0xcf7),{'UNCONNECTED':0x1,'CONNECTING':0x2,'CONNECTED':0x3,'batching':!(0x43f*0x1+-0x2*0x518+0x5f2),'isUsable':function(_0x1dc82a,_0x4452ad){this['callback'](function(){_0x1dc82a['call'](_0x4452ad,!(0x1ab*-0x7+0x1d25+-0xac*0x1a));}),this['errback'](function(){_0x1dc82a['call'](_0x4452ad,!(0x120d+0x1b1b*-0x1+0x90f));}),this['connect']();},'request':function(_0x145cdd){this['_pending']=this['_pending']||new _0x8527df();for(var _0x18bc05=-0xff7+-0x25c+0x1*0x1253,_0x29c863=_0x145cdd['length'];_0x18bc05<_0x29c863;_0x18bc05++)this['_pending']['add'](_0x145cdd[_0x18bc05]);var _0x58e51a=this,_0x3ef640=new _0x4ceda1(function(_0x55048f,_0x15dede){_0x58e51a['callback'](function(_0xbcc9c8){_0xbcc9c8&&0x38*0x2e+-0x2*0x676+0x2dd===_0xbcc9c8['readyState']&&(_0xbcc9c8['send'](_0x33fa7b(_0x145cdd)),_0x55048f(_0xbcc9c8));}),_0x58e51a['connect']();});return{'abort':function(){_0x3ef640['then'](function(_0x3063b7){_0x3063b7['close']();});}};},'connect':function(){if(!_0x8d06f5['_unloaded']&&(this['_state']=this['_state']||this['UNCONNECTE'+'D'],this['_state']===this['UNCONNECTE'+'D'])){this['_state']=this['CONNECTING'];var _0x3b91fd=this['_createSoc'+'ket']();if(!_0x3b91fd)return this['setDeferre'+'dStatus']('failed');var _0x1862d0=this;_0x3b91fd['onopen']=function(){_0x3b91fd['headers']&&_0x1862d0['_storeCook'+'ies'](_0x3b91fd['headers']['set-cookie']),_0x1862d0['_socket']=_0x3b91fd,_0x1862d0['_state']=_0x1862d0['CONNECTED'],_0x1862d0['_everConne'+'cted']=!(-0x19c9+0x2044+-0x67b),_0x1862d0['setDeferre'+'dStatus']('succeeded',_0x3b91fd);};var _0x53b12d=!(-0x6*-0x27c+-0x1c3f+0xd58);_0x3b91fd['onclose']=_0x3b91fd['onerror']=function(){if(!_0x53b12d){_0x53b12d=!(0x19b7+0x1d32+-0x36e9);var _0x392866=_0x1862d0['_state']===_0x1862d0['CONNECTED'];_0x3b91fd['onopen']=_0x3b91fd['onclose']=_0x3b91fd['onerror']=_0x3b91fd['onmessage']=null,delete _0x1862d0['_socket'],_0x1862d0['_state']=_0x1862d0['UNCONNECTE'+'D'];var _0x5353e5=_0x1862d0['_pending']?_0x1862d0['_pending']['toArray']():[];delete _0x1862d0['_pending'],_0x392866||_0x1862d0['_everConne'+'cted']?(_0x1862d0['setDeferre'+'dStatus']('unknown'),_0x1862d0['_handleErr'+'or'](_0x5353e5,_0x392866)):_0x1862d0['setDeferre'+'dStatus']('failed');}},_0x3b91fd['onmessage']=function(_0x402d86){var _0x4f093a;try{_0x4f093a=JSON['parse'](_0x402d86['data']);}catch(_0x39be24){}if(_0x4f093a){for(var _0x3fd602=-0x11ef+0x1b*-0x1+0x120a,_0x1e77d7=(_0x4f093a=[]['concat'](_0x4f093a))['length'];_0x3fd602<_0x1e77d7;_0x3fd602++)void(0x1*-0x2385+0xc43+0x1742)!==_0x4f093a[_0x3fd602]['successful']&&_0x1862d0['_pending']['remove'](_0x4f093a[_0x3fd602]);_0x1862d0['_receive'](_0x4f093a);}};}},'close':function(){this['_socket']&&this['_socket']['close']();},'_createSocket':function(){var _0x247842=_0x8d06f5['getSocketU'+'rl'](this['endpoint']),_0x5ccc69=this['_dispatche'+'r']['headers'],_0x182ac1=this['_dispatche'+'r']['wsExtensio'+'ns'],_0x12d091=this['_getCookie'+'s'](),_0x45aef0=this['_dispatche'+'r']['tls'],_0x4a3334={'extensions':_0x182ac1,'headers':_0x5ccc69,'proxy':this['_proxy'],'tls':_0x45aef0};''!==_0x12d091&&(_0x4a3334['headers']['Cookie']=_0x12d091);try{return _0x144f8c['create'](_0x247842,[],_0x4a3334);}catch(_0x3f4ae8){}}}),{'PROTOCOLS':{'http:':'ws:','https:':'wss:'},'create':function(_0x45c54d,_0x1dfa0f){var _0x5a875a=_0x45c54d['transports']['websocket']=_0x45c54d['transports']['websocket']||{};return _0x5a875a[_0x1dfa0f['href']]=_0x5a875a[_0x1dfa0f['href']]||new this(_0x45c54d,_0x1dfa0f),_0x5a875a[_0x1dfa0f['href']];},'getSocketUrl':function(_0x120eb1){return(_0x120eb1=_0x5198c2(_0x120eb1))['protocol']=this['PROTOCOLS'][_0x120eb1['protocol']],_0xab2e9a['stringify'](_0x120eb1);},'isUsable':function(_0x4000a6,_0x726aff,_0x17b18b,_0xd4cb9f){this['create'](_0x4000a6,_0x726aff)['isUsable'](_0x17b18b,_0xd4cb9f);}});_0x1e9411(_0x8d06f5['prototype'],_0x534bb3),_0x2fbb39['Event']&&void(0x6dc+-0x11b4+0x8*0x15b)!==global['onbeforeun'+'load']&&_0x2fbb39['Event']['on'](global,'beforeunlo'+'ad',function(){void(-0x1ff4+0x23a2+0x2*-0x1d7)===_0x8d06f5['_unloaded']&&(_0x8d06f5['_unloaded']=!(-0x99c+-0x172b+0x20c7));}),_0xfbbd69['exports']=_0x8d06f5;},0x149:_0x2003c2=>{'use strict';_0x2003c2['exports']={'commonElement':function(_0x42c6fd,_0x10c331){for(var _0x22405d=-0xf*0xdf+0x1d4e+-0x103d,_0x40c46b=_0x42c6fd['length'];_0x22405d<_0x40c46b;_0x22405d++)if(-(0x58e*-0x1+-0x15dc+0x1b6b)!==this['indexOf'](_0x10c331,_0x42c6fd[_0x22405d]))return _0x42c6fd[_0x22405d];return null;},'indexOf':function(_0x440448,_0x421b01){if(_0x440448['indexOf'])return _0x440448['indexOf'](_0x421b01);for(var _0x8e06a8=0x2*0xdc7+-0x1*0x36d+-0x1821,_0x5f1271=_0x440448['length'];_0x8e06a8<_0x5f1271;_0x8e06a8++)if(_0x440448[_0x8e06a8]===_0x421b01)return _0x8e06a8;return-(0x7*-0x1e7+0x23dd+0x1*-0x168b);},'map':function(_0x527748,_0x27f048,_0x5019f0){if(_0x527748['map'])return _0x527748['map'](_0x27f048,_0x5019f0);var _0x2ee8ee=[];if(_0x527748 instanceof Array){for(var _0x2d0280=0x2*-0xce6+0xe68+0x3*0x3cc,_0x3911fc=_0x527748['length'];_0x2d0280<_0x3911fc;_0x2d0280++)_0x2ee8ee['push'](_0x27f048['call'](_0x5019f0||null,_0x527748[_0x2d0280],_0x2d0280));}else{for(var _0x2a589c in _0x527748)_0x527748['hasOwnProp'+'erty'](_0x2a589c)&&_0x2ee8ee['push'](_0x27f048['call'](_0x5019f0||null,_0x2a589c,_0x527748[_0x2a589c]));}return _0x2ee8ee;},'filter':function(_0x238c99,_0x59b5e3,_0x2e326b){if(_0x238c99['filter'])return _0x238c99['filter'](_0x59b5e3,_0x2e326b);for(var _0x2c95c0=[],_0x1f5665=-0x8dc+0xcfa*-0x2+0x1*0x22d0,_0x57e7f9=_0x238c99['length'];_0x1f5665<_0x57e7f9;_0x1f5665++)_0x59b5e3['call'](_0x2e326b||null,_0x238c99[_0x1f5665],_0x1f5665)&&_0x2c95c0['push'](_0x238c99[_0x1f5665]);return _0x2c95c0;},'asyncEach':function(_0xcddc93,_0x2e1aa5,_0x3c8e60,_0x388073){var _0x3e7468=_0xcddc93['length'],_0x135522=-(-0x4*0x5ae+-0x1858+-0x2f11*-0x1),_0x3d345d=-0x950*0x2+0x4f6+0xdaa,_0x5f12dc=!(0xe3*0x2c+0x16f*-0xf+-0xf9*0x12),_0x26d742=function(){if(_0x3d345d-=-0x17*-0x38+0x1a04+0xa59*-0x3,(_0x135522+=0x52d+0x1d0b*-0x1+0x369*0x7)===_0x3e7468)return _0x3c8e60&&_0x3c8e60['call'](_0x388073);_0x2e1aa5(_0xcddc93[_0x135522],_0x4c8387);},_0x4c8387=function(){_0x3d345d+=-0x2643*0x1+-0x1eb9+0x15*0x349,(function(){if(!_0x5f12dc){for(_0x5f12dc=!(-0xac*0x11+-0x1*0x2494+0x3000);_0x3d345d>-0x2480+0x39*0x1+0xfb*0x25;)_0x26d742();_0x5f12dc=!(0x1*0x1d53+0x1f79+-0x3ccb);}}());};_0x4c8387();}};},0xd43:_0x33c4c0=>{'use strict';var _0x55d061=Array['prototype']['forEach'],_0x27265b=Object['prototype']['hasOwnProp'+'erty'];_0x33c4c0['exports']=function(_0x2900c9){return _0x55d061['call'](arguments,function(_0x56ebf6,_0x313690){if(0x10db*-0x1+-0x1e86*0x1+0x2f61!==_0x313690){for(var _0x44159d in _0x56ebf6)_0x27265b['call'](_0x56ebf6,_0x44159d)&&(_0x2900c9[_0x44159d]=_0x56ebf6[_0x44159d]);}}),_0x2900c9;};},0x1083:_0x242e9a=>{'use strict';_0x242e9a['exports']={};},0x100c:(_0x3deafb,_0x5195e6,_0x34ebee)=>{'use strict';var _0x477c11=_0x34ebee(-0xae*0x29+-0x677*0x1+0x2f98);_0x3deafb['exports']=function(_0x3b58c8,_0x4f1e6d){'function'!=typeof _0x3b58c8&&(_0x4f1e6d=_0x3b58c8,_0x3b58c8=Object);var _0x5e00eb=function(){return this['initialize']&&this['initialize']['apply'](this,arguments)||this;},_0x5c6c4b=function(){};return _0x5c6c4b['prototype']=_0x3b58c8['prototype'],_0x5e00eb['prototype']=new _0x5c6c4b(),_0x477c11(_0x5e00eb['prototype'],_0x4f1e6d),_0x5e00eb;};},0x845:_0x2c3d54=>{_0x2c3d54['exports']={'VERSION':'1.4.0','BAYEUX_VERSION':'1.0','ID_LENGTH':0xa0,'JSONP_CALLBACK':'jsonpcallb'+'ack','CONNECTION_TYPES':['long-polli'+'ng','cross-orig'+'in-long-po'+'lling','callback-p'+'olling','websocket','eventsourc'+'e','in-process'],'MANDATORY_CONNECTION_TYPES':['long-polli'+'ng','callback-p'+'olling','in-process']};},0x1ba2:(_0xc0604b,_0x260c04,_0x42437d)=>{'use strict';_0xc0604b['exports']=_0x42437d(0xb62*0x1+-0xcc3+0xccc);},0xd99:_0x5e50a0=>{'use strict';var _0x1b413a=function(_0x2ac1ea){var _0x201afb,_0x5d0689,_0x4a705c;if(_0x2ac1ea instanceof Array){for(_0x201afb=[],_0x5d0689=_0x2ac1ea['length'];_0x5d0689--;)_0x201afb[_0x5d0689]=_0x1b413a(_0x2ac1ea[_0x5d0689]);return _0x201afb;}if('object'==typeof _0x2ac1ea){for(_0x4a705c in(_0x201afb=null===_0x2ac1ea?null:{},_0x2ac1ea))_0x201afb[_0x4a705c]=_0x1b413a(_0x2ac1ea[_0x4a705c]);return _0x201afb;}return _0x2ac1ea;};_0x5e50a0['exports']=_0x1b413a;},0x289:_0x380229=>{var _0x200a4f='function'==typeof Array['isArray']?Array['isArray']:function(_0x52ca2c){return'[object\x20Ar'+'ray]'===Object['prototype']['toString']['call'](_0x52ca2c);};function _0x76dad4(){}_0x380229['exports']=_0x76dad4,_0x76dad4['prototype']['emit']=function(_0x492cba){if('error'===_0x492cba&&(!this['_events']||!this['_events']['error']||_0x200a4f(this['_events']['error'])&&!this['_events']['error']['length']))throw arguments[-0x3eb+0x1*0x11b5+-0x1*0xdc9]instanceof Error?arguments[0x1572+0x1d*-0x3e+-0xe6b]:new Error('Uncaught,\x20'+'unspecifie'+'d\x20\x27error\x27\x20'+'event.');if(!this['_events'])return!(-0x1a11+-0x2177+-0x1*-0x3b89);var _0x12b304=this['_events'][_0x492cba];if(!_0x12b304)return!(0x2041+0x153a+0x25*-0x172);if('function'==typeof _0x12b304){switch(arguments['length']){case-0x1555+-0xe5c*0x2+0x320e:_0x12b304['call'](this);break;case-0x4*-0x443+0xb5b+-0x1c65*0x1:_0x12b304['call'](this,arguments[-0x84d+0x2461+-0x1*0x1c13]);break;case 0x1741+0x7*0x1d8+0x295*-0xe:_0x12b304['call'](this,arguments[-0x58+-0x1dc5+0x1e1e],arguments[0x692+0x192e+-0xfdf*0x2]);break;default:var _0x39b1fe=Array['prototype']['slice']['call'](arguments,0x9b0+0x8cd+-0x127c);_0x12b304['apply'](this,_0x39b1fe);}return!(-0x9a9*0x1+-0x9ba+0x1363);}if(_0x200a4f(_0x12b304)){_0x39b1fe=Array['prototype']['slice']['call'](arguments,0x22de*-0x1+-0x54b+0x282a);for(var _0x19c05c=_0x12b304['slice'](),_0x53fe90=0xa6e+-0x1b*-0xc3+-0x633*0x5,_0x22d847=_0x19c05c['length'];_0x53fe90<_0x22d847;_0x53fe90++)_0x19c05c[_0x53fe90]['apply'](this,_0x39b1fe);return!(0x1aed+0x855*0x2+-0x1*0x2b97);}return!(-0x132c+-0x10e9+0x2416);},_0x76dad4['prototype']['addListene'+'r']=function(_0x226cb8,_0x3ff7f5){if('function'!=typeof _0x3ff7f5)throw new Error('addListene'+'r\x20only\x20tak'+'es\x20instanc'+'es\x20of\x20Func'+'tion');return this['_events']||(this['_events']={}),this['emit']('newListene'+'r',_0x226cb8,_0x3ff7f5),this['_events'][_0x226cb8]?_0x200a4f(this['_events'][_0x226cb8])?this['_events'][_0x226cb8]['push'](_0x3ff7f5):this['_events'][_0x226cb8]=[this['_events'][_0x226cb8],_0x3ff7f5]:this['_events'][_0x226cb8]=_0x3ff7f5,this;},_0x76dad4['prototype']['on']=_0x76dad4['prototype']['addListene'+'r'],_0x76dad4['prototype']['once']=function(_0x5884d4,_0x2b6b85){var _0x3d2ce4=this;return _0x3d2ce4['on'](_0x5884d4,function _0x3c5818(){_0x3d2ce4['removeList'+'ener'](_0x5884d4,_0x3c5818),_0x2b6b85['apply'](this,arguments);}),this;},_0x76dad4['prototype']['removeList'+'ener']=function(_0x31dfdc,_0x3340f3){if('function'!=typeof _0x3340f3)throw new Error('removeList'+'ener\x20only\x20'+'takes\x20inst'+'ances\x20of\x20F'+'unction');if(!this['_events']||!this['_events'][_0x31dfdc])return this;var _0x1aa70d=this['_events'][_0x31dfdc];if(_0x200a4f(_0x1aa70d)){var _0xe487d0=function(_0x281b78,_0x4b27f0){if(_0x281b78['indexOf'])return _0x281b78['indexOf'](_0x4b27f0);for(var _0x4ef4ce=0x17e*0x8+-0x3f1+-0x17*0x59;_0x4ef4ce<_0x281b78['length'];_0x4ef4ce++)if(_0x4b27f0===_0x281b78[_0x4ef4ce])return _0x4ef4ce;return-(0xc5a+0x35*0x55+-0x2*0xef9);}(_0x1aa70d,_0x3340f3);if(_0xe487d0<0x738+-0x1b7a+0x1*0x1442)return this;_0x1aa70d['splice'](_0xe487d0,0x3*0x4c0+0x1b94+-0x1*0x29d3),-0x2*0x344+0x1655+-0x1*0xfcd==_0x1aa70d['length']&&delete this['_events'][_0x31dfdc];}else this['_events'][_0x31dfdc]===_0x3340f3&&delete this['_events'][_0x31dfdc];return this;},_0x76dad4['prototype']['removeAllL'+'isteners']=function(_0x419466){return 0xdf9*0x1+0x1dad+0x15d3*-0x2===arguments['length']?(this['_events']={},this):(_0x419466&&this['_events']&&this['_events'][_0x419466]&&(this['_events'][_0x419466]=null),this);},_0x76dad4['prototype']['listeners']=function(_0x32d571){return this['_events']||(this['_events']={}),this['_events'][_0x32d571]||(this['_events'][_0x32d571]=[]),_0x200a4f(this['_events'][_0x32d571])||(this['_events'][_0x32d571]=[this['_events'][_0x32d571]]),this['_events'][_0x32d571];};},0x1d75:(_0x10bc3d,_0x39cc8e,_0x34decd)=>{'use strict';var _0x40ac6d=_0x34decd(0x14ef+0xb*-0x2b3+0xa0b);_0x10bc3d['exports']=function(_0x53d903){var _0x1e0cf5=_0x40ac6d['filter']([]['concat'](_0x53d903),function(_0x522fc2){return'/meta/conn'+'ect'===_0x522fc2['channel'];});return _0x1e0cf5[-0x4e8+0x24*-0x31+0xbcc]&&_0x1e0cf5[-0x1b06+0x11cc+-0x49d*-0x2]['clientId'];};},0x10d7:(_0x216fe0,_0x427e7f,_0x4822a7)=>{'use strict';var _0x78f353=_0x4822a7(-0x42+0x13*0x13e+-0x74c),_0x12866d=_0x4822a7(-0x1*0x183b+0x2218+0x28);_0x216fe0['exports']=_0x78f353({'initialize':function(){this['_used']={};},'exists':function(_0x12da8f){return this['_used']['hasOwnProp'+'erty'](_0x12da8f);},'generate':function(){for(var _0x577295=_0x12866d();this['_used']['hasOwnProp'+'erty'](_0x577295);)_0x577295=_0x12866d();return this['_used'][_0x577295]=_0x577295;},'release':function(_0xbd1bd8){delete this['_used'][_0xbd1bd8];}});},0x55:(_0x4c0371,_0x1a9fbb,_0x18d9e8)=>{'use strict';var _0x1ebe63=_0x18d9e8(-0x223*0xa+-0x1dfd+0x3732),_0x48385a=function(_0x1530eb){this['_state']=-(-0x1f*-0x11a+0x1ea6+-0x40cb),this['_value']=null,this['_defer']=[],_0xf567ab(this,_0x1530eb);};_0x48385a['prototype']['then']=function(_0x16e309,_0x38dbab){var _0x3c1d10=new _0x48385a(),_0x237c75={'promise':_0x3c1d10,'onFulfilled':_0x16e309,'onRejected':_0x38dbab};return-(-0x150a*-0x1+-0x10f7+0x1*-0x412)===this['_state']?this['_defer']['push'](_0x237c75):_0xaab3a8(this,_0x237c75),_0x3c1d10;},_0x48385a['prototype']['catch']=function(_0x5cec14){return this['then'](null,_0x5cec14);};var _0xf567ab=function(_0x4f7e0f,_0x5bd0c1){if('function'==typeof _0x5bd0c1){var _0x5c69c3=0x5*0x359+0x170f*-0x1+0x652,_0xc1f482=function(_0x51eaef){-0x1*-0x434+0x332*0x1+-0x2*0x3b3==_0x5c69c3++&&_0x57499d(_0x4f7e0f,_0x51eaef);};try{_0x5bd0c1(function(_0x4168f1){-0x3e3*0x2+0x1f51+-0x31*0x7b==_0x5c69c3++&&_0x5aaad4(_0x4f7e0f,_0x4168f1);},_0xc1f482);}catch(_0x5b514a){_0xc1f482(_0x5b514a);}}},_0xaab3a8=function(_0x1f208c,_0x5e5d57){var _0x7e5fa4=_0x1f208c['_state'],_0x47ef62=_0x1f208c['_value'],_0x289f3d=_0x5e5d57['promise'],_0x1efd21=[_0x5e5d57['onFulfille'+'d'],_0x5e5d57['onRejected']][_0x7e5fa4];if('function'!=typeof _0x1efd21)return(-0x1e*0x8+-0x511+0x601,[_0x5aaad4,_0x57499d][_0x7e5fa4])(_0x289f3d,_0x47ef62);_0x1ebe63(function(){try{_0x5aaad4(_0x289f3d,_0x1efd21(_0x47ef62));}catch(_0x2fdfb9){_0x57499d(_0x289f3d,_0x2fdfb9);}});},_0x5aaad4=function(_0x579a9a,_0x138e51){if(_0x579a9a===_0x138e51)return _0x57499d(_0x579a9a,new TypeError('Recursive\x20'+'promise\x20ch'+'ain\x20detect'+'ed'));var _0x4b50bb;try{_0x4b50bb=_0xa24d17(_0x138e51);}catch(_0x3f574f){return _0x57499d(_0x579a9a,_0x3f574f);}if(!_0x4b50bb)return _0x145be9(_0x579a9a,_0x138e51);_0xf567ab(_0x579a9a,function(_0xa30d79,_0x37027c){_0x4b50bb['call'](_0x138e51,_0xa30d79,_0x37027c);});},_0xa24d17=function(_0x51af10){var _0x527243=typeof _0x51af10,_0x17dd87=('object'===_0x527243||'function'===_0x527243)&&_0x51af10&&_0x51af10['then'];return'function'==typeof _0x17dd87?_0x17dd87:null;},_0x145be9=function(_0x1e6d1b,_0x56941e){_0x58f201(_0x1e6d1b,-0x14e6+-0x147c+0x2962,_0x56941e);},_0x57499d=function(_0x6697d5,_0x181793){_0x58f201(_0x6697d5,-0x22fb+-0xf+-0x1*-0x230b,_0x181793);},_0x58f201=function(_0x415e7a,_0x1ca316,_0xe9b79f){var _0x1a1a87=_0x415e7a['_defer'],_0x262669=0x1*0x487+-0x65*0x5+0x147*-0x2;if(_0x415e7a['_state']=_0x1ca316,_0x415e7a['_value']=_0xe9b79f,_0x415e7a['_defer']=null,-0x1d*-0x65+0x2e9*0x1+-0xe5a!==_0x1a1a87['length']){for(;_0x262669<_0x1a1a87['length'];)_0xaab3a8(_0x415e7a,_0x1a1a87[_0x262669++]);}};_0x48385a['resolve']=function(_0x453e49){try{if(_0xa24d17(_0x453e49))return _0x453e49;}catch(_0x46b4e8){return _0x48385a['reject'](_0x46b4e8);}return new _0x48385a(function(_0x1b5849,_0x401470){_0x1b5849(_0x453e49);});},_0x48385a['reject']=function(_0x2fcda9){return new _0x48385a(function(_0x3da292,_0x57b759){_0x57b759(_0x2fcda9);});},_0x48385a['all']=function(_0x4befc9){return new _0x48385a(function(_0x43289c,_0x52bb5a){var _0x15f524,_0x181ebc=[],_0x1676c2=_0x4befc9['length'];if(-0x1a75+0x3*-0x867+0x33aa===_0x1676c2)return _0x43289c(_0x181ebc);var _0x105241=function(_0x1fd315,_0x3a4301){_0x48385a['resolve'](_0x1fd315)['then'](function(_0x33f1e7){_0x181ebc[_0x3a4301]=_0x33f1e7,0x2678+0x1d53+-0x43cb==--_0x1676c2&&_0x43289c(_0x181ebc);},_0x52bb5a);};for(_0x15f524=0x2537+0x2*-0x9a3+0x1*-0x11f1;_0x15f524<_0x1676c2;_0x15f524++)_0x105241(_0x4befc9[_0x15f524],_0x15f524);});},_0x48385a['race']=function(_0x500139){return new _0x48385a(function(_0x5e1bc3,_0x1de906){for(var _0x3444f5=0x31a*-0x1+-0x85f*-0x3+0x31*-0x73,_0x4cf282=_0x500139['length'];_0x3444f5<_0x4cf282;_0x3444f5++)_0x48385a['resolve'](_0x500139[_0x3444f5])['then'](_0x5e1bc3,_0x1de906);});},_0x48385a['deferred']=function(){var _0x42a42f={};return _0x42a42f['promise']=new _0x48385a(function(_0x87d87a,_0x40c68a){_0x42a42f['resolve']=_0x87d87a,_0x42a42f['reject']=_0x40c68a;}),_0x42a42f;},_0x4c0371['exports']=_0x48385a;},0xa05:(_0xb6af9c,_0x45dc29,_0x5e8fab)=>{'use strict';var _0x4952fa=_0x5e8fab(-0x10df+-0x748*-0x2+0xb72),_0x130327=_0x5e8fab(-0x59*0x33+0xb*-0x19b+-0x2ba9*-0x1);_0xb6af9c['exports']=function(_0x17ca6f){_0x17ca6f=_0x17ca6f||_0x130327['ID_LENGTH'];for(var _0x3e8967=Math['ceil'](_0x17ca6f*Math['log'](0x1ea8+-0x2bd*-0x2+0x242*-0x10)/Math['log'](-0x1*-0x4d7+-0x2335*-0x1+0x13f4*-0x2)),_0x5cf3c2=_0x4952fa(_0x17ca6f,-0x181c+-0xea7*0x1+0x26e7*0x1);_0x5cf3c2['length']<_0x3e8967;)_0x5cf3c2='0'+_0x5cf3c2;return _0x5cf3c2;};},0x13a0:(_0x1a5a5f,_0xd40285,_0x4df8d0)=>{'use strict';var _0x422964=_0x4df8d0(0x550+0xc3d*0x2+-0xdbe);_0x1a5a5f['exports']=_0x422964({'initialize':function(){this['_index']={};},'add':function(_0x54fdb2){var _0x440ce6=void(0xf*0x49+0x9*-0x432+0x217b)!==_0x54fdb2['id']?_0x54fdb2['id']:_0x54fdb2;return!this['_index']['hasOwnProp'+'erty'](_0x440ce6)&&(this['_index'][_0x440ce6]=_0x54fdb2,!(0x1*-0x20b+0x2197+0xc*-0x2a1));},'forEach':function(_0x1c9103,_0x3de549){for(var _0xde9722 in this['_index'])this['_index']['hasOwnProp'+'erty'](_0xde9722)&&_0x1c9103['call'](_0x3de549,this['_index'][_0xde9722]);},'isEmpty':function(){for(var _0x2ab805 in this['_index'])if(this['_index']['hasOwnProp'+'erty'](_0x2ab805))return!(0x3*-0x15b+-0x2334*-0x1+-0x1f22);return!(0xfa2+-0x248c*0x1+0xa75*0x2);},'member':function(_0x61d331){for(var _0xff7de3 in this['_index'])if(this['_index'][_0xff7de3]===_0x61d331)return!(0x71*0x22+-0x83e+-0x6c4);return!(-0x51+-0x108e+-0x8*-0x21c);},'remove':function(_0x101aca){var _0x245548=void(0x1*0xe55+-0xd*-0x26d+-0x2dde)!==_0x101aca['id']?_0x101aca['id']:_0x101aca,_0x22bbe0=this['_index'][_0x245548];return delete this['_index'][_0x245548],_0x22bbe0;},'toArray':function(){var _0x178fd6=[];return this['forEach'](function(_0x281776){_0x178fd6['push'](_0x281776);}),_0x178fd6;}});},0x1d6c:_0x15187e=>{'use strict';_0x15187e['exports']=function(_0x4cac85){return JSON['stringify'](_0x4cac85,function(_0x4470ba,_0x28278e){return this[_0x4470ba]instanceof Array?this[_0x4470ba]:_0x28278e;});};},0x7be:_0x2b23ca=>{'use strict';_0x2b23ca['exports']={'isURI':function(_0xeadfcb){return _0xeadfcb&&_0xeadfcb['protocol']&&_0xeadfcb['host']&&_0xeadfcb['path'];},'isSameOrigin':function(_0x1ba9f6){return _0x1ba9f6['protocol']===location['protocol']&&_0x1ba9f6['hostname']===location['hostname']&&_0x1ba9f6['port']===location['port'];},'parse':function(_0x2b4d31){if('string'!=typeof _0x2b4d31)return _0x2b4d31;var _0x27ad00,_0x571667,_0x299c04,_0x522ff1,_0x32a727,_0x4b4be0,_0x283450={},_0x4207e4=function(_0x3b190a,_0x6d025f){_0x2b4d31=_0x2b4d31['replace'](_0x6d025f,function(_0x8e8be7){return _0x283450[_0x3b190a]=_0x8e8be7,'';}),_0x283450[_0x3b190a]=_0x283450[_0x3b190a]||'';};for(_0x4207e4('protocol',/^[a-z]+\:/i),_0x4207e4('host',/^\/\/[^\/\?#]+/),/^\//['test'](_0x2b4d31)||_0x283450['host']||(_0x2b4d31=location['pathname']['replace'](/[^\/]*$/,'')+_0x2b4d31),_0x4207e4('pathname',/^[^\?#]*/),_0x4207e4('search',/^\?[^#]*/),_0x4207e4('hash',/^#.*/),_0x283450['protocol']=_0x283450['protocol']||location['protocol'],_0x283450['host']?(_0x283450['host']=_0x283450['host']['substr'](-0x644+-0x3ea*0x9+0x2980),/@/['test'](_0x283450['host'])&&(_0x283450['auth']=_0x283450['host']['split']('@')[0x1b3a+0x20a8+0x3fe*-0xf],_0x283450['host']=_0x283450['host']['split']('@')[0x54d*0x5+0x26bf+-0x413f]),_0x27ad00=_0x283450['host']['match'](/^\[([^\]]+)\]|^[^:]+/),_0x283450['hostname']=_0x27ad00[0x2*-0x322+0x1f*0xd5+-0x1386]||_0x27ad00[-0x1*0x1e17+-0xcf6+-0x67*-0x6b],_0x283450['port']=(_0x283450['host']['match'](/:(\d+)$/)||[])[0x1*-0xbcf+0x413*-0x3+0x125*0x15]||''):(_0x283450['host']=location['host'],_0x283450['hostname']=location['hostname'],_0x283450['port']=location['port']),_0x283450['pathname']=_0x283450['pathname']||'/',_0x283450['path']=_0x283450['pathname']+_0x283450['search'],_0x4b4be0={},_0x522ff1=-0xa16+-0x21b0+0x2bc6,_0x32a727=(_0x299c04=(_0x571667=_0x283450['search']['replace'](/^\?/,''))?_0x571667['split']('&'):[])['length'];_0x522ff1<_0x32a727;_0x522ff1++)_0x27ad00=_0x299c04[_0x522ff1]['split']('='),_0x4b4be0[decodeURIComponent(_0x27ad00[0x117+-0x12a*-0x20+0x41*-0x97]||'')]=decodeURIComponent(_0x27ad00[-0x128e+0xba3*0x1+0x6ec]||'');return _0x283450['query']=_0x4b4be0,_0x283450['href']=this['stringify'](_0x283450),_0x283450;},'stringify':function(_0x454b8e){var _0x54722e=_0x454b8e['auth']?_0x454b8e['auth']+'@':'';return _0x454b8e['protocol']+'//'+_0x54722e+_0x454b8e['host']+(_0x454b8e['pathname']+this['queryStrin'+'g'](_0x454b8e['query'])+(_0x454b8e['hash']||''));},'queryString':function(_0x9f48f7){var _0x215f78=[];for(var _0x51ad8c in _0x9f48f7)_0x9f48f7['hasOwnProp'+'erty'](_0x51ad8c)&&_0x215f78['push'](encodeURIComponent(_0x51ad8c)+'='+encodeURIComponent(_0x9f48f7[_0x51ad8c]));return-0xb65*0x1+-0xd48+-0x18ad*-0x1===_0x215f78['length']?'':'?'+_0x215f78['join']('&');}};},0xf65:(_0x18271d,_0x226cd9,_0x5b1165)=>{'use strict';var _0xb1d742=_0x5b1165(0xb60+0x21c7*-0x1+-0x8*-0x2f6);_0x18271d['exports']=function(_0x14d1e9,_0x51c8b9){for(var _0x555428 in _0x14d1e9)if(_0xb1d742['indexOf'](_0x51c8b9,_0x555428)<0x1ff3*-0x1+0xd65+0xa*0x1db)throw new Error('Unrecogniz'+'ed\x20option:'+'\x20'+_0x555428);};},0x2aa:(_0x3d4e0f,_0x41eba7,_0xff2744)=>{'use strict';var _0x26c652=_0xff2744(0x1f25+0x1459+-0x3051)['Client'];_0x3d4e0f['exports']={'create':function(_0x104940,_0x2e4fec,_0xbacdf1){return new _0x26c652(_0x104940,_0x2e4fec,_0xbacdf1);}};},0x1711:(_0x22b43b,_0x32ca48,_0x1f7ef3)=>{var _0x4e6aef=_0x1f7ef3(-0x3c5*-0x1+-0x94*-0x3+0x4b4);function _0xe989d7(_0x1b4bd7){_0x4e6aef['ok'](_0x1b4bd7===_0xe989d7['REQUEST']||_0x1b4bd7===_0xe989d7['RESPONSE']||void(0x1d6e+-0x2679+-0x1*-0x90b)===_0x1b4bd7),void(-0x11*-0x23b+-0x613+-0x1fd8)===_0x1b4bd7||this['initialize'](_0x1b4bd7);}_0x32ca48['e']=_0xe989d7,_0xe989d7['prototype']['initialize']=function(_0x16d214,_0x1442e9){_0x4e6aef['ok'](_0x16d214===_0xe989d7['REQUEST']||_0x16d214===_0xe989d7['RESPONSE']),this['type']=_0x16d214,this['state']=_0x16d214+'_LINE',this['info']={'headers':[],'upgrade':!(-0x21ea+0x1958+0x893)},this['trailers']=[],this['line']='',this['isChunked']=!(0x23b6+-0x3ea+-0x1fcb),this['connection']='',this['headerSize']=0x1*0x19b6+-0x1aac*0x1+0x52*0x3,this['body_bytes']=null,this['isUserCall']=!(-0xce*0x2+-0x3*0x783+0x1826),this['hadError']=!(-0x134b+-0x1*0x1d7f+0x1*0x30cb);},_0xe989d7['encoding']='ascii',_0xe989d7['maxHeaderS'+'ize']=0xbac4+-0x2*0xda66+0x23a08,_0xe989d7['REQUEST']='REQUEST',_0xe989d7['RESPONSE']='RESPONSE';var _0x3e0638=_0xe989d7['kOnHeaders']=0x1a53+-0x1*-0x1097+0x34d*-0xd,_0x356b26=_0xe989d7['kOnHeaders'+'Complete']=0xab3+-0x7f6+-0x2bb,_0x2d0afd=_0xe989d7['kOnBody']=0xfe*-0x5+-0x187b+0x1d74,_0x1b872a=_0xe989d7['kOnMessage'+'Complete']=-0x1576+-0xc73*0x1+0x21ed;_0xe989d7['prototype'][_0x3e0638]=_0xe989d7['prototype'][_0x356b26]=_0xe989d7['prototype'][_0x2d0afd]=_0xe989d7['prototype'][_0x1b872a]=function(){};var _0x391d58=!(0xd73+-0x96f+0x404*-0x1);Object['defineProp'+'erty'](_0xe989d7,'kOnExecute',{'get':function(){return _0x391d58=!(-0xa4*-0x8+0x1*-0x1219+0xcfa),0x6*0x589+0x2628+-0x17a9*0x3;}});var _0x3f8492=_0xe989d7['methods']=['DELETE','GET','HEAD','POST','PUT','CONNECT','OPTIONS','TRACE','COPY','LOCK','MKCOL','MOVE','PROPFIND','PROPPATCH','SEARCH','UNLOCK','BIND','REBIND','UNBIND','ACL','REPORT','MKACTIVITY','CHECKOUT','MERGE','M-SEARCH','NOTIFY','SUBSCRIBE','UNSUBSCRIB'+'E','PATCH','PURGE','MKCALENDAR','LINK','UNLINK'],_0x40dddf=_0x3f8492['indexOf']('CONNECT');_0xe989d7['prototype']['reinitiali'+'ze']=_0xe989d7,_0xe989d7['prototype']['close']=_0xe989d7['prototype']['pause']=_0xe989d7['prototype']['resume']=_0xe989d7['prototype']['free']=function(){},_0xe989d7['prototype']['_compatMod'+'e0_11']=!(0x6d*-0x57+0x12dd+-0x85*-0x23),_0xe989d7['prototype']['getAsyncId']=function(){return 0x1c0a+-0x57*0x3d+-0x74f;};var _0x34d6f1={'REQUEST_LINE':!(0x18b1+-0x35*-0x2f+-0x226c),'RESPONSE_LINE':!(-0x1d9+0x19fd+-0x1824),'HEADER':!(-0x25dd+-0x353+0x2930)};_0xe989d7['prototype']['execute']=function(_0x2de099,_0x4cf674,_0x49153e){if(!(this instanceof _0xe989d7))throw new TypeError('not\x20a\x20HTTP'+'Parser');_0x4cf674=_0x4cf674||0x1ca2+-0x50e+-0x3*0x7dc,_0x49153e='number'==typeof _0x49153e?_0x49153e:_0x2de099['length'],this['chunk']=_0x2de099,this['offset']=_0x4cf674;var _0x13d0b8=this['end']=_0x4cf674+_0x49153e;try{for(;this['offset']<_0x13d0b8&&!this[this['state']](););}catch(_0x5021cb){if(this['isUserCall'])throw _0x5021cb;return this['hadError']=!(0xca3+0xb*0xbc+-0x1*0x14b7),_0x5021cb;}return this['chunk']=null,_0x49153e=this['offset']-_0x4cf674,_0x34d6f1[this['state']]&&(this['headerSize']+=_0x49153e,this['headerSize']>_0xe989d7['maxHeaderS'+'ize'])?new Error('max\x20header'+'\x20size\x20exce'+'eded'):_0x49153e;};var _0x4e25a4={'REQUEST_LINE':!(-0x1*0x109c+-0x1*-0x1e95+-0xdf9),'RESPONSE_LINE':!(0x113*-0x11+-0x4*-0x476+-0x1*-0x6b),'BODY_RAW':!(-0x12a5+-0x1*0x118b+0x2430)};_0xe989d7['prototype']['finish']=function(){if(!this['hadError'])return _0x4e25a4[this['state']]?void('BODY_RAW'===this['state']&&this['userCall']()(this[_0x1b872a]())):new Error('invalid\x20st'+'ate\x20for\x20EO'+'F');},_0xe989d7['prototype']['consume']=_0xe989d7['prototype']['unconsume']=_0xe989d7['prototype']['getCurrent'+'Buffer']=function(){},_0xe989d7['prototype']['userCall']=function(){this['isUserCall']=!(-0x1*0x10fb+0x13f2+-0x2f7);var _0x30c6c0=this;return function(_0x470d8e){return _0x30c6c0['isUserCall']=!(0xb1e+-0xa85*0x2+0x9ed),_0x470d8e;};},_0xe989d7['prototype']['nextReques'+'t']=function(){this['userCall']()(this[_0x1b872a]()),this['reinitiali'+'ze'](this['type']);},_0xe989d7['prototype']['consumeLin'+'e']=function(){for(var _0x13842d=this['end'],_0x3b58e6=this['chunk'],_0x395eb3=this['offset'];_0x395eb3<_0x13842d;_0x395eb3++)if(0x1*-0x9ff+-0x18ad+-0x3*-0xb92===_0x3b58e6[_0x395eb3]){var _0x19068c=this['line']+_0x3b58e6['toString'](_0xe989d7['encoding'],this['offset'],_0x395eb3);return'\x0d'===_0x19068c['charAt'](_0x19068c['length']-(0xa00+-0x228c+0x82f*0x3))&&(_0x19068c=_0x19068c['substr'](0xb1e*-0x2+0xe41+0x7fb*0x1,_0x19068c['length']-(-0x1*0x174b+0x67+0x1*0x16e5))),this['line']='',this['offset']=_0x395eb3+(-0x3*0x386+0x1*-0x2557+0x1*0x2fea),_0x19068c;}this['line']+=_0x3b58e6['toString'](_0xe989d7['encoding'],this['offset'],this['end']),this['offset']=this['end'];};var _0x4d95fc=/^([^: \t]+):[ \t]*((?:.*[^ \t])|)/,_0x1741a8=/^[ \t]+(.*[^ \t])/;_0xe989d7['prototype']['parseHeade'+'r']=function(_0x2a2074,_0x3ccf85){if(-(0x1dae+-0x21a2+0x3f5)!==_0x2a2074['indexOf']('\x0d'))throw _0x47212b('HPE_LF_EXP'+'ECTED');var _0x3fec5f=_0x4d95fc['exec'](_0x2a2074),_0x398735=_0x3fec5f&&_0x3fec5f[-0x36e*-0x8+-0x91*0x12+-0x113d];if(_0x398735)_0x3ccf85['push'](_0x398735),_0x3ccf85['push'](_0x3fec5f[0x79d+0x1*0xb87+-0x1322]);else{var _0xa76abf=_0x1741a8['exec'](_0x2a2074);_0xa76abf&&_0x3ccf85['length']&&(_0x3ccf85[_0x3ccf85['length']-(0x60d+0x1*-0x1a97+0x148b*0x1)]&&(_0x3ccf85[_0x3ccf85['length']-(-0x13f+0x1c3f+0x1*-0x1aff)]+='\x20'),_0x3ccf85[_0x3ccf85['length']-(-0x118f+-0x13*0xbb+0x1f71)]+=_0xa76abf[-0x1780+0x9d+-0x24a*-0xa]);}};var _0x4a7310=/^([A-Z-]+) ([^ ]+) HTTP\/(\d)\.(\d)$/;_0xe989d7['prototype']['REQUEST_LI'+'NE']=function(){var _0x57b730=this['consumeLin'+'e']();if(_0x57b730){var _0x262eb8=_0x4a7310['exec'](_0x57b730);if(null===_0x262eb8)throw _0x47212b('HPE_INVALI'+'D_CONSTANT');if(this['info']['method']=this['_compatMod'+'e0_11']?_0x262eb8[-0x13*0x2f+-0x1d6d+0x20eb]:_0x3f8492['indexOf'](_0x262eb8[-0x10b6+0x234d+0x6*-0x319]),-(0x1511+0x1d9d+-0x32ad*0x1)===this['info']['method'])throw new Error('invalid\x20re'+'quest\x20meth'+'od');this['info']['url']=_0x262eb8[0x1*-0x1027+0x13c2+-0x399],this['info']['versionMaj'+'or']=+_0x262eb8[-0x13a2+0x1ef+-0x8db*-0x2],this['info']['versionMin'+'or']=+_0x262eb8[0xdec+-0x16e7+-0x149*-0x7],this['body_bytes']=0x1c2a+0x1968+0x2*-0x1ac9,this['state']='HEADER';}};var _0x1cd0ee=/^HTTP\/(\d)\.(\d) (\d{3}) ?(.*)$/;function _0x47212b(_0x3d6958){var _0x77a209=new Error('Parse\x20Erro'+'r');return _0x77a209['code']=_0x3d6958,_0x77a209;}_0xe989d7['prototype']['RESPONSE_L'+'INE']=function(){var _0xd19fdb=this['consumeLin'+'e']();if(_0xd19fdb){var _0x587aae=_0x1cd0ee['exec'](_0xd19fdb);if(null===_0x587aae)throw _0x47212b('HPE_INVALI'+'D_CONSTANT');this['info']['versionMaj'+'or']=+_0x587aae[0x19f2+0x81d*-0x1+-0x11d4],this['info']['versionMin'+'or']=+_0x587aae[0x331*0x2+0x1321*-0x1+0xcc1*0x1];var _0x32623f=this['info']['statusCode']=+_0x587aae[0xc22+0x4*0x372+-0x1*0x19e7];this['info']['statusMess'+'age']=_0x587aae[0x1597*0x1+0xe5a+-0x23ed],-0x7*0x2f3+0x1355+0x151!=(_0x32623f/(0x34*-0x5+0x1498+0x10*-0x133)|-0x262a+-0x1*-0x214d+-0xf*-0x53)&&-0x99*-0x25+0x20d9+-0x1b15*0x2!==_0x32623f&&-0x211b+0x506*0x3+0x2bf*0x7!==_0x32623f||(this['body_bytes']=-0x976*0x1+0x130d+-0x997*0x1),this['state']='HEADER';}},_0xe989d7['prototype']['shouldKeep'+'Alive']=function(){if(this['info']['versionMaj'+'or']>-0x1*0x2+0xa1*0x2d+-0x1c4b*0x1&&this['info']['versionMin'+'or']>0x1*-0x67f+0x1a5*0x3+0x190){if(-(0x14dc+0x9*-0x2b9+0x1*0x3a6)!==this['connection']['indexOf']('close'))return!(0x7a9*-0x3+-0x989*0x2+0x7*0x602);}else{if(-(-0x1f1b*0x1+-0x22b8+0x17f*0x2c)===this['connection']['indexOf']('keep-alive'))return!(-0x49*0xb+0x13a*-0x3+0x6d2);}return!(null===this['body_bytes']&&!this['isChunked']);},_0xe989d7['prototype']['HEADER']=function(){var _0x138218=this['consumeLin'+'e']();if(void(0x438*-0x6+0xf76*-0x1+0x133*0x22)!==_0x138218){var _0x3428bd=this['info'];if(_0x138218)this['parseHeade'+'r'](_0x138218,_0x3428bd['headers']);else{for(var _0x3fa546,_0x3c2f03,_0xd4355d=_0x3428bd['headers'],_0x1bd7b5=!(-0x814+-0x269e+-0xf91*-0x3),_0x40e5dc=!(0x3b*-0x15+0x18cf+-0x13f7),_0x387958=0x1*0x757+-0x26cf*-0x1+-0x2e26;_0x387958<_0xd4355d['length'];_0x387958+=0xb*0x175+-0x2260+0x7f*0x25)switch(_0xd4355d[_0x387958]['toLowerCas'+'e']()){case'transfer-e'+'ncoding':this['isChunked']='chunked'===_0xd4355d[_0x387958+(-0x9*-0x139+0x8e*-0x1d+0x3*0x1b2)]['toLowerCas'+'e']();break;case'content-le'+'ngth':if(_0x3fa546=+_0xd4355d[_0x387958+(-0x62c+-0x75*-0x21+-0x8e8)],_0x1bd7b5){if(_0x3fa546!==this['body_bytes'])throw _0x47212b('HPE_UNEXPE'+'CTED_CONTE'+'NT_LENGTH');}else _0x1bd7b5=!(0x1682+-0x103*-0x1+-0x1785),this['body_bytes']=_0x3fa546;break;case'connection':this['connection']+=_0xd4355d[_0x387958+(-0x122b*0x1+-0x1661+0x288d)]['toLowerCas'+'e']();break;case'upgrade':_0x40e5dc=!(0x216+-0x2708+0x2*0x1279);}if(this['isChunked']&&_0x1bd7b5&&(_0x1bd7b5=!(-0x5*-0x63d+0x23d7*0x1+-0x4307),this['body_bytes']=null),_0x40e5dc&&-(0xdeb+-0x20b2+0x259*0x8)!=this['connection']['indexOf']('upgrade')?_0x3428bd['upgrade']=this['type']===_0xe989d7['REQUEST']||-0x74e*-0x5+-0x1a5b*0x1+0x12*-0x8b===_0x3428bd['statusCode']:_0x3428bd['upgrade']=_0x3428bd['method']===_0x40dddf,this['isChunked']&&_0x3428bd['upgrade']&&(this['isChunked']=!(0x127d+0x1147+-0x23c3)),_0x3428bd['shouldKeep'+'Alive']=this['shouldKeep'+'Alive'](),-0x3e6*0xa+0x52*-0x9+-0x53c*-0x8===(_0x3c2f03=_0x391d58?this['userCall']()(this[_0x356b26](_0x3428bd)):this['userCall']()(this[_0x356b26](_0x3428bd['versionMaj'+'or'],_0x3428bd['versionMin'+'or'],_0x3428bd['headers'],_0x3428bd['method'],_0x3428bd['url'],_0x3428bd['statusCode'],_0x3428bd['statusMess'+'age'],_0x3428bd['upgrade'],_0x3428bd['shouldKeep'+'Alive']))))return this['nextReques'+'t'](),!(-0x13c8+0x40+0x1388);if(this['isChunked']&&!_0x3c2f03)this['state']='BODY_CHUNK'+'HEAD';else{if(_0x3c2f03||0x5d5+0x647+-0xc1c===this['body_bytes'])return this['nextReques'+'t'](),_0x3428bd['upgrade'];null===this['body_bytes']?this['state']='BODY_RAW':this['state']='BODY_SIZED';}}}},_0xe989d7['prototype']['BODY_CHUNK'+'HEAD']=function(){var _0x55055e=this['consumeLin'+'e']();void(-0xf4d*0x1+0x2*0x62e+-0x1*-0x2f1)!==_0x55055e&&(this['body_bytes']=parseInt(_0x55055e,-0x25b1+-0x1*0xea5+0x1a33*0x2),this['body_bytes']?this['state']='BODY_CHUNK':this['state']='BODY_CHUNK'+'TRAILERS');},_0xe989d7['prototype']['BODY_CHUNK']=function(){var _0x1db992=Math['min'](this['end']-this['offset'],this['body_bytes']);this['userCall']()(this[_0x2d0afd](this['chunk'],this['offset'],_0x1db992)),this['offset']+=_0x1db992,this['body_bytes']-=_0x1db992,this['body_bytes']||(this['state']='BODY_CHUNK'+'EMPTYLINE');},_0xe989d7['prototype']['BODY_CHUNK'+'EMPTYLINE']=function(){var _0x436d7f=this['consumeLin'+'e']();void(0x2486+0x5*-0x14b+0x5*-0x603)!==_0x436d7f&&(_0x4e6aef['equal'](_0x436d7f,''),this['state']='BODY_CHUNK'+'HEAD');},_0xe989d7['prototype']['BODY_CHUNK'+'TRAILERS']=function(){var _0x5e387c=this['consumeLin'+'e']();void(-0x42e*-0x1+0x1*0x163d+-0x1a6b)!==_0x5e387c&&(_0x5e387c?this['parseHeade'+'r'](_0x5e387c,this['trailers']):(this['trailers']['length']&&this['userCall']()(this[_0x3e0638](this['trailers'],'')),this['nextReques'+'t']()));},_0xe989d7['prototype']['BODY_RAW']=function(){var _0x4a798c=this['end']-this['offset'];this['userCall']()(this[_0x2d0afd](this['chunk'],this['offset'],_0x4a798c)),this['offset']=this['end'];},_0xe989d7['prototype']['BODY_SIZED']=function(){var _0x2bd121=Math['min'](this['end']-this['offset'],this['body_bytes']);this['userCall']()(this[_0x2d0afd](this['chunk'],this['offset'],_0x2bd121)),this['offset']+=_0x2bd121,this['body_bytes']-=_0x2bd121,this['body_bytes']||this['nextReques'+'t']();},['Headers','HeadersCom'+'plete','Body','MessageCom'+'plete']['forEach'](function(_0x1fd5da){var _0x3b50bb=_0xe989d7['kOn'+_0x1fd5da];Object['defineProp'+'erty'](_0xe989d7['prototype'],'on'+_0x1fd5da,{'get':function(){return this[_0x3b50bb];},'set':function(_0x4f8df0){return this['_compatMod'+'e0_11']=!(-0x4*0x717+0x206a+-0x40e),_0x40dddf='CONNECT',this[_0x3b50bb]=_0x4f8df0;}});});},0x7e8:(_0x343894,_0x2f63e7,_0x140b9d)=>{'use strict';var _0x10f425=_0x140b9d(0x7*0x3b3+-0xdfd+0x724),_0x41fa1e={};_0x41fa1e['rules']=_0x140b9d(0x1fb1+0x1e32+-0x35ce)['map'](function(_0xc5116a){return{'rule':_0xc5116a,'suffix':_0xc5116a['replace'](/^(\*\.|\!)/,''),'punySuffix':-(-0x1732+0x17b4+-0x81),'wildcard':'*'===_0xc5116a['charAt'](-0x2b1+0x1*-0x104b+0x195*0xc),'exception':'!'===_0xc5116a['charAt'](-0xd*0x55+-0x2*0x13d+0x6cb)};}),_0x41fa1e['endsWith']=function(_0x579f95,_0x4be222){return-(0x1fdd+0x1577+0x4d9*-0xb)!==_0x579f95['indexOf'](_0x4be222,_0x579f95['length']-_0x4be222['length']);},_0x41fa1e['findRule']=function(_0xd7f700){var _0xda2828=_0x10f425['toASCII'](_0xd7f700);return _0x41fa1e['rules']['reduce'](function(_0x252bac,_0x43fca2){return-(0x10e1+-0xd*-0x74+-0x16c4)===_0x43fca2['punySuffix']&&(_0x43fca2['punySuffix']=_0x10f425['toASCII'](_0x43fca2['suffix'])),_0x41fa1e['endsWith'](_0xda2828,'.'+_0x43fca2['punySuffix'])||_0xda2828===_0x43fca2['punySuffix']?_0x43fca2:_0x252bac;},null);},_0x2f63e7['errorCodes']={'DOMAIN_TOO_SHORT':'Domain\x20nam'+'e\x20too\x20shor'+'t.','DOMAIN_TOO_LONG':'Domain\x20nam'+'e\x20too\x20long'+'.\x20It\x20shoul'+'d\x20be\x20no\x20mo'+'re\x20than\x2025'+'5\x20chars.','LABEL_STARTS_WITH_DASH':'Domain\x20nam'+'e\x20label\x20ca'+'n\x20not\x20star'+'t\x20with\x20a\x20d'+'ash.','LABEL_ENDS_WITH_DASH':'Domain\x20nam'+'e\x20label\x20ca'+'n\x20not\x20end\x20'+'with\x20a\x20das'+'h.','LABEL_TOO_LONG':'Domain\x20nam'+'e\x20label\x20sh'+'ould\x20be\x20at'+'\x20most\x2063\x20c'+'hars\x20long.','LABEL_TOO_SHORT':'Domain\x20nam'+'e\x20label\x20sh'+'ould\x20be\x20at'+'\x20least\x201\x20c'+'haracter\x20l'+'ong.','LABEL_INVALID_CHARS':'Domain\x20nam'+'e\x20label\x20ca'+'n\x20only\x20con'+'tain\x20alpha'+'numeric\x20ch'+'aracters\x20o'+'r\x20dashes.'},_0x41fa1e['validate']=function(_0xbb51b1){var _0x1dc8ca=_0x10f425['toASCII'](_0xbb51b1);if(_0x1dc8ca['length']<0x11*-0x103+0x220c+-0x10d8)return'DOMAIN_TOO'+'_SHORT';if(_0x1dc8ca['length']>-0xcf8+0xf6d+0xb*-0x22)return'DOMAIN_TOO'+'_LONG';for(var _0x424c94,_0xc2e9c5=_0x1dc8ca['split']('.'),_0xd3c0f8=-0x24*0x6b+0xa2d*0x3+-0x3*0x529;_0xd3c0f8<_0xc2e9c5['length'];++_0xd3c0f8){if(!(_0x424c94=_0xc2e9c5[_0xd3c0f8])['length'])return'LABEL_TOO_'+'SHORT';if(_0x424c94['length']>-0x2*-0xbb9+0x19*0x113+-0x2b*0x12a)return'LABEL_TOO_'+'LONG';if('-'===_0x424c94['charAt'](0x213+0x112+-0x325))return'LABEL_STAR'+'TS_WITH_DA'+'SH';if('-'===_0x424c94['charAt'](_0x424c94['length']-(-0x68*-0x2f+0xa2a+-0x1d41*0x1)))return'LABEL_ENDS'+'_WITH_DASH';if(!/^[a-z0-9\-]+$/['test'](_0x424c94))return'LABEL_INVA'+'LID_CHARS';}},_0x2f63e7['parse']=function(_0x4a6d4e){if('string'!=typeof _0x4a6d4e)throw new TypeError('Domain\x20nam'+'e\x20must\x20be\x20'+'a\x20string.');var _0x515292=_0x4a6d4e['slice'](-0xc76+-0x4*0x57b+0x9*0x3d2)['toLowerCas'+'e']();'.'===_0x515292['charAt'](_0x515292['length']-(0x6*0x397+-0x472+0xaf*-0x19))&&(_0x515292=_0x515292['slice'](0x2*0x1d+0x13b+-0x175,_0x515292['length']-(-0x2f*-0x47+0x3*-0x26+0x432*-0x3)));var _0x4d2014=_0x41fa1e['validate'](_0x515292);if(_0x4d2014)return{'input':_0x4a6d4e,'error':{'message':_0x2f63e7['errorCodes'][_0x4d2014],'code':_0x4d2014}};var _0x571d2d={'input':_0x4a6d4e,'tld':null,'sld':null,'domain':null,'subdomain':null,'listed':!(-0x9bd+0x1*0x303+-0x6bb*-0x1)},_0x5e6f74=_0x515292['split']('.');if('local'===_0x5e6f74[_0x5e6f74['length']-(0x1253+-0x239f*-0x1+0x35f1*-0x1)])return _0x571d2d;var _0x216a00=function(){return/xn--/['test'](_0x515292)?(_0x571d2d['domain']&&(_0x571d2d['domain']=_0x10f425['toASCII'](_0x571d2d['domain'])),_0x571d2d['subdomain']&&(_0x571d2d['subdomain']=_0x10f425['toASCII'](_0x571d2d['subdomain'])),_0x571d2d):_0x571d2d;},_0x5a7534=_0x41fa1e['findRule'](_0x515292);if(!_0x5a7534)return _0x5e6f74['length']<-0xfe1+0x1699+0x35b*-0x2?_0x571d2d:(_0x571d2d['tld']=_0x5e6f74['pop'](),_0x571d2d['sld']=_0x5e6f74['pop'](),_0x571d2d['domain']=[_0x571d2d['sld'],_0x571d2d['tld']]['join']('.'),_0x5e6f74['length']&&(_0x571d2d['subdomain']=_0x5e6f74['pop']()),_0x216a00());_0x571d2d['listed']=!(-0x2460+0x116e+0x19*0xc2);var _0x2a191c=_0x5a7534['suffix']['split']('.'),_0x33ef04=_0x5e6f74['slice'](0x938*-0x4+-0x1355+0x3835,_0x5e6f74['length']-_0x2a191c['length']);return _0x5a7534['exception']&&_0x33ef04['push'](_0x2a191c['shift']()),_0x571d2d['tld']=_0x2a191c['join']('.'),_0x33ef04['length']?(_0x5a7534['wildcard']&&(_0x2a191c['unshift'](_0x33ef04['pop']()),_0x571d2d['tld']=_0x2a191c['join']('.')),_0x33ef04['length']?(_0x571d2d['sld']=_0x33ef04['pop'](),_0x571d2d['domain']=[_0x571d2d['sld'],_0x571d2d['tld']]['join']('.'),_0x33ef04['length']&&(_0x571d2d['subdomain']=_0x33ef04['join']('.')),_0x216a00()):_0x216a00()):_0x216a00();},_0x2f63e7['get']=function(_0x2cd6a7){return _0x2cd6a7&&_0x2f63e7['parse'](_0x2cd6a7)['domain']||null;},_0x2f63e7['isValid']=function(_0x1a4a9f){var _0x3247cf=_0x2f63e7['parse'](_0x1a4a9f);return Boolean(_0x3247cf['domain']&&_0x3247cf['listed']);};},0x20bb:(_0x54f9f1,_0xc2a5e0,_0x3ef828)=>{'use strict';_0x3ef828['r'](_0xc2a5e0),_0x3ef828['d'](_0xc2a5e0,{'decode':()=>_0x2b036,'default':()=>_0x222164,'encode':()=>_0x4fc00b,'toASCII':()=>_0x3dce36,'toUnicode':()=>_0x51cd9e,'ucs2decode':()=>_0x1b8e65,'ucs2encode':()=>_0x11d58d});const _0xc5e4d5=0x70838d8*-0x2+-0x1*-0x6e142e55+0xa*0x332d389,_0x38c154=-0x2378+0x761+0x1c3b,_0x537c42=/^xn--/,_0x9475cb=/[^\0-\x7E]/,_0x106425=/[\x2E\u3002\uFF0E\uFF61]/g,_0x1cd6a1={'overflow':'Overflow:\x20'+'input\x20need'+'s\x20wider\x20in'+'tegers\x20to\x20'+'process','not-basic':'Illegal\x20in'+'put\x20>=\x200x8'+'0\x20(not\x20a\x20b'+'asic\x20code\x20'+'point)','invalid-input':'Invalid\x20in'+'put'},_0x2f762f=Math['floor'],_0x5cf674=String['fromCharCo'+'de'];function _0xdba18b(_0x2f79b6){throw new RangeError(_0x1cd6a1[_0x2f79b6]);}function _0x186edb(_0x53b742,_0x589558){const _0x202448=_0x53b742['split']('@');let _0x5b3d8c='';_0x202448['length']>0x3b7+-0x24c0+-0x1085*-0x2&&(_0x5b3d8c=_0x202448[0x2547+0x1be*0xd+-0x3bed]+'@',_0x53b742=_0x202448[0x43d+-0x1884+0x1448]);const _0xe0a9c2=function(_0x39e987,_0x54d1dc){const _0x1edcf5=[];let _0x4ec27a=_0x39e987['length'];for(;_0x4ec27a--;)_0x1edcf5[_0x4ec27a]=_0x54d1dc(_0x39e987[_0x4ec27a]);return _0x1edcf5;}((_0x53b742=_0x53b742['replace'](_0x106425,'.'))['split']('.'),_0x589558)['join']('.');return _0x5b3d8c+_0xe0a9c2;}function _0x1b8e65(_0x5371d4){const _0x148965=[];let _0x4f099a=0x75e*0x1+-0x17a6+-0x1048*-0x1;const _0x3a7071=_0x5371d4['length'];for(;_0x4f099a<_0x3a7071;){const _0xa54bc1=_0x5371d4['charCodeAt'](_0x4f099a++);if(_0xa54bc1>=0x1802+0xf8e9+0x9*-0x653&&_0xa54bc1<=0x13*0xeb0+-0x3*-0x4d9b+0x1*-0x123e2&&_0x4f099a<_0x3a7071){const _0x2e93c2=_0x5371d4['charCodeAt'](_0x4f099a++);0x15ed0+-0x15414+0x68a2*0x2==(0x35f*-0x5a+-0x4*0x4527+0x34002&_0x2e93c2)?_0x148965['push'](((0x1b58+0x23c2+0x3b1b*-0x1&_0xa54bc1)<<0x67c+0x1503+-0x1b75)+(-0x1*0xb4b+0x1537*0x1+0x5ed*-0x1&_0x2e93c2)+(-0x8e18+-0x17d35+0x30b4d)):(_0x148965['push'](_0xa54bc1),_0x4f099a--);}else _0x148965['push'](_0xa54bc1);}return _0x148965;}const _0x11d58d=_0x56f239=>String['fromCodePo'+'int'](..._0x56f239),_0x1aa378=function(_0x304867,_0x492027){return _0x304867+(0xfce+-0x955*-0x2+-0x2262)+(-0x437*0x6+0x281*-0x7+-0x2b1c*-0x1)*(_0x304867<-0xc8e*-0x2+0x5*-0xf1+-0x144d)-((-0x1827+-0x560+0x1d87*0x1!=_0x492027)<<0x4b*0x82+0x11b3+-0xa6*0x56);},_0x1bd64a=function(_0x2476f8,_0x2301b8,_0x1be11e){let _0x7a7a21=-0x41*0x5+-0x18aa+0x19ef;for(_0x2476f8=_0x1be11e?_0x2f762f(_0x2476f8/(-0x345+0x11ed+-0xbec)):_0x2476f8>>0xc*0x247+-0x77e+-0x13d5,_0x2476f8+=_0x2f762f(_0x2476f8/_0x2301b8);_0x2476f8>0x1e76*-0x1+0x10fc+0xf41;_0x7a7a21+=_0x38c154)_0x2476f8=_0x2f762f(_0x2476f8/(0x1ac7+0x225e+0x39*-0x112));return _0x2f762f(_0x7a7a21+(0x2c3*-0x4+-0xba2*0x3+0x2e16)*_0x2476f8/(_0x2476f8+(0x234a+-0x1*-0x234+0x778*-0x5)));},_0x2b036=function(_0x367a3d){const _0x5e2344=[],_0x5a0f6d=_0x367a3d['length'];let _0x1789dc=0x1c10+0x1b7*-0x11+0x117*0x1,_0x21a260=-0x3c7*0x1+-0x11f*0x22+-0x1*-0x2a65,_0x28a052=0x94a*0x2+0x13d4+-0x2620,_0x15ece8=_0x367a3d['lastIndexO'+'f']('-');_0x15ece8<0x1e8*-0xb+-0x20*-0x3b+-0x3c*-0x3a&&(_0x15ece8=-0x1054+-0x84f+0x18a3);for(let _0x3fd83c=0xce7+0x47*-0x32+0xf7;_0x3fd83c<_0x15ece8;++_0x3fd83c)_0x367a3d['charCodeAt'](_0x3fd83c)>=-0x11e1+0x13c8+0x1*-0x167&&_0xdba18b('not-basic'),_0x5e2344['push'](_0x367a3d['charCodeAt'](_0x3fd83c));for(let _0xfaf68a=_0x15ece8>-0x4*0x2d2+-0xb2d+-0x1675*-0x1?_0x15ece8+(0x2*0x3a9+0xb95+-0x2*0x973):-0x2578+-0x321+0x2899;_0xfaf68a<_0x5a0f6d;){let _0x3d4cd5=_0x1789dc;for(let _0x347617=0x8e4*0x1+0x4*0x965+0x3d*-0xc3,_0x38e45e=_0x38c154;;_0x38e45e+=_0x38c154){_0xfaf68a>=_0x5a0f6d&&_0xdba18b('invalid-in'+'put');const _0x5d3861=(_0x7d593=_0x367a3d['charCodeAt'](_0xfaf68a++))-(0xd4*-0xe+0x26c3*-0x1+0x13*0x2a9)<0xd43+-0x1617*-0x1+-0x8d4*0x4?_0x7d593-(0x2263*0x1+-0x691+-0xa*0x2c6):_0x7d593-(0x1911*0x1+-0x89*-0x1d+0x23*-0x127)<0x78b*-0x3+-0x4*0x593+0x2d07?_0x7d593-(0x1b23*0x1+0x37d+-0x1e5f):_0x7d593-(-0x1bab+-0x1ca1+-0x527*-0xb)<0xd3c+0x828+-0x154a?_0x7d593-(0x14cb+-0x20ad+0xc43*0x1):_0x38c154;(_0x5d3861>=_0x38c154||_0x5d3861>_0x2f762f((_0xc5e4d5-_0x1789dc)/_0x347617))&&_0xdba18b('overflow'),_0x1789dc+=_0x5d3861*_0x347617;const _0x119d6e=_0x38e45e<=_0x28a052?0xe4d*0x1+-0xf8e+-0x2*-0xa1:_0x38e45e>=_0x28a052+(0x607*0x1+0xab8+0x10a5*-0x1)?-0x165d+0x116f*-0x2+0x1*0x3955:_0x38e45e-_0x28a052;if(_0x5d3861<_0x119d6e)break;const _0x24f05a=_0x38c154-_0x119d6e;_0x347617>_0x2f762f(_0xc5e4d5/_0x24f05a)&&_0xdba18b('overflow'),_0x347617*=_0x24f05a;}const _0x20a2d7=_0x5e2344['length']+(-0xb48+-0x2*0x1337+0x31b7);_0x28a052=_0x1bd64a(_0x1789dc-_0x3d4cd5,_0x20a2d7,-0x7a*-0x13+-0xf2*-0x17+-0x1ecc==_0x3d4cd5),_0x2f762f(_0x1789dc/_0x20a2d7)>_0xc5e4d5-_0x21a260&&_0xdba18b('overflow'),_0x21a260+=_0x2f762f(_0x1789dc/_0x20a2d7),_0x1789dc%=_0x20a2d7,_0x5e2344['splice'](_0x1789dc++,0xbaf*-0x3+0x136b*-0x2+0x49e3,_0x21a260);}var _0x7d593;return String['fromCodePo'+'int'](..._0x5e2344);},_0x4fc00b=function(_0x81a1b5){const _0x2e52ac=[];let _0x52f0b5=(_0x81a1b5=_0x1b8e65(_0x81a1b5))['length'],_0x16bebc=-0x24b5*0x1+0xbaf*0x3+0x228,_0x282298=-0x172f+0x4e1*-0x1+0x1c10,_0x1ac6eb=0x227e*-0x1+-0x8ec+-0x22*-0x149;for(const _0x1fcf01 of _0x81a1b5)_0x1fcf01<0x1f2*0xc+-0x4*-0x11c+-0x1b48&&_0x2e52ac['push'](_0x5cf674(_0x1fcf01));let _0x25ca9c=_0x2e52ac['length'],_0xdd65c5=_0x25ca9c;for(_0x25ca9c&&_0x2e52ac['push']('-');_0xdd65c5<_0x52f0b5;){let _0x250b8d=_0xc5e4d5;for(const _0x444a62 of _0x81a1b5)_0x444a62>=_0x16bebc&&_0x444a62<_0x250b8d&&(_0x250b8d=_0x444a62);const _0x3a7bcc=_0xdd65c5+(-0x1b9a+0x1*-0x1529+-0x30c4*-0x1);_0x250b8d-_0x16bebc>_0x2f762f((_0xc5e4d5-_0x282298)/_0x3a7bcc)&&_0xdba18b('overflow'),_0x282298+=(_0x250b8d-_0x16bebc)*_0x3a7bcc,_0x16bebc=_0x250b8d;for(const _0x5992e1 of _0x81a1b5)if(_0x5992e1<_0x16bebc&&++_0x282298>_0xc5e4d5&&_0xdba18b('overflow'),_0x5992e1==_0x16bebc){let _0x18ca50=_0x282298;for(let _0x283cad=_0x38c154;;_0x283cad+=_0x38c154){const _0x363ba2=_0x283cad<=_0x1ac6eb?-0x1*-0xfd9+0x6da+-0xa6*0x23:_0x283cad>=_0x1ac6eb+(-0x166*0x13+0xab5+-0xff7*-0x1)?-0x1*0x103f+-0xb26+-0x1b7f*-0x1:_0x283cad-_0x1ac6eb;if(_0x18ca50<_0x363ba2)break;const _0x2b2d4d=_0x18ca50-_0x363ba2,_0x4438d7=_0x38c154-_0x363ba2;_0x2e52ac['push'](_0x5cf674(_0x1aa378(_0x363ba2+_0x2b2d4d%_0x4438d7,0x16a2+0x15c*-0x2+-0x13ea))),_0x18ca50=_0x2f762f(_0x2b2d4d/_0x4438d7);}_0x2e52ac['push'](_0x5cf674(_0x1aa378(_0x18ca50,0x2*-0x6c5+-0x2*0x1124+0x2fd2*0x1))),_0x1ac6eb=_0x1bd64a(_0x282298,_0x3a7bcc,_0xdd65c5==_0x25ca9c),_0x282298=0xd1f*0x2+0x5*0x2e9+-0x28cb,++_0xdd65c5;}++_0x282298,++_0x16bebc;}return _0x2e52ac['join']('');},_0x51cd9e=function(_0x2c003c){return _0x186edb(_0x2c003c,function(_0x5dd64d){return _0x537c42['test'](_0x5dd64d)?_0x2b036(_0x5dd64d['slice'](-0x1dde+-0x1193+0x2f75*0x1)['toLowerCas'+'e']()):_0x5dd64d;});},_0x3dce36=function(_0x13c69b){return _0x186edb(_0x13c69b,function(_0x1a0cde){return _0x9475cb['test'](_0x1a0cde)?'xn--'+_0x4fc00b(_0x1a0cde):_0x1a0cde;});},_0x222164={'version':'2.1.0','ucs2':{'decode':_0x1b8e65,'encode':_0x11d58d},'decode':_0x2b036,'encode':_0x4fc00b,'toASCII':_0x3dce36,'toUnicode':_0x51cd9e};},0xf98:(_0x330784,_0x3a2173)=>{'use strict';var _0x209b10=Object['prototype']['hasOwnProp'+'erty'];function _0xfc2d01(_0x56286c){try{return decodeURIComponent(_0x56286c['replace'](/\+/g,'\x20'));}catch(_0x5f467b){return null;}}function _0x451cff(_0x62e074){try{return encodeURIComponent(_0x62e074);}catch(_0x59cfdb){return null;}}_0x3a2173['stringify']=function(_0x164756,_0x4eba6){_0x4eba6=_0x4eba6||'';var _0x2e6009,_0xedfda0,_0x260583=[];for(_0xedfda0 in('string'!=typeof _0x4eba6&&(_0x4eba6='?'),_0x164756))if(_0x209b10['call'](_0x164756,_0xedfda0)){if((_0x2e6009=_0x164756[_0xedfda0])||null!=_0x2e6009&&!isNaN(_0x2e6009)||(_0x2e6009=''),_0xedfda0=_0x451cff(_0xedfda0),_0x2e6009=_0x451cff(_0x2e6009),null===_0xedfda0||null===_0x2e6009)continue;_0x260583['push'](_0xedfda0+'='+_0x2e6009);}return _0x260583['length']?_0x4eba6+_0x260583['join']('&'):'';},_0x3a2173['parse']=function(_0x5ce3d3){for(var _0x183f75,_0x2393c8=/([^=?#&]+)=?([^&]*)/g,_0x4432bd={};_0x183f75=_0x2393c8['exec'](_0x5ce3d3);){var _0x31319b=_0xfc2d01(_0x183f75[-0xc0e+0x22e*-0x8+0x347*0x9]),_0xb45c58=_0xfc2d01(_0x183f75[0x177a+-0x12f*-0x19+0x121*-0x2f]);null===_0x31319b||null===_0xb45c58||_0x31319b in _0x4432bd||(_0x4432bd[_0x31319b]=_0xb45c58);}return _0x4432bd;};},0x80f:_0x150b6e=>{'use strict';_0x150b6e['exports']=function(_0x1f8f72,_0x3083f8){if(_0x3083f8=_0x3083f8['split'](':')[0x1*0x18a7+-0xbed*-0x3+0x2*-0x1e37],!(_0x1f8f72=+_0x1f8f72))return!(0xc*0x283+0x4f*-0x57+-0x34a);switch(_0x3083f8){case'http':case'ws':return-0x97d+0x23*0xeb+0x4*-0x595!==_0x1f8f72;case'https':case'wss':return 0x74d+0x405+-0x997!==_0x1f8f72;case'ftp':return 0x382*0x4+-0x23*-0xfb+-0x3044!==_0x1f8f72;case'gopher':return 0x3b1+-0x1d08+0x1*0x199d!==_0x1f8f72;case'file':return!(-0x1*-0xfae+-0x124*0x1f+-0x13af*-0x1);}return-0x174f+0x12ea+0x19*0x2d!==_0x1f8f72;};},0xb2d:(_0x25c140,_0x2f174d,_0x1d77d8)=>{var _0x14d7ba=_0x1d77d8(-0xb66+0x1e71+0x2*-0x92b),_0x40fd24=_0x14d7ba['Buffer'];function _0x128e6b(_0x4eba66,_0x53c0dd){for(var _0x1b09f9 in _0x4eba66)_0x53c0dd[_0x1b09f9]=_0x4eba66[_0x1b09f9];}function _0xc3deb6(_0x9d3107,_0x374686,_0x466c3b){return _0x40fd24(_0x9d3107,_0x374686,_0x466c3b);}_0x40fd24['from']&&_0x40fd24['alloc']&&_0x40fd24['allocUnsaf'+'e']&&_0x40fd24['allocUnsaf'+'eSlow']?_0x25c140['exports']=_0x14d7ba:(_0x128e6b(_0x14d7ba,_0x2f174d),_0x2f174d['Buffer']=_0xc3deb6),_0xc3deb6['prototype']=Object['create'](_0x40fd24['prototype']),_0x128e6b(_0x40fd24,_0xc3deb6),_0xc3deb6['from']=function(_0x3a178c,_0x656db7,_0x3264c4){if('number'==typeof _0x3a178c)throw new TypeError('Argument\x20m'+'ust\x20not\x20be'+'\x20a\x20number');return _0x40fd24(_0x3a178c,_0x656db7,_0x3264c4);},_0xc3deb6['alloc']=function(_0x20cc94,_0x36887c,_0x3e86d6){if('number'!=typeof _0x20cc94)throw new TypeError('Argument\x20m'+'ust\x20be\x20a\x20n'+'umber');var _0x5de519=_0x40fd24(_0x20cc94);return void(-0x18c2+0x85f*0x3+-0x5b)!==_0x36887c?'string'==typeof _0x3e86d6?_0x5de519['fill'](_0x36887c,_0x3e86d6):_0x5de519['fill'](_0x36887c):_0x5de519['fill'](0x23be+-0x59b+-0x1*0x1e23),_0x5de519;},_0xc3deb6['allocUnsaf'+'e']=function(_0x34e381){if('number'!=typeof _0x34e381)throw new TypeError('Argument\x20m'+'ust\x20be\x20a\x20n'+'umber');return _0x40fd24(_0x34e381);},_0xc3deb6['allocUnsaf'+'eSlow']=function(_0x550ebb){if('number'!=typeof _0x550ebb)throw new TypeError('Argument\x20m'+'ust\x20be\x20a\x20n'+'umber');return _0x14d7ba['SlowBuffer'](_0x550ebb);};},0x25d3:_0x53289f=>{'use strict';var _0x2e4887=function(_0xccfd97,_0x2d9c86){_0x2d9c86=_0x2d9c86||(_0xccfd97 instanceof Buffer?0x829+0xe19+0x239*-0xa:0xa*0x188+0x5cf*0x1+-0x151e);var _0x27cd4e,_0x2e7ae4,_0x66c0aa,_0x14fc82='';for(_0x2e7ae4=-0x1*-0x1dcb+-0x23*-0xb3+-0x97*0x5c,_0x66c0aa=_0xccfd97['length'];_0x2e7ae4<_0x66c0aa;_0x2e7ae4++){for(_0x27cd4e=this['_get'](_0xccfd97,_0x2e7ae4)['toString'](0xcb6+-0x25a+-0xa5a*0x1);_0x27cd4e['length']<_0x2d9c86;)_0x27cd4e='0'+_0x27cd4e;_0x14fc82+=_0x27cd4e;}_0x14fc82=_0x14fc82['split']('')['map'](function(_0x5314b7){return parseInt(_0x5314b7,-0x2*-0x477+0x2166+-0x2a52);}),this['_bases']={0x2:_0x14fc82};};_0x2e4887['prototype']['generate']=function(_0x487a48,_0x297d8f,_0x257aaf){_0x297d8f=_0x297d8f||-0xc6f+0x2d1+0x9a0;var _0x44c990,_0x218425=_0x487a48,_0x111916=Math['ceil'](Math['log'](_0x487a48)/Math['log'](_0x297d8f)),_0x3594b7=Math['pow'](_0x297d8f,_0x111916)-_0x487a48;_0x4ef485:for(;_0x218425>=_0x487a48;){if(!(_0x44c990=this['_shift'](_0x297d8f,_0x111916)))return _0x257aaf?_0x487a48:null;if((_0x218425=this['_evaluate'](_0x44c990,_0x297d8f))>=_0x487a48){if(-0x2000+-0x3*-0xa1d+-0x47*-0x6===_0x3594b7)continue _0x4ef485;this['_push'](_0x3594b7,_0x218425-_0x487a48),_0x218425=this['generate'](_0x487a48,_0x3594b7,!(0x2f1*-0xb+0x26e4+0x7*-0xef));}}return _0x218425;},_0x2e4887['prototype']['_get']=function(_0xc96d66,_0x15911c){return _0xc96d66['readUInt8']?_0xc96d66['readUInt8'](_0x15911c):_0xc96d66[_0x15911c];},_0x2e4887['prototype']['_evaluate']=function(_0x2cb18b,_0xc2c76){for(var _0x1b4f6d=0x10dd+0x1*0x181d+-0x28fa,_0xed346c=_0x2cb18b['length'];_0xed346c--;)_0x1b4f6d+=_0x2cb18b[_0xed346c]*Math['pow'](_0xc2c76,_0x2cb18b['length']-(_0xed346c+(0x1d27+-0x31e+-0x1a08)));return _0x1b4f6d;},_0x2e4887['prototype']['_push']=function(_0x1bcede,_0x43d742){this['_bases'][_0x1bcede]=this['_bases'][_0x1bcede]||[],this['_bases'][_0x1bcede]['push'](_0x43d742);},_0x2e4887['prototype']['_shift']=function(_0x405e84,_0x2ac41d){var _0x43b64c=this['_bases'][_0x405e84];return!_0x43b64c||_0x43b64c['length']<_0x2ac41d?null:_0x43b64c['splice'](-0x1e3*-0x4+0x2529+-0x15*0x221,_0x2ac41d);},_0x53289f['exports']=_0x2e4887;},0xb6b:(_0x427acf,_0x1408b5,_0x5e55f6)=>{'use strict';const _0x443d99=_0x5e55f6(-0x4c3*-0x7+-0x2f3b+-0x207*-0x17),_0x131858=_0x5e55f6(0xa*0x185+-0x1f22+0x1478),_0x3be548=_0x5e55f6(-0xa26+-0x128f*-0x1+-0x3d0),_0x4152f4=_0x5e55f6(0x1*-0x3eb+-0xd69+0x2438)['i'],_0x582a9e=_0x5e55f6(0x2a9*-0x2+-0x105e+0x2033)['n'],_0x219e7d=_0x5e55f6(-0x117*0x5+0x1*0x1d87+-0x34b)['z'],_0xcf58cf=_0x5e55f6(0x1*0x67a+0x2255+-0x1d29),_0x1963a9=_0x5e55f6(-0x261a*0x1+0x1*0x1d4b+0x14e4),{fromCallback:_0x127e4e}=_0x5e55f6(0xa35+-0x24ad+-0x1f4c*-0x1),{getCustomInspectSymbol:_0x84447e}=_0x5e55f6(-0x1003+0x24bd+0x1207),_0x58ada6=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/,_0x59d130=/[\x00-\x1F]/,_0x493eb4=['\x0a','\x0d','\x00'],_0x3ba3e9=/[\x20-\x3A\x3C-\x7E]+/,_0x57feb4=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/,_0xa19df1={'jan':0x0,'feb':0x1,'mar':0x2,'apr':0x3,'may':0x4,'jun':0x5,'jul':0x6,'aug':0x7,'sep':0x8,'oct':0x9,'nov':0xa,'dec':0xb},_0x2d4060=-0x24c7c8c9ff7+0xabec9eb528+0x3948fede6e7,_0x1a447e='Invalid\x20sa'+'meSiteCont'+'ext\x20option'+'\x20for\x20getCo'+'okies();\x20e'+'xpected\x20on'+'e\x20of\x20\x22stri'+'ct\x22,\x20\x22lax\x22'+',\x20or\x20\x22none'+'\x22';function _0xce569d(_0x3a07b0){_0xcf58cf['validate'](_0xcf58cf['isNonEmpty'+'String'](_0x3a07b0),_0x3a07b0);const _0x904409=String(_0x3a07b0)['toLowerCas'+'e']();return'none'===_0x904409||'lax'===_0x904409||'strict'===_0x904409?_0x904409:null;}const _0x5ccae7=Object['freeze']({'SILENT':'silent','STRICT':'strict','DISABLED':'unsafe-dis'+'abled'}),_0x54c08c=/(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-f\d]{1,4}:){7}(?:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,2}|:)|(?:[a-f\d]{1,4}:){4}(?:(?::[a-f\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,3}|:)|(?:[a-f\d]{1,4}:){3}(?:(?::[a-f\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,4}|:)|(?:[a-f\d]{1,4}:){2}(?:(?::[a-f\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,5}|:)|(?:[a-f\d]{1,4}:){1}(?:(?::[a-f\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,7}|:)))$)/,_0x335c74=('\x0a\x5c[?(?:\x0a(?'+':[a-fA-F\x5cd'+']{1,4}:){7'+'}(?:[a-fA-'+'F\x5cd]{1,4}|'+':)|\x0a(?:[a-'+'fA-F\x5cd]{1,'+'4}:){6}(?:'+'(?:25[0-5]'+'|2[0-4]\x5cd|'+'1\x5cd\x5cd|[1-9'+']\x5cd|\x5cd)(?:'+'\x5c.(?:25[0-'+'5]|2[0-4]\x5c'+'d|1\x5cd\x5cd|[1'+'-9]\x5cd|\x5cd))'+'{3}|:[a-fA'+'-F\x5cd]{1,4}'+'|:)|\x0a(?:[a'+'-fA-F\x5cd]{1'+',4}:){5}(?'+'::(?:25[0-'+'5]|2[0-4]\x5c'+'d|1\x5cd\x5cd|[1'+'-9]\x5cd|\x5cd)('+'?:\x5c.(?:25['+'0-5]|2[0-4'+']\x5cd|1\x5cd\x5cd|'+'[1-9]\x5cd|\x5cd'+')){3}|(?::'+'[a-fA-F\x5cd]'+'{1,4}){1,2'+'}|:)|\x0a(?:['+'a-fA-F\x5cd]{'+'1,4}:){4}('+'?:(?::[a-f'+'A-F\x5cd]{1,4'+'}){0,1}:(?'+':25[0-5]|2'+'[0-4]\x5cd|1\x5c'+'d\x5cd|[1-9]\x5c'+'d|\x5cd)(?:\x5c.'+'(?:25[0-5]'+'|2[0-4]\x5cd|'+'1\x5cd\x5cd|[1-9'+']\x5cd|\x5cd)){3'+'}|(?::[a-f'+'A-F\x5cd]{1,4'+'}){1,3}|:)'+'|\x0a(?:[a-fA'+'-F\x5cd]{1,4}'+':){3}(?:(?'+'::[a-fA-F\x5c'+'d]{1,4}){0'+',2}:(?:25['+'0-5]|2[0-4'+']\x5cd|1\x5cd\x5cd|'+'[1-9]\x5cd|\x5cd'+')(?:\x5c.(?:2'+'5[0-5]|2[0'+'-4]\x5cd|1\x5cd\x5c'+'d|[1-9]\x5cd|'+'\x5cd)){3}|(?'+'::[a-fA-F\x5c'+'d]{1,4}){1'+',4}|:)|\x0a(?'+':[a-fA-F\x5cd'+']{1,4}:){2'+'}(?:(?::[a'+'-fA-F\x5cd]{1'+',4}){0,3}:'+'(?:25[0-5]'+'|2[0-4]\x5cd|'+'1\x5cd\x5cd|[1-9'+']\x5cd|\x5cd)(?:'+'\x5c.(?:25[0-'+'5]|2[0-4]\x5c'+'d|1\x5cd\x5cd|[1'+'-9]\x5cd|\x5cd))'+'{3}|(?::[a'+'-fA-F\x5cd]{1'+',4}){1,5}|'+':)|\x0a(?:[a-'+'fA-F\x5cd]{1,'+'4}:){1}(?:'+'(?::[a-fA-'+'F\x5cd]{1,4})'+'{0,4}:(?:2'+'5[0-5]|2[0'+'-4]\x5cd|1\x5cd\x5c'+'d|[1-9]\x5cd|'+'\x5cd)(?:\x5c.(?'+':25[0-5]|2'+'[0-4]\x5cd|1\x5c'+'d\x5cd|[1-9]\x5c'+'d|\x5cd)){3}|'+'(?::[a-fA-'+'F\x5cd]{1,4})'+'{1,6}|:)|\x0a'+'(?::(?:(?:'+(':[a-fA-F\x5cd'+']{1,4}){0,'+'5}:(?:25[0'+'-5]|2[0-4]'+'\x5cd|1\x5cd\x5cd|['+'1-9]\x5cd|\x5cd)'+'(?:\x5c.(?:25'+'[0-5]|2[0-'+'4]\x5cd|1\x5cd\x5cd'+'|[1-9]\x5cd|\x5c'+'d)){3}|(?:'+':[a-fA-F\x5cd'+']{1,4}){1,'+'7}|:))\x0a)(?'+':%[0-9a-zA'+'-Z]{1,})?\x5c'+']?\x0a'))['replace'](/\s*\/\/.*$/gm,'')['replace'](/\n/g,'')['trim'](),_0x5c650b=new RegExp('^'+_0x335c74+'$');function _0xa2363f(_0x1b5198,_0x4951ca,_0x90896b,_0x3103a4){let _0x39ff1c=0x12a0+0x1a85+-0x2d25;for(;_0x39ff1c<_0x1b5198['length'];){const _0x337b9f=_0x1b5198['charCodeAt'](_0x39ff1c);if(_0x337b9f<=-0x1176+0xec*0x17+-0x1*0x38f||_0x337b9f>=0xcfa+-0x23c7+0x9*0x28f)break;_0x39ff1c++;}return _0x39ff1c<_0x4951ca||_0x39ff1c>_0x90896b?null:_0x3103a4||_0x39ff1c==_0x1b5198['length']?parseInt(_0x1b5198['substr'](-0x140*-0x1+0x16bf+-0x17ff,_0x39ff1c),-0x3*-0x5d5+-0xe37*0x1+-0x33e):null;}function _0x17176e(_0x3dc5a9){const _0x5ba939=_0x3dc5a9['split'](':'),_0x78c30f=[-0x14ee+-0x121a+0x2708,-0xd83+0x12c9+-0x9*0x96,-0x65*-0x18+-0x15df+0xc67];if(0x3a9+0x2fc+-0x6a2!==_0x5ba939['length'])return null;for(let _0x2f01cc=0x5*0x33a+-0x1*-0x1fad+-0x1*0x2fcf;_0x2f01cc<0x183f+-0x1927*-0x1+-0x3163;_0x2f01cc++){const _0x5aaa61=0x8f4+-0x570+-0x382==_0x2f01cc,_0x290313=_0xa2363f(_0x5ba939[_0x2f01cc],0x1cc*0xa+-0xbdb+-0x61c,0x1*-0xe11+-0x7*-0x30a+-0x733,_0x5aaa61);if(null===_0x290313)return null;_0x78c30f[_0x2f01cc]=_0x290313;}return _0x78c30f;}function _0x3399a8(_0x231c56){_0x231c56=String(_0x231c56)['substr'](-0xd15+0x2*-0xca0+0x3*0xcc7,-0x26*0xc5+0x45e+0x17*0x115)['toLowerCas'+'e']();const _0x4f63f2=_0xa19df1[_0x231c56];return _0x4f63f2>=-0xfea+0x1*-0xf77+0x1f61?_0x4f63f2:null;}function _0x11cbc5(_0x334b35){if(!_0x334b35)return;const _0x4784da=_0x334b35['split'](_0x57feb4);if(!_0x4784da)return;let _0x424809=null,_0x15c7cc=null,_0x504ae3=null,_0x398177=null,_0x2c44bc=null,_0x198f03=null;for(let _0x33d983=0x101*-0x19+-0x9*0x305+0x3446;_0x33d983<_0x4784da['length'];_0x33d983++){const _0x56f642=_0x4784da[_0x33d983]['trim']();if(!_0x56f642['length'])continue;let _0xf66821;null===_0x504ae3&&(_0xf66821=_0x17176e(_0x56f642),_0xf66821)?(_0x424809=_0xf66821[0x85*-0x23+-0x30*0x31+0x1b5f],_0x15c7cc=_0xf66821[0x2*0x96a+-0x1*-0xce7+-0x1fba],_0x504ae3=_0xf66821[0x1*-0xb41+-0x1*0xd60+0x18a3]):null!==_0x398177||(_0xf66821=_0xa2363f(_0x56f642,0x12b*0x7+-0x80*-0x4+0x364*-0x3,-0x1142+-0x14de*-0x1+0x1*-0x39a,!(-0x1aad+0x105a*0x1+-0x3*-0x371)),null===_0xf66821)?null!==_0x2c44bc||(_0xf66821=_0x3399a8(_0x56f642),null===_0xf66821)?null===_0x198f03&&(_0xf66821=_0xa2363f(_0x56f642,-0x21d7+0x26fb+-0x522,-0x1061*0x1+0x7*0xa+0x101f,!(-0x29b*0x1+-0x8*0x14b+0xcf3)),null!==_0xf66821&&(_0x198f03=_0xf66821,_0x198f03>=0xd*0x91+-0x22f0+0x1*0x1bd9&&_0x198f03<=-0x8c*-0x9+0x2*-0x49b+-0xab*-0x7?_0x198f03+=0x2cd*0x6+0x10ac+-0x1a0e:_0x198f03>=-0x1a38+-0x9*-0x1c4+0x4*0x295&&_0x198f03<=-0x1b13+-0x76e+0x22c6&&(_0x198f03+=-0x13*-0x182+0x70*0x17+0xe*-0x235))):_0x2c44bc=_0xf66821:_0x398177=_0xf66821;}return null===_0x398177||null===_0x2c44bc||null===_0x198f03||null===_0x504ae3||_0x398177<-0x1cd*0x2+-0x1885+0x1c20||_0x398177>-0xed8+-0x2*-0xfbd+-0x1083||_0x198f03<-0x1*-0x207+0x2438+-0x38e*0x9||_0x424809>-0xa67+-0x177b+0xdf*0x27||_0x15c7cc>0x964+-0x21b9+-0x106*-0x18||_0x504ae3>-0x840+0xc*0x187+-0x1*0x9d9?void(0x665*-0x2+-0x24b5+0x317f):new Date(Date['UTC'](_0x198f03,_0x2c44bc,_0x398177,_0x424809,_0x15c7cc,_0x504ae3));}function _0x47e483(_0x5ce0db){return _0xcf58cf['validate'](_0xcf58cf['isDate'](_0x5ce0db),_0x5ce0db),_0x5ce0db['toUTCStrin'+'g']();}function _0x3b7401(_0x52e17f){return null==_0x52e17f?null:(_0x52e17f=_0x52e17f['trim']()['replace'](/^\./,''),_0x5c650b['test'](_0x52e17f)&&(_0x52e17f=_0x52e17f['replace']('[','')['replace'](']','')),_0x443d99&&/[^\u0001-\u007f]/['test'](_0x52e17f)&&(_0x52e17f=_0x443d99['toASCII'](_0x52e17f)),_0x52e17f['toLowerCas'+'e']());}function _0x56c5c8(_0x444b10,_0x321b2d,_0x2a606a){if(null==_0x444b10||null==_0x321b2d)return null;if(!(0x6*0x29c+0x1*0x2521+-0x34c8)!==_0x2a606a&&(_0x444b10=_0x3b7401(_0x444b10),_0x321b2d=_0x3b7401(_0x321b2d)),_0x444b10==_0x321b2d)return!(-0x1*-0xbd4+-0x2*-0xc0e+-0x23f0);const _0x3c1235=_0x444b10['lastIndexO'+'f'](_0x321b2d);return!(_0x3c1235<=-0x8*-0x4+0xb59+0xb*-0x10b||_0x444b10['length']!==_0x321b2d['length']+_0x3c1235||'.'!==_0x444b10['substr'](_0x3c1235-(0x2622*-0x1+0x1b5f+0xac4),0xfa+0x1*-0xa54+-0x1*-0x95b)||_0x54c08c['test'](_0x444b10));}function _0x1ecf2d(_0x82417c){if(!_0x82417c||'/'!==_0x82417c['substr'](0x21bc*0x1+0x3*-0x623+-0xf53*0x1,-0xafd+0xeb*0x14+-0x75e))return'/';if('/'===_0x82417c)return _0x82417c;const _0x53ae0c=_0x82417c['lastIndexO'+'f']('/');return 0x1*-0x2276+-0xa*-0x12d+0x16b4===_0x53ae0c?'/':_0x82417c['slice'](-0x1d02+-0x1*0x5e4+0x2*0x1173,_0x53ae0c);}function _0x208ef5(_0x35f5a2,_0x5ae1a4){if(_0x5ae1a4&&'object'==typeof _0x5ae1a4||(_0x5ae1a4={}),_0xcf58cf['isEmptyStr'+'ing'](_0x35f5a2)||!_0xcf58cf['isString'](_0x35f5a2))return null;const _0x3e1d29=(_0x35f5a2=_0x35f5a2['trim']())['indexOf'](';'),_0xbb1662=function(_0x24e078,_0x1cff40){_0x24e078=function(_0x562af3){if(_0xcf58cf['isEmptyStr'+'ing'](_0x562af3))return _0x562af3;for(let _0x5b38aa=0x60d*-0x6+0x208c+-0x4a*-0xd;_0x5b38aa<_0x493eb4['length'];_0x5b38aa++){const _0x45f14f=_0x562af3['indexOf'](_0x493eb4[_0x5b38aa]);-(0x18db+0xe3e+-0xd08*0x3)!==_0x45f14f&&(_0x562af3=_0x562af3['substr'](-0x15*0xb3+0x7b7*-0x4+-0x83*-0x59,_0x45f14f));}return _0x562af3;}(_0x24e078),_0xcf58cf['validate'](_0xcf58cf['isString'](_0x24e078),_0x24e078);let _0xb970af,_0x27820f,_0x42eb5b=_0x24e078['indexOf']('=');if(_0x1cff40)-0x25ca*0x1+-0x5e0*0x4+-0x1*-0x3d4a===_0x42eb5b&&(_0x42eb5b=(_0x24e078=_0x24e078['substr'](0x124d+0x1fd*0xe+-0x2e22))['indexOf']('='));else{if(_0x42eb5b<=-0x262d+0xa8+0x2585)return;}if(_0x42eb5b<=-0x9*0x288+-0x21*0x10a+0x3912?(_0xb970af='',_0x27820f=_0x24e078['trim']()):(_0xb970af=_0x24e078['substr'](0x269b+-0x17c0+-0xedb,_0x42eb5b)['trim'](),_0x27820f=_0x24e078['substr'](_0x42eb5b+(-0x1*-0x23f9+0xf9c+-0x3394))['trim']()),_0x59d130['test'](_0xb970af)||_0x59d130['test'](_0x27820f))return;const _0x515419=new _0x349899();return _0x515419['key']=_0xb970af,_0x515419['value']=_0x27820f,_0x515419;}(-(0x2c3+0x72b+-0x21*0x4d)===_0x3e1d29?_0x35f5a2:_0x35f5a2['substr'](0x1689+-0x1*0xee3+-0x7a6,_0x3e1d29),!!_0x5ae1a4['loose']);if(!_0xbb1662)return;if(-(-0x15ff+-0x2ea*0x5+0x2492)===_0x3e1d29)return _0xbb1662;const _0xf377da=_0x35f5a2['slice'](_0x3e1d29+(-0x1*-0x22e5+0x7d8+0x14*-0x223))['trim']();if(-0x1b14+0x7dc+0x1338===_0xf377da['length'])return _0xbb1662;const _0x8f78cd=_0xf377da['split'](';');for(;_0x8f78cd['length'];){const _0x2765e0=_0x8f78cd['shift']()['trim']();if(-0x9*-0x336+-0x16ac+-0x63a===_0x2765e0['length'])continue;const _0x5a0e2a=_0x2765e0['indexOf']('=');let _0x144ef5,_0x26e1c7;switch(-(0xa78*-0x3+-0x593*0x2+0x2a8f)===_0x5a0e2a?(_0x144ef5=_0x2765e0,_0x26e1c7=null):(_0x144ef5=_0x2765e0['substr'](0x1d4c*-0x1+0x2470+-0x392*0x2,_0x5a0e2a),_0x26e1c7=_0x2765e0['substr'](_0x5a0e2a+(0x1c55*0x1+-0x1914+-0x10*0x34))),_0x144ef5=_0x144ef5['trim']()['toLowerCas'+'e'](),_0x26e1c7&&(_0x26e1c7=_0x26e1c7['trim']()),_0x144ef5){case'expires':if(_0x26e1c7){const _0x5977bf=_0x11cbc5(_0x26e1c7);_0x5977bf&&(_0xbb1662['expires']=_0x5977bf);}break;case'max-age':if(_0x26e1c7&&/^-?[0-9]+$/['test'](_0x26e1c7)){const _0x50a617=parseInt(_0x26e1c7,-0x385+0xcf5+-0x966);_0xbb1662['setMaxAge'](_0x50a617);}break;case'domain':if(_0x26e1c7){const _0x3c8832=_0x26e1c7['trim']()['replace'](/^\./,'');_0x3c8832&&(_0xbb1662['domain']=_0x3c8832['toLowerCas'+'e']());}break;case'path':_0xbb1662['path']=_0x26e1c7&&'/'===_0x26e1c7[-0xd55*-0x1+0x1c9+-0x183*0xa]?_0x26e1c7:null;break;case'secure':_0xbb1662['secure']=!(0x203f+0xec*0xd+-0x2c3b);break;case'httponly':_0xbb1662['httpOnly']=!(-0x2555+-0x145a+0x39af);break;case'samesite':switch(_0x26e1c7?_0x26e1c7['toLowerCas'+'e']():''){case'strict':_0xbb1662['sameSite']='strict';break;case'lax':_0xbb1662['sameSite']='lax';break;case'none':_0xbb1662['sameSite']='none';break;default:_0xbb1662['sameSite']=void(0x1008+-0x1717+0x70f);}break;default:_0xbb1662['extensions']=_0xbb1662['extensions']||[],_0xbb1662['extensions']['push'](_0x2765e0);}}return _0xbb1662;}function _0x239979(_0x318811){let _0x44cdf4;try{_0x44cdf4=JSON['parse'](_0x318811);}catch(_0xb1424c){return _0xb1424c;}return _0x44cdf4;}function _0x452e00(_0x5d8257){if(!_0x5d8257||_0xcf58cf['isEmptyStr'+'ing'](_0x5d8257))return null;let _0x27a813;if('string'==typeof _0x5d8257){if(_0x27a813=_0x239979(_0x5d8257),_0x27a813 instanceof Error)return null;}else _0x27a813=_0x5d8257;const _0x21102e=new _0x349899();for(let _0x578592=0x11*0x15e+-0x15bb+0x1*-0x183;_0x578592<_0x349899['serializab'+'leProperti'+'es']['length'];_0x578592++){const _0x37ed58=_0x349899['serializab'+'leProperti'+'es'][_0x578592];void(-0x1*-0x262b+0x7*-0x2b6+-0x1331)!==_0x27a813[_0x37ed58]&&_0x27a813[_0x37ed58]!==_0x1736ef[_0x37ed58]&&('expires'===_0x37ed58||'creation'===_0x37ed58||'lastAccess'+'ed'===_0x37ed58?null===_0x27a813[_0x37ed58]?_0x21102e[_0x37ed58]=null:_0x21102e[_0x37ed58]='Infinity'==_0x27a813[_0x37ed58]?'Infinity':new Date(_0x27a813[_0x37ed58]):_0x21102e[_0x37ed58]=_0x27a813[_0x37ed58]);}return _0x21102e;}function _0x15749b(_0x422b91,_0x27b4c2){_0xcf58cf['validate'](_0xcf58cf['isObject'](_0x422b91),_0x422b91),_0xcf58cf['validate'](_0xcf58cf['isObject'](_0x27b4c2),_0x27b4c2);let _0x2dc10e=-0x2*0x9f1+0x6b7*-0x1+0x1a99;const _0x286781=_0x422b91['path']?_0x422b91['path']['length']:-0xe59+0x19d8*-0x1+0x2831;return _0x2dc10e=(_0x27b4c2['path']?_0x27b4c2['path']['length']:0x202a+-0xb4e+-0xb2*0x1e)-_0x286781,0xb0*0x1+-0xcc9*0x2+0x18e2!==_0x2dc10e||(_0x2dc10e=(_0x422b91['creation']?_0x422b91['creation']['getTime']():_0x2d4060)-(_0x27b4c2['creation']?_0x27b4c2['creation']['getTime']():_0x2d4060),0x5c3+-0x11*0x95+0x211*0x2!==_0x2dc10e||(_0x2dc10e=_0x422b91['creationIn'+'dex']-_0x27b4c2['creationIn'+'dex'])),_0x2dc10e;}function _0x15b303(_0xca36f0){if(_0xca36f0 instanceof Object)return _0xca36f0;try{_0xca36f0=decodeURI(_0xca36f0);}catch(_0x21beea){}return _0x131858(_0xca36f0);}const _0x1736ef={'key':'','value':'','expires':'Infinity','maxAge':null,'domain':null,'path':null,'secure':!(-0x1c9*-0x2+0x904+0x1*-0xc95),'httpOnly':!(0x6a7+-0x1da*0xf+0x1520),'extensions':null,'hostOnly':null,'pathIsDefault':null,'creation':null,'lastAccessed':null,'sameSite':void(-0x97*-0x10+0x28*0x2a+-0x20*0x80)};class _0x349899{constructor(_0x5d1078={}){const _0xd68796=_0x84447e();_0xd68796&&(this[_0xd68796]=this['inspect']),Object['assign'](this,_0x1736ef,_0x5d1078),this['creation']=this['creation']||new Date(),Object['defineProp'+'erty'](this,'creationIn'+'dex',{'configurable':!(-0x3*-0x1ad+0x5b1*-0x5+0x176f),'enumerable':!(-0xd8a+0x2383+-0x15f8),'writable':!(0x5c*-0x3+0x7e*0x36+-0x20*0xcc),'value':++_0x349899['cookiesCre'+'ated']});}['inspect'](){const _0x2849dc=Date['now'](),_0x1d6670=null!=this['hostOnly']?this['hostOnly']:'?',_0x1c0d6c=this['creation']?_0x2849dc-this['creation']['getTime']()+'ms':'?',_0x18c065=this['lastAccess'+'ed']?_0x2849dc-this['lastAccess'+'ed']['getTime']()+'ms':'?';return'Cookie=\x22'+this['toString']()+(';\x20hostOnly'+'=')+_0x1d6670+';\x20aAge='+_0x18c065+';\x20cAge='+_0x1c0d6c+'\x22';}['toJSON'](){const _0x58ab32={};for(const _0x4562ad of _0x349899['serializab'+'leProperti'+'es'])this[_0x4562ad]!==_0x1736ef[_0x4562ad]&&('expires'===_0x4562ad||'creation'===_0x4562ad||'lastAccess'+'ed'===_0x4562ad?null===this[_0x4562ad]?_0x58ab32[_0x4562ad]=null:_0x58ab32[_0x4562ad]='Infinity'==this[_0x4562ad]?'Infinity':this[_0x4562ad]['toISOStrin'+'g']():'maxAge'===_0x4562ad?null!==this[_0x4562ad]&&(_0x58ab32[_0x4562ad]=this[_0x4562ad]==(-0x57e*-0x3+-0x2*0xd1c+0x9bf)/(0x2233+-0xfde+-0xf7*0x13)||this[_0x4562ad]==-(0x5*-0x15b+0xf8f*-0x1+-0x85*-0x2b)/(0x1d3+0x1916*-0x1+0x1743)?this[_0x4562ad]['toString']():this[_0x4562ad]):this[_0x4562ad]!==_0x1736ef[_0x4562ad]&&(_0x58ab32[_0x4562ad]=this[_0x4562ad]));return _0x58ab32;}['clone'](){return _0x452e00(this['toJSON']());}['validate'](){if(!_0x58ada6['test'](this['value']))return!(0xca9+0x262+0x6e*-0x23);if(!(this['expires']==(-0x2*-0x564+-0x6d*-0x3b+-0x23e6)/(0x40+0x4b0+-0x4f0)||this['expires']instanceof Date||_0x11cbc5(this['expires'])))return!(-0x209a+-0x1749+0xdf9*0x4);if(null!=this['maxAge']&&this['maxAge']<=-0x222f+-0xc45+0x2e74)return!(0xfd*-0x11+-0x20ea+-0x4a*-0xac);if(null!=this['path']&&!_0x3ba3e9['test'](this['path']))return!(0xe5+-0x4*-0x62c+0x665*-0x4);const _0x522bf=this['cdomain']();if(_0x522bf){if(_0x522bf['match'](/\.$/))return!(0x43*0x4a+-0x1*-0x1fe9+-0x3346);if(null==_0x3be548['getPublicS'+'uffix'](_0x522bf))return!(-0x1*0xf67+-0x5de+-0x30a*-0x7);}return!(0xc48+0x1959+0xf7*-0x27);}['setExpires'](_0x35473f){_0x35473f instanceof Date?this['expires']=_0x35473f:this['expires']=_0x11cbc5(_0x35473f)||'Infinity';}['setMaxAge'](_0x58a287){this['maxAge']=_0x58a287===(0x885+0x1c*0x1+-0x8a0)/(0x17d4+-0xedf+-0x8f5)||_0x58a287===-(0x25c+-0x631+0x3d6)/(0x1f75+-0x1484+-0x1*0xaf1)?_0x58a287['toString']():_0x58a287;}['cookieStri'+'ng'](){let _0x4c904d=this['value'];return null==_0x4c904d&&(_0x4c904d=''),''===this['key']?_0x4c904d:this['key']+'='+_0x4c904d;}['toString'](){let _0x1cad87=this['cookieStri'+'ng']();if(this['expires']!=(0x777*0x4+0x30*-0x89+-0x1*0x42b)/(0xe1b*0x1+0x3*0x74c+-0x23ff)&&(this['expires']instanceof Date?_0x1cad87+=';\x20Expires='+_0x47e483(this['expires']):_0x1cad87+=';\x20Expires='+this['expires']),null!=this['maxAge']&&this['maxAge']!=(0x1b48+-0x222b*-0x1+-0x41*0xf2)/(-0x1da7+0x1166+-0xc41*-0x1)&&(_0x1cad87+=';\x20Max-Age='+this['maxAge']),this['domain']&&!this['hostOnly']&&(_0x1cad87+=';\x20Domain='+this['domain']),this['path']&&(_0x1cad87+=';\x20Path='+this['path']),this['secure']&&(_0x1cad87+=';\x20Secure'),this['httpOnly']&&(_0x1cad87+=';\x20HttpOnly'),this['sameSite']&&'none'!==this['sameSite']){const _0x2aedc8=_0x349899['sameSiteCa'+'nonical'][this['sameSite']['toLowerCas'+'e']()];_0x1cad87+=';\x20SameSite'+'='+(_0x2aedc8||this['sameSite']);}return this['extensions']&&this['extensions']['forEach'](_0x2053b5=>{_0x1cad87+=';\x20'+_0x2053b5;}),_0x1cad87;}['TTL'](_0x1275ba){if(null!=this['maxAge'])return this['maxAge']<=0x3*-0x95e+0x22be+-0x4*0x1a9?0x18e7+0xb8a+-0x2471:(-0xb81+-0x1*0x1b1c+0x2a85)*this['maxAge'];let _0x3f9aa3=this['expires'];return _0x3f9aa3!=(0x1757+-0x1203+-0x1d*0x2f)/(0x6b9+0x1*0x1a8f+-0x2148)?(_0x3f9aa3 instanceof Date||(_0x3f9aa3=_0x11cbc5(_0x3f9aa3)||(0x3*0x798+0x17*0x161+0x367e*-0x1)/(-0x1*-0x16d9+-0x173d*0x1+0x64)),_0x3f9aa3==(-0x8fe*0x1+-0x3*-0xac1+-0x1*0x1744)/(-0x1*-0xdcd+-0x3*-0xcf1+0x34a0*-0x1)?(-0x1b58+-0x1*-0x166b+0x4ee)/(-0x522*-0x3+0x1c5f+0x1b*-0x19f):_0x3f9aa3['getTime']()-(_0x1275ba||Date['now']())):(-0x2347+0xffc+0x134c)/(-0x45b*0x7+0x76b*0x3+-0x1*-0x83c);}['expiryTime'](_0x4c1cdd){if(null!=this['maxAge']){const _0x188afe=_0x4c1cdd||this['creation']||new Date(),_0x463846=this['maxAge']<=-0x2137+-0x184b+0x3982?-(0x2137+-0x2629+-0x1*-0x4f3)/(-0x18ea+-0xb8a+0x2474):(-0xb20+0xdcb+0x13d)*this['maxAge'];return _0x188afe['getTime']()+_0x463846;}return this['expires']==(-0x13*-0x25+-0x3f5+0x137)/(0x22f7+0x3bc+-0x26b3*0x1)?(-0x674+-0x1*-0x62d+0x48)/(0x71a+0xd58+-0x1472):this['expires']['getTime']();}['expiryDate'](_0x199def){const _0x3a8851=this['expiryTime'](_0x199def);return _0x3a8851==(-0x1c70+0xa6*0x14+0xf79)/(0x4a7+0x1b92*-0x1+0x16eb)?new Date(_0x2d4060):_0x3a8851==-(-0x2208+0x13*-0x1f1+0x46ec)/(0x1d71+0x115*0x13+-0x3200)?new Date(-0xc90*0x1+0x1*0x1159+0x31*-0x19):new Date(_0x3a8851);}['isPersiste'+'nt'](){return null!=this['maxAge']||this['expires']!=(0x57d+-0x1e03+0x1887)/(-0x13c3+-0x1ba4+0x2f67);}['canonicali'+'zedDomain'](){return null==this['domain']?null:_0x3b7401(this['domain']);}['cdomain'](){return this['canonicali'+'zedDomain']();}}function _0x49d8ac(_0x249555){if(null!=_0x249555){const _0x4913c8=_0x249555['toLowerCas'+'e']();switch(_0x4913c8){case _0x5ccae7['STRICT']:case _0x5ccae7['SILENT']:case _0x5ccae7['DISABLED']:return _0x4913c8;}}return _0x5ccae7['SILENT'];}_0x349899['cookiesCre'+'ated']=0x12d4+0x16ed+-0x7*0x5f7,_0x349899['parse']=_0x208ef5,_0x349899['fromJSON']=_0x452e00,_0x349899['serializab'+'leProperti'+'es']=Object['keys'](_0x1736ef),_0x349899['sameSiteLe'+'vel']={'strict':0x3,'lax':0x2,'none':0x1},_0x349899['sameSiteCa'+'nonical']={'strict':'Strict','lax':'Lax'};class _0x8a7f63{constructor(_0x2e2914,_0x44c090={'rejectPublicSuffixes':!(0xb3b+-0x491*0x2+-0x3*0xb3)}){'boolean'==typeof _0x44c090&&(_0x44c090={'rejectPublicSuffixes':_0x44c090}),_0xcf58cf['validate'](_0xcf58cf['isObject'](_0x44c090),_0x44c090),this['rejectPubl'+'icSuffixes']=_0x44c090['rejectPubl'+'icSuffixes'],this['enableLoos'+'eMode']=!!_0x44c090['looseMode'],this['allowSpeci'+'alUseDomai'+'n']='boolean'!=typeof _0x44c090['allowSpeci'+'alUseDomai'+'n']||_0x44c090['allowSpeci'+'alUseDomai'+'n'],this['store']=_0x2e2914||new _0x582a9e(),this['prefixSecu'+'rity']=_0x49d8ac(_0x44c090['prefixSecu'+'rity']),this['_cloneSync']=_0x27f857('clone'),this['_importCoo'+'kiesSync']=_0x27f857('_importCoo'+'kies'),this['getCookies'+'Sync']=_0x27f857('getCookies'),this['getCookieS'+'tringSync']=_0x27f857('getCookieS'+'tring'),this['getSetCook'+'ieStringsS'+'ync']=_0x27f857('getSetCook'+'ieStrings'),this['removeAllC'+'ookiesSync']=_0x27f857('removeAllC'+'ookies'),this['setCookieS'+'ync']=_0x27f857('setCookie'),this['serializeS'+'ync']=_0x27f857('serialize');}['setCookie'](_0x59d6d6,_0x4eb7e7,_0x53b6c6,_0x3cb4e7){let _0x36d512;if(_0xcf58cf['validate'](_0xcf58cf['isNonEmpty'+'String'](_0x4eb7e7),_0x3cb4e7,_0x53b6c6),_0xcf58cf['isFunction'](_0x4eb7e7))return(_0x3cb4e7=_0x4eb7e7)(new Error('No\x20URL\x20was'+'\x20specified'));const _0x2d23a7=_0x15b303(_0x4eb7e7);if(_0xcf58cf['isFunction'](_0x53b6c6)&&(_0x3cb4e7=_0x53b6c6,_0x53b6c6={}),_0xcf58cf['validate'](_0xcf58cf['isFunction'](_0x3cb4e7),_0x3cb4e7),!_0xcf58cf['isNonEmpty'+'String'](_0x59d6d6)&&!_0xcf58cf['isObject'](_0x59d6d6)&&_0x59d6d6 instanceof String&&0x1c3e+-0x1*0x16ab+0x1*-0x593==_0x59d6d6['length'])return _0x3cb4e7(null);const _0x1e7684=_0x3b7401(_0x2d23a7['hostname']),_0xe83e5a=_0x53b6c6['loose']||this['enableLoos'+'eMode'];let _0x3907a6=null;if(_0x53b6c6['sameSiteCo'+'ntext']&&(_0x3907a6=_0xce569d(_0x53b6c6['sameSiteCo'+'ntext']),!_0x3907a6))return _0x3cb4e7(new Error(_0x1a447e));if('string'==typeof _0x59d6d6||_0x59d6d6 instanceof String){if(!(_0x59d6d6=_0x349899['parse'](_0x59d6d6,{'loose':_0xe83e5a})))return _0x36d512=new Error('Cookie\x20fai'+'led\x20to\x20par'+'se'),_0x3cb4e7(_0x53b6c6['ignoreErro'+'r']?null:_0x36d512);}else{if(!(_0x59d6d6 instanceof _0x349899))return _0x36d512=new Error('First\x20argu'+'ment\x20to\x20se'+'tCookie\x20mu'+'st\x20be\x20a\x20Co'+'okie\x20objec'+'t\x20or\x20strin'+'g'),_0x3cb4e7(_0x53b6c6['ignoreErro'+'r']?null:_0x36d512);}const _0xf73911=_0x53b6c6['now']||new Date();if(this['rejectPubl'+'icSuffixes']&&_0x59d6d6['domain']&&null==_0x3be548['getPublicS'+'uffix'](_0x59d6d6['cdomain'](),{'allowSpecialUseDomain':this['allowSpeci'+'alUseDomai'+'n'],'ignoreError':_0x53b6c6['ignoreErro'+'r']})&&!_0x5c650b['test'](_0x59d6d6['domain']))return _0x36d512=new Error('Cookie\x20has'+'\x20domain\x20se'+'t\x20to\x20a\x20pub'+'lic\x20suffix'),_0x3cb4e7(_0x53b6c6['ignoreErro'+'r']?null:_0x36d512);if(_0x59d6d6['domain']){if(!_0x56c5c8(_0x1e7684,_0x59d6d6['cdomain'](),!(0xd64+-0x210c+-0x2cf*-0x7)))return _0x36d512=new Error('Cookie\x20not'+'\x20in\x20this\x20h'+'ost\x27s\x20doma'+'in.\x20Cookie'+':'+_0x59d6d6['cdomain']()+'\x20Request:'+_0x1e7684),_0x3cb4e7(_0x53b6c6['ignoreErro'+'r']?null:_0x36d512);null==_0x59d6d6['hostOnly']&&(_0x59d6d6['hostOnly']=!(0x1d09+0x2df*-0x7+-0x8ef));}else _0x59d6d6['hostOnly']=!(0xd2b*-0x1+0x2*-0x45a+-0xb*-0x1fd),_0x59d6d6['domain']=_0x1e7684;if(_0x59d6d6['path']&&'/'===_0x59d6d6['path'][-0x52f*-0x7+0x2ca+-0x2713]||(_0x59d6d6['path']=_0x1ecf2d(_0x2d23a7['pathname']),_0x59d6d6['pathIsDefa'+'ult']=!(-0x87b+0x93c+-0xc1)),!(-0x1218+0x9c7*-0x1+0xdf*0x20)===_0x53b6c6['http']&&_0x59d6d6['httpOnly'])return _0x36d512=new Error('Cookie\x20is\x20'+'HttpOnly\x20a'+'nd\x20this\x20is'+'n\x27t\x20an\x20HTT'+'P\x20API'),_0x3cb4e7(_0x53b6c6['ignoreErro'+'r']?null:_0x36d512);if('none'!==_0x59d6d6['sameSite']&&void(-0x432+-0x26fc+0x2b2e*0x1)!==_0x59d6d6['sameSite']&&_0x3907a6&&'none'===_0x3907a6)return _0x36d512=new Error('Cookie\x20is\x20'+'SameSite\x20b'+'ut\x20this\x20is'+'\x20a\x20cross-o'+'rigin\x20requ'+'est'),_0x3cb4e7(_0x53b6c6['ignoreErro'+'r']?null:_0x36d512);const _0x7fcdd2=this['prefixSecu'+'rity']===_0x5ccae7['SILENT'];if(this['prefixSecu'+'rity']!==_0x5ccae7['DISABLED']){let _0x3f6300,_0x394879=!(-0x2d*0x81+0x130b+0x1*0x3a3);if(function(_0x4e1ca6){return _0xcf58cf['validate'](_0xcf58cf['isObject'](_0x4e1ca6),_0x4e1ca6),!_0x4e1ca6['key']['startsWith']('__Secure-')||_0x4e1ca6['secure'];}(_0x59d6d6)?function(_0x48aac1){return _0xcf58cf['validate'](_0xcf58cf['isObject'](_0x48aac1)),!_0x48aac1['key']['startsWith']('__Host-')||_0x48aac1['secure']&&_0x48aac1['hostOnly']&&null!=_0x48aac1['path']&&'/'===_0x48aac1['path'];}(_0x59d6d6)||(_0x394879=!(-0x1e*0x94+0xedd+0x27b),_0x3f6300='Cookie\x20has'+'\x20__Host\x20pr'+'efix\x20but\x20e'+'ither\x20Secu'+'re\x20or\x20Host'+'Only\x20attri'+'bute\x20is\x20no'+'t\x20set\x20or\x20P'+'ath\x20is\x20not'+'\x20\x27/\x27'):(_0x394879=!(0x36d+-0x52*-0x47+-0x1d*0xe7),_0x3f6300='Cookie\x20has'+'\x20__Secure\x20'+'prefix\x20but'+'\x20Secure\x20at'+'tribute\x20is'+'\x20not\x20set'),_0x394879)return _0x3cb4e7(_0x53b6c6['ignoreErro'+'r']||_0x7fcdd2?null:new Error(_0x3f6300));}const _0x1d3546=this['store'];_0x1d3546['updateCook'+'ie']||(_0x1d3546['updateCook'+'ie']=function(_0x3ebb58,_0x389e7d,_0x555b61){this['putCookie'](_0x389e7d,_0x555b61);}),_0x1d3546['findCookie'](_0x59d6d6['domain'],_0x59d6d6['path'],_0x59d6d6['key'],function(_0x460a90,_0x4faa82){if(_0x460a90)return _0x3cb4e7(_0x460a90);const _0x356e86=function(_0x522881){if(_0x522881)return _0x3cb4e7(_0x522881);_0x3cb4e7(null,_0x59d6d6);};if(_0x4faa82){if(!(-0x1770+-0x1ac3*-0x1+-0x352)===_0x53b6c6['http']&&_0x4faa82['httpOnly'])return _0x460a90=new Error('old\x20Cookie'+'\x20is\x20HttpOn'+'ly\x20and\x20thi'+'s\x20isn\x27t\x20an'+'\x20HTTP\x20API'),_0x3cb4e7(_0x53b6c6['ignoreErro'+'r']?null:_0x460a90);_0x59d6d6['creation']=_0x4faa82['creation'],_0x59d6d6['creationIn'+'dex']=_0x4faa82['creationIn'+'dex'],_0x59d6d6['lastAccess'+'ed']=_0xf73911,_0x1d3546['updateCook'+'ie'](_0x4faa82,_0x59d6d6,_0x356e86);}else _0x59d6d6['creation']=_0x59d6d6['lastAccess'+'ed']=_0xf73911,_0x1d3546['putCookie'](_0x59d6d6,_0x356e86);});}['getCookies'](_0x4b2d10,_0x13e858,_0x3c268e){_0xcf58cf['validate'](_0xcf58cf['isNonEmpty'+'String'](_0x4b2d10),_0x3c268e,_0x4b2d10);const _0x403777=_0x15b303(_0x4b2d10);_0xcf58cf['isFunction'](_0x13e858)&&(_0x3c268e=_0x13e858,_0x13e858={}),_0xcf58cf['validate'](_0xcf58cf['isObject'](_0x13e858),_0x3c268e,_0x13e858),_0xcf58cf['validate'](_0xcf58cf['isFunction'](_0x3c268e),_0x3c268e);const _0x32005c=_0x3b7401(_0x403777['hostname']),_0x480234=_0x403777['pathname']||'/';let _0x951335=_0x13e858['secure'];null!=_0x951335||!_0x403777['protocol']||'https:'!=_0x403777['protocol']&&'wss:'!=_0x403777['protocol']||(_0x951335=!(0x1*0x133+-0x142e+0x71*0x2b));let _0x15853f=-0x5a2*0x4+-0xb9a+0x2222;if(_0x13e858['sameSiteCo'+'ntext']){const _0xb9fa1=_0xce569d(_0x13e858['sameSiteCo'+'ntext']);if(_0x15853f=_0x349899['sameSiteLe'+'vel'][_0xb9fa1],!_0x15853f)return _0x3c268e(new Error(_0x1a447e));}let _0x153438=_0x13e858['http'];null==_0x153438&&(_0x153438=!(-0x21*0xeb+-0x262c*-0x1+-0x7e1*0x1));const _0x21eee0=_0x13e858['now']||Date['now'](),_0x9608f7=!(0x828*0x2+-0x45*-0x56+0x397*-0xb)!==_0x13e858['expire'],_0xd496aa=!!_0x13e858['allPaths'],_0xfd7178=this['store'];function _0x455778(_0x1e02a8){if(_0x1e02a8['hostOnly']){if(_0x1e02a8['domain']!=_0x32005c)return!(0x39*0x1+-0xaf*0x9+0x1f*0x31);}else{if(!_0x56c5c8(_0x32005c,_0x1e02a8['domain'],!(0xa1a*-0x3+-0x3b*-0x76+0x31d)))return!(-0x1a8f+-0x1be9+0x1*0x3679);}return!(!_0xd496aa&&!_0x219e7d(_0x480234,_0x1e02a8['path']))&&(!(_0x1e02a8['secure']&&!_0x951335)&&(!(_0x1e02a8['httpOnly']&&!_0x153438)&&(!(_0x15853f&&_0x349899['sameSiteLe'+'vel'][_0x1e02a8['sameSite']||'none']>_0x15853f)&&!(_0x9608f7&&_0x1e02a8['expiryTime']()<=_0x21eee0&&(_0xfd7178['removeCook'+'ie'](_0x1e02a8['domain'],_0x1e02a8['path'],_0x1e02a8['key'],()=>{}),0x62*0x34+-0x112a+-0x2bd)))));}_0xfd7178['findCookie'+'s'](_0x32005c,_0xd496aa?null:_0x480234,this['allowSpeci'+'alUseDomai'+'n'],(_0xf20539,_0xd835e7)=>{if(_0xf20539)return _0x3c268e(_0xf20539);_0xd835e7=_0xd835e7['filter'](_0x455778),!(-0xd1d+-0x123*0x15+0x22d*0x11)!==_0x13e858['sort']&&(_0xd835e7=_0xd835e7['sort'](_0x15749b));const _0x502792=new Date();for(const _0x5f57f2 of _0xd835e7)_0x5f57f2['lastAccess'+'ed']=_0x502792;_0x3c268e(null,_0xd835e7);});}['getCookieS'+'tring'](..._0xc7d06d){const _0x1478aa=_0xc7d06d['pop']();_0xcf58cf['validate'](_0xcf58cf['isFunction'](_0x1478aa),_0x1478aa),_0xc7d06d['push'](function(_0x407667,_0x1c7d02){_0x407667?_0x1478aa(_0x407667):_0x1478aa(null,_0x1c7d02['sort'](_0x15749b)['map'](_0x329a1e=>_0x329a1e['cookieStri'+'ng']())['join'](';\x20'));}),this['getCookies']['apply'](this,_0xc7d06d);}['getSetCook'+'ieStrings'](..._0x2d3a7a){const _0x493d83=_0x2d3a7a['pop']();_0xcf58cf['validate'](_0xcf58cf['isFunction'](_0x493d83),_0x493d83),_0x2d3a7a['push'](function(_0x232f96,_0x19d2e8){_0x232f96?_0x493d83(_0x232f96):_0x493d83(null,_0x19d2e8['map'](_0xcee247=>_0xcee247['toString']()));}),this['getCookies']['apply'](this,_0x2d3a7a);}['serialize'](_0x419be8){_0xcf58cf['validate'](_0xcf58cf['isFunction'](_0x419be8),_0x419be8);let _0x5163e1=this['store']['constructo'+'r']['name'];_0xcf58cf['isObject'](_0x5163e1)&&(_0x5163e1=null);const _0x46cf41={'version':'tough-cook'+'ie@'+_0x1963a9,'storeType':_0x5163e1,'rejectPublicSuffixes':!!this['rejectPubl'+'icSuffixes'],'enableLooseMode':!!this['enableLoos'+'eMode'],'allowSpecialUseDomain':!!this['allowSpeci'+'alUseDomai'+'n'],'prefixSecurity':_0x49d8ac(this['prefixSecu'+'rity']),'cookies':[]};if(!this['store']['getAllCook'+'ies']||'function'!=typeof this['store']['getAllCook'+'ies'])return _0x419be8(new Error('store\x20does'+'\x20not\x20suppo'+'rt\x20getAllC'+'ookies\x20and'+'\x20cannot\x20be'+'\x20serialize'+'d'));this['store']['getAllCook'+'ies']((_0x50f55d,_0x1ee453)=>_0x50f55d?_0x419be8(_0x50f55d):(_0x46cf41['cookies']=_0x1ee453['map'](_0x457360=>(delete(_0x457360=_0x457360 instanceof _0x349899?_0x457360['toJSON']():_0x457360)['creationIn'+'dex'],_0x457360)),_0x419be8(null,_0x46cf41)));}['toJSON'](){return this['serializeS'+'ync']();}['_importCoo'+'kies'](_0x148183,_0x48a3bb){let _0x52946a=_0x148183['cookies'];if(!_0x52946a||!Array['isArray'](_0x52946a))return _0x48a3bb(new Error('serialized'+'\x20jar\x20has\x20n'+'o\x20cookies\x20'+'array'));_0x52946a=_0x52946a['slice']();const _0x1941ed=_0x37ac16=>{if(_0x37ac16)return _0x48a3bb(_0x37ac16);if(!_0x52946a['length'])return _0x48a3bb(_0x37ac16,this);let _0x1a05c2;try{_0x1a05c2=_0x452e00(_0x52946a['shift']());}catch(_0x386b6b){return _0x48a3bb(_0x386b6b);}if(null===_0x1a05c2)return _0x1941ed(null);this['store']['putCookie'](_0x1a05c2,_0x1941ed);};_0x1941ed();}['clone'](_0x4556d1,_0x2fb9d5){-0x16b1*-0x1+0x156+-0x1806===arguments['length']&&(_0x2fb9d5=_0x4556d1,_0x4556d1=null),this['serialize']((_0x19c01f,_0x2be5bd)=>{if(_0x19c01f)return _0x2fb9d5(_0x19c01f);_0x8a7f63['deserializ'+'e'](_0x2be5bd,_0x4556d1,_0x2fb9d5);});}['cloneSync'](_0x2f21ae){if(-0x35*-0x2+-0x95f+0x8f5===arguments['length'])return this['_cloneSync']();if(!_0x2f21ae['synchronou'+'s'])throw new Error('CookieJar\x20'+'clone\x20dest'+'ination\x20st'+'ore\x20is\x20not'+'\x20synchrono'+'us;\x20use\x20as'+'ync\x20API\x20in'+'stead.');return this['_cloneSync'](_0x2f21ae);}['removeAllC'+'ookies'](_0xe4b556){_0xcf58cf['validate'](_0xcf58cf['isFunction'](_0xe4b556),_0xe4b556);const _0x4ea27f=this['store'];if('function'==typeof _0x4ea27f['removeAllC'+'ookies']&&_0x4ea27f['removeAllC'+'ookies']!==_0x4152f4['prototype']['removeAllC'+'ookies'])return _0x4ea27f['removeAllC'+'ookies'](_0xe4b556);_0x4ea27f['getAllCook'+'ies']((_0x4b76cb,_0x2a10e7)=>{if(_0x4b76cb)return _0xe4b556(_0x4b76cb);if(-0x63*0x3b+-0x20*0x2b+0x7*0x407===_0x2a10e7['length'])return _0xe4b556(null);let _0x1e2963=0x1313+-0x349*-0x1+-0x4*0x597;const _0x214f25=[];function _0x3f6440(_0x272645){if(_0x272645&&_0x214f25['push'](_0x272645),_0x1e2963++,_0x1e2963===_0x2a10e7['length'])return _0xe4b556(_0x214f25['length']?_0x214f25[-0x3b*-0x5+0x24a8+-0x25cf]:null);}_0x2a10e7['forEach'](_0x2c7185=>{_0x4ea27f['removeCook'+'ie'](_0x2c7185['domain'],_0x2c7185['path'],_0x2c7185['key'],_0x3f6440);});});}static['deserializ'+'e'](_0x15446f,_0x581f91,_0x3897fc){let _0x58d72a;if(0xaf1+0x1849+-0x2337!==arguments['length']&&(_0x3897fc=_0x581f91,_0x581f91=null),_0xcf58cf['validate'](_0xcf58cf['isFunction'](_0x3897fc),_0x3897fc),'string'==typeof _0x15446f){if(_0x58d72a=_0x239979(_0x15446f),_0x58d72a instanceof Error)return _0x3897fc(_0x58d72a);}else _0x58d72a=_0x15446f;const _0x34c523=new _0x8a7f63(_0x581f91,{'rejectPublicSuffixes':_0x58d72a['rejectPubl'+'icSuffixes'],'looseMode':_0x58d72a['enableLoos'+'eMode'],'allowSpecialUseDomain':_0x58d72a['allowSpeci'+'alUseDomai'+'n'],'prefixSecurity':_0x58d72a['prefixSecu'+'rity']});_0x34c523['_importCoo'+'kies'](_0x58d72a,_0x174878=>{if(_0x174878)return _0x3897fc(_0x174878);_0x3897fc(null,_0x34c523);});}static['deserializ'+'eSync'](_0x371918,_0xc0338b){const _0x77a378='string'==typeof _0x371918?JSON['parse'](_0x371918):_0x371918,_0x4e2912=new _0x8a7f63(_0xc0338b,{'rejectPublicSuffixes':_0x77a378['rejectPubl'+'icSuffixes'],'looseMode':_0x77a378['enableLoos'+'eMode']});if(!_0x4e2912['store']['synchronou'+'s'])throw new Error('CookieJar\x20'+'store\x20is\x20n'+'ot\x20synchro'+'nous;\x20use\x20'+'async\x20API\x20'+'instead.');return _0x4e2912['_importCoo'+'kiesSync'](_0x77a378),_0x4e2912;}}function _0x27f857(_0x4698e0){return function(..._0x1f8c18){if(!this['store']['synchronou'+'s'])throw new Error('CookieJar\x20'+'store\x20is\x20n'+'ot\x20synchro'+'nous;\x20use\x20'+'async\x20API\x20'+'instead.');let _0x52af06,_0xc5925;if(this[_0x4698e0](..._0x1f8c18,(_0x45f51c,_0x5ad2b3)=>{_0x52af06=_0x45f51c,_0xc5925=_0x5ad2b3;}),_0x52af06)throw _0x52af06;return _0xc5925;};}_0x8a7f63['fromJSON']=_0x8a7f63['deserializ'+'eSync'],['_importCoo'+'kies','clone','getCookies','getCookieS'+'tring','getSetCook'+'ieStrings','removeAllC'+'ookies','serialize','setCookie']['forEach'](_0x43cd91=>{_0x8a7f63['prototype'][_0x43cd91]=_0x127e4e(_0x8a7f63['prototype'][_0x43cd91]);}),_0x8a7f63['deserializ'+'e']=_0x127e4e(_0x8a7f63['deserializ'+'e']),_0x1408b5['version']=_0x1963a9,_0x1408b5['CookieJar']=_0x8a7f63,_0x1408b5['Cookie']=_0x349899,_0x1408b5['Store']=_0x4152f4,_0x1408b5['MemoryCook'+'ieStore']=_0x582a9e,_0x1408b5['parseDate']=_0x11cbc5,_0x1408b5['formatDate']=_0x47e483,_0x1408b5['parse']=_0x208ef5,_0x1408b5['fromJSON']=_0x452e00,_0x1408b5['domainMatc'+'h']=_0x56c5c8,_0x1408b5['defaultPat'+'h']=_0x1ecf2d,_0x1408b5['pathMatch']=_0x219e7d,_0x1408b5['getPublicS'+'uffix']=_0x3be548['getPublicS'+'uffix'],_0x1408b5['cookieComp'+'are']=_0x15749b,_0x1408b5['permuteDom'+'ain']=_0x5e55f6(0x1*-0x2b64+-0x9c3+-0xd*-0x66e)['permuteDom'+'ain'],_0x1408b5['permutePat'+'h']=function(_0x49e198){if(_0xcf58cf['validate'](_0xcf58cf['isString'](_0x49e198)),'/'===_0x49e198)return['/'];const _0x2ff79c=[_0x49e198];for(;_0x49e198['length']>0x2373+0x2349+-0x1*0x46bb;){const _0xfa8dfb=_0x49e198['lastIndexO'+'f']('/');if(-0x95*-0x16+0x1893+-0x1*0x2561===_0xfa8dfb)break;_0x49e198=_0x49e198['substr'](-0x2*-0x40e+-0x2199+0x197d,_0xfa8dfb),_0x2ff79c['push'](_0x49e198);}return _0x2ff79c['push']('/'),_0x2ff79c;},_0x1408b5['canonicalD'+'omain']=_0x3b7401,_0x1408b5['PrefixSecu'+'rityEnum']=_0x5ccae7,_0x1408b5['ParameterE'+'rror']=_0xcf58cf['ParameterE'+'rror'];},0xa83:(_0x2845b7,_0x868b1d,_0x4712ec)=>{'use strict';const {fromCallback:_0x36457b}=_0x4712ec(0x25*0x7+-0x2*0x588+0x1*0xee1),_0x58be6f=_0x4712ec(0x4*0x977+0x61f+0x1917*-0x1)['i'],_0x5dbede=_0x4712ec(-0x1*0x3037+0x3*0x2dc+0x4612)['permuteDom'+'ain'],_0x36c330=_0x4712ec(0x3*-0xaed+0x1*-0xec7+-0x5*-0xdab)['z'],{getCustomInspectSymbol:_0x389ffd,getUtilInspect:_0x33d8ba}=_0x4712ec(-0xf52+-0x4003+0x7616);class _0x137a55 extends _0x58be6f{constructor(){super(),this['synchronou'+'s']=!(-0x1*-0x1d75+-0xf54+0x1*-0xe21),this['idx']=Object['create'](null);const _0x30f6b3=_0x389ffd();_0x30f6b3&&(this[_0x30f6b3]=this['inspect']);}['inspect'](){return'{\x20idx:\x20'+_0x33d8ba(_0x2051b8)(this['idx'],!(-0x394*-0x2+-0xfa6*0x1+0x87f),-0x7*0x7b+0x4d*0x4d+-0x22*0x95)+'\x20}';}['findCookie'](_0x48060f,_0x33019b,_0x8d105,_0x508c4f){return this['idx'][_0x48060f]&&this['idx'][_0x48060f][_0x33019b]?_0x508c4f(null,this['idx'][_0x48060f][_0x33019b][_0x8d105]||null):_0x508c4f(null,void(-0x1fa8*0x1+-0x18df+0x3887));}['findCookie'+'s'](_0x535e80,_0x477a62,_0x5a6151,_0xc7febb){const _0x57d2a0=[];if('function'==typeof _0x5a6151&&(_0xc7febb=_0x5a6151,_0x5a6151=!(-0x104d+-0x24*0x1+-0x3d*-0x45)),!_0x535e80)return _0xc7febb(null,[]);let _0x19ed4d;_0x19ed4d=_0x477a62?function(_0x3e2e6b){Object['keys'](_0x3e2e6b)['forEach'](_0x47f80c=>{if(_0x36c330(_0x477a62,_0x47f80c)){const _0xa6ac60=_0x3e2e6b[_0x47f80c];for(const _0x212bb6 in _0xa6ac60)_0x57d2a0['push'](_0xa6ac60[_0x212bb6]);}});}:function(_0x34e888){for(const _0x4fbb34 in _0x34e888){const _0x19727d=_0x34e888[_0x4fbb34];for(const _0x2a700d in _0x19727d)_0x57d2a0['push'](_0x19727d[_0x2a700d]);}};const _0x347b52=_0x5dbede(_0x535e80,_0x5a6151)||[_0x535e80],_0xadbbc7=this['idx'];_0x347b52['forEach'](_0x381066=>{const _0x436011=_0xadbbc7[_0x381066];_0x436011&&_0x19ed4d(_0x436011);}),_0xc7febb(null,_0x57d2a0);}['putCookie'](_0x2fafd1,_0x229da4){this['idx'][_0x2fafd1['domain']]||(this['idx'][_0x2fafd1['domain']]=Object['create'](null)),this['idx'][_0x2fafd1['domain']][_0x2fafd1['path']]||(this['idx'][_0x2fafd1['domain']][_0x2fafd1['path']]=Object['create'](null)),this['idx'][_0x2fafd1['domain']][_0x2fafd1['path']][_0x2fafd1['key']]=_0x2fafd1,_0x229da4(null);}['updateCook'+'ie'](_0x571c0f,_0x4b9d91,_0xace46){this['putCookie'](_0x4b9d91,_0xace46);}['removeCook'+'ie'](_0x28f0b2,_0x525efe,_0x51ae3b,_0x6fb586){this['idx'][_0x28f0b2]&&this['idx'][_0x28f0b2][_0x525efe]&&this['idx'][_0x28f0b2][_0x525efe][_0x51ae3b]&&delete this['idx'][_0x28f0b2][_0x525efe][_0x51ae3b],_0x6fb586(null);}['removeCook'+'ies'](_0x425f7a,_0x304717,_0x1916cb){return this['idx'][_0x425f7a]&&(_0x304717?delete this['idx'][_0x425f7a][_0x304717]:delete this['idx'][_0x425f7a]),_0x1916cb(null);}['removeAllC'+'ookies'](_0x35886e){return this['idx']=Object['create'](null),_0x35886e(null);}['getAllCook'+'ies'](_0x3e1503){const _0x426e1b=[],_0x22e8dc=this['idx'];Object['keys'](_0x22e8dc)['forEach'](_0x57994b=>{Object['keys'](_0x22e8dc[_0x57994b])['forEach'](_0x57d06c=>{Object['keys'](_0x22e8dc[_0x57994b][_0x57d06c])['forEach'](_0x4a80fd=>{null!==_0x4a80fd&&_0x426e1b['push'](_0x22e8dc[_0x57994b][_0x57d06c][_0x4a80fd]);});});}),_0x426e1b['sort']((_0x219575,_0x3d1035)=>(_0x219575['creationIn'+'dex']||0x2d*0x61+-0x4*-0x4b6+-0x1*0x23e5)-(_0x3d1035['creationIn'+'dex']||0x1346+-0x2bd+-0x33*0x53)),_0x3e1503(null,_0x426e1b);}}function _0x2051b8(_0x2cfd59){const _0x55b7a9=Object['keys'](_0x2cfd59);if(0x16a9*-0x1+0x2637+0xf8e*-0x1===_0x55b7a9['length'])return'[Object:\x20n'+'ull\x20protot'+'ype]\x20{}';let _0x457061='[Object:\x20n'+'ull\x20protot'+'ype]\x20{\x0a';return Object['keys'](_0x2cfd59)['forEach']((_0x3bd8f0,_0x451da5)=>{_0x457061+=function(_0x23486c,_0x1ce721){let _0x373c37='\x20\x20\x27'+_0x23486c+('\x27:\x20[Object'+':\x20null\x20pro'+'totype]\x20{\x0a');return Object['keys'](_0x1ce721)['forEach']((_0x3c7bd7,_0x4caaf8,_0x420fe4)=>{_0x373c37+=function(_0x56b405,_0x294961){const _0x5df515='\x20\x20\x20\x20';let _0xec4857=_0x5df515+'\x27'+_0x56b405+('\x27:\x20[Object'+':\x20null\x20pro'+'totype]\x20{\x0a');return Object['keys'](_0x294961)['forEach']((_0x12d4d4,_0x2f1b1c,_0xa84e2e)=>{const _0x295a2e=_0x294961[_0x12d4d4];_0xec4857+='\x20\x20\x20\x20\x20\x20'+_0x12d4d4+':\x20'+_0x295a2e['inspect'](),_0x2f1b1c<_0xa84e2e['length']-(0x120d*-0x1+0x1446+-0x238)&&(_0xec4857+=','),_0xec4857+='\x0a';}),_0xec4857+=_0x5df515+'}',_0xec4857;}(_0x3c7bd7,_0x1ce721[_0x3c7bd7]),_0x4caaf8<_0x420fe4['length']-(0x1faa*0x1+0x8*-0x469+-0x9*-0x67)&&(_0x373c37+=','),_0x373c37+='\x0a';}),_0x373c37+='\x20\x20}',_0x373c37;}(_0x3bd8f0,_0x2cfd59[_0x3bd8f0]),_0x451da5<_0x55b7a9['length']-(0x22+0x10b8+-0x10d9)&&(_0x457061+=','),_0x457061+='\x0a';}),_0x457061+='}',_0x457061;}['findCookie','findCookie'+'s','putCookie','updateCook'+'ie','removeCook'+'ie','removeCook'+'ies','removeAllC'+'ookies','getAllCook'+'ies']['forEach'](_0x41b76a=>{_0x137a55['prototype'][_0x41b76a]=_0x36457b(_0x137a55['prototype'][_0x41b76a]);}),_0x868b1d['n']=_0x137a55;},0x14c9:(_0x16fb26,_0x4d3c3e)=>{'use strict';_0x4d3c3e['z']=function(_0x134056,_0x40897a){if(_0x40897a===_0x134056)return!(0x1554+0x169*0x17+-0x35c3);if(0x664*0x3+0x131b*0x1+-0x2647===_0x134056['indexOf'](_0x40897a)){if('/'===_0x40897a['substr'](-(-0x1*-0x15b5+-0x13*0x1d7+0xd41)))return!(0x22b1+0x209*-0x5+-0x1884);if('/'===_0x134056['substr'](_0x40897a['length'],-0xe3d+0x3*0x5ae+0x4*-0xb3))return!(-0x266f+0x1157+0x1518);}return!(0xbe5+0x82e*-0x2+0x478);};},0x1e6f:(_0x87ff33,_0x5924cf,_0x47bd7b)=>{'use strict';const _0x4e7025=_0x47bd7b(0x4*-0x12b+0xc2e+0x2e9*-0x1);_0x5924cf['permuteDom'+'ain']=function(_0x450d5a,_0xea46d4){const _0x110082=_0x4e7025['getPublicS'+'uffix'](_0x450d5a,{'allowSpecialUseDomain':_0xea46d4});if(!_0x110082)return null;if(_0x110082==_0x450d5a)return[_0x450d5a];'.'==_0x450d5a['slice'](-(-0x36+0xa73*0x2+-0x14af))&&(_0x450d5a=_0x450d5a['slice'](-0x78e*-0x5+0x5*-0x717+-0x253,-(0x3*0xbab+0x1777+-0x3a77*0x1)));const _0x5c38fe=_0x450d5a['slice'](-0x413+0x1ca*-0x3+0x971,-(_0x110082['length']+(-0x1b*0x12a+-0x1237+0x31a6)))['split']('.')['reverse']();let _0x353a8e=_0x110082;const _0x3f4785=[_0x353a8e];for(;_0x5c38fe['length'];)_0x353a8e=_0x5c38fe['shift']()+'.'+_0x353a8e,_0x3f4785['push'](_0x353a8e);return _0x3f4785;};},0x499:(_0xb6f0f7,_0x35a8c8,_0x175d54)=>{'use strict';const _0x28e1f3=_0x175d54(0x10*-0x33+-0xeda+0xf6*0x1b),_0x30392b=['local','example','invalid','localhost','test'],_0x10a1b3=['localhost','invalid'];_0x35a8c8['getPublicS'+'uffix']=function(_0x5b89d9,_0x3df3eb={}){const _0x2d2eed=_0x5b89d9['split']('.'),_0x2cf338=_0x2d2eed[_0x2d2eed['length']-(-0x1*-0xd47+0x1*0x26b3+-0x1153*0x3)],_0x53b263=!!_0x3df3eb['allowSpeci'+'alUseDomai'+'n'],_0x4364c4=!!_0x3df3eb['ignoreErro'+'r'];if(_0x53b263&&_0x30392b['includes'](_0x2cf338)){if(_0x2d2eed['length']>0x966+0x36a*0x3+-0x13a3)return _0x2d2eed[_0x2d2eed['length']-(-0x3*-0x5e7+-0xd*-0x18b+0x12*-0x219)]+'.'+_0x2cf338;if(_0x10a1b3['includes'](_0x2cf338))return''+_0x2cf338;}if(!_0x4364c4&&_0x30392b['includes'](_0x2cf338))throw new Error('Cookie\x20has'+'\x20domain\x20se'+'t\x20to\x20the\x20p'+'ublic\x20suff'+'ix\x20\x22'+_0x2cf338+('\x22\x20which\x20is'+'\x20a\x20special'+'\x20use\x20domai'+'n.\x20To\x20allo'+'w\x20this,\x20co'+'nfigure\x20yo'+'ur\x20CookieJ'+'ar\x20with\x20{a'+'llowSpecia'+'lUseDomain'+':true,\x20rej'+'ectPublicS'+'uffixes:\x20f'+'alse}.'));return _0x28e1f3['get'](_0x5b89d9);};},0x12e4:(_0x1d3e51,_0x53a9d6)=>{'use strict';_0x53a9d6['i']=class{constructor(){this['synchronou'+'s']=!(-0x2592+0x23*-0xa7+-0xf1a*-0x4);}['findCookie'](_0x23d40d,_0x4ab25c,_0x4ea2b3,_0x157231){throw new Error('findCookie'+'\x20is\x20not\x20im'+'plemented');}['findCookie'+'s'](_0x37fb7d,_0x3781e,_0x4a15b6,_0x2feccf){throw new Error('findCookie'+'s\x20is\x20not\x20i'+'mplemented');}['putCookie'](_0x71fdf3,_0xfad26a){throw new Error('putCookie\x20'+'is\x20not\x20imp'+'lemented');}['updateCook'+'ie'](_0xadf4de,_0x937af4,_0x23e75e){throw new Error('updateCook'+'ie\x20is\x20not\x20'+'implemente'+'d');}['removeCook'+'ie'](_0x6869c6,_0x5e73af,_0x10d0fe,_0x52abe3){throw new Error('removeCook'+'ie\x20is\x20not\x20'+'implemente'+'d');}['removeCook'+'ies'](_0x41030c,_0xf6abb1,_0x243fa7){throw new Error('removeCook'+'ies\x20is\x20not'+'\x20implement'+'ed');}['removeAllC'+'ookies'](_0x32eed4){throw new Error('removeAllC'+'ookies\x20is\x20'+'not\x20implem'+'ented');}['getAllCook'+'ies'](_0x48d3e9){throw new Error('getAllCook'+'ies\x20is\x20not'+'\x20implement'+'ed\x20(theref'+'ore\x20jar\x20ca'+'nnot\x20be\x20se'+'rialized)');}};},0x26c1:(_0x239224,_0x148fb2,_0x40eeac)=>{function _0x111540(){try{return _0x40eeac(0x15*0x241+-0x162*-0x2f+-0x4d14);}catch(_0xb1f90e){return null;}}function _0x120a6d(){return Symbol['for']('nodejs.uti'+'l.inspect.'+'custom');}_0x148fb2['getUtilIns'+'pect']=function(_0x3e4feb,_0x704e1a={}){const _0x2a045c=(_0x704e1a['requireUti'+'l']||_0x111540)();return function(_0x3f3cc7,_0x2a5da2,_0x1ef6a9){return _0x2a045c?_0x2a045c['inspect'](_0x3f3cc7,_0x2a5da2,_0x1ef6a9):_0x3e4feb(_0x3f3cc7);};},_0x148fb2['getCustomI'+'nspectSymb'+'ol']=function(_0xb63496={}){return(_0xb63496['lookupCust'+'omInspectS'+'ymbol']||_0x120a6d)()||function(_0x530dcc){const _0x230e05=(_0x530dcc['requireUti'+'l']||_0x111540)();return _0x230e05?_0x230e05['inspect']['custom']:null;}(_0xb63496);};},0xba6:(_0x52823f,_0xa29c9f)=>{'use strict';function _0x505f7d(_0x52bc57){return'function'==typeof _0x52bc57;}function _0x3f2946(_0x40f7c0){return'string'==typeof _0x40f7c0||_0x40f7c0 instanceof String;}function _0x2d37ed(_0x68b394){return'[object\x20Ob'+'ject]'===toString['call'](_0x68b394);}class _0x45644d extends Error{constructor(..._0x38b021){super(..._0x38b021);}}_0xa29c9f['ParameterE'+'rror']=_0x45644d,_0xa29c9f['isFunction']=_0x505f7d,_0xa29c9f['isNonEmpty'+'String']=function(_0x12a7dd){return _0x3f2946(_0x12a7dd)&&''!==_0x12a7dd;},_0xa29c9f['isDate']=function(_0x549c79){return function(_0x1cfeeb,_0x5ce9e2){try{return _0x1cfeeb instanceof _0x5ce9e2;}catch(_0x2177ae){return!(-0x1*-0x1af5+0x2329+-0x3e1d);}}(_0x549c79,Date)&&function(_0x2f9ea6){return'number'==typeof _0x2f9ea6&&_0x2f9ea6%(-0x1*-0xf1a+0x10ae+-0x1fc7)==0x26b+0x29*-0x4f+0xa3c;}(_0x549c79['getTime']());},_0xa29c9f['isEmptyStr'+'ing']=function(_0x18dcc4){return''===_0x18dcc4||_0x18dcc4 instanceof String&&''===_0x18dcc4['toString']();},_0xa29c9f['isString']=_0x3f2946,_0xa29c9f['isObject']=_0x2d37ed,_0xa29c9f['validate']=function(_0xd9d08f,_0x324aab,_0x443d56){if(_0x505f7d(_0x324aab)||(_0x443d56=_0x324aab,_0x324aab=null),_0x2d37ed(_0x443d56)||(_0x443d56={'Error':'Failed\x20Che'+'ck'}),!_0xd9d08f){if(!_0x324aab)throw new _0x45644d(_0x443d56);_0x324aab(new _0x45644d(_0x443d56));}};},0xc15:_0x3e957d=>{_0x3e957d['exports']='4.1.3';},0x2708:function(_0x5cbfc8,_0x3bef86,_0x516088){'use strict';var _0x270a41,_0x431c07,_0x485aa1,_0x4e712d=this&&this['__createBi'+'nding']||(Object['create']?function(_0x4b335a,_0x7e7989,_0x1ca36f,_0x403230){void(0x9*-0x11b+-0x3*-0xa7+0x3ff*0x2)===_0x403230&&(_0x403230=_0x1ca36f);var _0x4f4794=Object['getOwnProp'+'ertyDescri'+'ptor'](_0x7e7989,_0x1ca36f);_0x4f4794&&!('get'in _0x4f4794?!_0x7e7989['__esModule']:_0x4f4794['writable']||_0x4f4794['configurab'+'le'])||(_0x4f4794={'enumerable':!(-0x75b+0x245a+-0x1cff),'get':function(){return _0x7e7989[_0x1ca36f];}}),Object['defineProp'+'erty'](_0x4b335a,_0x403230,_0x4f4794);}:function(_0x50e56c,_0x596a44,_0x5d567a,_0x46b684){void(-0x161a+0x15d7*0x1+0x43)===_0x46b684&&(_0x46b684=_0x5d567a),_0x50e56c[_0x46b684]=_0x596a44[_0x5d567a];}),_0x26d4c2=this&&this['__setModul'+'eDefault']||(Object['create']?function(_0x1a8ea0,_0x2dba41){Object['defineProp'+'erty'](_0x1a8ea0,'default',{'enumerable':!(0x125*-0x1b+-0x1f96+0x3e7d*0x1),'value':_0x2dba41});}:function(_0x2855a2,_0xf943c0){_0x2855a2['default']=_0xf943c0;}),_0x2bf02a=this&&this['__importSt'+'ar']||function(_0x3f1cd9){if(_0x3f1cd9&&_0x3f1cd9['__esModule'])return _0x3f1cd9;var _0x31793d={};if(null!=_0x3f1cd9){for(var _0x4556e3 in _0x3f1cd9)'default'!==_0x4556e3&&Object['prototype']['hasOwnProp'+'erty']['call'](_0x3f1cd9,_0x4556e3)&&_0x4e712d(_0x31793d,_0x3f1cd9,_0x4556e3);}return _0x26d4c2(_0x31793d,_0x3f1cd9),_0x31793d;},_0x4223d4=this&&this['__awaiter']||function(_0xe3a32f,_0x2af111,_0x34ec57,_0x4cb048){return new(_0x34ec57||(_0x34ec57=Promise))(function(_0xee2e3,_0x338b30){function _0x1a5d47(_0x16a146){try{_0x5f15cc(_0x4cb048['next'](_0x16a146));}catch(_0x5a99ff){_0x338b30(_0x5a99ff);}}function _0x1cb175(_0x33c9d5){try{_0x5f15cc(_0x4cb048['throw'](_0x33c9d5));}catch(_0x6cf6c6){_0x338b30(_0x6cf6c6);}}function _0x5f15cc(_0x21ca52){var _0x276743;_0x21ca52['done']?_0xee2e3(_0x21ca52['value']):(_0x276743=_0x21ca52['value'],_0x276743 instanceof _0x34ec57?_0x276743:new _0x34ec57(function(_0x3055af){_0x3055af(_0x276743);}))['then'](_0x1a5d47,_0x1cb175);}_0x5f15cc((_0x4cb048=_0x4cb048['apply'](_0xe3a32f,_0x2af111||[]))['next']());});};Object['defineProp'+'erty'](_0x3bef86,'__esModule',{'value':!(-0x6d*0x59+0x179b+0xe4a)}),_0x3bef86['MatlabConn'+'ection']=_0x3bef86['LifecycleE'+'ventType']=void(0x2063*-0x1+0x916+0x5*0x4a9);const _0x39a61b=_0x516088(-0x9cf+-0xb78*-0x2+0x7a4),_0x24afa4=_0x516088(0x1abe*-0x1+0x1*0x2c9e+0x966),_0xc38736=_0x2bf02a(_0x516088(-0x10d6+-0x1*-0x1732+-0x26e*-0x1)),_0xfbc5a1=_0x2bf02a(_0x516088(-0x3*0x16d+-0x4*0x44+0xcee)),_0x456b99=_0x2bf02a(_0x516088(0xcfc+-0x2063*-0x1+-0x2a06)),_0xace4be=_0x2bf02a(_0x516088(0x3225+-0x29d5*0x1+0x12c0)),_0x353321=_0x516088(-0x463*0x3+0x1b6+-0x76*-0x2f);var _0x42a26c;!function(_0x25bd44){_0x25bd44[_0x25bd44['CONNECTED']=0x611*0x5+0x1f73+-0xa4c*0x6]='CONNECTED',_0x25bd44[_0x25bd44['DISCONNECT'+'ED']=-0x49d*-0x3+-0x99a+-0x43c]='DISCONNECT'+'ED';}(_0x42a26c=_0x3bef86['LifecycleE'+'ventType']||(_0x3bef86['LifecycleE'+'ventType']={}));const _0x2f221c=null!==(_0x270a41=process['env']['HTTP_PROXY'])&&void(-0xf9b+-0x5*0x1c9+0x1888)!==_0x270a41?_0x270a41:process['env']['http_proxy'],_0x9166c2=null!==(_0x431c07=process['env']['HTTPS_PROX'+'Y'])&&void(0x1bd6+-0x84*0x3+-0x1a4a)!==_0x431c07?_0x431c07:process['env']['https_prox'+'y'],_0x2d93d0=null!==(_0x485aa1=process['env']['NO_PROXY'])&&void(-0x1c92+0x1441*-0x1+-0x1af*-0x1d)!==_0x485aa1?_0x485aa1:process['env']['no_proxy'];delete process['env']['HTTP_PROXY'],delete process['env']['http_proxy'],delete process['env']['HTTPS_PROX'+'Y'],delete process['env']['https_prox'+'y'],delete process['env']['NO_PROXY'],delete process['env']['no_proxy'];class _0x1a6ae7{constructor(){this['_lifecycle'+'Callback']=null,this['_channelId'+'Ct']=-0x21b4+0x1fbf+-0xa7*-0x3;}['close'](){var _0x5ca527;null===(_0x5ca527=this['_client'])||void(0x22fe+0x19ec+-0x3cea)===_0x5ca527||_0x5ca527['disconnect'](),this['_lifecycle'+'Callback']=null;}['getChannel'+'Id'](){return(this['_channelId'+'Ct']++)['toString']();}['publish'](_0x26103c,_0x2d5a9a){this['_client']['publish'](this['_prependCh'+'annel'](_0x26103c),_0x2d5a9a);}['subscribe'](_0x329d1a,_0x13b2db){return this['_client']['subscribe'](this['_prependCh'+'annel'](_0x329d1a),_0x13b2db);}['unsubscrib'+'e'](_0x3debc8){_0x3debc8['cancel']();}['setLifecyc'+'leListener'](_0x23b5ad){this['_lifecycle'+'Callback']=_0x23b5ad;}['onConnecti'+'onSuccess'](){var _0x59195a;null===(_0x59195a=this['_lifecycle'+'Callback'])||void(-0x1914+-0x2594+-0xc88*-0x5)===_0x59195a||_0x59195a['call'](this,_0x42a26c['CONNECTED']);}['onConnecti'+'onFailure'](){var _0x46c4a3;null===(_0x46c4a3=this['_lifecycle'+'Callback'])||void(-0x32c*0x2+-0x4a*-0x5c+-0x1440)===_0x46c4a3||_0x46c4a3['call'](this,_0x42a26c['DISCONNECT'+'ED']);}['setupConne'+'ctionCallb'+'acks'](){this['_client']['on']('transport:'+'up',this['onConnecti'+'onSuccess']['bind'](this)),this['_client']['on']('transport:'+'down',this['onConnecti'+'onFailure']['bind'](this));}['_prependCh'+'annel'](_0x12abe3){return'/matlab'+_0x12abe3;}}_0x3bef86['MatlabConn'+'ection']=_0x1a6ae7;class _0x26f4af extends _0x1a6ae7{constructor(_0x4a1e87){super(),this['_apiKey']=_0x4a1e87;}['initialize'](_0x29d087,_0xc4f0a2){return _0x4223d4(this,void(0x1b*0x133+-0x2547+0x6*0xd1),void(-0x1edd*-0x1+0x1984+-0x3861),function*(){const _0x7a6f5c=yield _0xfbc5a1['readFile'](_0xc4f0a2);_0xc38736['setDefault'+'ResultOrde'+'r']('ipv4first');const _0x476dce='https://lo'+'calhost:'+_0x29d087+('/messagese'+'rvice/asyn'+'c');this['_client']=new _0x353321['Client'](_0x476dce,{'tls':{'ca':_0x7a6f5c}}),this['_client']['setHeader']('mwapikey',this['_apiKey']),this['setupConne'+'ctionCallb'+'acks']();});}}class _0x5966d1 extends _0x1a6ae7{constructor(_0x3c71b6){super(),this['_url']=_0x3c71b6;}['initialize'](){return _0x4223d4(this,void(0x11a3+0x431+-0x15d4),void(-0x1889+0x69a+0x1*0x11ef),function*(){this['_client']=new _0x353321['Client'](this['_url']),this['setupConne'+'ctionCallb'+'acks'](),this['publish']('matlabls/c'+'onnection/'+'startup',{});});}}_0x3bef86['default']=new class{['launchNewM'+'atlab'](_0x741439,_0x5049be,_0x14a07b,_0x3c1d99={}){const _0x2c9ccb=(function(){const _0x13501b='abcdefghij'+'klmnopqrst'+'uvwxyzABCD'+'EFGHIJKLMN'+'OPQRSTUVWX'+'YZ01234567'+'89-._~';let _0x390e67='';for(let _0xbb600d=0x17d3+0x257*-0x6+0x5*-0x1f5;_0xbb600d<-0x1534+0x25*0x56+0xcc6;_0xbb600d++)_0x390e67+=_0x13501b['charAt']((0x180*0x9+-0x1*-0x249f+-0xd*0x3db,_0x24afa4['randomInt'])(-0x199+-0x1*-0x1d53+-0x1b78));return _0x390e67;}()),_0x15c58d={};for(const _0x2433ae in process['env'])_0x2433ae['startsWith']('ELECTRON_')||_0x2433ae['startsWith']('VSCODE_')||(_0x15c58d[_0x2433ae]=process['env'][_0x2433ae]);let _0x11150f;try{const _0x340175=Object['assign'](Object['assign'](Object['assign']({},_0x15c58d),_0x3c1d99),{'MATLAB_LOG_DIR':_0x14a07b,'MWAPIKEY':_0x2c9ccb});null==_0x2f221c&&null==_0x9166c2&&null==_0x2d93d0||(_0x340175['HTTP_PROXY']=_0x2f221c,_0x340175['HTTPS_PROX'+'Y']=_0x9166c2,_0x340175['NO_PROXY']=_0x2d93d0);let _0x2ff253=process['env']['HOME'];if('darwin'===_0x456b99['platform']()&&'arm64'===_0x456b99['arch']()&&'matlab'!==_0x741439){const _0x5f0ebd=_0x741439['split'](_0xace4be['sep']);_0x2ff253=_0x5f0ebd['slice'](-0xd4f+0xa0c+-0x343*-0x1,_0x5f0ebd['length']-(0x229d+-0x16d*-0x5+-0x29bc))['join'](_0xace4be['sep']);}_0x11150f=(0x9b0+0xa1c+-0x13cc,_0x39a61b['spawn'])(_0x741439,_0x5049be,{'cwd':_0x2ff253,'env':_0x340175});}catch(_0x3a2bed){return null;}return{'matlabProcess':_0x11150f,'matlabConnection':new _0x26f4af(_0x2c9ccb)};}['connectToE'+'xistingMat'+'lab'](_0x3581f9){return _0x4223d4(this,void(-0x1e49+0x1a*-0x180+-0x1*-0x4549),void(0xeb6+-0xb*-0x133+0x1*-0x1be7),function*(){return new _0x5966d1(_0x3581f9);});}}();},0xf57:(_0x48e9e5,_0x1edeb8,_0x3600fd)=>{'use strict';_0x3600fd(0x44f3+0x986*-0x6+-0xf*-0x1a1);var _0xfdc12a,_0x43a0b2=_0x3600fd(0x7b9+0x2635+-0x1b5a),_0x115764=_0x3600fd(0x3607+0x1aa1+-0x2f05),_0x5b90ce=_0x3600fd(0x11*0x150+-0x187b+0x1867),_0x4c5d30=_0x3600fd(-0x232c+0x3bb+-0x30c3*-0x1),_0x45cf2a=_0x3600fd(0xba*-0x25+-0x446*0x5+0x3a75),_0x3d31eb=_0x3600fd(0x329a+0xcc3+-0x1c1e),_0x3427a9=_0x3600fd(-0x9b3+0x26cf+-0x11ef*0x1)['Buffer'];function _0x4843ff(_0x2590a9){var _0xad125a=this;_0xad125a['options']=_0x2590a9||{},_0xad125a['proxyOptio'+'ns']=_0xad125a['options']['proxy']||{},_0xad125a['maxSockets']=_0xad125a['options']['maxSockets']||_0x115764['Agent']['defaultMax'+'Sockets'],_0xad125a['requests']=[],_0xad125a['sockets']=[],_0xad125a['on']('free',function(_0x5c0f8f,_0x377c5d,_0x59ccec){for(var _0x525a16=0x1905+0xff2+-0x28f7,_0x305683=_0xad125a['requests']['length'];_0x525a16<_0x305683;++_0x525a16){var _0x511383=_0xad125a['requests'][_0x525a16];if(_0x511383['host']===_0x377c5d&&_0x511383['port']===_0x59ccec)return _0xad125a['requests']['splice'](_0x525a16,-0x3d*-0x6+0x687*-0x2+-0xd*-0xe5),void _0x511383['request']['onSocket'](_0x5c0f8f);}_0x5c0f8f['destroy'](),_0xad125a['removeSock'+'et'](_0x5c0f8f);});}function _0x4cf00a(_0x373471,_0x192d8e){var _0xf50ab8=this;_0x4843ff['prototype']['createSock'+'et']['call'](_0xf50ab8,_0x373471,function(_0x4491b6){var _0x2b92b4=_0x43a0b2['connect'](0x3*0x761+0x13e7+0x2a0a*-0x1,_0x19f0b2({},_0xf50ab8['options'],{'servername':_0x373471['host'],'socket':_0x4491b6}));_0xf50ab8['sockets'][_0xf50ab8['sockets']['indexOf'](_0x4491b6)]=_0x2b92b4,_0x192d8e(_0x2b92b4);});}function _0x19f0b2(_0xaffd92){for(var _0x495639=-0x5a5+-0x3bd*-0xa+-0xfde*0x2,_0x2d3863=arguments['length'];_0x495639<_0x2d3863;++_0x495639){var _0x145636=arguments[_0x495639];if('object'==typeof _0x145636)for(var _0x28fbc4=Object['keys'](_0x145636),_0x140a23=-0x1a16+0x12a*0x5+0x1444,_0x2b4d7b=_0x28fbc4['length'];_0x140a23<_0x2b4d7b;++_0x140a23){var _0x1b2658=_0x28fbc4[_0x140a23];void(-0x2275+0x2*0xbc5+0xaeb)!==_0x145636[_0x1b2658]&&(_0xaffd92[_0x1b2658]=_0x145636[_0x1b2658]);}}return _0xaffd92;}_0x1edeb8['httpOverHt'+'tp']=function(_0x30b230){var _0x3cbb00=new _0x4843ff(_0x30b230);return _0x3cbb00['request']=_0x115764['request'],_0x3cbb00;},_0x1edeb8['httpsOverH'+'ttp']=function(_0x531b90){var _0x26715f=new _0x4843ff(_0x531b90);return _0x26715f['request']=_0x115764['request'],_0x26715f['createSock'+'et']=_0x4cf00a,_0x26715f['defaultPor'+'t']=0xce4+-0x784*0x1+0x137*-0x3,_0x26715f;},_0x1edeb8['httpOverHt'+'tps']=function(_0x17ee40){var _0x26c9a3=new _0x4843ff(_0x17ee40);return _0x26c9a3['request']=_0x5b90ce['request'],_0x26c9a3;},_0x1edeb8['httpsOverH'+'ttps']=function(_0x3fd2a9){var _0x137ee8=new _0x4843ff(_0x3fd2a9);return _0x137ee8['request']=_0x5b90ce['request'],_0x137ee8['createSock'+'et']=_0x4cf00a,_0x137ee8['defaultPor'+'t']=0x2*0x982+0x2436+-0x357f,_0x137ee8;},_0x3d31eb['inherits'](_0x4843ff,_0x4c5d30['EventEmitt'+'er']),_0x4843ff['prototype']['addRequest']=function(_0x2b04f5,_0x3eafdf){var _0x2f7825=this;'string'==typeof _0x3eafdf&&(_0x3eafdf={'host':_0x3eafdf,'port':arguments[0x35*-0x6+-0xb99+0xcd9],'path':arguments[0xa31*0x1+0x7*0x3a9+-0x2c1*0xd]}),_0x2f7825['sockets']['length']>=this['maxSockets']?_0x2f7825['requests']['push']({'host':_0x3eafdf['host'],'port':_0x3eafdf['port'],'request':_0x2b04f5}):_0x2f7825['createConn'+'ection']({'host':_0x3eafdf['host'],'port':_0x3eafdf['port'],'request':_0x2b04f5});},_0x4843ff['prototype']['createConn'+'ection']=function(_0x34a43d){var _0x4ba6de=this;_0x4ba6de['createSock'+'et'](_0x34a43d,function(_0x57169a){function _0x49d3cb(){_0x4ba6de['emit']('free',_0x57169a,_0x34a43d['host'],_0x34a43d['port']);}function _0x111c9b(_0x58f47c){_0x4ba6de['removeSock'+'et'](_0x57169a),_0x57169a['removeList'+'ener']('free',_0x49d3cb),_0x57169a['removeList'+'ener']('close',_0x111c9b),_0x57169a['removeList'+'ener']('agentRemov'+'e',_0x111c9b);}_0x57169a['on']('free',_0x49d3cb),_0x57169a['on']('close',_0x111c9b),_0x57169a['on']('agentRemov'+'e',_0x111c9b),_0x34a43d['request']['onSocket'](_0x57169a);});},_0x4843ff['prototype']['createSock'+'et']=function(_0x5d6c31,_0x39549b){var _0x4d6a88=this,_0x4d044c={};_0x4d6a88['sockets']['push'](_0x4d044c);var _0x299ad0=_0x19f0b2({},_0x4d6a88['proxyOptio'+'ns'],{'method':'CONNECT','path':_0x5d6c31['host']+':'+_0x5d6c31['port'],'agent':!(0xdda+0x913+-0x16ec)});_0x299ad0['proxyAuth']&&(_0x299ad0['headers']=_0x299ad0['headers']||{},_0x299ad0['headers']['Proxy-Auth'+'orization']='Basic\x20'+_0x3427a9['from'](_0x299ad0['proxyAuth'])['toString']('base64')),_0xfdc12a('making\x20CON'+'NECT\x20reque'+'st');var _0x84da53=_0x4d6a88['request'](_0x299ad0);function _0x3c36c7(_0x5a29d3,_0x13a4c1,_0xb3af7d){if(_0x84da53['removeAllL'+'isteners'](),_0x13a4c1['removeAllL'+'isteners'](),-0x1*-0x23e3+0x5*-0x18e+-0x1b55===_0x5a29d3['statusCode'])_0x45cf2a['equal'](_0xb3af7d['length'],-0x1127*-0x2+-0x1b*-0xd9+-0x3931),_0xfdc12a('tunneling\x20'+'connection'+'\x20has\x20estab'+'lished'),_0x4d6a88['sockets'][_0x4d6a88['sockets']['indexOf'](_0x4d044c)]=_0x13a4c1,_0x39549b(_0x13a4c1);else{_0xfdc12a('tunneling\x20'+'socket\x20cou'+'ld\x20not\x20be\x20'+'establishe'+'d,\x20statusC'+'ode=%d',_0x5a29d3['statusCode']);var _0x1a00cc=new Error('tunneling\x20'+'socket\x20cou'+'ld\x20not\x20be\x20'+'establishe'+'d,\x20statusC'+'ode='+_0x5a29d3['statusCode']);_0x1a00cc['code']='ECONNRESET',_0x5d6c31['request']['emit']('error',_0x1a00cc),_0x4d6a88['removeSock'+'et'](_0x4d044c);}}_0x84da53['useChunked'+'EncodingBy'+'Default']=!(-0x6e3+0xf5c+-0x878),_0x84da53['once']('response',function(_0x2ea55e){_0x2ea55e['upgrade']=!(-0x1141+0x13f1+0x8*-0x56);}),_0x84da53['once']('upgrade',function(_0x4daecd,_0x4e3979,_0x35228b){process['nextTick'](function(){_0x3c36c7(_0x4daecd,_0x4e3979,_0x35228b);});}),_0x84da53['once']('connect',_0x3c36c7),_0x84da53['once']('error',function(_0x684eaf){_0x84da53['removeAllL'+'isteners'](),_0xfdc12a('tunneling\x20'+'socket\x20cou'+'ld\x20not\x20be\x20'+'establishe'+'d,\x20cause=%'+'s\x0a',_0x684eaf['message'],_0x684eaf['stack']);var _0x19c3e7=new Error('tunneling\x20'+'socket\x20cou'+'ld\x20not\x20be\x20'+'establishe'+'d,\x20cause='+_0x684eaf['message']);_0x19c3e7['code']='ECONNRESET',_0x5d6c31['request']['emit']('error',_0x19c3e7),_0x4d6a88['removeSock'+'et'](_0x4d044c);}),_0x84da53['end']();},_0x4843ff['prototype']['removeSock'+'et']=function(_0x4974f7){var _0xa57aa4=this['sockets']['indexOf'](_0x4974f7);if(-(-0x8aa+0x13b8+-0x17*0x7b)!==_0xa57aa4){this['sockets']['splice'](_0xa57aa4,0x1*0x1c67+0x215*0x1+-0x1e7b);var _0x20d44a=this['requests']['shift']();_0x20d44a&&this['createConn'+'ection'](_0x20d44a);}},_0xfdc12a=process['env']['NODE_DEBUG']&&/\btunnel\b/['test'](process['env']['NODE_DEBUG'])?function(){var _0x45d15a=Array['prototype']['slice']['call'](arguments);'string'==typeof _0x45d15a[-0x108f+-0x9*-0x1b+-0x24*-0x6f]?_0x45d15a[-0x5f7*0x3+-0x615*0x1+0x17fa]='TUNNEL:\x20'+_0x45d15a[0x2305+-0x4*0x5dd+-0xb91]:_0x45d15a['unshift']('TUNNEL:'),console['error']['apply'](console,_0x45d15a);}:function(){},_0x1edeb8['debug']=_0xfdc12a;},0x4d4:(_0x3bfed2,_0x1352cc)=>{'use strict';_0x1352cc['fromCallba'+'ck']=function(_0x466054){return Object['defineProp'+'erty'](function(){if('function'!=typeof arguments[arguments['length']-(-0x1d3*-0x1+-0x12d4+-0x1102*-0x1)])return new Promise((_0xc2cc76,_0x7de205)=>{arguments[arguments['length']]=(_0x7efa8b,_0xaf6e0a)=>{if(_0x7efa8b)return _0x7de205(_0x7efa8b);_0xc2cc76(_0xaf6e0a);},arguments['length']++,_0x466054['apply'](this,arguments);});_0x466054['apply'](this,arguments);},'name',{'value':_0x466054['name']});},_0x1352cc['fromPromis'+'e']=function(_0x18e0d8){return Object['defineProp'+'erty'](function(){const _0x2d68d2=arguments[arguments['length']-(0x2*0xd6+0x2*-0x11d1+0x21f7)];if('function'!=typeof _0x2d68d2)return _0x18e0d8['apply'](this,arguments);delete arguments[arguments['length']-(-0xb*-0x95+0x7bb*0x5+0x1*-0x2d0d)],arguments['length']--,_0x18e0d8['apply'](this,arguments)['then'](_0x3e534f=>_0x2d68d2(null,_0x3e534f),_0x2d68d2);},'name',{'value':_0x18e0d8['name']});};},0x488:(_0x4deabd,_0x5916a2,_0x58ec53)=>{'use strict';var _0x1b40eb=_0x58ec53(-0xf14*0x1+0x11f6+-0x1*-0x52d),_0x1f8d0b=_0x58ec53(0x1*0x80f+0x359+-0x86*-0x8),_0x5e9928=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,_0x4ec6c1=/[\n\r\t]/g,_0x1b9a22=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,_0x83e663=/:\d+$/,_0x370091=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,_0x1923b4=/^[a-zA-Z]:/;function _0x63ed1(_0x411f6e){return(_0x411f6e||'')['toString']()['replace'](_0x5e9928,'');}var _0x56997f=[['#','hash'],['?','query'],function(_0x57847a,_0x5368eb){return _0x5688d7(_0x5368eb['protocol'])?_0x57847a['replace'](/\\/g,'/'):_0x57847a;},['/','pathname'],['@','auth',-0x1*0x134e+-0x2447+0x3796],[NaN,'host',void(0x73+0x5f1*-0x3+-0x8*-0x22c),0xcc1+-0x744+0x2be*-0x2,-0x10f3*0x1+0x1d6c+-0xc78],[/:(\d*)$/,'port',void(-0x1*0xbb3+-0x1949+0x24fc),-0x2*-0x48f+-0x1*0xf93+0x676],[NaN,'hostname',void(0x255e+0x1d2*-0x12+-0x49a),-0x2576+0x30*-0x5b+0x129*0x2f,0x12ae+-0x3*-0x1ef+-0x187a]],_0x116abf={'hash':0x1,'query':0x1};function _0x57321d(_0xacd38b){var _0x8af2e,_0x2df490=('undefined'!=typeof window?window:'undefined'!=typeof global?global:'undefined'!=typeof self?self:{})['location']||{},_0x3f85fa={},_0x4a15d5=typeof(_0xacd38b=_0xacd38b||_0x2df490);if('blob:'===_0xacd38b['protocol'])_0x3f85fa=new _0x445766(unescape(_0xacd38b['pathname']),{});else{if('string'===_0x4a15d5){for(_0x8af2e in(_0x3f85fa=new _0x445766(_0xacd38b,{}),_0x116abf))delete _0x3f85fa[_0x8af2e];}else{if('object'===_0x4a15d5){for(_0x8af2e in _0xacd38b)_0x8af2e in _0x116abf||(_0x3f85fa[_0x8af2e]=_0xacd38b[_0x8af2e]);void(-0x1680+0x48*0x75+-0xa68)===_0x3f85fa['slashes']&&(_0x3f85fa['slashes']=_0x1b9a22['test'](_0xacd38b['href']));}}}return _0x3f85fa;}function _0x5688d7(_0xabb820){return'file:'===_0xabb820||'ftp:'===_0xabb820||'http:'===_0xabb820||'https:'===_0xabb820||'ws:'===_0xabb820||'wss:'===_0xabb820;}function _0x5b6447(_0x979236,_0x36520f){_0x979236=(_0x979236=_0x63ed1(_0x979236))['replace'](_0x4ec6c1,''),_0x36520f=_0x36520f||{};var _0x35a8b1,_0x41090a=_0x370091['exec'](_0x979236),_0x520f6d=_0x41090a[-0x373*0x4+0xab*-0x1e+0x21d7]?_0x41090a[0x7ff*-0x1+-0xca1+0x14a1]['toLowerCas'+'e']():'',_0x6fabc9=!!_0x41090a[0x255+0xf4a+0x3*-0x5df],_0x3d3bd1=!!_0x41090a[-0x1*-0x17e3+-0x19e0+0x200],_0x409354=0x110c*0x2+0x1*0x31+-0x2249;return _0x6fabc9?_0x3d3bd1?(_0x35a8b1=_0x41090a[-0x216e+0x1272+0x26*0x65]+_0x41090a[-0x19fb+-0x9d*0x1b+0x2a8d]+_0x41090a[-0x1*0x52f+-0x13f*-0x2+0x2b5],_0x409354=_0x41090a[-0x18f1+0x2376+-0xa83]['length']+_0x41090a[-0x188c+-0x1b12+-0x33a1*-0x1]['length']):(_0x35a8b1=_0x41090a[-0x7c7*-0x1+-0x2d0+-0x4f5]+_0x41090a[0x1330+-0x20b*0xa+-0xe*-0x17],_0x409354=_0x41090a[-0x421*-0x1+-0x13bc+0xf9d]['length']):_0x3d3bd1?(_0x35a8b1=_0x41090a[-0xf83*-0x1+-0x3*-0x17b+-0x5*0x3fd]+_0x41090a[-0x7a*0x29+-0xc95*0x2+0x2cb8],_0x409354=_0x41090a[-0x259c+-0x2*-0x905+0x1395]['length']):_0x35a8b1=_0x41090a[0x191*0x5+0xcc6+-0x1497],'file:'===_0x520f6d?_0x409354>=0x1d53*0x1+0x1eb2+-0x3c03&&(_0x35a8b1=_0x35a8b1['slice'](-0x21*0x6b+-0x13bd+-0x218a*-0x1)):_0x5688d7(_0x520f6d)?_0x35a8b1=_0x41090a[0xdb+0x1c97+-0x1d6e]:_0x520f6d?_0x6fabc9&&(_0x35a8b1=_0x35a8b1['slice'](-0x172+-0x1570+0x16e4)):_0x409354>=0x280+0x5*0x54e+0x3*-0x9ac&&_0x5688d7(_0x36520f['protocol'])&&(_0x35a8b1=_0x41090a[-0x39a*0x1+-0x1700+-0x2*-0xd4f]),{'protocol':_0x520f6d,'slashes':_0x6fabc9||_0x5688d7(_0x520f6d),'slashesCount':_0x409354,'rest':_0x35a8b1};}function _0x445766(_0x3517dc,_0x4d971e,_0x9f2810){if(_0x3517dc=(_0x3517dc=_0x63ed1(_0x3517dc))['replace'](_0x4ec6c1,''),!(this instanceof _0x445766))return new _0x445766(_0x3517dc,_0x4d971e,_0x9f2810);var _0x3927c9,_0x48cc9a,_0x8cc607,_0x5c7303,_0x92a846,_0x502db0,_0x1d81d2=_0x56997f['slice'](),_0xf33efa=typeof _0x4d971e,_0x5b177a=this,_0x9f20ab=-0x177*-0x5+-0x501+-0x129*0x2;for('object'!==_0xf33efa&&'string'!==_0xf33efa&&(_0x9f2810=_0x4d971e,_0x4d971e=null),_0x9f2810&&'function'!=typeof _0x9f2810&&(_0x9f2810=_0x1f8d0b['parse']),_0x3927c9=!(_0x48cc9a=_0x5b6447(_0x3517dc||'',_0x4d971e=_0x57321d(_0x4d971e)))['protocol']&&!_0x48cc9a['slashes'],_0x5b177a['slashes']=_0x48cc9a['slashes']||_0x3927c9&&_0x4d971e['slashes'],_0x5b177a['protocol']=_0x48cc9a['protocol']||_0x4d971e['protocol']||'',_0x3517dc=_0x48cc9a['rest'],('file:'===_0x48cc9a['protocol']&&(0x896+-0x1*0x83b+0x1*-0x59!==_0x48cc9a['slashesCou'+'nt']||_0x1923b4['test'](_0x3517dc))||!_0x48cc9a['slashes']&&(_0x48cc9a['protocol']||_0x48cc9a['slashesCou'+'nt']<0xfd4+-0x2675+0x5*0x487||!_0x5688d7(_0x5b177a['protocol'])))&&(_0x1d81d2[0x23b*-0x3+-0x4*-0x166+0x11c]=[/(.*)/,'pathname']);_0x9f20ab<_0x1d81d2['length'];_0x9f20ab++)'function'!=typeof(_0x5c7303=_0x1d81d2[_0x9f20ab])?(_0x8cc607=_0x5c7303[0x1*0x1f34+0x1bce+-0x3b02],_0x502db0=_0x5c7303[-0x8ff*-0x2+0x1*-0x2239+0x40f*0x4],_0x8cc607!=_0x8cc607?_0x5b177a[_0x502db0]=_0x3517dc:'string'==typeof _0x8cc607?~(_0x92a846='@'===_0x8cc607?_0x3517dc['lastIndexO'+'f'](_0x8cc607):_0x3517dc['indexOf'](_0x8cc607))&&('number'==typeof _0x5c7303[-0x2*-0x44d+-0x1f91+0x16f9*0x1]?(_0x5b177a[_0x502db0]=_0x3517dc['slice'](0x1280+-0x1ed*-0xf+-0x7*0x6c5,_0x92a846),_0x3517dc=_0x3517dc['slice'](_0x92a846+_0x5c7303[-0x30*-0x99+0x3e3+-0x2091])):(_0x5b177a[_0x502db0]=_0x3517dc['slice'](_0x92a846),_0x3517dc=_0x3517dc['slice'](0x2*-0xa3f+0x14e*0xd+0x388,_0x92a846))):(_0x92a846=_0x8cc607['exec'](_0x3517dc))&&(_0x5b177a[_0x502db0]=_0x92a846[0x2*0x6eb+0x2*0x1058+-0x2e85],_0x3517dc=_0x3517dc['slice'](0x2da+0x6c1+-0x99b,_0x92a846['index'])),_0x5b177a[_0x502db0]=_0x5b177a[_0x502db0]||_0x3927c9&&_0x5c7303[-0x1a33+-0xef5+0x292b]&&_0x4d971e[_0x502db0]||'',_0x5c7303[0xb3a+0x1*-0x1dab+-0xe1*-0x15]&&(_0x5b177a[_0x502db0]=_0x5b177a[_0x502db0]['toLowerCas'+'e']())):_0x3517dc=_0x5c7303(_0x3517dc,_0x5b177a);_0x9f2810&&(_0x5b177a['query']=_0x9f2810(_0x5b177a['query'])),_0x3927c9&&_0x4d971e['slashes']&&'/'!==_0x5b177a['pathname']['charAt'](-0x1898+-0x373*0x5+0x29d7)&&(''!==_0x5b177a['pathname']||''!==_0x4d971e['pathname'])&&(_0x5b177a['pathname']=function(_0x6fe0b3,_0x3d8c95){if(''===_0x6fe0b3)return _0x3d8c95;for(var _0x2a3add=(_0x3d8c95||'/')['split']('/')['slice'](-0x1a39+-0x97*-0x1+-0xc1*-0x22,-(-0x12c1+0x4*0x739+-0xa22*0x1))['concat'](_0x6fe0b3['split']('/')),_0x1444fe=_0x2a3add['length'],_0x26a986=_0x2a3add[_0x1444fe-(0x194b+-0xb5f+0x1*-0xdeb)],_0x510976=!(0x7*-0x29b+0x2af+-0x239*-0x7),_0x5bcf17=-0x870+-0x7d4+0x1044;_0x1444fe--;)'.'===_0x2a3add[_0x1444fe]?_0x2a3add['splice'](_0x1444fe,-0xee9+-0x1*0x210a+0x2*0x17fa):'..'===_0x2a3add[_0x1444fe]?(_0x2a3add['splice'](_0x1444fe,0x776+-0x28b+-0x4ea),_0x5bcf17++):_0x5bcf17&&(0x3*0x236+-0x6*0x20b+-0x1*-0x5a0===_0x1444fe&&(_0x510976=!(0x2100+-0x65+-0x209b)),_0x2a3add['splice'](_0x1444fe,0x3*-0x1af+-0x790+0xc9e),_0x5bcf17--);return _0x510976&&_0x2a3add['unshift'](''),'.'!==_0x26a986&&'..'!==_0x26a986||_0x2a3add['push'](''),_0x2a3add['join']('/');}(_0x5b177a['pathname'],_0x4d971e['pathname'])),'/'!==_0x5b177a['pathname']['charAt'](-0x2bd*0x1+-0x9af*0x3+0x1fca)&&_0x5688d7(_0x5b177a['protocol'])&&(_0x5b177a['pathname']='/'+_0x5b177a['pathname']),_0x1b40eb(_0x5b177a['port'],_0x5b177a['protocol'])||(_0x5b177a['host']=_0x5b177a['hostname'],_0x5b177a['port']=''),_0x5b177a['username']=_0x5b177a['password']='',_0x5b177a['auth']&&(~(_0x92a846=_0x5b177a['auth']['indexOf'](':'))?(_0x5b177a['username']=_0x5b177a['auth']['slice'](-0x655+0x22c2*-0x1+0x2917,_0x92a846),_0x5b177a['username']=encodeURIComponent(decodeURIComponent(_0x5b177a['username'])),_0x5b177a['password']=_0x5b177a['auth']['slice'](_0x92a846+(0x2489+0x235*0xc+-0x3f04)),_0x5b177a['password']=encodeURIComponent(decodeURIComponent(_0x5b177a['password']))):_0x5b177a['username']=encodeURIComponent(decodeURIComponent(_0x5b177a['auth'])),_0x5b177a['auth']=_0x5b177a['password']?_0x5b177a['username']+':'+_0x5b177a['password']:_0x5b177a['username']),_0x5b177a['origin']='file:'!==_0x5b177a['protocol']&&_0x5688d7(_0x5b177a['protocol'])&&_0x5b177a['host']?_0x5b177a['protocol']+'//'+_0x5b177a['host']:'null',_0x5b177a['href']=_0x5b177a['toString']();}_0x445766['prototype']={'set':function(_0x4bdec5,_0xafd282,_0x5d8114){var _0x25d7a1=this;switch(_0x4bdec5){case'query':'string'==typeof _0xafd282&&_0xafd282['length']&&(_0xafd282=(_0x5d8114||_0x1f8d0b['parse'])(_0xafd282)),_0x25d7a1[_0x4bdec5]=_0xafd282;break;case'port':_0x25d7a1[_0x4bdec5]=_0xafd282,_0x1b40eb(_0xafd282,_0x25d7a1['protocol'])?_0xafd282&&(_0x25d7a1['host']=_0x25d7a1['hostname']+':'+_0xafd282):(_0x25d7a1['host']=_0x25d7a1['hostname'],_0x25d7a1[_0x4bdec5]='');break;case'hostname':_0x25d7a1[_0x4bdec5]=_0xafd282,_0x25d7a1['port']&&(_0xafd282+=':'+_0x25d7a1['port']),_0x25d7a1['host']=_0xafd282;break;case'host':_0x25d7a1[_0x4bdec5]=_0xafd282,_0x83e663['test'](_0xafd282)?(_0xafd282=_0xafd282['split'](':'),_0x25d7a1['port']=_0xafd282['pop'](),_0x25d7a1['hostname']=_0xafd282['join'](':')):(_0x25d7a1['hostname']=_0xafd282,_0x25d7a1['port']='');break;case'protocol':_0x25d7a1['protocol']=_0xafd282['toLowerCas'+'e'](),_0x25d7a1['slashes']=!_0x5d8114;break;case'pathname':case'hash':if(_0xafd282){var _0x199c80='pathname'===_0x4bdec5?'/':'#';_0x25d7a1[_0x4bdec5]=_0xafd282['charAt'](-0x2*-0x11c5+0x1*0x2207+-0x4591)!==_0x199c80?_0x199c80+_0xafd282:_0xafd282;}else _0x25d7a1[_0x4bdec5]=_0xafd282;break;case'username':case'password':_0x25d7a1[_0x4bdec5]=encodeURIComponent(_0xafd282);break;case'auth':var _0x3baf82=_0xafd282['indexOf'](':');~_0x3baf82?(_0x25d7a1['username']=_0xafd282['slice'](-0x2251+-0xf7*-0x1+0x215a,_0x3baf82),_0x25d7a1['username']=encodeURIComponent(decodeURIComponent(_0x25d7a1['username'])),_0x25d7a1['password']=_0xafd282['slice'](_0x3baf82+(0x8ba+0x56*-0x72+0x1d93)),_0x25d7a1['password']=encodeURIComponent(decodeURIComponent(_0x25d7a1['password']))):_0x25d7a1['username']=encodeURIComponent(decodeURIComponent(_0xafd282));}for(var _0x1e163a=-0x4d5*-0x7+-0x944+0x1*-0x188f;_0x1e163a<_0x56997f['length'];_0x1e163a++){var _0x3e8a1b=_0x56997f[_0x1e163a];_0x3e8a1b[-0x8d6*-0x1+0xc03+0x14d5*-0x1]&&(_0x25d7a1[_0x3e8a1b[-0x106*0x12+0xa98+0x191*0x5]]=_0x25d7a1[_0x3e8a1b[0x1b7b+0x224b*-0x1+0x6d1]]['toLowerCas'+'e']());}return _0x25d7a1['auth']=_0x25d7a1['password']?_0x25d7a1['username']+':'+_0x25d7a1['password']:_0x25d7a1['username'],_0x25d7a1['origin']='file:'!==_0x25d7a1['protocol']&&_0x5688d7(_0x25d7a1['protocol'])&&_0x25d7a1['host']?_0x25d7a1['protocol']+'//'+_0x25d7a1['host']:'null',_0x25d7a1['href']=_0x25d7a1['toString'](),_0x25d7a1;},'toString':function(_0x3a2780){_0x3a2780&&'function'==typeof _0x3a2780||(_0x3a2780=_0x1f8d0b['stringify']);var _0x3fb7fb,_0x4c7674=this,_0x371619=_0x4c7674['host'],_0x37d55d=_0x4c7674['protocol'];_0x37d55d&&':'!==_0x37d55d['charAt'](_0x37d55d['length']-(0xb15*0x2+-0x2b1*0xd+-0x1*-0xcd4))&&(_0x37d55d+=':');var _0x159e80=_0x37d55d+(_0x4c7674['protocol']&&_0x4c7674['slashes']||_0x5688d7(_0x4c7674['protocol'])?'//':'');return _0x4c7674['username']?(_0x159e80+=_0x4c7674['username'],_0x4c7674['password']&&(_0x159e80+=':'+_0x4c7674['password']),_0x159e80+='@'):_0x4c7674['password']?(_0x159e80+=':'+_0x4c7674['password'],_0x159e80+='@'):'file:'!==_0x4c7674['protocol']&&_0x5688d7(_0x4c7674['protocol'])&&!_0x371619&&'/'!==_0x4c7674['pathname']&&(_0x159e80+='@'),(':'===_0x371619[_0x371619['length']-(0x13c*-0x8+0x1f06+-0x1525)]||_0x83e663['test'](_0x4c7674['hostname'])&&!_0x4c7674['port'])&&(_0x371619+=':'),_0x159e80+=_0x371619+_0x4c7674['pathname'],(_0x3fb7fb='object'==typeof _0x4c7674['query']?_0x3a2780(_0x4c7674['query']):_0x4c7674['query'])&&(_0x159e80+='?'!==_0x3fb7fb['charAt'](-0x93a*0x3+-0x171f+-0x32cd*-0x1)?'?'+_0x3fb7fb:_0x3fb7fb),_0x4c7674['hash']&&(_0x159e80+=_0x4c7674['hash']),_0x159e80;}},_0x445766['extractPro'+'tocol']=_0x5b6447,_0x445766['location']=_0x57321d,_0x445766['trimLeft']=_0x63ed1,_0x445766['qs']=_0x1f8d0b,_0x4deabd['exports']=_0x445766;},0x863:(_0x5cabe2,_0x56581b,_0x5cddc4)=>{'use strict';var _0x53e114=_0x5cddc4(0x234e+0xbcc+-0x27f7),_0x4a5ac3=_0x5cddc4(-0x39e+-0x18b6+0x2749),_0x4287f0=_0x5cddc4(-0x2699*-0x1+-0x43*-0x8e+-0x4e*0xcf),_0x310d58={'client':function(_0x7e87c2,_0x2c800a){return void(-0x2368+-0x129f+0x3607)===(_0x2c800a=_0x2c800a||{})['masking']&&(_0x2c800a['masking']=!(-0x823+-0xcb9*0x1+0x14dc)),new _0x4a5ac3(_0x7e87c2,_0x2c800a);},'server':function(_0x29107f){return void(-0x1d9c+-0x606+0x23a2)===(_0x29107f=_0x29107f||{})['requireMas'+'king']&&(_0x29107f['requireMas'+'king']=!(-0xd*0x75+0x904+-0x313)),new _0x4287f0(_0x29107f);},'http':function(){return _0x4287f0['http']['apply'](_0x4287f0,arguments);},'isSecureRequest':function(_0x1f56d2){return _0x4287f0['isSecureRe'+'quest'](_0x1f56d2);},'isWebSocket':function(_0x496e65){return _0x53e114['isWebSocke'+'t'](_0x496e65);},'validateOptions':function(_0x30b46a,_0x13985e){_0x53e114['validateOp'+'tions'](_0x30b46a,_0x13985e);}};_0x5cabe2['exports']=_0x310d58;},0x723:(_0xd06d09,_0x17d0da,_0x5c979c)=>{'use strict';var _0x23ab05=_0x5c979c(0x1*-0x533+-0xb*-0x29b+-0x11*0xb9)['Buffer'],_0x2a0100=_0x5c979c(-0x8*-0x130+-0x2*0xfcb+0x2768)['EventEmitt'+'er'],_0x2bcbb6=_0x5c979c(0x1*0x1fa1+0x4354+-0x3fb6),_0x3f17d6=_0x5c979c(0x5*0x28b+0x1bcd+0x1e*-0xc2),_0x3159c0=_0x5c979c(-0x3ae*-0x2+0x11ed*-0x1+-0x155f*-0x1),_0x1a190c=_0x5c979c(-0x4c6+0x3*0x503+-0x1843*-0x1),_0x15f5c3=function(_0x46a52f,_0x5500cc,_0x5855dc){_0x2a0100['call'](this),_0x15f5c3['validateOp'+'tions'](_0x5855dc||{},['maxLength','masking','requireMas'+'king','protocols']),this['_request']=_0x46a52f,this['_reader']=new _0x1a190c(),this['_options']=_0x5855dc||{},this['_maxLength']=this['_options']['maxLength']||this['MAX_LENGTH'],this['_headers']=new _0x3159c0(),this['__queue']=[],this['readyState']=0x1b7d+-0x1964+-0x219,this['url']=_0x5500cc,this['io']=new _0x3f17d6['IO'](this),this['messages']=new _0x3f17d6['Messages'](this),this['_bindEvent'+'Listeners']();};_0x2bcbb6['inherits'](_0x15f5c3,_0x2a0100),_0x15f5c3['isWebSocke'+'t']=function(_0x5cc19f){var _0x41aa66=_0x5cc19f['headers']['connection']||'',_0x5c6cbe=_0x5cc19f['headers']['upgrade']||'';return'GET'===_0x5cc19f['method']&&_0x41aa66['toLowerCas'+'e']()['split'](/ *, */)['indexOf']('upgrade')>=-0x263c+-0x1*0x243d+-0xf*-0x4f7&&'websocket'===_0x5c6cbe['toLowerCas'+'e']();},_0x15f5c3['validateOp'+'tions']=function(_0x191878,_0x1b11e1){for(var _0x55f1ee in _0x191878)if(_0x1b11e1['indexOf'](_0x55f1ee)<0xfdf+0xd5b+-0x1d3a)throw new Error('Unrecogniz'+'ed\x20option:'+'\x20'+_0x55f1ee);};var _0x4ee146={'MAX_LENGTH':0x3ffffff,'STATES':['connecting','open','closing','closed'],'_bindEventListeners':function(){var _0x47182a=this;this['messages']['on']('error',function(){}),this['on']('message',function(_0x4f5340){var _0x294d8b=_0x47182a['messages'];_0x294d8b['readable']&&_0x294d8b['emit']('data',_0x4f5340['data']);}),this['on']('error',function(_0x4bd586){var _0x337101=_0x47182a['messages'];_0x337101['readable']&&_0x337101['emit']('error',_0x4bd586);}),this['on']('close',function(){var _0x5851c1=_0x47182a['messages'];_0x5851c1['readable']&&(_0x5851c1['readable']=_0x5851c1['writable']=!(0x12e1+-0x2531*-0x1+-0x1cf*0x1f),_0x5851c1['emit']('end'));});},'getState':function(){return this['STATES'][this['readyState']]||null;},'addExtension':function(_0x11c3a2){return!(0x1b15+0x1cb8+-0x37cc);},'setHeader':function(_0x501aa7,_0x15a993){return!(this['readyState']>-0x2297+0x30*0x63+-0xb*-0x175||(this['_headers']['set'](_0x501aa7,_0x15a993),-0x15dd+0x6*-0x59e+-0x1*-0x3791));},'start':function(){if(-0xbd7*0x1+0x17d9+0x1d*-0x6a!==this['readyState'])return!(-0x2645+0xc2e*0x2+0xdea*0x1);if(!_0x15f5c3['isWebSocke'+'t'](this['_request']))return this['_failHands'+'hake'](new Error('Not\x20a\x20WebS'+'ocket\x20requ'+'est'));var _0x330e8e;try{_0x330e8e=this['_handshake'+'Response']();}catch(_0x146900){return this['_failHands'+'hake'](_0x146900);}return this['_write'](_0x330e8e),-(-0x1fab+-0x3*-0x4ca+-0x2*-0x8a7)!==this['_stage']&&this['_open'](),!(0x4a1+-0x2*0x917+-0x1*-0xd8d);},'_failHandshake':function(_0x12c2d5){var _0x2e2928=new _0x3159c0();return _0x2e2928['set']('Content-Ty'+'pe','text/plain'),_0x2e2928['set']('Content-Le'+'ngth',_0x23ab05['byteLength'](_0x12c2d5['message'],'utf8')),_0x2e2928=['HTTP/1.1\x204'+'00\x20Bad\x20Req'+'uest',_0x2e2928['toString'](),_0x12c2d5['message']],this['_write'](_0x23ab05['from'](_0x2e2928['join']('\x0d\x0a'),'utf8')),this['_fail']('protocol_e'+'rror',_0x12c2d5['message']),!(-0x2*0x566+0x3d7*0x1+0x6f6);},'text':function(_0x5d0820){return this['frame'](_0x5d0820);},'binary':function(_0x487d44){return!(0x103e+-0x4df*0x6+0xcfd);},'ping':function(){return!(-0x1*0x52a+0xa7c+-0x551);},'pong':function(){return!(-0x2353+0x461*0x5+0xd6f);},'close':function(_0x265f9e,_0x30c490){return 0x49*0x3+-0x220a+0x2130===this['readyState']&&(this['readyState']=0x25bc+-0x1*-0x303+0x42*-0x9e,this['emit']('close',new _0x15f5c3['CloseEvent'](null,null)),!(0xf43+0x11*0x15a+-0x263d));},'_open':function(){this['readyState']=-0x1ce8+-0x1629+0x3312,this['__queue']['forEach'](function(_0x46c6ea){this['frame']['apply'](this,_0x46c6ea);},this),this['__queue']=[],this['emit']('open',new _0x15f5c3['OpenEvent']());},'_queue':function(_0x422a15){return this['__queue']['push'](_0x422a15),!(0x1493+0x123*-0x10+-0x2f*0xd);},'_write':function(_0x24961f){var _0x21e059=this['io'];_0x21e059['readable']&&_0x21e059['emit']('data',_0x24961f);},'_fail':function(_0x26d148,_0x1b0b0e){this['readyState']=-0x8cc+-0x104c+0x66*0x3f,this['emit']('error',new Error(_0x1b0b0e)),this['close']();}};for(var _0x5b572d in _0x4ee146)_0x15f5c3['prototype'][_0x5b572d]=_0x4ee146[_0x5b572d];_0x15f5c3['ConnectEve'+'nt']=function(){},_0x15f5c3['OpenEvent']=function(){},_0x15f5c3['CloseEvent']=function(_0x3ff110,_0x28a07a){this['code']=_0x3ff110,this['reason']=_0x28a07a;},_0x15f5c3['MessageEve'+'nt']=function(_0x60c877){this['data']=_0x60c877;},_0x15f5c3['PingEvent']=function(_0x42f6db){this['data']=_0x42f6db;},_0x15f5c3['PongEvent']=function(_0x1d72a){this['data']=_0x1d72a;},_0xd06d09['exports']=_0x15f5c3;},0xaf5:(_0x5e6a31,_0x4800a4,_0x65698c)=>{'use strict';var _0x14451e=_0x65698c(-0x18c7*-0x1+-0x12*0x20b+-0x172c*-0x1)['Buffer'],_0x14aa65=_0x65698c(0x1*-0x31c7+0xb86*-0x1+0x5893),_0x54ac4d=_0x65698c(0x1921*0x1+0x1b47*0x1+-0x1900),_0x96509b=_0x65698c(-0x2c71+-0x2322*0x1+0x1*0x72d2),_0x8fbd99=_0x65698c(-0x1b81+0x8e9*-0x1+0x3fb9*0x1),_0x57b7d4=_0x65698c(0x4e1*0x1+-0x510+0x752),_0x14ee1f=_0x65698c(-0x2dc7+0x3559+0x1962),_0x505532=_0x65698c(-0x6*0x54a+0xfb5+0x1fa3),_0x2bb353=function(_0x3ae3b4,_0x4cdfaa){this['version']='hybi-'+_0x14ee1f['VERSION'],_0x14ee1f['call'](this,null,_0x3ae3b4,_0x4cdfaa),this['readyState']=-(0xb80+-0x1b8e+0x100f*0x1),this['_key']=_0x2bb353['generateKe'+'y'](),this['_accept']=_0x14ee1f['generateAc'+'cept'](this['_key']),this['_http']=new _0x8fbd99('response');var _0x151cf9=_0x54ac4d['parse'](this['url']),_0x45eb57=_0x151cf9['auth']&&_0x14451e['from'](_0x151cf9['auth'],'utf8')['toString']('base64');if(this['VALID_PROT'+'OCOLS']['indexOf'](_0x151cf9['protocol'])<0x1*-0x1891+-0x1065+0x62*0x6b)throw new Error(this['url']+('\x20is\x20not\x20a\x20'+'valid\x20WebS'+'ocket\x20URL'));this['_pathname']=(_0x151cf9['pathname']||'/')+(_0x151cf9['search']||''),this['_headers']['set']('Host',_0x151cf9['host']),this['_headers']['set']('Upgrade','websocket'),this['_headers']['set']('Connection','Upgrade'),this['_headers']['set']('Sec-WebSoc'+'ket-Key',this['_key']),this['_headers']['set']('Sec-WebSoc'+'ket-Versio'+'n',_0x14ee1f['VERSION']),this['_protocols']['length']>0x159c+-0x16*-0xf1+-0x2a52&&this['_headers']['set']('Sec-WebSoc'+'ket-Protoc'+'ol',this['_protocols']['join'](',\x20')),_0x45eb57&&this['_headers']['set']('Authorizat'+'ion','Basic\x20'+_0x45eb57);};_0x96509b['inherits'](_0x2bb353,_0x14ee1f),_0x2bb353['generateKe'+'y']=function(){return _0x14aa65['randomByte'+'s'](0x15*-0xf+0xd62*0x1+-0x1*0xc17)['toString']('base64');};var _0x334d2b={'VALID_PROTOCOLS':['ws:','wss:'],'proxy':function(_0x166a98,_0x133628){return new _0x505532(this,_0x166a98,_0x133628);},'start':function(){return-(-0x6d3+0x71f*-0x3+-0x1*-0x1c31)===this['readyState']&&(this['_write'](this['_handshake'+'Request']()),this['readyState']=-0xa6*-0x33+0x80*0x4d+-0x4792,!(-0x1780+0x2074*0x1+-0x8f4));},'parse':function(_0x2f33c1){if(-0x1f3a*-0x1+0x24b1+-0x21f4*0x2!==this['readyState']){if(this['readyState']>-0x67c*0x1+-0x12e3+-0xf*-0x1b1)return _0x14ee1f['prototype']['parse']['call'](this,_0x2f33c1);this['_http']['parse'](_0x2f33c1),this['_http']['isComplete']()&&(this['_validateH'+'andshake'](),-0x2672+0x16eb+0x3*0x52e!==this['readyState']&&(this['_open'](),this['parse'](this['_http']['body'])));}},'_handshakeRequest':function(){var _0x29dabf=this['_extension'+'s']['generateOf'+'fer']();_0x29dabf&&this['_headers']['set']('Sec-WebSoc'+'ket-Extens'+'ions',_0x29dabf);var _0x4f700b=['GET\x20'+this['_pathname']+'\x20HTTP/1.1',this['_headers']['toString'](),''];return _0x14451e['from'](_0x4f700b['join']('\x0d\x0a'),'utf8');},'_failHandshake':function(_0x116ff6){_0x116ff6='Error\x20duri'+'ng\x20WebSock'+'et\x20handsha'+'ke:\x20'+_0x116ff6,this['readyState']=0xe94+-0x1*-0x22d0+-0x3161,this['emit']('error',new Error(_0x116ff6)),this['emit']('close',new _0x57b7d4['CloseEvent'](this['ERRORS']['protocol_e'+'rror'],_0x116ff6));},'_validateHandshake':function(){if(this['statusCode']=this['_http']['statusCode'],this['headers']=this['_http']['headers'],this['_http']['error'])return this['_failHands'+'hake'](this['_http']['error']['message']);if(0x38b*0x1+-0x779+0x453!==this['_http']['statusCode'])return this['_failHands'+'hake']('Unexpected'+'\x20response\x20'+'code:\x20'+this['_http']['statusCode']);var _0x3e2f04=this['_http']['headers'],_0x11f9fb=_0x3e2f04['upgrade']||'',_0x5de591=_0x3e2f04['connection']||'',_0x2b0693=_0x3e2f04['sec-websoc'+'ket-accept']||'',_0x1b5204=_0x3e2f04['sec-websoc'+'ket-protoc'+'ol']||'';if(''===_0x11f9fb)return this['_failHands'+'hake']('\x27Upgrade\x27\x20'+'header\x20is\x20'+'missing');if('websocket'!==_0x11f9fb['toLowerCas'+'e']())return this['_failHands'+'hake']('\x27Upgrade\x27\x20'+'header\x20val'+'ue\x20is\x20not\x20'+'\x27WebSocket'+'\x27');if(''===_0x5de591)return this['_failHands'+'hake']('\x27Connectio'+'n\x27\x20header\x20'+'is\x20missing');if('upgrade'!==_0x5de591['toLowerCas'+'e']())return this['_failHands'+'hake']('\x27Connectio'+'n\x27\x20header\x20'+'value\x20is\x20n'+'ot\x20\x27Upgrad'+'e\x27');if(_0x2b0693!==this['_accept'])return this['_failHands'+'hake']('Sec-WebSoc'+'ket-Accept'+'\x20mismatch');if(this['protocol']=null,''!==_0x1b5204){if(this['_protocols']['indexOf'](_0x1b5204)<-0x18e7+-0x5c+0x1943)return this['_failHands'+'hake']('Sec-WebSoc'+'ket-Protoc'+'ol\x20mismatc'+'h');this['protocol']=_0x1b5204;}try{this['_extension'+'s']['activate'](this['headers']['sec-websoc'+'ket-extens'+'ions']);}catch(_0x265b24){return this['_failHands'+'hake'](_0x265b24['message']);}}};for(var _0x2a3262 in _0x334d2b)_0x2bb353['prototype'][_0x2a3262]=_0x334d2b[_0x2a3262];_0x5e6a31['exports']=_0x2bb353;},0xc9f:(_0x2591f7,_0x4daa11,_0x4095f9)=>{'use strict';var _0x554e9a=_0x4095f9(0x2049+-0xe00+-0x16c*0x5)['Buffer'],_0x2d6f7a=_0x4095f9(-0x2*-0xdbd+0x25b5+-0x3a0c),_0x61f197=function(_0x5e1b15,_0x23619f,_0xbc8e63){_0x2d6f7a['apply'](this,arguments),this['_stage']=-0x161b*-0x1+-0x1133+-0x4e8,this['version']='hixie-75',this['_headers']['set']('Upgrade','WebSocket'),this['_headers']['set']('Connection','Upgrade'),this['_headers']['set']('WebSocket-'+'Origin',this['_request']['headers']['origin']),this['_headers']['set']('WebSocket-'+'Location',this['url']);};_0x4095f9(0x321a+0x1f62+-0x2e3d)['inherits'](_0x61f197,_0x2d6f7a);var _0x3156ad={'close':function(){return 0x791*-0x5+0x1f44*-0x1+0x451c!==this['readyState']&&(this['readyState']=-0x4aa*-0x1+-0x1f57+0x2*0xd58,this['emit']('close',new _0x2d6f7a['CloseEvent'](null,null)),!(0x1250+0x2*-0x14f+-0xfb2*0x1));},'parse':function(_0x4ff3a7){this['readyState']>0x7d6*-0x1+-0x1e47+0x261e||(this['_reader']['put'](_0x4ff3a7),this['_reader']['eachByte'](function(_0x3e9d5d){var _0x243b9f;switch(this['_stage']){case-(0x1*0xd0a+0xb03+0x144*-0x13):this['_body']['push'](_0x3e9d5d),this['_sendHands'+'hakeBody']();break;case 0xc73+0x21cf+-0xbf*0x3e:this['_parseLead'+'ingByte'](_0x3e9d5d);break;case-0x1297*-0x1+-0xffa+-0x29c:if(this['_length']=(-0x158*0x1a+-0x80e*-0x4+0x337&_0x3e9d5d)+(-0x2472+-0x493*-0x3+0x1739)*this['_length'],this['_closing']&&0x10e*-0x7+0x1*-0x128d+-0x8a5*-0x3===this['_length'])return this['close']();-0x94a+0x170c+-0x2*0x6a1&~_0x3e9d5d&&(-0x9e7+0x32a+0x6bd===this['_length']?this['_stage']=-0x10fd*-0x2+-0x2*-0x464+-0x2ac2:(this['_skipped']=0xf3*0x27+0x15d4+-0x3ad9,this['_stage']=-0x5*-0x5f+0x233*-0xa+0x1*0x1425));break;case-0x1*0x2d3+-0x3*-0x58f+0x2*-0x6ec:if(0x3*0xc35+0x7*0x2ae+-0x3662===_0x3e9d5d)this['_stage']=0x1c90+-0x2*-0xee3+-0x3a56,_0x243b9f=_0x554e9a['from'](this['_buffer'])['toString']('utf8',0xd42+-0x2c3*-0x2+0x4b2*-0x4,this['_buffer']['length']),this['emit']('message',new _0x2d6f7a['MessageEve'+'nt'](_0x243b9f));else{if(this['_length'])this['_skipped']+=-0xee0+-0xec5+0x1da6,this['_skipped']===this['_length']&&(this['_stage']=0x1*-0x12e7+-0xfda*0x1+0x22c1);else{if(this['_buffer']['push'](_0x3e9d5d),this['_buffer']['length']>this['_maxLength'])return this['close']();}}}},this));},'frame':function(_0x1fe302){if(0x21d6+-0x1d*-0xbc+0x1b91*-0x2===this['readyState'])return this['_queue']([_0x1fe302]);if(this['readyState']>0x1e8*0x7+-0x3*-0xd1+-0x5e*0x2b)return!(-0x1623+-0xfbd+0x25e1);'string'!=typeof _0x1fe302&&(_0x1fe302=_0x1fe302['toString']());var _0x51aa5b=_0x554e9a['byteLength'](_0x1fe302),_0x5d7e6a=_0x554e9a['allocUnsaf'+'e'](_0x51aa5b+(0x594+-0x3*0xbb1+-0xd*-0x245));return _0x5d7e6a[-0x1*-0x1120+-0x138*0x1e+0x1370]=0xe51*-0x1+-0x1c8b*0x1+0x2*0x156e,_0x5d7e6a['write'](_0x1fe302,0x148e+0x57*0x3d+0x4*-0xa52),_0x5d7e6a[_0x5d7e6a['length']-(-0x2159+-0x5*-0x3af+0x1*0xeef)]=-0x110e+-0x4*-0x1e9+-0x41*-0x29,this['_write'](_0x5d7e6a),!(-0xe1b+0x1ee4+-0x10c9);},'_handshakeResponse':function(){var _0x586999=['HTTP/1.1\x201'+'01\x20Web\x20Soc'+'ket\x20Protoc'+'ol\x20Handsha'+'ke',this['_headers']['toString'](),''];return _0x554e9a['from'](_0x586999['join']('\x0d\x0a'),'utf8');},'_parseLeadingByte':function(_0x353ac6){-0x9*0x1aa+-0xd3b*0x1+0x1cb5&~_0x353ac6?(delete this['_length'],delete this['_skipped'],this['_buffer']=[],this['_stage']=-0x17bd+0x1*0x1c4f+-0x490):(this['_length']=-0xfd8+0x1*0x314+0xcc4,this['_stage']=-0x2014+0x20a0+-0x8b*0x1);}};for(var _0x5c3875 in _0x3156ad)_0x61f197['prototype'][_0x5c3875]=_0x3156ad[_0x5c3875];_0x2591f7['exports']=_0x61f197;},0x1922:(_0x268381,_0x49b2ad,_0x2fd18e)=>{'use strict';var _0x557898=_0x2fd18e(-0x2437+0x5*0x784+0x9d0)['Buffer'],_0x5c4bb3=_0x2fd18e(-0x2523*0x1+-0x1ca8+0x48ee),_0x1c3a21=_0x2fd18e(-0x276+-0x1*-0x2316+0x6ab*-0x3),_0x20f124=_0x2fd18e(-0x1194+0x1416+0x18c4),_0x1e7eea=_0x2fd18e(0x1*0x2836+0x10c9*-0x2+-0x3*-0x989),_0x182ede=function(_0x2a90de){return parseInt((_0x2a90de['match'](/[0-9]/g)||[])['join'](''),-0x1477+-0x148d*0x1+0x290e);},_0x11d65c=function(_0x1579d6){return(_0x1579d6['match'](/ /g)||[])['length'];},_0x4111f3=function(_0x1de4eb,_0x47f7a2,_0x670d35){_0x1c3a21['apply'](this,arguments),this['_stage']=-(-0x1*-0xd37+-0x4e0+-0x856),this['_body']=[],this['version']='hixie-76',this['_headers']['clear'](),this['_headers']['set']('Upgrade','WebSocket'),this['_headers']['set']('Connection','Upgrade'),this['_headers']['set']('Sec-WebSoc'+'ket-Origin',this['_request']['headers']['origin']),this['_headers']['set']('Sec-WebSoc'+'ket-Locati'+'on',this['url']);};_0x1e7eea['inherits'](_0x4111f3,_0x1c3a21);var _0x1c605c={'BODY_SIZE':0x8,'start':function(){return!!_0x1c3a21['prototype']['start']['call'](this)&&(this['_started']=!(0x248e+0xaa*0x1f+0x3*-0x130c),this['_sendHands'+'hakeBody'](),!(-0x2*0xb0b+0x3d*-0x49+0x277b));},'close':function(){return-0x1442+0x37f+-0x863*-0x2!==this['readyState']&&(0x411*0x6+-0x14f2+-0x373===this['readyState']&&this['_write'](_0x557898['from']([-0x5c7*0x3+0xfb5*0x1+-0x29f*-0x1,-0xa30*-0x2+-0xbab+-0x8b5])),this['readyState']=-0x2e5*0xb+-0x1967+0x3941,this['emit']('close',new _0x5c4bb3['CloseEvent'](null,null)),!(-0x25a3*0x1+0x363*-0x2+0x2c69*0x1));},'_handshakeResponse':function(){var _0x385b32=(_0x29be2d=this['_request']['headers'])['sec-websoc'+'ket-key1'],_0x25a542=_0x29be2d['sec-websoc'+'ket-key2'];if(!_0x385b32)throw new Error('Missing\x20re'+'quired\x20hea'+'der:\x20Sec-W'+'ebSocket-K'+'ey1');if(!_0x25a542)throw new Error('Missing\x20re'+'quired\x20hea'+'der:\x20Sec-W'+'ebSocket-K'+'ey2');var _0x5c91c7=_0x182ede(_0x385b32),_0x1d1752=_0x11d65c(_0x385b32),_0x244863=_0x182ede(_0x25a542),_0x4d1fa7=_0x11d65c(_0x25a542);if(_0x5c91c7%_0x1d1752!=-0x8eb*-0x1+-0xb61+0x2d*0xe||_0x244863%_0x4d1fa7!=0xc97*-0x3+-0x1*-0x845+0x1d80)throw new Error('Client\x20sen'+'t\x20invalid\x20'+'Sec-WebSoc'+'ket-Key\x20he'+'aders');this['_keyValues']=[_0x5c91c7/_0x1d1752,_0x244863/_0x4d1fa7];var _0x29be2d=['HTTP/1.1\x201'+'01\x20WebSock'+'et\x20Protoco'+'l\x20Handshak'+'e',this['_headers']['toString'](),''];return _0x557898['from'](_0x29be2d['join']('\x0d\x0a'),'binary');},'_handshakeSignature':function(){if(this['_body']['length']this['BODY_SIZE']&&this['parse'](this['_body']['slice'](this['BODY_SIZE'])));}},'_parseLeadingByte':function(_0x5b17d6){if(-0x1600+0xe5*-0x26+0x38fd!==_0x5b17d6)return _0x1c3a21['prototype']['_parseLead'+'ingByte']['call'](this,_0x5b17d6);this['_closing']=!(-0xd91+-0x1*0x2139+-0x1*-0x2eca),this['_length']=0x1368+-0x787+-0x1*0xbe1,this['_stage']=-0x508+-0xf5e+0x1467;}};for(var _0x43b4bd in _0x1c605c)_0x4111f3['prototype'][_0x43b4bd]=_0x1c605c[_0x43b4bd];_0x268381['exports']=_0x4111f3;},0xace:_0x1544bb=>{'use strict';var _0x138f51=function(){this['clear']();};_0x138f51['prototype']['ALLOWED_DU'+'PLICATES']=['set-cookie','set-cookie'+'2','warning','www-authen'+'ticate'],_0x138f51['prototype']['clear']=function(){this['_sent']={},this['_lines']=[];},_0x138f51['prototype']['set']=function(_0x948a03,_0x68dd1a){if(void(0x2*-0xef2+0x1361+0xa83)!==_0x68dd1a){_0x948a03=this['_strip'](_0x948a03),_0x68dd1a=this['_strip'](_0x68dd1a);var _0x4e8729=_0x948a03['toLowerCas'+'e']();(!this['_sent']['hasOwnProp'+'erty'](_0x4e8729)||this['ALLOWED_DU'+'PLICATES']['indexOf'](_0x4e8729)>=0x9a8+-0x6*0x180+-0xa8)&&(this['_sent'][_0x4e8729]=!(0x1a27+0x5e2*0x6+-0x3d73),this['_lines']['push'](_0x948a03+':\x20'+_0x68dd1a+'\x0d\x0a'));}},_0x138f51['prototype']['toString']=function(){return this['_lines']['join']('');},_0x138f51['prototype']['_strip']=function(_0x23d6cd){return _0x23d6cd['toString']()['replace'](/^ */,'')['replace'](/ *$/,'');},_0x1544bb['exports']=_0x138f51;},0x20f4:(_0x46ef04,_0x1e98d6,_0x2f14ac)=>{'use strict';var _0xe3a38b=_0x2f14ac(-0x2f*-0x31+0x522*0x7+-0x6*0x5a0)['Buffer'],_0x187655=_0x2f14ac(0x2e93+-0xf28+-0x425),_0x46103a=_0x2f14ac(-0x1*-0xe61+0x4ae*-0x9+-0x1*-0x3efc),_0x4b5abf=_0x2f14ac(0x47*0x77+-0x264*-0x3+-0x1*0x147a),_0x645650=_0x2f14ac(0xdf*0x12+-0x19e*0x12+0x1491),_0x3d8fb9=_0x2f14ac(0x2*0x29+0x117*0x3+-0x1*-0xa1f),_0x268785=_0x2f14ac(0x59f*0x6+0x1*-0x1b83+-0x2b*-0x47),_0x43f921=function(_0x245be6,_0x20c877,_0x64297b){if(_0x645650['apply'](this,arguments),this['_extension'+'s']=new _0x4b5abf(),this['_stage']=-0x715+0x17*0x67+-0x116*0x2,this['_masking']=this['_options']['masking'],this['_protocols']=this['_options']['protocols']||[],this['_requireMa'+'sking']=this['_options']['requireMas'+'king'],this['_pingCallb'+'acks']={},'string'==typeof this['_protocols']&&(this['_protocols']=this['_protocols']['split'](/ *, */)),this['_request']){var _0xa55793=this['_request']['headers']['sec-websoc'+'ket-protoc'+'ol'],_0x566181=this['_protocols'];void(0x2130+0xa5d+-0x2b8d)!==_0xa55793&&('string'==typeof _0xa55793&&(_0xa55793=_0xa55793['split'](/ *, */)),this['protocol']=_0xa55793['filter'](function(_0x429647){return _0x566181['indexOf'](_0x429647)>=0x3df*-0x1+-0xf08*0x1+-0x3*-0x64d;})[0x2a5*0xd+0x558+0x27b9*-0x1]),this['version']='hybi-'+_0x43f921['VERSION'];}};_0x46103a['inherits'](_0x43f921,_0x645650),_0x43f921['VERSION']='13',_0x43f921['mask']=function(_0x148571,_0x408847,_0x5492c9){if(!_0x408847||0x3*-0x625+0x6bb*0x2+0x4f9===_0x408847['length'])return _0x148571;_0x5492c9=_0x5492c9||-0x23d0+-0x616+0xad*0x3e;for(var _0x11ae34=-0x1*0xeda+-0x143e+0x2318,_0x3102d8=_0x148571['length']-_0x5492c9;_0x11ae34<_0x3102d8;_0x11ae34++)_0x148571[_0x5492c9+_0x11ae34]=_0x148571[_0x5492c9+_0x11ae34]^_0x408847[_0x11ae34%(0x2*0xbf8+-0x6b3*-0x4+0x4*-0xcae)];return _0x148571;},_0x43f921['generateAc'+'cept']=function(_0x3297ca){var _0x59a7bb=_0x187655['createHash']('sha1');return _0x59a7bb['update'](_0x3297ca+_0x43f921['GUID']),_0x59a7bb['digest']('base64');},_0x43f921['GUID']='258EAFA5-E'+'914-47DA-9'+'5CA-C5AB0D'+'C85B11';var _0x56b19f={'FIN':0x80,'MASK':0x80,'RSV1':0x40,'RSV2':0x20,'RSV3':0x10,'OPCODE':0xf,'LENGTH':0x7f,'OPCODES':{'continuation':0x0,'text':0x1,'binary':0x2,'close':0x8,'ping':0x9,'pong':0xa},'OPCODE_CODES':[-0x65*-0x51+-0x1876+-0x77f*0x1,0x107*0x14+-0x56+-0x1435,-0x216+-0x22*-0xb3+-0xa*0x22b,-0x62+0x7*-0x190+0xb5a,0xf0a+0x655+0xaab*-0x2,0x10e0+-0x5d5+-0x9*0x139],'MESSAGE_OPCODES':[0x1aa*0x4+-0x6c9+-0x21*-0x1,0x161f*0x1+0x130*0x11+-0x2*0x1527,-0x7db*0x1+-0x414+0xbf1*0x1],'OPENING_OPCODES':[0x992+-0x18fd+-0xc*-0x149,0x9*0x1f2+0x1b7b+-0x2cfb],'ERRORS':{'normal_closure':0x3e8,'going_away':0x3e9,'protocol_error':0x3ea,'unacceptable':0x3eb,'encoding_error':0x3ef,'policy_violation':0x3f0,'too_large':0x3f1,'extension_error':0x3f2,'unexpected_condition':0x3f3},'ERROR_CODES':[0x1c34+-0x134b*0x2+-0x1f*-0x76,-0x1*-0xb24+0x2*-0x11e5+0x3*0x985,0x301*0x8+0x61*-0x8+-0x1116,0x47*0x6a+-0x1*-0x1c51+-0x16*0x272,-0x179*0x7+-0x2376+0x31b4,0x1*-0x989+-0x1562+0x22db*0x1,0x1d7f+-0x2153+0x7c5,-0x1808+0x18c5+0x335*0x1,0x1*0x8fe+-0x107*-0x1+-0x612],'DEFAULT_ERROR_CODE':0x3e8,'MIN_RESERVED_ERROR':0xbb8,'MAX_RESERVED_ERROR':0x1387,'UTF8_MATCH':/^([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$/,'addExtension':function(_0x13ac90){return this['_extension'+'s']['add'](_0x13ac90),!(0x1659*0x1+-0x1f13+0x8ba);},'parse':function(_0x2d464f){this['_reader']['put'](_0x2d464f);for(var _0x38ef88=!(0x7*-0x4a3+-0x815*0x1+0x288a);_0x38ef88;)switch(this['_stage']){case-0x1295+-0x16e2+-0xc1*-0x37:(_0x38ef88=this['_reader']['read'](-0x9*0xd7+-0x18db+0xc1*0x2b))&&this['_parseOpco'+'de'](_0x38ef88[-0x210e*0x1+-0x1*0x2482+0x4590]);break;case 0x1715+0xec3+-0x25d7:(_0x38ef88=this['_reader']['read'](-0x20b6+0xae7+0x15d0))&&this['_parseLeng'+'th'](_0x38ef88[0x74a+-0x252d+0x1de3]);break;case 0x26*-0x9d+0x9f*0x24+0x7a*0x2:(_0x38ef88=this['_reader']['read'](this['_frame']['lengthByte'+'s']))&&this['_parseExte'+'ndedLength'](_0x38ef88);break;case 0x265b+-0x5*-0x489+-0x3d05:(_0x38ef88=this['_reader']['read'](0x167e+0x2189+-0x3803))&&(this['_stage']=-0x19ae+0xc4e+0xd64,this['_frame']['maskingKey']=_0x38ef88);break;case 0x1*-0x156e+-0x4a2+0x685*0x4:(_0x38ef88=this['_reader']['read'](this['_frame']['length']))&&(this['_stage']=0x2*0xb02+-0x2+0x139*-0x12,this['_emitFrame'](_0x38ef88));break;default:_0x38ef88=null;}},'text':function(_0x35a6e3){return!(this['readyState']>-0xd*-0x133+0xe2d+-0x1dc3)&&this['frame'](_0x35a6e3,'text');},'binary':function(_0x430ffe){return!(this['readyState']>-0x956*0x1+-0x11*0x16+0x1*0xacd)&&this['frame'](_0x430ffe,'binary');},'ping':function(_0x2f7b83,_0x22e78f){return!(this['readyState']>-0x1502+0x48*0x34+-0x147*-0x5)&&(_0x2f7b83=_0x2f7b83||'',_0x22e78f&&(this['_pingCallb'+'acks'][_0x2f7b83]=_0x22e78f),this['frame'](_0x2f7b83,'ping'));},'pong':function(_0x155ba9){return!(this['readyState']>0x227b+0x1d*0x9+0x27*-0xe9)&&(_0x155ba9=_0x155ba9||'',this['frame'](_0x155ba9,'pong'));},'close':function(_0x56901d,_0x2ccd35){return _0x56901d=_0x56901d||'',_0x2ccd35=_0x2ccd35||this['ERRORS']['normal_clo'+'sure'],this['readyState']<=0xdfc+-0x1591*-0x1+0x238d*-0x1?(this['readyState']=0x4a7+-0x1391+0xeed*0x1,this['emit']('close',new _0x645650['CloseEvent'](_0x2ccd35,_0x56901d)),!(-0x25b1+-0x1*-0x9a9+0x3*0x958)):0x643+-0xcd7*0x3+0x1*0x2043===this['readyState']&&(this['readyState']=0x1f0+-0x22b3+0x20c5,this['_extension'+'s']['close'](function(){this['frame'](_0x56901d,'close',_0x2ccd35);},this),!(0x6ad+0x28*-0x4+0x60d*-0x1));},'frame':function(_0x382ae0,_0x595e15,_0x3ccaaa){if(this['readyState']<=0x181+-0x5*-0x29c+-0xe8d)return this['_queue']([_0x382ae0,_0x595e15,_0x3ccaaa]);if(this['readyState']>-0x197c+-0x4*-0xda+-0x1616*-0x1)return!(0x1590+-0xd*0x240+0x7b1);_0x382ae0 instanceof Array&&(_0x382ae0=_0xe3a38b['from'](_0x382ae0)),'number'==typeof _0x382ae0&&(_0x382ae0=_0x382ae0['toString']());var _0x5d2f9a,_0x32539d,_0x33a837=new _0x268785(),_0x17d573='string'==typeof _0x382ae0;_0x33a837['rsv1']=_0x33a837['rsv2']=_0x33a837['rsv3']=!(-0x1944+0xffb*0x2+0x1*-0x6b1),_0x33a837['opcode']=this['OPCODES'][_0x595e15||(_0x17d573?'text':'binary')],_0x5d2f9a=_0x17d573?_0xe3a38b['from'](_0x382ae0,'utf8'):_0x382ae0,_0x3ccaaa&&(_0x32539d=_0x5d2f9a,(_0x5d2f9a=_0xe3a38b['allocUnsaf'+'e'](0x2fb+0xe69+-0x1162+_0x32539d['length']))['writeUInt1'+'6BE'](_0x3ccaaa,-0x1*0xd01+0x3*-0x63a+0x1faf),_0x32539d['copy'](_0x5d2f9a,-0x38a+-0x172d+0x1ab9*0x1)),_0x33a837['data']=_0x5d2f9a;var _0x37269c=function(_0x20a1bd){var _0x1d73d0=new _0x3d8fb9();_0x1d73d0['final']=!(-0x7*-0xdf+0x1b65+-0x595*0x6),_0x1d73d0['rsv1']=_0x20a1bd['rsv1'],_0x1d73d0['rsv2']=_0x20a1bd['rsv2'],_0x1d73d0['rsv3']=_0x20a1bd['rsv3'],_0x1d73d0['opcode']=_0x20a1bd['opcode'],_0x1d73d0['masked']=!!this['_masking'],_0x1d73d0['length']=_0x20a1bd['data']['length'],_0x1d73d0['payload']=_0x20a1bd['data'],_0x1d73d0['masked']&&(_0x1d73d0['maskingKey']=_0x187655['randomByte'+'s'](0x35*-0x23+0x24df+-0x1*0x1d9c)),this['_sendFrame'](_0x1d73d0);};return this['MESSAGE_OP'+'CODES']['indexOf'](_0x33a837['opcode'])>=0x158+0x1*-0xc5+-0x93?this['_extension'+'s']['processOut'+'goingMessa'+'ge'](_0x33a837,function(_0x592983,_0x44fbd1){if(_0x592983)return this['_fail']('extension_'+'error',_0x592983['message']);_0x37269c['call'](this,_0x44fbd1);},this):_0x37269c['call'](this,_0x33a837),!(-0x6fa+0x755+-0x5b);},'_sendFrame':function(_0x232170){var _0x1cf3ba=_0x232170['length'],_0x48332c=_0x1cf3ba<=-0x6bb*0x3+-0x1b0c+0x52*0x95?0x2*0x9e9+-0xf*0x28a+0x1246:_0x1cf3ba<=-0x72e2*-0x2+0x12b82*-0x1+0x145bd?0x1898+0x1c6*0x8+-0x26c4:-0x2*-0xceb+-0x1*-0x57b+0x11*-0x1d7,_0xe5e25=_0x48332c+(_0x232170['masked']?-0x8*0x1fb+-0xef8+-0x7b5*-0x4:-0x2105+-0x61*0x1d+0x2c02),_0x398587=_0xe3a38b['allocUnsaf'+'e'](_0xe5e25+_0x1cf3ba),_0x22e0c5=_0x232170['masked']?this['MASK']:-0x2*0x8b6+-0x154e+0x26ba;_0x398587[-0x15f0+0xd79*-0x1+0x2369]=(_0x232170['final']?this['FIN']:0x1982+-0x388*0x1+-0x15fa)|(_0x232170['rsv1']?this['RSV1']:0x44*0x7+-0x1c71*-0x1+0x1e4d*-0x1)|(_0x232170['rsv2']?this['RSV2']:0x1*0x351+-0xa2e+0x6dd)|(_0x232170['rsv3']?this['RSV3']:0x19fd+0x1*0xe+-0x1a0b)|_0x232170['opcode'],_0x1cf3ba<=0x12b*-0x19+-0x8d3+0x2683*0x1?_0x398587[-0xd69+0x1*0x20d8+-0x136e]=_0x22e0c5|_0x1cf3ba:_0x1cf3ba<=-0x2f*-0x1d+0x1*0xf65b+0xd*0x55?(_0x398587[0x1*-0x1886+-0x8e3+0x5e*0x5b]=-0xc9b*-0x1+-0x1*0x1e0c+0x1*0x11ef|_0x22e0c5,_0x398587['writeUInt1'+'6BE'](_0x1cf3ba,-0x16e6+0x13*-0xbc+0x937*0x4)):(_0x398587[-0x1*0x96d+0x5d*-0x1b+0x3d9*0x5]=0xa*-0x215+-0x2530+0x3a81|_0x22e0c5,_0x398587['writeUInt3'+'2BE'](Math['floor'](_0x1cf3ba/(0x1e3121bf0+-0x19bb9979c+0x44*0x2b72b3b)),-0x334*0x1+0x6f9+-0x3c3),_0x398587['writeUInt3'+'2BE'](_0x1cf3ba%(-0x1cbed26f0+-0x15d8c7d8+0x2e1c5eec8),0x7*-0xce+0xc3d*0x1+0x1*-0x695)),_0x232170['payload']['copy'](_0x398587,_0xe5e25),_0x232170['masked']&&(_0x232170['maskingKey']['copy'](_0x398587,_0x48332c),_0x43f921['mask'](_0x398587,_0x232170['maskingKey'],_0xe5e25)),this['_write'](_0x398587);},'_handshakeResponse':function(){var _0x2c6de6=this['_request']['headers']['sec-websoc'+'ket-key'],_0x40c3a4=this['_request']['headers']['sec-websoc'+'ket-versio'+'n'];if(_0x40c3a4!==_0x43f921['VERSION'])throw new Error('Unsupporte'+'d\x20WebSocke'+'t\x20version:'+'\x20'+_0x40c3a4);if('string'!=typeof _0x2c6de6)throw new Error('Missing\x20ha'+'ndshake\x20re'+'quest\x20head'+'er:\x20Sec-We'+'bSocket-Ke'+'y');this['_headers']['set']('Upgrade','websocket'),this['_headers']['set']('Connection','Upgrade'),this['_headers']['set']('Sec-WebSoc'+'ket-Accept',_0x43f921['generateAc'+'cept'](_0x2c6de6)),this['protocol']&&this['_headers']['set']('Sec-WebSoc'+'ket-Protoc'+'ol',this['protocol']);var _0x2f1e2d=this['_extension'+'s']['generateRe'+'sponse'](this['_request']['headers']['sec-websoc'+'ket-extens'+'ions']);_0x2f1e2d&&this['_headers']['set']('Sec-WebSoc'+'ket-Extens'+'ions',_0x2f1e2d);var _0x3dabc2=['HTTP/1.1\x201'+'01\x20Switchi'+'ng\x20Protoco'+'ls',this['_headers']['toString'](),''];return _0xe3a38b['from'](_0x3dabc2['join']('\x0d\x0a'),'utf8');},'_shutdown':function(_0x20e442,_0x50deaf,_0x6bf7ec){delete this['_frame'],delete this['_message'],this['_stage']=0x3*0x30d+-0x11a5+-0x883*-0x1;var _0x5ef658=0x21e3+0x3*-0x7cd+-0xa7b===this['readyState'];this['readyState']=0x11*-0x209+0x1*-0xd7f+0x83*0x5e,this['_extension'+'s']['close'](function(){_0x5ef658&&this['frame'](_0x50deaf,'close',_0x20e442),this['readyState']=0x12d6+-0x1*0x2447+0x1174*0x1,_0x6bf7ec&&this['emit']('error',new Error(_0x50deaf)),this['emit']('close',new _0x645650['CloseEvent'](_0x20e442,_0x50deaf));},this);},'_fail':function(_0x34be4b,_0x246673){this['readyState']>0x1771*-0x1+-0xee*0xf+-0x1*-0x2564||this['_shutdown'](this['ERRORS'][_0x34be4b],_0x246673,!(0x3d9*-0x1+-0x2365+-0x2*-0x139f));},'_parseOpcode':function(_0x19cbd0){var _0x398804=[this['RSV1'],this['RSV2'],this['RSV3']]['map'](function(_0x54681b){return(_0x19cbd0&_0x54681b)===_0x54681b;}),_0x4ee4db=this['_frame']=new _0x3d8fb9();return _0x4ee4db['final']=(_0x19cbd0&this['FIN'])===this['FIN'],_0x4ee4db['rsv1']=_0x398804[-0x1*0x821+-0x67*0x56+-0x1*-0x2abb],_0x4ee4db['rsv2']=_0x398804[0x159e*-0x1+0xbdb*-0x3+0x3930],_0x4ee4db['rsv3']=_0x398804[-0x1f8b+0x58d*0x1+-0x2*-0xd00],_0x4ee4db['opcode']=_0x19cbd0&this['OPCODE'],this['_stage']=-0x1d*-0x127+-0x26*0x7d+-0x2*0x76e,this['_extension'+'s']['validFrame'+'Rsv'](_0x4ee4db)?this['OPCODE_COD'+'ES']['indexOf'](_0x4ee4db['opcode'])<0x222c+0x2500+-0x472c?this['_fail']('protocol_e'+'rror','Unrecogniz'+'ed\x20frame\x20o'+'pcode:\x20'+_0x4ee4db['opcode']):this['MESSAGE_OP'+'CODES']['indexOf'](_0x4ee4db['opcode'])<-0x1d3d+0xcb*-0xb+-0x25f6*-0x1&&!_0x4ee4db['final']?this['_fail']('protocol_e'+'rror','Received\x20f'+'ragmented\x20'+'control\x20fr'+'ame:\x20opcod'+'e\x20=\x20'+_0x4ee4db['opcode']):this['_message']&&this['OPENING_OP'+'CODES']['indexOf'](_0x4ee4db['opcode'])>=0xc32+-0xc33+0x1?this['_fail']('protocol_e'+'rror','Received\x20n'+'ew\x20data\x20fr'+'ame\x20but\x20pr'+'evious\x20con'+'tinuous\x20fr'+'ame\x20is\x20unf'+'inished'):void(-0x8*-0xf0+-0x5ee+-0x192):this['_fail']('protocol_e'+'rror','One\x20or\x20mor'+'e\x20reserved'+'\x20bits\x20are\x20'+'on:\x20reserv'+'ed1\x20=\x20'+(_0x4ee4db['rsv1']?-0x4*0x8e9+-0x7*0x420+0x4085:-0x1119*-0x1+-0x4*-0x54c+-0x2649)+(',\x20reserved'+'2\x20=\x20')+(_0x4ee4db['rsv2']?0x6d*0x5b+0xb5e+-0x321c:-0x21cd+0x13*-0x20b+0x489e)+(',\x20reserved'+'3\x20=\x20')+(_0x4ee4db['rsv3']?0x216b+0x1e63+0x1*-0x3fcd:-0x1466+0x2252+-0xdec));},'_parseLength':function(_0x539c9e){var _0x33348e=this['_frame'];if(_0x33348e['masked']=(_0x539c9e&this['MASK'])===this['MASK'],_0x33348e['length']=_0x539c9e&this['LENGTH'],_0x33348e['length']>=-0x12c8+0x185b+-0x1*0x593&&_0x33348e['length']<=0x1*-0x905+0x1463+-0x5*0x22d){if(this['_stage']=_0x33348e['masked']?-0x2a*-0xbd+-0x1*-0x126d+0x18b6*-0x2:0x1499+-0x28d+-0x4*0x482,!this['_checkFram'+'eLength']())return;}else this['_stage']=0x1628+0x3*-0x973+-0x1*-0x633,_0x33348e['lengthByte'+'s']=-0x69+-0x225f+0x2346===_0x33348e['length']?-0x14ef+0xf02+-0x31*-0x1f:-0x2705*0x1+0x1d8a+0x983;if(this['_requireMa'+'sking']&&!_0x33348e['masked'])return this['_fail']('unacceptab'+'le','Received\x20u'+'nmasked\x20fr'+'ame\x20but\x20ma'+'sking\x20is\x20r'+'equired');},'_parseExtendedLength':function(_0x5b266b){var _0x44058e=this['_frame'];if(_0x44058e['length']=this['_readUInt'](_0x5b266b),this['_stage']=_0x44058e['masked']?-0x2*0x62f+-0xf91+0x3fe*0x7:0x11*0x67+-0x2*0xffe+0x1929,this['MESSAGE_OP'+'CODES']['indexOf'](_0x44058e['opcode'])<0x1*-0xc7a+-0x1849+0x24c3&&_0x44058e['length']>-0x2*-0xf07+-0x19dc*0x1+-0x3b5)return this['_fail']('protocol_e'+'rror','Received\x20c'+'ontrol\x20fra'+'me\x20having\x20'+'too\x20long\x20p'+'ayload:\x20'+_0x44058e['length']);this['_checkFram'+'eLength']();},'_checkFrameLength':function(){return!((this['_message']?this['_message']['length']:-0x1cfe+0x5*0x2b3+0xf7f)+this['_frame']['length']>this['_maxLength']&&(this['_fail']('too_large','WebSocket\x20'+'frame\x20leng'+'th\x20too\x20lar'+'ge'),0x589+-0x721*-0x1+-0x7*0x1cf));},'_emitFrame':function(_0x25760e){var _0x951dfe,_0x4966cc,_0x45aa0d,_0x50b44b,_0x57609d,_0x225827=this['_frame'],_0x4fe27c=_0x225827['payload']=_0x43f921['mask'](_0x25760e,_0x225827['maskingKey']),_0x18a3d7=_0x225827['opcode'];if(delete this['_frame'],_0x18a3d7===this['OPCODES']['continuati'+'on']){if(!this['_message'])return this['_fail']('protocol_e'+'rror','Received\x20u'+'nexpected\x20'+'continuati'+'on\x20frame');this['_message']['pushFrame'](_0x225827);}if(_0x18a3d7!==this['OPCODES']['text']&&_0x18a3d7!==this['OPCODES']['binary']||(this['_message']=new _0x268785(),this['_message']['pushFrame'](_0x225827)),_0x225827['final']&&this['MESSAGE_OP'+'CODES']['indexOf'](_0x18a3d7)>=0x6*0x24+0xf6d+-0x5*0x341)return this['_emitMessa'+'ge'](this['_message']);_0x18a3d7===this['OPCODES']['close']&&(_0x4966cc=_0x4fe27c['length']>=-0x40*-0x20+0x89*0x1d+-0x1783?_0x4fe27c['readUInt16'+'BE'](0x9a*-0x29+-0xe5*0xa+-0x6*-0x59a):null,_0x45aa0d=_0x4fe27c['length']>-0x7*0x301+0x1613+-0x7*0x26?this['_encode'](_0x4fe27c['slice'](-0xf3c+-0x154e+0x248c)):null,0x1053+0xcb3+0x5ce*-0x5!==_0x4fe27c['length']&&!(null!==_0x4966cc&&_0x4966cc>=this['MIN_RESERV'+'ED_ERROR']&&_0x4966cc<=this['MAX_RESERV'+'ED_ERROR'])&&this['ERROR_CODE'+'S']['indexOf'](_0x4966cc)<-0xcd*-0x9+-0x138a+0x7*0x1c3&&(_0x4966cc=this['ERRORS']['protocol_e'+'rror']),(_0x4fe27c['length']>-0x3*-0x9bd+0xdd8+-0x2*0x1549||_0x4fe27c['length']>-0x23bb+0x1df9*-0x1+0x1a*0x287&&!_0x45aa0d)&&(_0x4966cc=this['ERRORS']['protocol_e'+'rror']),this['_shutdown'](_0x4966cc||this['DEFAULT_ER'+'ROR_CODE'],_0x45aa0d||'')),_0x18a3d7===this['OPCODES']['ping']&&(this['frame'](_0x4fe27c,'pong'),this['emit']('ping',new _0x645650['PingEvent'](_0x4fe27c['toString']()))),_0x18a3d7===this['OPCODES']['pong']&&(_0x57609d=(_0x50b44b=this['_pingCallb'+'acks'])[_0x951dfe=this['_encode'](_0x4fe27c)],delete _0x50b44b[_0x951dfe],_0x57609d&&_0x57609d(),this['emit']('pong',new _0x645650['PongEvent'](_0x4fe27c['toString']())));},'_emitMessage':function(_0x49da7a){(_0x49da7a=this['_message'])['read'](),delete this['_message'],this['_extension'+'s']['processInc'+'omingMessa'+'ge'](_0x49da7a,function(_0x42d590,_0x3dff35){if(_0x42d590)return this['_fail']('extension_'+'error',_0x42d590['message']);var _0x175046=_0x3dff35['data'];if(_0x3dff35['opcode']===this['OPCODES']['text']&&(_0x175046=this['_encode'](_0x175046)),null===_0x175046)return this['_fail']('encoding_e'+'rror','Could\x20not\x20'+'decode\x20a\x20t'+'ext\x20frame\x20'+'as\x20UTF-8');this['emit']('message',new _0x645650['MessageEve'+'nt'](_0x175046));},this);},'_encode':function(_0x4ec308){try{var _0xba4324=_0x4ec308['toString']('binary',0x255f+-0x161*0x19+-0x7*0x6a,_0x4ec308['length']);if(!this['UTF8_MATCH']['test'](_0xba4324))return null;}catch(_0x164f85){}return _0x4ec308['toString']('utf8',0x1a*0x153+0x1*-0x1fc9+-0x2a5,_0x4ec308['length']);},'_readUInt':function(_0x3981e4){return 0x50d*0x4+-0x2db+-0x1157===_0x3981e4['length']?_0x3981e4['readUInt16'+'BE'](0xda9*0x1+0x1d44+0x6f*-0x63):(0x12f6f4a3*0xc+-0x15cc9fc14+0x179368470)*_0x3981e4['readUInt32'+'BE'](0x13*0x114+-0x56*-0x37+-0x26f6)+_0x3981e4['readUInt32'+'BE'](0x1028+-0x3*-0xc2e+-0x34ae);}};for(var _0x52cf1f in _0x56b19f)_0x43f921['prototype'][_0x52cf1f]=_0x56b19f[_0x52cf1f];_0x46ef04['exports']=_0x43f921;},0xdb6:_0x31f1d3=>{'use strict';var _0x5d0189=function(){},_0x416b49={'final':!(-0xd3*-0x13+0x1421+-0x23c9),'rsv1':!(0x4a+-0x1*-0x1877+0x40*-0x63),'rsv2':!(-0xec*0x1c+0x173*0x4+0x1405),'rsv3':!(0x11ce+0x93*-0xb+-0xf5*0xc),'opcode':null,'masked':!(-0x2466+0x12c5+0x11a2),'maskingKey':null,'lengthBytes':0x1,'length':0x0,'payload':null};for(var _0x1c8f26 in _0x416b49)_0x5d0189['prototype'][_0x1c8f26]=_0x416b49[_0x1c8f26];_0x31f1d3['exports']=_0x5d0189;},0x1224:(_0x5aae1c,_0x1c7610,_0x2d4bd6)=>{'use strict';var _0x38fdc1=_0x2d4bd6(0x5f1+-0x17c*0x17+0x2760)['Buffer'],_0x1b864a=function(){this['rsv1']=!(-0x254+0x135e+-0x1109),this['rsv2']=!(-0x11a8+0x14b*0x5+0x599*0x2),this['rsv3']=!(-0xe5f*-0x1+-0x5*0x1f5+0x3*-0x187),this['opcode']=null,this['length']=-0x919*0x3+-0x479*-0x2+-0x3d*-0x4d,this['_chunks']=[];},_0x243b26={'read':function(){return this['data']=this['data']||_0x38fdc1['concat'](this['_chunks'],this['length']);},'pushFrame':function(_0x9d974b){this['rsv1']=this['rsv1']||_0x9d974b['rsv1'],this['rsv2']=this['rsv2']||_0x9d974b['rsv2'],this['rsv3']=this['rsv3']||_0x9d974b['rsv3'],null===this['opcode']&&(this['opcode']=_0x9d974b['opcode']),this['_chunks']['push'](_0x9d974b['payload']),this['length']+=_0x9d974b['length'];}};for(var _0x3af0fb in _0x243b26)_0x1b864a['prototype'][_0x3af0fb]=_0x243b26[_0x3af0fb];_0x5aae1c['exports']=_0x1b864a;},0xf9c:(_0x32478c,_0x40b037,_0x938652)=>{'use strict';var _0x424e74=_0x938652(-0x204b+0x14e*0x5+0x1*0x24f2)['Buffer'],_0x57ae06=_0x938652(0x13d0*0x1+-0x1891+-0x11d*-0xc)['Stream'],_0x3db19b=_0x938652(0xb65*0x1+0x1cd3+-0xcd0),_0x367cf3=_0x938652(0xd32+0x1*0xa85+-0x29*-0x48),_0x30e40d=_0x938652(0xd52+-0x20d0+0x1aa1),_0x4994c5=_0x938652(0x1cd5+0x1d2b+-0x2f32),_0x233b7d=_0x938652(0x191+-0x2595+-0x4df*-0xd),_0x598403={'ws:':0x50,'wss:':0x1bb},_0x4c1b14=function(_0xb46422,_0x2f640c,_0x51caef){this['_client']=_0xb46422,this['_http']=new _0x233b7d('response'),this['_origin']='object'==typeof _0xb46422['url']?_0xb46422['url']:_0x3db19b['parse'](_0xb46422['url']),this['_url']='object'==typeof _0x2f640c?_0x2f640c:_0x3db19b['parse'](_0x2f640c),this['_options']=_0x51caef||{},this['_state']=-0x22b7+-0x5*0x203+0x2cc6,this['readable']=this['writable']=!(-0x2*-0x9a+0x2509+-0x263d*0x1),this['_paused']=!(0x14fc+-0x110c+-0x1*0x3ef),this['_headers']=new _0x4994c5(),this['_headers']['set']('Host',this['_origin']['host']),this['_headers']['set']('Connection','keep-alive'),this['_headers']['set']('Proxy-Conn'+'ection','keep-alive');var _0x1eddb1=this['_url']['auth']&&_0x424e74['from'](this['_url']['auth'],'utf8')['toString']('base64');_0x1eddb1&&this['_headers']['set']('Proxy-Auth'+'orization','Basic\x20'+_0x1eddb1);};_0x367cf3['inherits'](_0x4c1b14,_0x57ae06);var _0x42526e={'setHeader':function(_0x52aeb7,_0x26414e){return-0x567+0x2f5*0x5+0x962*-0x1===this['_state']&&(this['_headers']['set'](_0x52aeb7,_0x26414e),!(-0x2662+0x1911+0xd51*0x1));},'start':function(){if(0x1*-0x135b+0x59c*-0x6+0x3503!==this['_state'])return!(0x1*-0xb45+-0x6*0x2f6+0x1d0a);this['_state']=0x13db*0x1+-0x7*-0x79+-0x7*0x34f;var _0x57fa05=this['_origin'],_0x236aba=_0x57fa05['port']||_0x598403[_0x57fa05['protocol']],_0x263f5c=['CONNECT\x20'+_0x57fa05['hostname']+':'+_0x236aba+'\x20HTTP/1.1',this['_headers']['toString'](),''];return this['emit']('data',_0x424e74['from'](_0x263f5c['join']('\x0d\x0a'),'utf8')),!(0x1a81+-0x10f3+-0x98e);},'pause':function(){this['_paused']=!(-0x1c*-0xed+-0x14db+0x1*-0x511);},'resume':function(){this['_paused']=!(-0x22d3+-0x20a*-0x2+-0xf6*-0x20),this['emit']('drain');},'write':function(_0x484284){if(!this['writable'])return!(-0x6c*0x13+0x35*0x1d+-0x3*-0xac);if(this['_http']['parse'](_0x484284),!this['_http']['isComplete']())return!this['_paused'];if(this['statusCode']=this['_http']['statusCode'],this['headers']=this['_http']['headers'],-0x1*-0x1139+0xfe*0x16+-0x65*0x61===this['statusCode'])this['emit']('connect',new _0x30e40d['ConnectEve'+'nt']());else{var _0x4eee84='Can\x27t\x20esta'+'blish\x20a\x20co'+'nnection\x20t'+'o\x20the\x20serv'+'er\x20at\x20'+this['_origin']['href'];this['emit']('error',new Error(_0x4eee84));}return this['end'](),!this['_paused'];},'end':function(_0x252169){this['writable']&&(void(-0x327+0x167f+-0x8*0x26b)!==_0x252169&&this['write'](_0x252169),this['readable']=this['writable']=!(0x270f+-0xd0d+0x7*-0x3b7),this['emit']('close'),this['emit']('end'));},'destroy':function(){this['end']();}};for(var _0x1a0a7e in _0x42526e)_0x4c1b14['prototype'][_0x1a0a7e]=_0x42526e[_0x1a0a7e];_0x32478c['exports']=_0x4c1b14;},0xcb1:(_0x36c9a6,_0x3baf09,_0x1c4645)=>{'use strict';var _0x2bce75=_0x1c4645(-0x2a5*-0x11+-0x7*-0x379+-0x2205),_0x578fae=_0x1c4645(-0x89c+0x2dd7+0x27b*-0x4),_0x58b726=_0x1c4645(0x1280+-0x22fd+0x17a0),_0x53bc5c=_0x1c4645(-0x2223+0xdf*0x20+0x2*0x971),_0x2dac92=_0x1c4645(0x14*0x1d3+0x1305+0x1e5f*-0x1),_0x26ec4b=_0x1c4645(-0x266c+-0x309e+-0x3bff*-0x2),_0x18a68b=function(_0x3defc3){_0x58b726['call'](this,null,null,_0x3defc3),this['_http']=new _0x578fae('request');};_0x2bce75['inherits'](_0x18a68b,_0x58b726);var _0x1f2cc2={'EVENTS':['open','message','error','close','ping','pong'],'_bindEventListeners':function(){this['messages']['on']('error',function(){}),this['on']('error',function(){});},'parse':function(_0x5a10f6){if(this['_delegate'])return this['_delegate']['parse'](_0x5a10f6);if(this['_http']['parse'](_0x5a10f6),this['_http']['isComplete']()){this['method']=this['_http']['method'],this['url']=this['_http']['url'],this['headers']=this['_http']['headers'],this['body']=this['_http']['body'];var _0x394c16=this;this['_delegate']=_0x18a68b['http'](this,this['_options']),this['_delegate']['messages']=this['messages'],this['_delegate']['io']=this['io'],this['_open'](),this['EVENTS']['forEach'](function(_0xf88239){this['_delegate']['on'](_0xf88239,function(_0x56c71c){_0x394c16['emit'](_0xf88239,_0x56c71c);});},this),this['protocol']=this['_delegate']['protocol'],this['version']=this['_delegate']['version'],this['parse'](this['_http']['body']),this['emit']('connect',new _0x58b726['ConnectEve'+'nt']());}},'_open':function(){this['__queue']['forEach'](function(_0x3f077a){this['_delegate'][_0x3f077a[-0x2*-0xf43+-0x4e6+-0x19a0]]['apply'](this['_delegate'],_0x3f077a[0x110e+-0x21b6*0x1+-0x10a9*-0x1]);},this),this['__queue']=[];}};for(var _0x2dfbc9 in(['addExtensi'+'on','setHeader','start','frame','text','binary','ping','close']['forEach'](function(_0x196084){_0x1f2cc2[_0x196084]=function(){return this['_delegate']?this['_delegate'][_0x196084]['apply'](this['_delegate'],arguments):(this['__queue']['push']([_0x196084,arguments]),!(-0xa*0x3b9+-0x35*-0x7e+-0x2c9*-0x4));};}),_0x1f2cc2))_0x18a68b['prototype'][_0x2dfbc9]=_0x1f2cc2[_0x2dfbc9];_0x18a68b['isSecureRe'+'quest']=function(_0xbe45c2){if(_0xbe45c2['connection']&&void(-0x2*0xdd7+0x23*0x7+0x1ab9*0x1)!==_0xbe45c2['connection']['authorized'])return!(-0x12f9+0x929+0x9d*0x10);if(_0xbe45c2['socket']&&_0xbe45c2['socket']['secure'])return!(-0x193*-0x16+-0xea8+-0x2*0x9fd);var _0x3cbdcd=_0xbe45c2['headers'];return!!_0x3cbdcd&&('on'===_0x3cbdcd['https']||'on'===_0x3cbdcd['x-forwarde'+'d-ssl']||'https'===_0x3cbdcd['x-forwarde'+'d-scheme']||'https'===_0x3cbdcd['x-forwarde'+'d-proto']);},_0x18a68b['determineU'+'rl']=function(_0x2ecc0a){return(this['isSecureRe'+'quest'](_0x2ecc0a)?'wss:':'ws:')+'//'+_0x2ecc0a['headers']['host']+_0x2ecc0a['url'];},_0x18a68b['http']=function(_0x38cbe2,_0x53b733){void(-0x3f0*-0x3+0x1c61+0x2831*-0x1)===(_0x53b733=_0x53b733||{})['requireMas'+'king']&&(_0x53b733['requireMas'+'king']=!(0x222b*-0x1+-0x5e6+-0x2811*-0x1));var _0x3de3e6=_0x38cbe2['headers'],_0x4d194d=_0x3de3e6['sec-websoc'+'ket-versio'+'n'],_0xe223d2=_0x3de3e6['sec-websoc'+'ket-key'],_0xcafded=_0x3de3e6['sec-websoc'+'ket-key1'],_0x8b962e=_0x3de3e6['sec-websoc'+'ket-key2'],_0x5938dd=this['determineU'+'rl'](_0x38cbe2);return _0x4d194d||_0xe223d2?new _0x26ec4b(_0x38cbe2,_0x5938dd,_0x53b733):_0xcafded||_0x8b962e?new _0x2dac92(_0x38cbe2,_0x5938dd,_0x53b733):new _0x53bc5c(_0x38cbe2,_0x5938dd,_0x53b733);},_0x36c9a6['exports']=_0x18a68b;},0x2286:(_0x452ba2,_0x3665dd,_0xd1f194)=>{'use strict';var _0x5b4b70=_0xd1f194(-0x2514+-0x2*0x9d5+0x1*0x43eb)['Buffer'],_0x295b91=function(){this['_queue']=[],this['_queueSize']=-0x1800+0x4*0x94d+0x34d*-0x4,this['_offset']=0x71*-0x42+-0xd8b*0x1+0x2aad;};_0x295b91['prototype']['put']=function(_0x389f62){_0x389f62&&0x660*-0x5+-0x5b9+0x2599!==_0x389f62['length']&&(_0x5b4b70['isBuffer'](_0x389f62)||(_0x389f62=_0x5b4b70['from'](_0x389f62)),this['_queue']['push'](_0x389f62),this['_queueSize']+=_0x389f62['length']);},_0x295b91['prototype']['read']=function(_0x53fb7a){if(_0x53fb7a>this['_queueSize'])return null;if(0xc90+0x14dc+-0x216c===_0x53fb7a)return _0x5b4b70['alloc'](0x1552+-0x1*-0x1faf+-0x3501);this['_queueSize']-=_0x53fb7a;var _0x39caac,_0x294f97,_0x1e0c22=this['_queue'],_0x1e19a4=_0x53fb7a,_0x2acbe1=_0x1e0c22[0x52*-0x1a+0x2384+-0x1b30];if(_0x2acbe1['length']>=_0x53fb7a)return _0x2acbe1['length']===_0x53fb7a?_0x1e0c22['shift']():(_0x294f97=_0x2acbe1['slice'](-0x1*-0xc8a+0x4*-0x8f9+0x7a*0x31,_0x53fb7a),_0x1e0c22[-0x7c*0x23+0x11f1*-0x2+0x1a6b*0x2]=_0x2acbe1['slice'](_0x53fb7a),_0x294f97);for(var _0x4f3b57=-0xb*-0x2bb+-0x16e*0x18+0x16d*0x3,_0x583e46=_0x1e0c22['length'];_0x4f3b57<_0x583e46&&!(_0x1e19a4<_0x1e0c22[_0x4f3b57]['length']);_0x4f3b57++)_0x1e19a4-=_0x1e0c22[_0x4f3b57]['length'];return _0x39caac=_0x1e0c22['splice'](-0x8*-0x10b+0x692+-0xeea*0x1,_0x4f3b57),_0x1e19a4>-0x197*-0x11+0x5a3+0xe2*-0x25&&_0x1e0c22['length']>0x717+0xecb+-0x15e2&&(_0x39caac['push'](_0x1e0c22[-0x1*-0x181f+0x157*-0x5+0xdf*-0x14]['slice'](0x164f+0x372+-0x19c1,_0x1e19a4)),_0x1e0c22[0xc76*0x3+-0x255+-0x230d]=_0x1e0c22[-0x19db+-0x2392*-0x1+-0x9b7]['slice'](_0x1e19a4)),_0x5b4b70['concat'](_0x39caac,_0x53fb7a);},_0x295b91['prototype']['eachByte']=function(_0x4c084c,_0x16a0ae){for(var _0x96b2c3,_0x2fbea7,_0x1334c1;this['_queue']['length']>-0x2b3*0x2+-0xab5*-0x1+-0x1*0x54f;){for(_0x2fbea7=(_0x96b2c3=this['_queue'][0x3*0x52a+-0x41*0x1f+-0x79f])['length'];this['_offset']<_0x2fbea7;)_0x1334c1=this['_offset'],this['_offset']+=0x542+-0xa5f+-0x83*-0xa,_0x4c084c['call'](_0x16a0ae,_0x96b2c3[_0x1334c1]);this['_offset']=0x6da+0x1*-0x240b+0x1d31,this['_queue']['shift']();}},_0x452ba2['exports']=_0x295b91;},0x1b4f:(_0x52839d,_0x2ae72e,_0x399aab)=>{'use strict';var _0x6d8a4e=_0x399aab(0x3*-0x542+-0x1*-0x1ba6+0xb31)['e'],_0x28b3ed=_0x399aab(0x117f+0x1*0xb61+-0x11b3)['Buffer'],_0x5ed9d3={'request':_0x6d8a4e['REQUEST']||'request','response':_0x6d8a4e['RESPONSE']||'response'},_0x44011b=function(_0x2e3a46){this['_type']=_0x2e3a46,this['_parser']=new _0x6d8a4e(_0x5ed9d3[_0x2e3a46]),this['_complete']=!(-0x1*0x199+0xd*-0x15b+0x1339),this['headers']={};var _0x4b5367=null,_0x3e2749=this;this['_parser']['onHeaderFi'+'eld']=function(_0x5f2f25,_0x3a5b2f,_0x5675a6){_0x4b5367=_0x5f2f25['toString']('utf8',_0x3a5b2f,_0x3a5b2f+_0x5675a6)['toLowerCas'+'e']();},this['_parser']['onHeaderVa'+'lue']=function(_0x51d8dc,_0x18cf3d,_0x358950){var _0x409b3c=_0x51d8dc['toString']('utf8',_0x18cf3d,_0x18cf3d+_0x358950);_0x3e2749['headers']['hasOwnProp'+'erty'](_0x4b5367)?_0x3e2749['headers'][_0x4b5367]+=',\x20'+_0x409b3c:_0x3e2749['headers'][_0x4b5367]=_0x409b3c;},this['_parser']['onHeadersC'+'omplete']=this['_parser'][_0x6d8a4e['kOnHeaders'+'Complete']]=function(_0x538a0d,_0x41e588,_0x239d2c,_0x3a1bb1,_0x506a3d,_0x2771f2){var _0x1698c2=arguments[-0x1155+0x25ee+-0x1499];if('object'==typeof _0x1698c2&&(_0x3a1bb1=_0x1698c2['method'],_0x506a3d=_0x1698c2['url'],_0x2771f2=_0x1698c2['statusCode'],_0x239d2c=_0x1698c2['headers']),_0x3e2749['method']='number'==typeof _0x3a1bb1?_0x44011b['METHODS'][_0x3a1bb1]:_0x3a1bb1,_0x3e2749['statusCode']=_0x2771f2,_0x3e2749['url']=_0x506a3d,_0x239d2c){for(var _0x244b32,_0x5e74c7,_0x43dd8b=-0x1*0x616+-0x2202+0x140c*0x2,_0x454eae=_0x239d2c['length'];_0x43dd8b<_0x454eae;_0x43dd8b+=0xc47+-0x112d*0x1+-0x13a*-0x4)_0x244b32=_0x239d2c[_0x43dd8b]['toLowerCas'+'e'](),_0x5e74c7=_0x239d2c[_0x43dd8b+(-0x57f*-0x5+0x1013+-0x2b8d)],_0x3e2749['headers']['hasOwnProp'+'erty'](_0x244b32)?_0x3e2749['headers'][_0x244b32]+=',\x20'+_0x5e74c7:_0x3e2749['headers'][_0x244b32]=_0x5e74c7;_0x3e2749['_complete']=!(-0x767+-0x1f6*0x8+0x1717);}};};_0x44011b['METHODS']={0x0:'DELETE',0x1:'GET',0x2:'HEAD',0x3:'POST',0x4:'PUT',0x5:'CONNECT',0x6:'OPTIONS',0x7:'TRACE',0x8:'COPY',0x9:'LOCK',0xa:'MKCOL',0xb:'MOVE',0xc:'PROPFIND',0xd:'PROPPATCH',0xe:'SEARCH',0xf:'UNLOCK',0x10:'BIND',0x11:'REBIND',0x12:'UNBIND',0x13:'ACL',0x14:'REPORT',0x15:'MKACTIVITY',0x16:'CHECKOUT',0x17:'MERGE',0x18:'M-SEARCH',0x19:'NOTIFY',0x1a:'SUBSCRIBE',0x1b:'UNSUBSCRIB'+'E',0x1c:'PATCH',0x1d:'PURGE',0x1e:'MKCALENDAR',0x1f:'LINK',0x20:'UNLINK'};var _0x3cd8f5=process['version']?process['version']['match'](/[0-9]+/g)['map'](function(_0x2d5ae4){return parseInt(_0x2d5ae4,-0x1*-0x10c1+0x252d+-0x35e4);}):[];0x46*-0x1+-0x178b+0x17d1*0x1===_0x3cd8f5[-0x5ff*0x1+0x6a1*-0x5+0x2724]&&0x1069+-0x117e*0x1+0x121*0x1===_0x3cd8f5[-0x5e9*0x1+-0x181b+-0x91*-0x35]&&(_0x44011b['METHODS'][-0x194d*-0x1+-0x1268+0x35*-0x21]='REPORT',_0x44011b['METHODS'][0x22b7+-0x1b35+-0x771]='MKACTIVITY',_0x44011b['METHODS'][-0x16*0x11+0xc*0x18+0x68]='CHECKOUT',_0x44011b['METHODS'][-0x15a7+0xb1c+0xa9e]='MERGE',_0x44011b['METHODS'][-0xf58*0x1+0x1664*0x1+-0x6f8]='M-SEARCH',_0x44011b['METHODS'][0x2*-0x1163+0x1d95*-0x1+0x80e*0x8]='NOTIFY',_0x44011b['METHODS'][0xc9f*0x1+-0x1fea+0x1c3*0xb]='SUBSCRIBE',_0x44011b['METHODS'][0xef6+0x218e+-0x1*0x306d]='UNSUBSCRIB'+'E',_0x44011b['METHODS'][0x2421+0x481*0x7+-0x21c8*0x2]='PATCH',_0x44011b['METHODS'][0x2*-0x1333+-0xfe8+0x3667]='PURGE'),_0x44011b['prototype']['isComplete']=function(){return this['_complete'];},_0x44011b['prototype']['parse']=function(_0x1bd054){var _0x2bca93=this['_parser']['execute'](_0x1bd054,-0x1029+0x1*0x13e6+-0x3bd,_0x1bd054['length']);if('number'!=typeof _0x2bca93)return this['error']=_0x2bca93,void(this['_complete']=!(0x5ae*-0x4+-0x1f98+0x10*0x365));this['_complete']&&(this['body']=_0x2bca93<_0x1bd054['length']?_0x1bd054['slice'](_0x2bca93):_0x28b3ed['alloc'](-0x974+-0xb59+0x14cd*0x1));},_0x52839d['exports']=_0x44011b;},0x11c8:(_0x527484,_0x13c990,_0x3b9a17)=>{'use strict';var _0x4258fa=_0x3b9a17(-0x1*0x2048+-0x5*-0x251+0x1d4e)['Stream'],_0x2b9cd6=_0x3b9a17(0x3b14+-0x2285+0xab0),_0x5a7d6d=function(_0x1d34b1){this['readable']=this['writable']=!(-0x151*-0x17+-0x1d1e*-0x1+0x3b65*-0x1),this['_paused']=!(0x1ddd+0x2*-0x11d1+0x5c6),this['_driver']=_0x1d34b1;};_0x2b9cd6['inherits'](_0x5a7d6d,_0x4258fa),_0x5a7d6d['prototype']['pause']=function(){this['_paused']=!(-0x27f+-0x1617+0x1896),this['_driver']['messages']['_paused']=!(-0x116*-0x6+0x361*-0x2+0x3e);},_0x5a7d6d['prototype']['resume']=function(){this['_paused']=!(-0x1ac5+0x329+-0x4b9*-0x5),this['emit']('drain');var _0x15ddc4=this['_driver']['messages'];_0x15ddc4['_paused']=!(-0x9d*0x27+-0x53*0x1f+0x21f9),_0x15ddc4['emit']('drain');},_0x5a7d6d['prototype']['write']=function(_0x2fa1f6){return!!this['writable']&&(this['_driver']['parse'](_0x2fa1f6),!this['_paused']);},_0x5a7d6d['prototype']['end']=function(_0x28a3ba){if(this['writable']){void(-0xc*0x260+-0x3d*-0x1+0x1c43)!==_0x28a3ba&&this['write'](_0x28a3ba),this['writable']=!(-0x1*0x31c+0x2276+-0x6b*0x4b);var _0x5e89b3=this['_driver']['messages'];_0x5e89b3['readable']&&(_0x5e89b3['readable']=_0x5e89b3['writable']=!(0x1f4a+0x1188+-0x30d1*0x1),_0x5e89b3['emit']('end'));}},_0x5a7d6d['prototype']['destroy']=function(){this['end']();};var _0x46fdb3=function(_0x5e16fb){this['readable']=this['writable']=!(-0xba3+0x1*-0x1d8b+-0x15*-0x1f6),this['_paused']=!(-0x1*-0x377+-0x2682+-0x4*-0x8c3),this['_driver']=_0x5e16fb;};_0x2b9cd6['inherits'](_0x46fdb3,_0x4258fa),_0x46fdb3['prototype']['pause']=function(){this['_driver']['io']['_paused']=!(-0xb*-0x37d+-0x1118+-0x1*0x1547);},_0x46fdb3['prototype']['resume']=function(){this['_driver']['io']['_paused']=!(-0x1cff+0x973+0x41*0x4d),this['_driver']['io']['emit']('drain');},_0x46fdb3['prototype']['write']=function(_0x45bb4b){return!!this['writable']&&('string'==typeof _0x45bb4b?this['_driver']['text'](_0x45bb4b):this['_driver']['binary'](_0x45bb4b),!this['_paused']);},_0x46fdb3['prototype']['end']=function(_0x3893ac){void(0x111d+0xc22+-0x1d3f)!==_0x3893ac&&this['write'](_0x3893ac);},_0x46fdb3['prototype']['destroy']=function(){},_0x13c990['IO']=_0x5a7d6d,_0x13c990['Messages']=_0x46fdb3;},0x93e:_0x446b28=>{'use strict';var _0xeebb24=/([!#\$%&'\*\+\-\.\^_`\|~0-9A-Za-z]+)/,_0x48c304=/([^!#\$%&'\*\+\-\.\^_`\|~0-9A-Za-z])/g,_0x16713c=new RegExp(_0xeebb24['source']+'(?:=(?:'+_0xeebb24['source']+'|'+/"((?:\\[\x00-\x7f]|[^\x00-\x08\x0a-\x1f\x7f"\\])*)"/['source']+'))?'),_0x462a66=new RegExp(_0xeebb24['source']+'(?:\x20*;\x20*'+_0x16713c['source']+')*','g'),_0x3f5d53=new RegExp('^'+_0x462a66['source']+'(?:\x20*,\x20*'+_0x462a66['source']+')*$'),_0x4f8ba1=/^-?(0|[1-9][0-9]*)(\.[0-9]+)?$/,_0xd62a24=Object['prototype']['hasOwnProp'+'erty'],_0x16854b={'parseHeader':function(_0x1e1749){var _0xfc2889=new _0x2416de();if(''===_0x1e1749||void(0x860+0x1c*0x12e+-0x2968)===_0x1e1749)return _0xfc2889;if(!_0x3f5d53['test'](_0x1e1749))throw new SyntaxError('Invalid\x20Se'+'c-WebSocke'+'t-Extensio'+'ns\x20header:'+'\x20'+_0x1e1749);return _0x1e1749['match'](_0x462a66)['forEach'](function(_0x103eaf){var _0x8be59e=_0x103eaf['match'](new RegExp(_0x16713c['source'],'g')),_0x28dc54=_0x8be59e['shift'](),_0xee9e30={};_0x8be59e['forEach'](function(_0x1cb6a2){var _0x51b725,_0x2f6141=_0x1cb6a2['match'](_0x16713c),_0x38eba5=_0x2f6141[0x8*0x2d0+-0x27b*0x1+0x1ab*-0xc];_0x51b725=void(0xe*0x2a1+-0x1*0x1df+-0x22ef)!==_0x2f6141[-0x6b*-0xa+0x25cb+0x1*-0x29f7]?_0x2f6141[-0x1afb+-0x47*0x39+-0xe44*-0x3]:void(0xced+-0x4*0x4cb+-0xd*-0x7b)===_0x2f6141[0x24e1+0x200f+-0x44ed]||_0x2f6141[0xfd+0x1c54+-0x1d4e]['replace'](/\\/g,''),_0x4f8ba1['test'](_0x51b725)&&(_0x51b725=parseFloat(_0x51b725)),_0xd62a24['call'](_0xee9e30,_0x38eba5)?(_0xee9e30[_0x38eba5]=[]['concat'](_0xee9e30[_0x38eba5]),_0xee9e30[_0x38eba5]['push'](_0x51b725)):_0xee9e30[_0x38eba5]=_0x51b725;},this),_0xfc2889['push'](_0x28dc54,_0xee9e30);},this),_0xfc2889;},'serializeParams':function(_0x3ec490,_0x3e5d04){var _0x4b3da5=[],_0x248a46=function(_0x386ae5,_0x245462){_0x245462 instanceof Array?_0x245462['forEach'](function(_0x199591){_0x248a46(_0x386ae5,_0x199591);}):!(0xaa2*-0x3+-0x155b*0x1+0x3541)===_0x245462?_0x4b3da5['push'](_0x386ae5):'number'==typeof _0x245462?_0x4b3da5['push'](_0x386ae5+'='+_0x245462):_0x48c304['test'](_0x245462)?_0x4b3da5['push'](_0x386ae5+'=\x22'+_0x245462['replace'](/"/g,'\x5c\x22')+'\x22'):_0x4b3da5['push'](_0x386ae5+'='+_0x245462);};for(var _0x51c997 in _0x3e5d04)_0x248a46(_0x51c997,_0x3e5d04[_0x51c997]);return[_0x3ec490]['concat'](_0x4b3da5)['join'](';\x20');}},_0x2416de=function(){this['_byName']={},this['_inOrder']=[];};_0x2416de['prototype']['push']=function(_0x165ec2,_0x5e7800){_0xd62a24['call'](this['_byName'],_0x165ec2)||(this['_byName'][_0x165ec2]=[]),this['_byName'][_0x165ec2]['push'](_0x5e7800),this['_inOrder']['push']({'name':_0x165ec2,'params':_0x5e7800});},_0x2416de['prototype']['eachOffer']=function(_0x42d03f,_0x4f1857){for(var _0x4d73ee=this['_inOrder'],_0x28d379=0x5*0x162+-0x1f21+0x1837,_0x3ea0f1=_0x4d73ee['length'];_0x28d379<_0x3ea0f1;_0x28d379++)_0x42d03f['call'](_0x4f1857,_0x4d73ee[_0x28d379]['name'],_0x4d73ee[_0x28d379]['params']);},_0x2416de['prototype']['byName']=function(_0x1489e7){return this['_byName'][_0x1489e7]||[];},_0x2416de['prototype']['toArray']=function(){return this['_inOrder']['slice']();},_0x446b28['exports']=_0x16854b;},0x282:(_0x16c716,_0x557cdb,_0x50494c)=>{'use strict';var _0x460c1d=_0x50494c(0x1a15+0x1f80+-0x28da),_0x4dcc3a=_0x50494c(-0x4*-0x21f+0x1cc0+0x267*-0x7),_0x1473ff=function(_0x29ba33){this['_ext']=_0x29ba33[0xf*-0x83+0x1fa6+-0x17f9],this['_session']=_0x29ba33[-0x8b7*0x1+0x995+-0x1*0xdd],this['_functors']={'incoming':new _0x460c1d(this['_session'],'processInc'+'omingMessa'+'ge'),'outgoing':new _0x460c1d(this['_session'],'processOut'+'goingMessa'+'ge')};};_0x1473ff['prototype']['pending']=function(_0xcf45c4){var _0xa07f8c=this['_functors'][_0xcf45c4];_0xa07f8c['_stopped']||(_0xa07f8c['pending']+=-0xe*-0x1d+-0x80f+0x2*0x33d);},_0x1473ff['prototype']['incoming']=function(_0x3b38b1,_0x34371e,_0xe6f52a,_0x5aca26){this['_exec']('incoming',_0x3b38b1,_0x34371e,_0xe6f52a,_0x5aca26);},_0x1473ff['prototype']['outgoing']=function(_0x5a474d,_0x11d2e9,_0x4bdd22,_0x1d32be){this['_exec']('outgoing',_0x5a474d,_0x11d2e9,_0x4bdd22,_0x1d32be);},_0x1473ff['prototype']['close']=function(){return this['_closed']=this['_closed']||new _0x4dcc3a(),this['_doClose'](),this['_closed'];},_0x1473ff['prototype']['_exec']=function(_0x509a3e,_0x39838d,_0x23b0c3,_0x386693,_0x89b065){this['_functors'][_0x509a3e]['call'](_0x39838d,_0x23b0c3,function(_0x104dd1,_0x1d1240){_0x104dd1&&(_0x104dd1['message']=this['_ext']['name']+':\x20'+_0x104dd1['message']),_0x386693['call'](_0x89b065,_0x104dd1,_0x1d1240),this['_doClose']();},this);},_0x1473ff['prototype']['_doClose']=function(){var _0x142718=this['_functors']['incoming'],_0x38361e=this['_functors']['outgoing'];this['_closed']&&_0x142718['pending']+_0x38361e['pending']===-0x2*-0x2c2+0x1ddb+-0x235f&&(this['_session']&&this['_session']['close'](),this['_session']=null,this['_closed']['done']());},_0x16c716['exports']=_0x1473ff;},0x10bb:(_0x183113,_0x1c2d4d,_0x3f682f)=>{'use strict';var _0x363276=_0x3f682f(0x1f3f+-0x20ee+0x1*0xf0c),_0x180a31=function(_0x479588,_0x40a0d5){this['_session']=_0x479588,this['_method']=_0x40a0d5,this['_queue']=new _0x363276(_0x180a31['QUEUE_SIZE']),this['_stopped']=!(0x1*-0x1e14+-0x1b92+0x39a7),this['pending']=-0x80c+0xa9*-0x17+0x173b;};_0x180a31['QUEUE_SIZE']=-0x135*0x17+0x2*-0x163+0x1e91,_0x180a31['prototype']['call']=function(_0x41aa77,_0x12269b,_0x1b5acd,_0x508eb0){if(!this['_stopped']){var _0x3fb9f5={'error':_0x41aa77,'message':_0x12269b,'callback':_0x1b5acd,'context':_0x508eb0,'done':!(-0x1f7c+-0x1f4e+0x3ecb)},_0x549dab=!(-0x261e+0xc30+0x19ef),_0x8da107=this;if(this['_queue']['push'](_0x3fb9f5),_0x3fb9f5['error'])return _0x3fb9f5['done']=!(-0xf*0x55+-0x5*-0x27a+0x1*-0x767),this['_stop'](),this['_flushQueu'+'e']();var _0x484cbb=function(_0x309465,_0x2fb652){_0x549dab^(_0x549dab=!(0x32d*0xa+-0x193a+-0x688))&&(_0x309465?(_0x8da107['_stop'](),_0x3fb9f5['error']=_0x309465,_0x3fb9f5['message']=null):_0x3fb9f5['message']=_0x2fb652,_0x3fb9f5['done']=!(-0x84b+-0x1fd0+0x281b),_0x8da107['_flushQueu'+'e']());};try{this['_session'][this['_method']](_0x12269b,_0x484cbb);}catch(_0x460603){_0x484cbb(_0x460603);}}},_0x180a31['prototype']['_stop']=function(){this['pending']=this['_queue']['length'],this['_stopped']=!(0x1029+0xcd7+0x1d0*-0x10);},_0x180a31['prototype']['_flushQueu'+'e']=function(){for(var _0x29a82a,_0x59e9e4=this['_queue'];_0x59e9e4['length']>-0x4d1*0x4+-0x38*-0x8a+-0x1*0xaec&&_0x59e9e4['peek']()['done'];)(_0x29a82a=_0x59e9e4['shift']())['error']?(this['pending']=0x1d24+0x577*-0x1+-0x17ad,_0x59e9e4['clear']()):this['pending']-=0x1*-0x1af+0x119*-0x1d+-0x1*-0x2185,_0x29a82a['callback']['call'](_0x29a82a['context'],_0x29a82a['error'],_0x29a82a['message']);},_0x183113['exports']=_0x180a31;},0x147c:(_0x41d096,_0x3ccdd2,_0x12bc77)=>{'use strict';var _0x39f8b5=_0x12bc77(0x1*0xd1f+-0x1*-0x93d+0x79*-0x2a),_0x60591d=_0x12bc77(-0x27*0x61+-0x16a+0x11c*0x21),_0x26a382=function(_0x3bc0b5){this['_cells']=_0x3bc0b5['map'](function(_0xfaa0bd){return new _0x39f8b5(_0xfaa0bd);}),this['_stopped']={'incoming':!(-0x2284+-0x61*0x26+0x30eb),'outgoing':!(-0x2*0x4e7+-0x16b2+0x2081)};};_0x26a382['prototype']['processInc'+'omingMessa'+'ge']=function(_0x28f80f,_0x34f9a2,_0x43d8cd){this['_stopped']['incoming']||this['_loop']('incoming',this['_cells']['length']-(-0x10*-0x166+-0x3*0x9bf+0x6de),-(0xada+-0x1610+0x105*0xb),-(0x1863+0xf76+-0x27d8),_0x28f80f,_0x34f9a2,_0x43d8cd);},_0x26a382['prototype']['processOut'+'goingMessa'+'ge']=function(_0x2ce26d,_0x423f2a,_0x588857){this['_stopped']['outgoing']||this['_loop']('outgoing',-0x7c5+0xc1*-0x24+0x22e9*0x1,this['_cells']['length'],0x1ecf+-0xb*0x1fb+-0x905,_0x2ce26d,_0x423f2a,_0x588857);},_0x26a382['prototype']['close']=function(_0x576c2e,_0x124596){this['_stopped']={'incoming':!(0x1d63+-0x1e71*-0x1+-0x3bd4),'outgoing':!(-0x1a4d*0x1+0x704+0x1349)};var _0x4a1da7=this['_cells']['map'](function(_0x19c7c1){return _0x19c7c1['close']();});_0x576c2e&&_0x60591d['all'](_0x4a1da7)['then'](function(){_0x576c2e['call'](_0x124596);});},_0x26a382['prototype']['_loop']=function(_0x5d104f,_0x11eee1,_0x2503ce,_0x1ed3d5,_0x7d22ac,_0x47135b,_0x524c77){for(var _0x355eef=this['_cells'],_0x11ee0a=_0x355eef['length'],_0x2247fd=this;_0x11ee0a--;)_0x355eef[_0x11ee0a]['pending'](_0x5d104f);var _0x12c7a0=function(_0x48edd7,_0x4f0000,_0x57fdff){if(_0x48edd7===_0x2503ce)return _0x47135b['call'](_0x524c77,_0x4f0000,_0x57fdff);_0x355eef[_0x48edd7][_0x5d104f](_0x4f0000,_0x57fdff,function(_0xba99db,_0x3ba552){_0xba99db&&(_0x2247fd['_stopped'][_0x5d104f]=!(-0x1e45+0x5*-0x2c3+-0xe*-0x326)),_0x12c7a0(_0x48edd7+_0x1ed3d5,_0xba99db,_0x3ba552);});};_0x12c7a0(_0x11eee1,null,_0x7d22ac);},_0x41d096['exports']=_0x26a382;},0x146b:(_0x573ad5,_0x2dedda,_0x10d96e)=>{'use strict';var _0x35124c=_0x10d96e(-0x4e*-0x7e+-0xc68+-0xc9f),_0x2542b5=function(){this['_complete']=!(-0xa93*0x1+-0x70*0x10+-0x3*-0x5dc),this['_callbacks']=new _0x35124c(_0x2542b5['QUEUE_SIZE']);};_0x2542b5['QUEUE_SIZE']=-0x20+0xafb+-0xad7,_0x2542b5['all']=function(_0x4cf4c3){var _0x2e0384=new _0x2542b5(),_0x506a54=_0x4cf4c3['length'],_0x1e0a34=_0x506a54;for(-0x135e+-0x827*0x1+0x1b85===_0x506a54&&_0x2e0384['done']();_0x1e0a34--;)_0x4cf4c3[_0x1e0a34]['then'](function(){0x18dc+0xdb6+-0x2692*0x1==(_0x506a54-=0x2483+-0x1690+-0xdf2)&&_0x2e0384['done']();});return _0x2e0384;},_0x2542b5['prototype']['then']=function(_0x55a895){this['_complete']?_0x55a895():this['_callbacks']['push'](_0x55a895);},_0x2542b5['prototype']['done']=function(){this['_complete']=!(0x10*0xbf+-0xfd7*0x2+0x1*0x13be);for(var _0x139424,_0x31524b=this['_callbacks'];_0x139424=_0x31524b['shift']();)_0x139424();},_0x573ad5['exports']=_0x2542b5;},0xd5d:_0x2f375f=>{'use strict';var _0x3edb38=function(_0x49beea){this['_bufferSiz'+'e']=_0x49beea,this['clear']();};_0x3edb38['prototype']['clear']=function(){this['_buffer']=new Array(this['_bufferSiz'+'e']),this['_ringOffse'+'t']=0x4de+-0x259e+0x20*0x106,this['_ringSize']=this['_bufferSiz'+'e'],this['_head']=-0x24d5+-0x1*0x245+0x271a,this['_tail']=-0x1ed5*-0x1+-0x1b3*0xb+-0xc24,this['length']=0x1db+0x1*0x1ca1+0x1e7c*-0x1;},_0x3edb38['prototype']['push']=function(_0x3d9cfd){var _0x146d87=!(-0xb7a+-0x1*-0x2215+-0x169a),_0x53d7a6=!(-0xbce+0x1*-0x18f9+-0x6b*-0x58);this['_ringSize']0x1924+0x1b92*0x1+-0x8c9*0x6?(this['_head']=this['_ringSize'],this['_ringOffse'+'t']=this['length'],this['_ringSize']=this['_bufferSiz'+'e']):this['_head']=(this['_head']+(0x54d+0xd*0x1e1+-0x1db9*0x1))%this['_ringSize'],_0x25905b;}},_0x2f375f['exports']=_0x3edb38;},0x13b3:(_0x404c72,_0x2d991d,_0x349f43)=>{'use strict';var _0xd55b0e=_0x349f43(-0x769+-0x11a7*-0x2+0xbf*-0x19),_0x4b1243=_0x349f43(-0x1*0x1fcb+0x1e3d+0x160a),_0x2064a4=function(){this['_rsv1']=this['_rsv2']=this['_rsv3']=null,this['_byName']={},this['_inOrder']=[],this['_sessions']=[],this['_index']={};};_0x2064a4['MESSAGE_OP'+'CODES']=[-0x17cb+-0x1fb6+0x3782,-0x681+-0x7*0x3cd+0x211e];var _0x3fe423={'add':function(_0x48775b){if('string'!=typeof _0x48775b['name'])throw new TypeError('extension.'+'name\x20must\x20'+'be\x20a\x20strin'+'g');if('permessage'!==_0x48775b['type'])throw new TypeError('extension.'+'type\x20must\x20'+'be\x20\x22permes'+'sage\x22');if('boolean'!=typeof _0x48775b['rsv1'])throw new TypeError('extension.'+'rsv1\x20must\x20'+'be\x20true\x20or'+'\x20false');if('boolean'!=typeof _0x48775b['rsv2'])throw new TypeError('extension.'+'rsv2\x20must\x20'+'be\x20true\x20or'+'\x20false');if('boolean'!=typeof _0x48775b['rsv3'])throw new TypeError('extension.'+'rsv3\x20must\x20'+'be\x20true\x20or'+'\x20false');if(this['_byName']['hasOwnProp'+'erty'](_0x48775b['name']))throw new TypeError('An\x20extensi'+'on\x20with\x20na'+'me\x20\x22'+_0x48775b['name']+('\x22\x20is\x20alrea'+'dy\x20registe'+'red'));this['_byName'][_0x48775b['name']]=_0x48775b,this['_inOrder']['push'](_0x48775b);},'generateOffer':function(){var _0x262eba=[],_0x1274c6=[],_0x5be8ef={};return this['_inOrder']['forEach'](function(_0xdd9748){var _0x3e62ef=_0xdd9748['createClie'+'ntSession']();if(_0x3e62ef){var _0x567af3=[_0xdd9748,_0x3e62ef];_0x262eba['push'](_0x567af3),_0x5be8ef[_0xdd9748['name']]=_0x567af3;var _0x3b0d18=_0x3e62ef['generateOf'+'fer']();(_0x3b0d18=_0x3b0d18?[]['concat'](_0x3b0d18):[])['forEach'](function(_0x2c1221){_0x1274c6['push'](_0xd55b0e['serializeP'+'arams'](_0xdd9748['name'],_0x2c1221));},this);}},this),this['_sessions']=_0x262eba,this['_index']=_0x5be8ef,_0x1274c6['length']>0x245b+-0x280+-0x21db?_0x1274c6['join'](',\x20'):null;},'activate':function(_0x4e366f){var _0x141cd7=_0xd55b0e['parseHeade'+'r'](_0x4e366f),_0x258c1f=[];_0x141cd7['eachOffer'](function(_0x1bd454,_0x591de2){var _0x2144c9=this['_index'][_0x1bd454];if(!_0x2144c9)throw new Error('Server\x20sen'+'t\x20an\x20exten'+'sion\x20respo'+'nse\x20for\x20un'+'known\x20exte'+'nsion\x20\x22'+_0x1bd454+'\x22');var _0x24c6aa=_0x2144c9[0xe25+-0x9a1+0x4*-0x121],_0x142ae0=_0x2144c9[-0x46c+-0x1*-0x220d+0x10*-0x1da],_0x4ea862=this['_reserved'](_0x24c6aa);if(_0x4ea862)throw new Error('Server\x20sen'+'t\x20two\x20exte'+'nsion\x20resp'+'onses\x20that'+'\x20use\x20the\x20R'+'SV'+_0x4ea862[-0x1f*0xfb+-0x1e2*0x9+0x2f57*0x1]+'\x20bit:\x20\x22'+_0x4ea862[0x1298+-0x1*0x134e+0xb7]+'\x22\x20and\x20\x22'+_0x24c6aa['name']+'\x22');if(!(0x177f+0x4*0x620+-0x2fff)!==_0x142ae0['activate'](_0x591de2))throw new Error('Server\x20sen'+'t\x20unaccept'+'able\x20exten'+'sion\x20param'+'eters:\x20'+_0xd55b0e['serializeP'+'arams'](_0x1bd454,_0x591de2));this['_reserve'](_0x24c6aa),_0x258c1f['push'](_0x2144c9);},this),this['_sessions']=_0x258c1f,this['_pipeline']=new _0x4b1243(_0x258c1f);},'generateResponse':function(_0x4e64df){var _0x47f347=[],_0x26510c=[],_0x589b14=_0xd55b0e['parseHeade'+'r'](_0x4e64df);return this['_inOrder']['forEach'](function(_0x8378ca){var _0x5378cd=_0x589b14['byName'](_0x8378ca['name']);if(0x1c5d+0xa9f+-0x26fc!==_0x5378cd['length']&&!this['_reserved'](_0x8378ca)){var _0x1b8939=_0x8378ca['createServ'+'erSession'](_0x5378cd);_0x1b8939&&(this['_reserve'](_0x8378ca),_0x47f347['push']([_0x8378ca,_0x1b8939]),_0x26510c['push'](_0xd55b0e['serializeP'+'arams'](_0x8378ca['name'],_0x1b8939['generateRe'+'sponse']())));}},this),this['_sessions']=_0x47f347,this['_pipeline']=new _0x4b1243(_0x47f347),_0x26510c['length']>0x1*-0x2f1+-0xcae+0xf9f?_0x26510c['join'](',\x20'):null;},'validFrameRsv':function(_0x42dd89){var _0x12a6b6,_0x2905ab={'rsv1':!(0x445*0x1+0x30b+0x1*-0x74f),'rsv2':!(0x1d*0xd0+-0x7c+-0x1713),'rsv3':!(-0x1014+0x1*-0x1056+0x1*0x206b)};if(_0x2064a4['MESSAGE_OP'+'CODES']['indexOf'](_0x42dd89['opcode'])>=-0x1026+-0x1a11+-0x1*-0x2a37){for(var _0x769566=0x1*0x2675+-0xf3f+-0x1736*0x1,_0x2e9c5e=this['_sessions']['length'];_0x769566<_0x2e9c5e;_0x769566++)_0x12a6b6=this['_sessions'][_0x769566][-0x285+0x4f*-0x5+0x1a*0x28],_0x2905ab['rsv1']=_0x2905ab['rsv1']||_0x12a6b6['rsv1'],_0x2905ab['rsv2']=_0x2905ab['rsv2']||_0x12a6b6['rsv2'],_0x2905ab['rsv3']=_0x2905ab['rsv3']||_0x12a6b6['rsv3'];}return(_0x2905ab['rsv1']||!_0x42dd89['rsv1'])&&(_0x2905ab['rsv2']||!_0x42dd89['rsv2'])&&(_0x2905ab['rsv3']||!_0x42dd89['rsv3']);},'processIncomingMessage':function(_0x387442,_0x5f3744,_0x532b4f){this['_pipeline']['processInc'+'omingMessa'+'ge'](_0x387442,_0x5f3744,_0x532b4f);},'processOutgoingMessage':function(_0x2f694a,_0x7a41a2,_0x408608){this['_pipeline']['processOut'+'goingMessa'+'ge'](_0x2f694a,_0x7a41a2,_0x408608);},'close':function(_0x6cfe5d,_0x67942c){if(!this['_pipeline'])return _0x6cfe5d['call'](_0x67942c);this['_pipeline']['close'](_0x6cfe5d,_0x67942c);},'_reserve':function(_0x15cfd1){this['_rsv1']=this['_rsv1']||_0x15cfd1['rsv1']&&_0x15cfd1['name'],this['_rsv2']=this['_rsv2']||_0x15cfd1['rsv2']&&_0x15cfd1['name'],this['_rsv3']=this['_rsv3']||_0x15cfd1['rsv3']&&_0x15cfd1['name'];},'_reserved':function(_0x5c5ccb){return this['_rsv1']&&_0x5c5ccb['rsv1']?[-0x1*0x9a0+0x7ba+0x1*0x1e7,this['_rsv1']]:this['_rsv2']&&_0x5c5ccb['rsv2']?[0x140a+0x51*-0x62+-0x5*-0x232,this['_rsv2']]:!(!this['_rsv3']||!_0x5c5ccb['rsv3'])&&[-0x19*-0x181+0x1ff0+-0x4586,this['_rsv3']];}};for(var _0x2a11b6 in _0x3fe423)_0x2064a4['prototype'][_0x2a11b6]=_0x3fe423[_0x2a11b6];_0x404c72['exports']=_0x2064a4;},0xa35:_0x3dc582=>{'use strict';_0x3dc582['exports']=require('assert');},0xb5:_0x28f59b=>{'use strict';_0x28f59b['exports']=require('buffer');},0x14c5:_0x1d7e17=>{'use strict';_0x1d7e17['exports']=require('child_proc'+'ess');},0x1b46:_0x4d95cc=>{'use strict';_0x4d95cc['exports']=require('crypto');},0x8ca:_0x5009d4=>{'use strict';_0x5009d4['exports']=require('dns');},0xc5f:_0x5e7a47=>{'use strict';_0x5e7a47['exports']=require('domain');},0x1152:_0x3d66fe=>{'use strict';_0x3d66fe['exports']=require('events');},0x26a8:_0x355afb=>{'use strict';_0x355afb['exports']=require('fs');},0x797:_0x359e3b=>{'use strict';_0x359e3b['exports']=require('fs/promise'+'s');},0x21a3:_0x4b386b=>{'use strict';_0x4b386b['exports']=require('http');},0x163c:_0xaf13bb=>{'use strict';_0xaf13bb['exports']=require('https');},0x243e:_0x5bfca4=>{'use strict';_0x5bfca4['exports']=require('net');},0x359:_0x156a9c=>{'use strict';_0x156a9c['exports']=require('os');},0x1b10:_0x1e615f=>{'use strict';_0x1e615f['exports']=require('path');},0x130c:_0x2d3fa9=>{'use strict';_0x2d3fa9['exports']=require('punycode');},0xd98:_0xf108fa=>{'use strict';_0xf108fa['exports']=require('querystrin'+'g');},0x89b:_0x22b5cd=>{'use strict';_0x22b5cd['exports']=require('stream');},0x1294:_0xbdccd7=>{'use strict';_0xbdccd7['exports']=require('tls');},0x1b68:_0x4cfc67=>{'use strict';_0x4cfc67['exports']=require('url');},0x233f:_0x3100b9=>{'use strict';_0x3100b9['exports']=require('util');},0x815:_0x453c69=>{'use strict';_0x453c69['exports']=JSON['parse']('[\x22ac\x22,\x22com'+'.ac\x22,\x22edu.'+'ac\x22,\x22gov.a'+'c\x22,\x22net.ac'+'\x22,\x22mil.ac\x22'+',\x22org.ac\x22,'+'\x22ad\x22,\x22nom.'+'ad\x22,\x22ae\x22,\x22'+'co.ae\x22,\x22ne'+'t.ae\x22,\x22org'+'.ae\x22,\x22sch.'+'ae\x22,\x22ac.ae'+'\x22,\x22gov.ae\x22'+',\x22mil.ae\x22,'+'\x22aero\x22,\x22ac'+'cident-inv'+'estigation'+'.aero\x22,\x22ac'+'cident-pre'+'vention.ae'+'ro\x22,\x22aerob'+'atic.aero\x22'+',\x22aeroclub'+'.aero\x22,\x22ae'+'rodrome.ae'+'ro\x22,\x22agent'+'s.aero\x22,\x22a'+'ircraft.ae'+'ro\x22,\x22airli'+'ne.aero\x22,\x22'+'airport.ae'+'ro\x22,\x22air-s'+'urveillanc'+'e.aero\x22,\x22a'+'irtraffic.'+'aero\x22,\x22air'+'-traffic-c'+'ontrol.aer'+'o\x22,\x22ambula'+'nce.aero\x22,'+'\x22amusement'+'.aero\x22,\x22as'+'sociation.'+'aero\x22,\x22aut'+'hor.aero\x22,'+'\x22balloonin'+'g.aero\x22,\x22b'+'roker.aero'+'\x22,\x22caa.aer'+'o\x22,\x22cargo.'+'aero\x22,\x22cat'+'ering.aero'+'\x22,\x22certifi'+'cation.aer'+'o\x22,\x22champi'+'onship.aer'+'o\x22,\x22charte'+'r.aero\x22,\x22c'+'ivilaviati'+'on.aero\x22,\x22'+'club.aero\x22'+',\x22conferen'+'ce.aero\x22,\x22'+'consultant'+'.aero\x22,\x22co'+'nsulting.a'+'ero\x22,\x22cont'+'rol.aero\x22,'+'\x22council.a'+'ero\x22,\x22crew'+'.aero\x22,\x22de'+'sign.aero\x22'+',\x22dgca.aer'+'o\x22,\x22educat'+'or.aero\x22,\x22'+'emergency.'+'aero\x22,\x22eng'+'ine.aero\x22,'+'\x22engineer.'+'aero\x22,\x22ent'+'ertainment'+'.aero\x22,\x22eq'+'uipment.ae'+'ro\x22,\x22excha'+'nge.aero\x22,'+'\x22express.a'+'ero\x22,\x22fede'+'ration.aer'+'o\x22,\x22flight'+'.aero\x22,\x22fr'+'eight.aero'+'\x22,\x22fuel.ae'+'ro\x22,\x22glidi'+'ng.aero\x22,\x22'+'government'+'.aero\x22,\x22gr'+'oundhandli'+'ng.aero\x22,\x22'+'group.aero'+'\x22,\x22hanggli'+('ding.aero\x22'+',\x22homebuil'+'t.aero\x22,\x22i'+'nsurance.a'+'ero\x22,\x22jour'+'nal.aero\x22,'+'\x22journalis'+'t.aero\x22,\x22l'+'easing.aer'+'o\x22,\x22logist'+'ics.aero\x22,'+'\x22magazine.'+'aero\x22,\x22mai'+'ntenance.a'+'ero\x22,\x22medi'+'a.aero\x22,\x22m'+'icrolight.'+'aero\x22,\x22mod'+'elling.aer'+'o\x22,\x22naviga'+'tion.aero\x22'+',\x22parachut'+'ing.aero\x22,'+'\x22paraglidi'+'ng.aero\x22,\x22'+'passenger-'+'associatio'+'n.aero\x22,\x22p'+'ilot.aero\x22'+',\x22press.ae'+'ro\x22,\x22produ'+'ction.aero'+'\x22,\x22recreat'+'ion.aero\x22,'+'\x22repbody.a'+'ero\x22,\x22res.'+'aero\x22,\x22res'+'earch.aero'+'\x22,\x22rotorcr'+'aft.aero\x22,'+'\x22safety.ae'+'ro\x22,\x22scien'+'tist.aero\x22'+',\x22services'+'.aero\x22,\x22sh'+'ow.aero\x22,\x22'+'skydiving.'+'aero\x22,\x22sof'+'tware.aero'+'\x22,\x22student'+'.aero\x22,\x22tr'+'ader.aero\x22'+',\x22trading.'+'aero\x22,\x22tra'+'iner.aero\x22'+',\x22union.ae'+'ro\x22,\x22worki'+'nggroup.ae'+'ro\x22,\x22works'+'.aero\x22,\x22af'+'\x22,\x22gov.af\x22'+',\x22com.af\x22,'+'\x22org.af\x22,\x22'+'net.af\x22,\x22e'+'du.af\x22,\x22ag'+'\x22,\x22com.ag\x22'+',\x22org.ag\x22,'+'\x22net.ag\x22,\x22'+'co.ag\x22,\x22no'+'m.ag\x22,\x22ai\x22'+',\x22off.ai\x22,'+'\x22com.ai\x22,\x22'+'net.ai\x22,\x22o'+'rg.ai\x22,\x22al'+'\x22,\x22com.al\x22'+',\x22edu.al\x22,'+'\x22gov.al\x22,\x22'+'mil.al\x22,\x22n'+'et.al\x22,\x22or'+'g.al\x22,\x22am\x22'+',\x22co.am\x22,\x22'+'com.am\x22,\x22c'+'ommune.am\x22'+',\x22net.am\x22,'+'\x22org.am\x22,\x22'+'ao\x22,\x22ed.ao'+'\x22,\x22gv.ao\x22,'+'\x22og.ao\x22,\x22c'+'o.ao\x22,\x22pb.'+'ao\x22,\x22it.ao'+'\x22,\x22aq\x22,\x22ar'+'\x22,\x22com.ar\x22'+',\x22edu.ar\x22,'+'\x22gob.ar\x22,\x22'+'gov.ar\x22,\x22i'+'nt.ar\x22,\x22mi'+'l.ar\x22,\x22mus'+'ica.ar\x22,\x22n'+'et.ar\x22,\x22or'+'g.ar\x22,\x22tur')+('.ar\x22,\x22arpa'+'\x22,\x22e164.ar'+'pa\x22,\x22in-ad'+'dr.arpa\x22,\x22'+'ip6.arpa\x22,'+'\x22iris.arpa'+'\x22,\x22uri.arp'+'a\x22,\x22urn.ar'+'pa\x22,\x22as\x22,\x22'+'gov.as\x22,\x22a'+'sia\x22,\x22at\x22,'+'\x22ac.at\x22,\x22c'+'o.at\x22,\x22gv.'+'at\x22,\x22or.at'+'\x22,\x22au\x22,\x22co'+'m.au\x22,\x22net'+'.au\x22,\x22org.'+'au\x22,\x22edu.a'+'u\x22,\x22gov.au'+'\x22,\x22asn.au\x22'+',\x22id.au\x22,\x22'+'info.au\x22,\x22'+'conf.au\x22,\x22'+'oz.au\x22,\x22ac'+'t.au\x22,\x22nsw'+'.au\x22,\x22nt.a'+'u\x22,\x22qld.au'+'\x22,\x22sa.au\x22,'+'\x22tas.au\x22,\x22'+'vic.au\x22,\x22w'+'a.au\x22,\x22act'+'.edu.au\x22,\x22'+'catholic.e'+'du.au\x22,\x22ns'+'w.edu.au\x22,'+'\x22nt.edu.au'+'\x22,\x22qld.edu'+'.au\x22,\x22sa.e'+'du.au\x22,\x22ta'+'s.edu.au\x22,'+'\x22vic.edu.a'+'u\x22,\x22wa.edu'+'.au\x22,\x22qld.'+'gov.au\x22,\x22s'+'a.gov.au\x22,'+'\x22tas.gov.a'+'u\x22,\x22vic.go'+'v.au\x22,\x22wa.'+'gov.au\x22,\x22e'+'ducation.t'+'as.edu.au\x22'+',\x22schools.'+'nsw.edu.au'+'\x22,\x22aw\x22,\x22co'+'m.aw\x22,\x22ax\x22'+',\x22az\x22,\x22com'+'.az\x22,\x22net.'+'az\x22,\x22int.a'+'z\x22,\x22gov.az'+'\x22,\x22org.az\x22'+',\x22edu.az\x22,'+'\x22info.az\x22,'+'\x22pp.az\x22,\x22m'+'il.az\x22,\x22na'+'me.az\x22,\x22pr'+'o.az\x22,\x22biz'+'.az\x22,\x22ba\x22,'+'\x22com.ba\x22,\x22'+'edu.ba\x22,\x22g'+'ov.ba\x22,\x22mi'+'l.ba\x22,\x22net'+'.ba\x22,\x22org.'+'ba\x22,\x22bb\x22,\x22'+'biz.bb\x22,\x22c'+'o.bb\x22,\x22com'+'.bb\x22,\x22edu.'+'bb\x22,\x22gov.b'+'b\x22,\x22info.b'+'b\x22,\x22net.bb'+'\x22,\x22org.bb\x22'+',\x22store.bb'+'\x22,\x22tv.bb\x22,'+'\x22*.bd\x22,\x22be'+'\x22,\x22ac.be\x22,'+'\x22bf\x22,\x22gov.'+'bf\x22,\x22bg\x22,\x22'+'a.bg\x22,\x22b.b'+'g\x22,\x22c.bg\x22,'+'\x22d.bg\x22,\x22e.'+'bg\x22,\x22f.bg\x22'+',\x22g.bg\x22,\x22h'+'.bg\x22,\x22i.bg'+'\x22,\x22j.bg\x22,\x22'+'k.bg\x22,\x22l.b'+'g\x22,\x22m.bg\x22,'+'\x22n.bg\x22,\x22o.'+'bg\x22,\x22p.bg\x22'+',\x22q.bg\x22,\x22r'+'.bg\x22,\x22s.bg'+'\x22,\x22t.bg\x22,\x22')+('u.bg\x22,\x22v.b'+'g\x22,\x22w.bg\x22,'+'\x22x.bg\x22,\x22y.'+'bg\x22,\x22z.bg\x22'+',\x220.bg\x22,\x221'+'.bg\x22,\x222.bg'+'\x22,\x223.bg\x22,\x22'+'4.bg\x22,\x225.b'+'g\x22,\x226.bg\x22,'+'\x227.bg\x22,\x228.'+'bg\x22,\x229.bg\x22'+',\x22bh\x22,\x22com'+'.bh\x22,\x22edu.'+'bh\x22,\x22net.b'+'h\x22,\x22org.bh'+'\x22,\x22gov.bh\x22'+',\x22bi\x22,\x22co.'+'bi\x22,\x22com.b'+'i\x22,\x22edu.bi'+'\x22,\x22or.bi\x22,'+'\x22org.bi\x22,\x22'+'biz\x22,\x22bj\x22,'+'\x22asso.bj\x22,'+'\x22barreau.b'+'j\x22,\x22gouv.b'+'j\x22,\x22bm\x22,\x22c'+'om.bm\x22,\x22ed'+'u.bm\x22,\x22gov'+'.bm\x22,\x22net.'+'bm\x22,\x22org.b'+'m\x22,\x22bn\x22,\x22c'+'om.bn\x22,\x22ed'+'u.bn\x22,\x22gov'+'.bn\x22,\x22net.'+'bn\x22,\x22org.b'+'n\x22,\x22bo\x22,\x22c'+'om.bo\x22,\x22ed'+'u.bo\x22,\x22gob'+'.bo\x22,\x22int.'+'bo\x22,\x22org.b'+'o\x22,\x22net.bo'+'\x22,\x22mil.bo\x22'+',\x22tv.bo\x22,\x22'+'web.bo\x22,\x22a'+'cademia.bo'+'\x22,\x22agro.bo'+'\x22,\x22arte.bo'+'\x22,\x22blog.bo'+'\x22,\x22bolivia'+'.bo\x22,\x22cien'+'cia.bo\x22,\x22c'+'ooperativa'+'.bo\x22,\x22demo'+'cracia.bo\x22'+',\x22deporte.'+'bo\x22,\x22ecolo'+'gia.bo\x22,\x22e'+'conomia.bo'+'\x22,\x22empresa'+'.bo\x22,\x22indi'+'gena.bo\x22,\x22'+'industria.'+'bo\x22,\x22info.'+'bo\x22,\x22medic'+'ina.bo\x22,\x22m'+'ovimiento.'+'bo\x22,\x22music'+'a.bo\x22,\x22nat'+'ural.bo\x22,\x22'+'nombre.bo\x22'+',\x22noticias'+'.bo\x22,\x22patr'+'ia.bo\x22,\x22po'+'litica.bo\x22'+',\x22profesio'+'nal.bo\x22,\x22p'+'lurinacion'+'al.bo\x22,\x22pu'+'eblo.bo\x22,\x22'+'revista.bo'+'\x22,\x22salud.b'+'o\x22,\x22tecnol'+'ogia.bo\x22,\x22'+'tksat.bo\x22,'+'\x22transport'+'e.bo\x22,\x22wik'+'i.bo\x22,\x22br\x22'+',\x229guacu.b'+'r\x22,\x22abc.br'+'\x22,\x22adm.br\x22'+',\x22adv.br\x22,'+'\x22agr.br\x22,\x22'+'aju.br\x22,\x22a'+'m.br\x22,\x22ana'+'ni.br\x22,\x22ap'+'arecida.br'+'\x22,\x22arq.br\x22'+',\x22art.br\x22,'+'\x22ato.br\x22,\x22'+'b.br\x22,\x22bar')+('ueri.br\x22,\x22'+'belem.br\x22,'+'\x22bhz.br\x22,\x22'+'bio.br\x22,\x22b'+'log.br\x22,\x22b'+'md.br\x22,\x22bo'+'avista.br\x22'+',\x22bsb.br\x22,'+'\x22campinagr'+'ande.br\x22,\x22'+'campinas.b'+'r\x22,\x22caxias'+'.br\x22,\x22cim.'+'br\x22,\x22cng.b'+'r\x22,\x22cnt.br'+'\x22,\x22com.br\x22'+',\x22contagem'+'.br\x22,\x22coop'+'.br\x22,\x22cri.'+'br\x22,\x22cuiab'+'a.br\x22,\x22cur'+'itiba.br\x22,'+'\x22def.br\x22,\x22'+'ecn.br\x22,\x22e'+'co.br\x22,\x22ed'+'u.br\x22,\x22emp'+'.br\x22,\x22eng.'+'br\x22,\x22esp.b'+'r\x22,\x22etc.br'+'\x22,\x22eti.br\x22'+',\x22far.br\x22,'+'\x22feira.br\x22'+',\x22flog.br\x22'+',\x22floripa.'+'br\x22,\x22fm.br'+'\x22,\x22fnd.br\x22'+',\x22fortal.b'+'r\x22,\x22fot.br'+'\x22,\x22foz.br\x22'+',\x22fst.br\x22,'+'\x22g12.br\x22,\x22'+'ggf.br\x22,\x22g'+'oiania.br\x22'+',\x22gov.br\x22,'+'\x22ac.gov.br'+'\x22,\x22al.gov.'+'br\x22,\x22am.go'+'v.br\x22,\x22ap.'+'gov.br\x22,\x22b'+'a.gov.br\x22,'+'\x22ce.gov.br'+'\x22,\x22df.gov.'+'br\x22,\x22es.go'+'v.br\x22,\x22go.'+'gov.br\x22,\x22m'+'a.gov.br\x22,'+'\x22mg.gov.br'+'\x22,\x22ms.gov.'+'br\x22,\x22mt.go'+'v.br\x22,\x22pa.'+'gov.br\x22,\x22p'+'b.gov.br\x22,'+'\x22pe.gov.br'+'\x22,\x22pi.gov.'+'br\x22,\x22pr.go'+'v.br\x22,\x22rj.'+'gov.br\x22,\x22r'+'n.gov.br\x22,'+'\x22ro.gov.br'+'\x22,\x22rr.gov.'+'br\x22,\x22rs.go'+'v.br\x22,\x22sc.'+'gov.br\x22,\x22s'+'e.gov.br\x22,'+'\x22sp.gov.br'+'\x22,\x22to.gov.'+'br\x22,\x22gru.b'+'r\x22,\x22imb.br'+'\x22,\x22ind.br\x22'+',\x22inf.br\x22,'+'\x22jab.br\x22,\x22'+'jampa.br\x22,'+'\x22jdf.br\x22,\x22'+'joinville.'+'br\x22,\x22jor.b'+'r\x22,\x22jus.br'+'\x22,\x22leg.br\x22'+',\x22lel.br\x22,'+'\x22londrina.'+'br\x22,\x22macap'+'a.br\x22,\x22mac'+'eio.br\x22,\x22m'+'anaus.br\x22,'+'\x22maringa.b'+'r\x22,\x22mat.br'+'\x22,\x22med.br\x22'+',\x22mil.br\x22,'+'\x22morena.br'+'\x22,\x22mp.br\x22,'+'\x22mus.br\x22,\x22')+('natal.br\x22,'+'\x22net.br\x22,\x22'+'niteroi.br'+'\x22,\x22*.nom.b'+'r\x22,\x22not.br'+'\x22,\x22ntr.br\x22'+',\x22odo.br\x22,'+'\x22ong.br\x22,\x22'+'org.br\x22,\x22o'+'sasco.br\x22,'+'\x22palmas.br'+'\x22,\x22poa.br\x22'+',\x22ppg.br\x22,'+'\x22pro.br\x22,\x22'+'psc.br\x22,\x22p'+'si.br\x22,\x22pv'+'h.br\x22,\x22qsl'+'.br\x22,\x22radi'+'o.br\x22,\x22rec'+'.br\x22,\x22reci'+'fe.br\x22,\x22ri'+'beirao.br\x22'+',\x22rio.br\x22,'+'\x22riobranco'+'.br\x22,\x22riop'+'reto.br\x22,\x22'+'salvador.b'+'r\x22,\x22sampa.'+'br\x22,\x22santa'+'maria.br\x22,'+'\x22santoandr'+'e.br\x22,\x22sao'+'bernardo.b'+'r\x22,\x22saogon'+'ca.br\x22,\x22sj'+'c.br\x22,\x22slg'+'.br\x22,\x22slz.'+'br\x22,\x22soroc'+'aba.br\x22,\x22s'+'rv.br\x22,\x22ta'+'xi.br\x22,\x22tc'+'.br\x22,\x22teo.'+'br\x22,\x22the.b'+'r\x22,\x22tmp.br'+'\x22,\x22trd.br\x22'+',\x22tur.br\x22,'+'\x22tv.br\x22,\x22u'+'di.br\x22,\x22ve'+'t.br\x22,\x22vix'+'.br\x22,\x22vlog'+'.br\x22,\x22wiki'+'.br\x22,\x22zlg.'+'br\x22,\x22bs\x22,\x22'+'com.bs\x22,\x22n'+'et.bs\x22,\x22or'+'g.bs\x22,\x22edu'+'.bs\x22,\x22gov.'+'bs\x22,\x22bt\x22,\x22'+'com.bt\x22,\x22e'+'du.bt\x22,\x22go'+'v.bt\x22,\x22net'+'.bt\x22,\x22org.'+'bt\x22,\x22bv\x22,\x22'+'bw\x22,\x22co.bw'+'\x22,\x22org.bw\x22'+',\x22by\x22,\x22gov'+'.by\x22,\x22mil.'+'by\x22,\x22com.b'+'y\x22,\x22of.by\x22'+',\x22bz\x22,\x22com'+'.bz\x22,\x22net.'+'bz\x22,\x22org.b'+'z\x22,\x22edu.bz'+'\x22,\x22gov.bz\x22'+',\x22ca\x22,\x22ab.'+'ca\x22,\x22bc.ca'+'\x22,\x22mb.ca\x22,'+'\x22nb.ca\x22,\x22n'+'f.ca\x22,\x22nl.'+'ca\x22,\x22ns.ca'+'\x22,\x22nt.ca\x22,'+'\x22nu.ca\x22,\x22o'+'n.ca\x22,\x22pe.'+'ca\x22,\x22qc.ca'+'\x22,\x22sk.ca\x22,'+'\x22yk.ca\x22,\x22g'+'c.ca\x22,\x22cat'+'\x22,\x22cc\x22,\x22cd'+'\x22,\x22gov.cd\x22'+',\x22cf\x22,\x22cg\x22'+',\x22ch\x22,\x22ci\x22'+',\x22org.ci\x22,'+'\x22or.ci\x22,\x22c'+'om.ci\x22,\x22co'+'.ci\x22,\x22edu.'+'ci\x22,\x22ed.ci'+'\x22,\x22ac.ci\x22,'+'\x22net.ci\x22,\x22'+'go.ci\x22,\x22as'+'so.ci\x22,\x22aĆ©')+('roport.ci\x22'+',\x22int.ci\x22,'+'\x22presse.ci'+'\x22,\x22md.ci\x22,'+'\x22gouv.ci\x22,'+'\x22*.ck\x22,\x22!w'+'ww.ck\x22,\x22cl'+'\x22,\x22aprende'+'mas.cl\x22,\x22c'+'o.cl\x22,\x22gob'+'.cl\x22,\x22gov.'+'cl\x22,\x22mil.c'+'l\x22,\x22cm\x22,\x22c'+'o.cm\x22,\x22com'+'.cm\x22,\x22gov.'+'cm\x22,\x22net.c'+'m\x22,\x22cn\x22,\x22a'+'c.cn\x22,\x22com'+'.cn\x22,\x22edu.'+'cn\x22,\x22gov.c'+'n\x22,\x22net.cn'+'\x22,\x22org.cn\x22'+',\x22mil.cn\x22,'+'\x22å…¬åø.cn\x22,\x22网'+'络.cn\x22,\x22網絔.'+'cn\x22,\x22ah.cn'+'\x22,\x22bj.cn\x22,'+'\x22cq.cn\x22,\x22f'+'j.cn\x22,\x22gd.'+'cn\x22,\x22gs.cn'+'\x22,\x22gz.cn\x22,'+'\x22gx.cn\x22,\x22h'+'a.cn\x22,\x22hb.'+'cn\x22,\x22he.cn'+'\x22,\x22hi.cn\x22,'+'\x22hl.cn\x22,\x22h'+'n.cn\x22,\x22jl.'+'cn\x22,\x22js.cn'+'\x22,\x22jx.cn\x22,'+'\x22ln.cn\x22,\x22n'+'m.cn\x22,\x22nx.'+'cn\x22,\x22qh.cn'+'\x22,\x22sc.cn\x22,'+'\x22sd.cn\x22,\x22s'+'h.cn\x22,\x22sn.'+'cn\x22,\x22sx.cn'+'\x22,\x22tj.cn\x22,'+'\x22xj.cn\x22,\x22x'+'z.cn\x22,\x22yn.'+'cn\x22,\x22zj.cn'+'\x22,\x22hk.cn\x22,'+'\x22mo.cn\x22,\x22t'+'w.cn\x22,\x22co\x22'+',\x22arts.co\x22'+',\x22com.co\x22,'+'\x22edu.co\x22,\x22'+'firm.co\x22,\x22'+'gov.co\x22,\x22i'+'nfo.co\x22,\x22i'+'nt.co\x22,\x22mi'+'l.co\x22,\x22net'+'.co\x22,\x22nom.'+'co\x22,\x22org.c'+'o\x22,\x22rec.co'+'\x22,\x22web.co\x22'+',\x22com\x22,\x22co'+'op\x22,\x22cr\x22,\x22'+'ac.cr\x22,\x22co'+'.cr\x22,\x22ed.c'+'r\x22,\x22fi.cr\x22'+',\x22go.cr\x22,\x22'+'or.cr\x22,\x22sa'+'.cr\x22,\x22cu\x22,'+'\x22com.cu\x22,\x22'+'edu.cu\x22,\x22o'+'rg.cu\x22,\x22ne'+'t.cu\x22,\x22gov'+'.cu\x22,\x22inf.'+'cu\x22,\x22cv\x22,\x22'+'cw\x22,\x22com.c'+'w\x22,\x22edu.cw'+'\x22,\x22net.cw\x22'+',\x22org.cw\x22,'+'\x22cx\x22,\x22gov.'+'cx\x22,\x22cy\x22,\x22'+'ac.cy\x22,\x22bi'+'z.cy\x22,\x22com'+'.cy\x22,\x22eklo'+'ges.cy\x22,\x22g'+'ov.cy\x22,\x22lt'+'d.cy\x22,\x22nam'+'e.cy\x22,\x22net'+'.cy\x22,\x22org.'+'cy\x22,\x22parli'+'ament.cy\x22,'+'\x22press.cy\x22'+',\x22pro.cy\x22,'+'\x22tm.cy\x22,\x22c'+'z\x22,\x22de\x22,\x22d'+'j\x22,\x22dk\x22,\x22d')+('m\x22,\x22com.dm'+'\x22,\x22net.dm\x22'+',\x22org.dm\x22,'+'\x22edu.dm\x22,\x22'+'gov.dm\x22,\x22d'+'o\x22,\x22art.do'+'\x22,\x22com.do\x22'+',\x22edu.do\x22,'+'\x22gob.do\x22,\x22'+'gov.do\x22,\x22m'+'il.do\x22,\x22ne'+'t.do\x22,\x22org'+'.do\x22,\x22sld.'+'do\x22,\x22web.d'+'o\x22,\x22dz\x22,\x22c'+'om.dz\x22,\x22or'+'g.dz\x22,\x22net'+'.dz\x22,\x22gov.'+'dz\x22,\x22edu.d'+'z\x22,\x22asso.d'+'z\x22,\x22pol.dz'+'\x22,\x22art.dz\x22'+',\x22ec\x22,\x22com'+'.ec\x22,\x22info'+'.ec\x22,\x22net.'+'ec\x22,\x22fin.e'+'c\x22,\x22k12.ec'+'\x22,\x22med.ec\x22'+',\x22pro.ec\x22,'+'\x22org.ec\x22,\x22'+'edu.ec\x22,\x22g'+'ov.ec\x22,\x22go'+'b.ec\x22,\x22mil'+'.ec\x22,\x22edu\x22'+',\x22ee\x22,\x22edu'+'.ee\x22,\x22gov.'+'ee\x22,\x22riik.'+'ee\x22,\x22lib.e'+'e\x22,\x22med.ee'+'\x22,\x22com.ee\x22'+',\x22pri.ee\x22,'+'\x22aip.ee\x22,\x22'+'org.ee\x22,\x22f'+'ie.ee\x22,\x22eg'+'\x22,\x22com.eg\x22'+',\x22edu.eg\x22,'+'\x22eun.eg\x22,\x22'+'gov.eg\x22,\x22m'+'il.eg\x22,\x22na'+'me.eg\x22,\x22ne'+'t.eg\x22,\x22org'+'.eg\x22,\x22sci.'+'eg\x22,\x22*.er\x22'+',\x22es\x22,\x22com'+'.es\x22,\x22nom.'+'es\x22,\x22org.e'+'s\x22,\x22gob.es'+'\x22,\x22edu.es\x22'+',\x22et\x22,\x22com'+'.et\x22,\x22gov.'+'et\x22,\x22org.e'+'t\x22,\x22edu.et'+'\x22,\x22biz.et\x22'+',\x22name.et\x22'+',\x22info.et\x22'+',\x22net.et\x22,'+'\x22eu\x22,\x22fi\x22,'+'\x22aland.fi\x22'+',\x22fj\x22,\x22ac.'+'fj\x22,\x22biz.f'+'j\x22,\x22com.fj'+'\x22,\x22gov.fj\x22'+',\x22info.fj\x22'+',\x22mil.fj\x22,'+'\x22name.fj\x22,'+'\x22net.fj\x22,\x22'+'org.fj\x22,\x22p'+'ro.fj\x22,\x22*.'+'fk\x22,\x22fm\x22,\x22'+'fo\x22,\x22fr\x22,\x22'+'asso.fr\x22,\x22'+'com.fr\x22,\x22g'+'ouv.fr\x22,\x22n'+'om.fr\x22,\x22pr'+'d.fr\x22,\x22tm.'+'fr\x22,\x22aerop'+'ort.fr\x22,\x22a'+'vocat.fr\x22,'+'\x22avoues.fr'+'\x22,\x22cci.fr\x22'+',\x22chambagr'+'i.fr\x22,\x22chi'+'rurgiens-d'+'entistes.f'+'r\x22,\x22expert'+'s-comptabl'+'es.fr\x22,\x22ge'+'ometre-exp'+'ert.fr\x22,\x22g'+'reta.fr\x22,\x22')+('huissier-j'+'ustice.fr\x22'+',\x22medecin.'+'fr\x22,\x22notai'+'res.fr\x22,\x22p'+'harmacien.'+'fr\x22,\x22port.'+'fr\x22,\x22veter'+'inaire.fr\x22'+',\x22ga\x22,\x22gb\x22'+',\x22gd\x22,\x22ge\x22'+',\x22com.ge\x22,'+'\x22edu.ge\x22,\x22'+'gov.ge\x22,\x22o'+'rg.ge\x22,\x22mi'+'l.ge\x22,\x22net'+'.ge\x22,\x22pvt.'+'ge\x22,\x22gf\x22,\x22'+'gg\x22,\x22co.gg'+'\x22,\x22net.gg\x22'+',\x22org.gg\x22,'+'\x22gh\x22,\x22com.'+'gh\x22,\x22edu.g'+'h\x22,\x22gov.gh'+'\x22,\x22org.gh\x22'+',\x22mil.gh\x22,'+'\x22gi\x22,\x22com.'+'gi\x22,\x22ltd.g'+'i\x22,\x22gov.gi'+'\x22,\x22mod.gi\x22'+',\x22edu.gi\x22,'+'\x22org.gi\x22,\x22'+'gl\x22,\x22co.gl'+'\x22,\x22com.gl\x22'+',\x22edu.gl\x22,'+'\x22net.gl\x22,\x22'+'org.gl\x22,\x22g'+'m\x22,\x22gn\x22,\x22a'+'c.gn\x22,\x22com'+'.gn\x22,\x22edu.'+'gn\x22,\x22gov.g'+'n\x22,\x22org.gn'+'\x22,\x22net.gn\x22'+',\x22gov\x22,\x22gp'+'\x22,\x22com.gp\x22'+',\x22net.gp\x22,'+'\x22mobi.gp\x22,'+'\x22edu.gp\x22,\x22'+'org.gp\x22,\x22a'+'sso.gp\x22,\x22g'+'q\x22,\x22gr\x22,\x22c'+'om.gr\x22,\x22ed'+'u.gr\x22,\x22net'+'.gr\x22,\x22org.'+'gr\x22,\x22gov.g'+'r\x22,\x22gs\x22,\x22g'+'t\x22,\x22com.gt'+'\x22,\x22edu.gt\x22'+',\x22gob.gt\x22,'+'\x22ind.gt\x22,\x22'+'mil.gt\x22,\x22n'+'et.gt\x22,\x22or'+'g.gt\x22,\x22gu\x22'+',\x22com.gu\x22,'+'\x22edu.gu\x22,\x22'+'gov.gu\x22,\x22g'+'uam.gu\x22,\x22i'+'nfo.gu\x22,\x22n'+'et.gu\x22,\x22or'+'g.gu\x22,\x22web'+'.gu\x22,\x22gw\x22,'+'\x22gy\x22,\x22co.g'+'y\x22,\x22com.gy'+'\x22,\x22edu.gy\x22'+',\x22gov.gy\x22,'+'\x22net.gy\x22,\x22'+'org.gy\x22,\x22h'+'k\x22,\x22com.hk'+'\x22,\x22edu.hk\x22'+',\x22gov.hk\x22,'+'\x22idv.hk\x22,\x22'+'net.hk\x22,\x22o'+'rg.hk\x22,\x22å…¬åø'+'.hk\x22,\x22教育.h'+'k\x22,\x22ę•Žč‚².hk\x22'+',\x22ę”æåŗœ.hk\x22,\x22'+'個人.hk\x22,\x22äøŖäŗŗ'+'.hk\x22,\x22箇人.h'+'k\x22,\x22網络.hk\x22'+',\x22ē½‘ē»œ.hk\x22,\x22'+'组織.hk\x22,\x22網絔'+'.hk\x22,\x22网絔.h'+'k\x22,\x22组织.hk\x22'+',\x22組織.hk\x22,\x22'+'組织.hk\x22,\x22hm'+'\x22,\x22hn\x22,\x22co'+'m.hn\x22,\x22edu'+'.hn\x22,\x22org.'+'hn\x22,\x22net.h'+'n\x22,\x22mil.hn')+('\x22,\x22gob.hn\x22'+',\x22hr\x22,\x22iz.'+'hr\x22,\x22from.'+'hr\x22,\x22name.'+'hr\x22,\x22com.h'+'r\x22,\x22ht\x22,\x22c'+'om.ht\x22,\x22sh'+'op.ht\x22,\x22fi'+'rm.ht\x22,\x22in'+'fo.ht\x22,\x22ad'+'ult.ht\x22,\x22n'+'et.ht\x22,\x22pr'+'o.ht\x22,\x22org'+'.ht\x22,\x22med.'+'ht\x22,\x22art.h'+'t\x22,\x22coop.h'+'t\x22,\x22pol.ht'+'\x22,\x22asso.ht'+'\x22,\x22edu.ht\x22'+',\x22rel.ht\x22,'+'\x22gouv.ht\x22,'+'\x22perso.ht\x22'+',\x22hu\x22,\x22co.'+'hu\x22,\x22info.'+'hu\x22,\x22org.h'+'u\x22,\x22priv.h'+'u\x22,\x22sport.'+'hu\x22,\x22tm.hu'+'\x22,\x222000.hu'+'\x22,\x22agrar.h'+'u\x22,\x22bolt.h'+'u\x22,\x22casino'+'.hu\x22,\x22city'+'.hu\x22,\x22erot'+'ica.hu\x22,\x22e'+'rotika.hu\x22'+',\x22film.hu\x22'+',\x22forum.hu'+'\x22,\x22games.h'+'u\x22,\x22hotel.'+'hu\x22,\x22ingat'+'lan.hu\x22,\x22j'+'ogasz.hu\x22,'+'\x22konyvelo.'+'hu\x22,\x22lakas'+'.hu\x22,\x22medi'+'a.hu\x22,\x22new'+'s.hu\x22,\x22rek'+'lam.hu\x22,\x22s'+'ex.hu\x22,\x22sh'+'op.hu\x22,\x22su'+'li.hu\x22,\x22sz'+'ex.hu\x22,\x22to'+'zsde.hu\x22,\x22'+'utazas.hu\x22'+',\x22video.hu'+'\x22,\x22id\x22,\x22ac'+'.id\x22,\x22biz.'+'id\x22,\x22co.id'+'\x22,\x22desa.id'+'\x22,\x22go.id\x22,'+'\x22mil.id\x22,\x22'+'my.id\x22,\x22ne'+'t.id\x22,\x22or.'+'id\x22,\x22ponpe'+'s.id\x22,\x22sch'+'.id\x22,\x22web.'+'id\x22,\x22ie\x22,\x22'+'gov.ie\x22,\x22i'+'l\x22,\x22ac.il\x22'+',\x22co.il\x22,\x22'+'gov.il\x22,\x22i'+'df.il\x22,\x22k1'+'2.il\x22,\x22mun'+'i.il\x22,\x22net'+'.il\x22,\x22org.'+'il\x22,\x22im\x22,\x22'+'ac.im\x22,\x22co'+'.im\x22,\x22com.'+'im\x22,\x22ltd.c'+'o.im\x22,\x22net'+'.im\x22,\x22org.'+'im\x22,\x22plc.c'+'o.im\x22,\x22tt.'+'im\x22,\x22tv.im'+'\x22,\x22in\x22,\x22co'+'.in\x22,\x22firm'+'.in\x22,\x22net.'+'in\x22,\x22org.i'+'n\x22,\x22gen.in'+'\x22,\x22ind.in\x22'+',\x22nic.in\x22,'+'\x22ac.in\x22,\x22e'+'du.in\x22,\x22re'+'s.in\x22,\x22gov'+'.in\x22,\x22mil.'+'in\x22,\x22info\x22'+',\x22int\x22,\x22eu'+'.int\x22,\x22io\x22'+',\x22com.io\x22,')+('\x22iq\x22,\x22gov.'+'iq\x22,\x22edu.i'+'q\x22,\x22mil.iq'+'\x22,\x22com.iq\x22'+',\x22org.iq\x22,'+'\x22net.iq\x22,\x22'+'ir\x22,\x22ac.ir'+'\x22,\x22co.ir\x22,'+'\x22gov.ir\x22,\x22'+'id.ir\x22,\x22ne'+'t.ir\x22,\x22org'+'.ir\x22,\x22sch.'+'ir\x22,\x22Ų§ŪŒŲ±Ų§Ł†'+'.ir\x22,\x22ايرا'+'ن.ir\x22,\x22is\x22'+',\x22net.is\x22,'+'\x22com.is\x22,\x22'+'edu.is\x22,\x22g'+'ov.is\x22,\x22or'+'g.is\x22,\x22int'+'.is\x22,\x22it\x22,'+'\x22gov.it\x22,\x22'+'edu.it\x22,\x22a'+'br.it\x22,\x22ab'+'ruzzo.it\x22,'+'\x22aosta-val'+'ley.it\x22,\x22a'+'ostavalley'+'.it\x22,\x22bas.'+'it\x22,\x22basil'+'icata.it\x22,'+'\x22cal.it\x22,\x22'+'calabria.i'+'t\x22,\x22cam.it'+'\x22,\x22campani'+'a.it\x22,\x22emi'+'lia-romagn'+'a.it\x22,\x22emi'+'liaromagna'+'.it\x22,\x22emr.'+'it\x22,\x22friul'+'i-v-giulia'+'.it\x22,\x22friu'+'li-ve-giul'+'ia.it\x22,\x22fr'+'iuli-vegiu'+'lia.it\x22,\x22f'+'riuli-vene'+'zia-giulia'+'.it\x22,\x22friu'+'li-venezia'+'giulia.it\x22'+',\x22friuli-v'+'giulia.it\x22'+',\x22friuliv-'+'giulia.it\x22'+',\x22friulive'+'-giulia.it'+'\x22,\x22friuliv'+'egiulia.it'+'\x22,\x22friuliv'+'enezia-giu'+'lia.it\x22,\x22f'+'riulivenez'+'iagiulia.i'+'t\x22,\x22friuli'+'vgiulia.it'+'\x22,\x22fvg.it\x22'+',\x22laz.it\x22,'+'\x22lazio.it\x22'+',\x22lig.it\x22,'+'\x22liguria.i'+'t\x22,\x22lom.it'+'\x22,\x22lombard'+'ia.it\x22,\x22lo'+'mbardy.it\x22'+',\x22lucania.'+'it\x22,\x22mar.i'+'t\x22,\x22marche'+'.it\x22,\x22mol.'+'it\x22,\x22molis'+'e.it\x22,\x22pie'+'dmont.it\x22,'+'\x22piemonte.'+'it\x22,\x22pmn.i'+'t\x22,\x22pug.it'+'\x22,\x22puglia.'+'it\x22,\x22sar.i'+'t\x22,\x22sardeg'+'na.it\x22,\x22sa'+'rdinia.it\x22'+',\x22sic.it\x22,'+'\x22sicilia.i'+'t\x22,\x22sicily'+'.it\x22,\x22taa.'+'it\x22,\x22tos.i'+'t\x22,\x22toscan'+'a.it\x22,\x22tre'+'ntin-sud-t'+'irol.it\x22,\x22')+('trentin-sü'+'d-tirol.it'+'\x22,\x22trentin'+'-sudtirol.'+'it\x22,\x22trent'+'in-südtiro'+'l.it\x22,\x22tre'+'ntin-sued-'+'tirol.it\x22,'+'\x22trentin-s'+'uedtirol.i'+'t\x22,\x22trenti'+'no-a-adige'+'.it\x22,\x22tren'+'tino-aadig'+'e.it\x22,\x22tre'+'ntino-alto'+'-adige.it\x22'+',\x22trentino'+'-altoadige'+'.it\x22,\x22tren'+'tino-s-tir'+'ol.it\x22,\x22tr'+'entino-sti'+'rol.it\x22,\x22t'+'rentino-su'+'d-tirol.it'+'\x22,\x22trentin'+'o-süd-tiro'+'l.it\x22,\x22tre'+'ntino-sudt'+'irol.it\x22,\x22'+'trentino-s'+'üdtirol.it'+'\x22,\x22trentin'+'o-sued-tir'+'ol.it\x22,\x22tr'+'entino-sue'+'dtirol.it\x22'+',\x22trentino'+'.it\x22,\x22tren'+'tinoa-adig'+'e.it\x22,\x22tre'+'ntinoaadig'+'e.it\x22,\x22tre'+'ntinoalto-'+'adige.it\x22,'+'\x22trentinoa'+'ltoadige.i'+'t\x22,\x22trenti'+'nos-tirol.'+'it\x22,\x22trent'+'inostirol.'+'it\x22,\x22trent'+'inosud-tir'+'ol.it\x22,\x22tr'+'entinosüd-'+'tirol.it\x22,'+'\x22trentinos'+'udtirol.it'+'\x22,\x22trentin'+'osüdtirol.'+'it\x22,\x22trent'+'inosued-ti'+'rol.it\x22,\x22t'+'rentinosue'+'dtirol.it\x22'+',\x22trentins'+'ud-tirol.i'+'t\x22,\x22trenti'+'nsüd-tirol'+'.it\x22,\x22tren'+'tinsudtiro'+'l.it\x22,\x22tre'+'ntinsüdtir'+'ol.it\x22,\x22tr'+'entinsued-'+'tirol.it\x22,'+'\x22trentinsu'+'edtirol.it'+'\x22,\x22tuscany'+'.it\x22,\x22umb.'+'it\x22,\x22umbri'+'a.it\x22,\x22val'+'-d-aosta.i'+'t\x22,\x22val-da'+'osta.it\x22,\x22'+'vald-aosta'+'.it\x22,\x22vald'+'aosta.it\x22,'+'\x22valle-aos'+'ta.it\x22,\x22va'+'lle-d-aost'+'a.it\x22,\x22val'+'le-daosta.'+'it\x22,\x22valle'+'aosta.it\x22,'+'\x22valled-ao'+'sta.it\x22,\x22v'+'alledaosta')+('.it\x22,\x22vall'+'ee-aoste.i'+'t\x22,\x22vallĆ©e'+'-aoste.it\x22'+',\x22vallee-d'+'-aoste.it\x22'+',\x22vallĆ©e-d'+'-aoste.it\x22'+',\x22valleeao'+'ste.it\x22,\x22v'+'allĆ©eaoste'+'.it\x22,\x22vall'+'eedaoste.i'+'t\x22,\x22vallĆ©e'+'daoste.it\x22'+',\x22vao.it\x22,'+'\x22vda.it\x22,\x22'+'ven.it\x22,\x22v'+'eneto.it\x22,'+'\x22ag.it\x22,\x22a'+'grigento.i'+'t\x22,\x22al.it\x22'+',\x22alessand'+'ria.it\x22,\x22a'+'lto-adige.'+'it\x22,\x22altoa'+'dige.it\x22,\x22'+'an.it\x22,\x22an'+'cona.it\x22,\x22'+'andria-bar'+'letta-tran'+'i.it\x22,\x22and'+'ria-trani-'+'barletta.i'+'t\x22,\x22andria'+'barlettatr'+'ani.it\x22,\x22a'+'ndriatrani'+'barletta.i'+'t\x22,\x22ao.it\x22'+',\x22aosta.it'+'\x22,\x22aoste.i'+'t\x22,\x22ap.it\x22'+',\x22aq.it\x22,\x22'+'aquila.it\x22'+',\x22ar.it\x22,\x22'+'arezzo.it\x22'+',\x22ascoli-p'+'iceno.it\x22,'+'\x22ascolipic'+'eno.it\x22,\x22a'+'sti.it\x22,\x22a'+'t.it\x22,\x22av.'+'it\x22,\x22avell'+'ino.it\x22,\x22b'+'a.it\x22,\x22bal'+'san-sudtir'+'ol.it\x22,\x22ba'+'lsan-südti'+'rol.it\x22,\x22b'+'alsan-sued'+'tirol.it\x22,'+'\x22balsan.it'+'\x22,\x22bari.it'+'\x22,\x22barlett'+'a-trani-an'+'dria.it\x22,\x22'+'barlettatr'+'aniandria.'+'it\x22,\x22bellu'+'no.it\x22,\x22be'+'nevento.it'+'\x22,\x22bergamo'+'.it\x22,\x22bg.i'+'t\x22,\x22bi.it\x22'+',\x22biella.i'+'t\x22,\x22bl.it\x22'+',\x22bn.it\x22,\x22'+'bo.it\x22,\x22bo'+'logna.it\x22,'+'\x22bolzano-a'+'ltoadige.i'+'t\x22,\x22bolzan'+'o.it\x22,\x22boz'+'en-sudtiro'+'l.it\x22,\x22boz'+'en-südtiro'+'l.it\x22,\x22boz'+'en-suedtir'+'ol.it\x22,\x22bo'+'zen.it\x22,\x22b'+'r.it\x22,\x22bre'+'scia.it\x22,\x22'+'brindisi.i'+'t\x22,\x22bs.it\x22'+',\x22bt.it\x22,\x22'+'bulsan-sud'+'tirol.it\x22,'+'\x22bulsan-sü'+'dtirol.it\x22')+(',\x22bulsan-s'+'uedtirol.i'+'t\x22,\x22bulsan'+'.it\x22,\x22bz.i'+'t\x22,\x22ca.it\x22'+',\x22cagliari'+'.it\x22,\x22calt'+'anissetta.'+'it\x22,\x22campi'+'dano-medio'+'.it\x22,\x22camp'+'idanomedio'+'.it\x22,\x22camp'+'obasso.it\x22'+',\x22carbonia'+'-iglesias.'+'it\x22,\x22carbo'+'niaiglesia'+'s.it\x22,\x22car'+'rara-massa'+'.it\x22,\x22carr'+'aramassa.i'+'t\x22,\x22casert'+'a.it\x22,\x22cat'+'ania.it\x22,\x22'+'catanzaro.'+'it\x22,\x22cb.it'+'\x22,\x22ce.it\x22,'+'\x22cesena-fo'+'rli.it\x22,\x22c'+'esena-forl'+'Ƭ.it\x22,\x22ces'+'enaforli.i'+'t\x22,\x22cesena'+'forlƬ.it\x22,'+'\x22ch.it\x22,\x22c'+'hieti.it\x22,'+'\x22ci.it\x22,\x22c'+'l.it\x22,\x22cn.'+'it\x22,\x22co.it'+'\x22,\x22como.it'+'\x22,\x22cosenza'+'.it\x22,\x22cr.i'+'t\x22,\x22cremon'+'a.it\x22,\x22cro'+'tone.it\x22,\x22'+'cs.it\x22,\x22ct'+'.it\x22,\x22cune'+'o.it\x22,\x22cz.'+'it\x22,\x22dell-'+'ogliastra.'+'it\x22,\x22dello'+'gliastra.i'+'t\x22,\x22en.it\x22'+',\x22enna.it\x22'+',\x22fc.it\x22,\x22'+'fe.it\x22,\x22fe'+'rmo.it\x22,\x22f'+'errara.it\x22'+',\x22fg.it\x22,\x22'+'fi.it\x22,\x22fi'+'renze.it\x22,'+'\x22florence.'+'it\x22,\x22fm.it'+'\x22,\x22foggia.'+'it\x22,\x22forli'+'-cesena.it'+'\x22,\x22forlƬ-c'+'esena.it\x22,'+'\x22forlicese'+'na.it\x22,\x22fo'+'rlƬcesena.'+'it\x22,\x22fr.it'+'\x22,\x22frosino'+'ne.it\x22,\x22ge'+'.it\x22,\x22geno'+'a.it\x22,\x22gen'+'ova.it\x22,\x22g'+'o.it\x22,\x22gor'+'izia.it\x22,\x22'+'gr.it\x22,\x22gr'+'osseto.it\x22'+',\x22iglesias'+'-carbonia.'+'it\x22,\x22igles'+'iascarboni'+'a.it\x22,\x22im.'+'it\x22,\x22imper'+'ia.it\x22,\x22is'+'.it\x22,\x22iser'+'nia.it\x22,\x22k'+'r.it\x22,\x22la-'+'spezia.it\x22'+',\x22laquila.'+'it\x22,\x22laspe'+'zia.it\x22,\x22l'+'atina.it\x22,'+'\x22lc.it\x22,\x22l'+'e.it\x22,\x22lec'+'ce.it\x22,\x22le')+('cco.it\x22,\x22l'+'i.it\x22,\x22liv'+'orno.it\x22,\x22'+'lo.it\x22,\x22lo'+'di.it\x22,\x22lt'+'.it\x22,\x22lu.i'+'t\x22,\x22lucca.'+'it\x22,\x22macer'+'ata.it\x22,\x22m'+'antova.it\x22'+',\x22massa-ca'+'rrara.it\x22,'+'\x22massacarr'+'ara.it\x22,\x22m'+'atera.it\x22,'+'\x22mb.it\x22,\x22m'+'c.it\x22,\x22me.'+'it\x22,\x22medio'+'-campidano'+'.it\x22,\x22medi'+'ocampidano'+'.it\x22,\x22mess'+'ina.it\x22,\x22m'+'i.it\x22,\x22mil'+'an.it\x22,\x22mi'+'lano.it\x22,\x22'+'mn.it\x22,\x22mo'+'.it\x22,\x22mode'+'na.it\x22,\x22mo'+'nza-brianz'+'a.it\x22,\x22mon'+'za-e-della'+'-brianza.i'+'t\x22,\x22monza.'+'it\x22,\x22monza'+'brianza.it'+'\x22,\x22monzaeb'+'rianza.it\x22'+',\x22monzaede'+'llabrianza'+'.it\x22,\x22ms.i'+'t\x22,\x22mt.it\x22'+',\x22na.it\x22,\x22'+'naples.it\x22'+',\x22napoli.i'+'t\x22,\x22no.it\x22'+',\x22novara.i'+'t\x22,\x22nu.it\x22'+',\x22nuoro.it'+'\x22,\x22og.it\x22,'+'\x22ogliastra'+'.it\x22,\x22olbi'+'a-tempio.i'+'t\x22,\x22olbiat'+'empio.it\x22,'+'\x22or.it\x22,\x22o'+'ristano.it'+'\x22,\x22ot.it\x22,'+'\x22pa.it\x22,\x22p'+'adova.it\x22,'+'\x22padua.it\x22'+',\x22palermo.'+'it\x22,\x22parma'+'.it\x22,\x22pavi'+'a.it\x22,\x22pc.'+'it\x22,\x22pd.it'+'\x22,\x22pe.it\x22,'+'\x22perugia.i'+'t\x22,\x22pesaro'+'-urbino.it'+'\x22,\x22pesarou'+'rbino.it\x22,'+'\x22pescara.i'+'t\x22,\x22pg.it\x22'+',\x22pi.it\x22,\x22'+'piacenza.i'+'t\x22,\x22pisa.i'+'t\x22,\x22pistoi'+'a.it\x22,\x22pn.'+'it\x22,\x22po.it'+'\x22,\x22pordeno'+'ne.it\x22,\x22po'+'tenza.it\x22,'+'\x22pr.it\x22,\x22p'+'rato.it\x22,\x22'+'pt.it\x22,\x22pu'+'.it\x22,\x22pv.i'+'t\x22,\x22pz.it\x22'+',\x22ra.it\x22,\x22'+'ragusa.it\x22'+',\x22ravenna.'+'it\x22,\x22rc.it'+'\x22,\x22re.it\x22,'+'\x22reggio-ca'+'labria.it\x22'+',\x22reggio-e'+'milia.it\x22,'+'\x22reggiocal'+'abria.it\x22,'+'\x22reggioemi')+('lia.it\x22,\x22r'+'g.it\x22,\x22ri.'+'it\x22,\x22rieti'+'.it\x22,\x22rimi'+'ni.it\x22,\x22rm'+'.it\x22,\x22rn.i'+'t\x22,\x22ro.it\x22'+',\x22roma.it\x22'+',\x22rome.it\x22'+',\x22rovigo.i'+'t\x22,\x22sa.it\x22'+',\x22salerno.'+'it\x22,\x22sassa'+'ri.it\x22,\x22sa'+'vona.it\x22,\x22'+'si.it\x22,\x22si'+'ena.it\x22,\x22s'+'iracusa.it'+'\x22,\x22so.it\x22,'+'\x22sondrio.i'+'t\x22,\x22sp.it\x22'+',\x22sr.it\x22,\x22'+'ss.it\x22,\x22su'+'edtirol.it'+'\x22,\x22südtiro'+'l.it\x22,\x22sv.'+'it\x22,\x22ta.it'+'\x22,\x22taranto'+'.it\x22,\x22te.i'+'t\x22,\x22tempio'+'-olbia.it\x22'+',\x22tempiool'+'bia.it\x22,\x22t'+'eramo.it\x22,'+'\x22terni.it\x22'+',\x22tn.it\x22,\x22'+'to.it\x22,\x22to'+'rino.it\x22,\x22'+'tp.it\x22,\x22tr'+'.it\x22,\x22tran'+'i-andria-b'+'arletta.it'+'\x22,\x22trani-b'+'arletta-an'+'dria.it\x22,\x22'+'traniandri'+'abarletta.'+'it\x22,\x22trani'+'barlettaan'+'dria.it\x22,\x22'+'trapani.it'+'\x22,\x22trento.'+'it\x22,\x22trevi'+'so.it\x22,\x22tr'+'ieste.it\x22,'+'\x22ts.it\x22,\x22t'+'urin.it\x22,\x22'+'tv.it\x22,\x22ud'+'.it\x22,\x22udin'+'e.it\x22,\x22urb'+'ino-pesaro'+'.it\x22,\x22urbi'+'nopesaro.i'+'t\x22,\x22va.it\x22'+',\x22varese.i'+'t\x22,\x22vb.it\x22'+',\x22vc.it\x22,\x22'+'ve.it\x22,\x22ve'+'nezia.it\x22,'+'\x22venice.it'+'\x22,\x22verbani'+'a.it\x22,\x22ver'+'celli.it\x22,'+'\x22verona.it'+'\x22,\x22vi.it\x22,'+'\x22vibo-vale'+'ntia.it\x22,\x22'+'vibovalent'+'ia.it\x22,\x22vi'+'cenza.it\x22,'+'\x22viterbo.i'+'t\x22,\x22vr.it\x22'+',\x22vs.it\x22,\x22'+'vt.it\x22,\x22vv'+'.it\x22,\x22je\x22,'+'\x22co.je\x22,\x22n'+'et.je\x22,\x22or'+'g.je\x22,\x22*.j'+'m\x22,\x22jo\x22,\x22c'+'om.jo\x22,\x22or'+'g.jo\x22,\x22net'+'.jo\x22,\x22edu.'+'jo\x22,\x22sch.j'+'o\x22,\x22gov.jo'+'\x22,\x22mil.jo\x22'+',\x22name.jo\x22'+',\x22jobs\x22,\x22j'+'p\x22,\x22ac.jp\x22'+',\x22ad.jp\x22,\x22'+'co.jp\x22,\x22ed')+('.jp\x22,\x22go.j'+'p\x22,\x22gr.jp\x22'+',\x22lg.jp\x22,\x22'+'ne.jp\x22,\x22or'+'.jp\x22,\x22aich'+'i.jp\x22,\x22aki'+'ta.jp\x22,\x22ao'+'mori.jp\x22,\x22'+'chiba.jp\x22,'+'\x22ehime.jp\x22'+',\x22fukui.jp'+'\x22,\x22fukuoka'+'.jp\x22,\x22fuku'+'shima.jp\x22,'+'\x22gifu.jp\x22,'+'\x22gunma.jp\x22'+',\x22hiroshim'+'a.jp\x22,\x22hok'+'kaido.jp\x22,'+'\x22hyogo.jp\x22'+',\x22ibaraki.'+'jp\x22,\x22ishik'+'awa.jp\x22,\x22i'+'wate.jp\x22,\x22'+'kagawa.jp\x22'+',\x22kagoshim'+'a.jp\x22,\x22kan'+'agawa.jp\x22,'+'\x22kochi.jp\x22'+',\x22kumamoto'+'.jp\x22,\x22kyot'+'o.jp\x22,\x22mie'+'.jp\x22,\x22miya'+'gi.jp\x22,\x22mi'+'yazaki.jp\x22'+',\x22nagano.j'+'p\x22,\x22nagasa'+'ki.jp\x22,\x22na'+'ra.jp\x22,\x22ni'+'igata.jp\x22,'+'\x22oita.jp\x22,'+'\x22okayama.j'+'p\x22,\x22okinaw'+'a.jp\x22,\x22osa'+'ka.jp\x22,\x22sa'+'ga.jp\x22,\x22sa'+'itama.jp\x22,'+'\x22shiga.jp\x22'+',\x22shimane.'+'jp\x22,\x22shizu'+'oka.jp\x22,\x22t'+'ochigi.jp\x22'+',\x22tokushim'+'a.jp\x22,\x22tok'+'yo.jp\x22,\x22to'+'ttori.jp\x22,'+'\x22toyama.jp'+'\x22,\x22wakayam'+'a.jp\x22,\x22yam'+'agata.jp\x22,'+'\x22yamaguchi'+'.jp\x22,\x22yama'+'nashi.jp\x22,'+'\x22栃木.jp\x22,\x22ꄛ'+'矄.jp\x22,\x22愛媛.'+'jp\x22,\x22兵庫.jp'+'\x22,\x22ē†Šęœ¬.jp\x22,'+'\x22čŒØåŸŽ.jp\x22,\x22北'+'굷道.jp\x22,\x22åƒč‘‰'+'.jp\x22,\x22å’Œę­Œå±±.'+'jp\x22,\x22長哎.jp'+'\x22,\x22長野.jp\x22,'+'\x22ę–°ę½Ÿ.jp\x22,\x22青'+'森.jp\x22,\x22静岔.'+'jp\x22,\x22ę±äŗ¬.jp'+'\x22,\x22ēŸ³å·.jp\x22,'+'\x22åŸ¼ēŽ‰.jp\x22,\x22äø‰'+'重.jp\x22,\x22京都.'+'jp\x22,\x22佐賀.jp'+'\x22,\x22大分.jp\x22,'+'\x22大阪.jp\x22,\x22儈'+'良.jp\x22,\x22宮城.'+'jp\x22,\x22宮哎.jp'+'\x22,\x22富山.jp\x22,'+'\x22山口.jp\x22,\x22å±±'+'å½¢.jp\x22,\x22山梨.'+'jp\x22,\x22岩手.jp'+'\x22,\x22岐阜.jp\x22,'+'\x22岔山.jp\x22,\x22å³¶'+'ę ¹.jp\x22,\x22広島.'+'jp\x22,\x22徳島.jp'+'\x22,\x22ę²–ēø„.jp\x22,'+'\x22滋賀.jp\x22,\x22ē„ž'+'儈川.jp\x22,\x22ē¦äŗ•'+'.jp\x22,\x22ē¦å²”.j'+'p\x22,\x22ē¦å³¶.jp\x22'+',\x22ē§‹ē”°.jp\x22,\x22'+'群馬.jp\x22,\x22香川'+'.jp\x22,\x22高矄.j'+'p\x22,\x22鳄取.jp\x22')+(',\x22鹿児島.jp\x22,'+'\x22*.kawasak'+'i.jp\x22,\x22*.k'+'itakyushu.'+'jp\x22,\x22*.kob'+'e.jp\x22,\x22*.n'+'agoya.jp\x22,'+'\x22*.sapporo'+'.jp\x22,\x22*.se'+'ndai.jp\x22,\x22'+'*.yokohama'+'.jp\x22,\x22!cit'+'y.kawasaki'+'.jp\x22,\x22!cit'+'y.kitakyus'+'hu.jp\x22,\x22!c'+'ity.kobe.j'+'p\x22,\x22!city.'+'nagoya.jp\x22'+',\x22!city.sa'+'pporo.jp\x22,'+'\x22!city.sen'+'dai.jp\x22,\x22!'+'city.yokoh'+'ama.jp\x22,\x22a'+'isai.aichi'+'.jp\x22,\x22ama.'+'aichi.jp\x22,'+'\x22anjo.aich'+'i.jp\x22,\x22asu'+'ke.aichi.j'+'p\x22,\x22chiryu'+'.aichi.jp\x22'+',\x22chita.ai'+'chi.jp\x22,\x22f'+'uso.aichi.'+'jp\x22,\x22gamag'+'ori.aichi.'+'jp\x22,\x22handa'+'.aichi.jp\x22'+',\x22hazu.aic'+'hi.jp\x22,\x22he'+'kinan.aich'+'i.jp\x22,\x22hig'+'ashiura.ai'+'chi.jp\x22,\x22i'+'chinomiya.'+'aichi.jp\x22,'+'\x22inazawa.a'+'ichi.jp\x22,\x22'+'inuyama.ai'+'chi.jp\x22,\x22i'+'sshiki.aic'+'hi.jp\x22,\x22iw'+'akura.aich'+'i.jp\x22,\x22kan'+'ie.aichi.j'+'p\x22,\x22kariya'+'.aichi.jp\x22'+',\x22kasugai.'+'aichi.jp\x22,'+'\x22kira.aich'+'i.jp\x22,\x22kiy'+'osu.aichi.'+'jp\x22,\x22komak'+'i.aichi.jp'+'\x22,\x22konan.a'+'ichi.jp\x22,\x22'+'kota.aichi'+'.jp\x22,\x22miha'+'ma.aichi.j'+'p\x22,\x22miyosh'+'i.aichi.jp'+'\x22,\x22nishio.'+'aichi.jp\x22,'+'\x22nisshin.a'+'ichi.jp\x22,\x22'+'obu.aichi.'+'jp\x22,\x22oguch'+'i.aichi.jp'+'\x22,\x22oharu.a'+'ichi.jp\x22,\x22'+'okazaki.ai'+'chi.jp\x22,\x22o'+'wariasahi.'+'aichi.jp\x22,'+'\x22seto.aich'+'i.jp\x22,\x22shi'+'katsu.aich'+'i.jp\x22,\x22shi'+'nshiro.aic'+'hi.jp\x22,\x22sh'+'itara.aich'+'i.jp\x22,\x22tah'+'ara.aichi.'+'jp\x22,\x22takah'+'ama.aichi.'+'jp\x22,\x22tobis'+'hima.aichi'+'.jp\x22,\x22toei')+('.aichi.jp\x22'+',\x22togo.aic'+'hi.jp\x22,\x22to'+'kai.aichi.'+'jp\x22,\x22tokon'+'ame.aichi.'+'jp\x22,\x22toyoa'+'ke.aichi.j'+'p\x22,\x22toyoha'+'shi.aichi.'+'jp\x22,\x22toyok'+'awa.aichi.'+'jp\x22,\x22toyon'+'e.aichi.jp'+'\x22,\x22toyota.'+'aichi.jp\x22,'+'\x22tsushima.'+'aichi.jp\x22,'+'\x22yatomi.ai'+'chi.jp\x22,\x22a'+'kita.akita'+'.jp\x22,\x22dais'+'en.akita.j'+'p\x22,\x22fujisa'+'to.akita.j'+'p\x22,\x22gojome'+'.akita.jp\x22'+',\x22hachirog'+'ata.akita.'+'jp\x22,\x22happo'+'u.akita.jp'+'\x22,\x22higashi'+'naruse.aki'+'ta.jp\x22,\x22ho'+'njo.akita.'+'jp\x22,\x22honjy'+'o.akita.jp'+'\x22,\x22ikawa.a'+'kita.jp\x22,\x22'+'kamikoani.'+'akita.jp\x22,'+'\x22kamioka.a'+'kita.jp\x22,\x22'+'katagami.a'+'kita.jp\x22,\x22'+'kazuno.aki'+'ta.jp\x22,\x22ki'+'taakita.ak'+'ita.jp\x22,\x22k'+'osaka.akit'+'a.jp\x22,\x22kyo'+'wa.akita.j'+'p\x22,\x22misato'+'.akita.jp\x22'+',\x22mitane.a'+'kita.jp\x22,\x22'+'moriyoshi.'+'akita.jp\x22,'+'\x22nikaho.ak'+'ita.jp\x22,\x22n'+'oshiro.aki'+'ta.jp\x22,\x22od'+'ate.akita.'+'jp\x22,\x22oga.a'+'kita.jp\x22,\x22'+'ogata.akit'+'a.jp\x22,\x22sem'+'boku.akita'+'.jp\x22,\x22yoko'+'te.akita.j'+'p\x22,\x22yuriho'+'njo.akita.'+'jp\x22,\x22aomor'+'i.aomori.j'+'p\x22,\x22gonohe'+'.aomori.jp'+'\x22,\x22hachino'+'he.aomori.'+'jp\x22,\x22hashi'+'kami.aomor'+'i.jp\x22,\x22hir'+'anai.aomor'+'i.jp\x22,\x22hir'+'osaki.aomo'+'ri.jp\x22,\x22it'+'ayanagi.ao'+'mori.jp\x22,\x22'+'kuroishi.a'+'omori.jp\x22,'+'\x22misawa.ao'+'mori.jp\x22,\x22'+'mutsu.aomo'+'ri.jp\x22,\x22na'+'kadomari.a'+'omori.jp\x22,'+'\x22noheji.ao'+'mori.jp\x22,\x22'+'oirase.aom'+'ori.jp\x22,\x22o'+'wani.aomor')+('i.jp\x22,\x22rok'+'unohe.aomo'+'ri.jp\x22,\x22sa'+'nnohe.aomo'+'ri.jp\x22,\x22sh'+'ichinohe.a'+'omori.jp\x22,'+'\x22shingo.ao'+'mori.jp\x22,\x22'+'takko.aomo'+'ri.jp\x22,\x22to'+'wada.aomor'+'i.jp\x22,\x22tsu'+'garu.aomor'+'i.jp\x22,\x22tsu'+'ruta.aomor'+'i.jp\x22,\x22abi'+'ko.chiba.j'+'p\x22,\x22asahi.'+'chiba.jp\x22,'+'\x22chonan.ch'+'iba.jp\x22,\x22c'+'hosei.chib'+'a.jp\x22,\x22cho'+'shi.chiba.'+'jp\x22,\x22chuo.'+'chiba.jp\x22,'+'\x22funabashi'+'.chiba.jp\x22'+',\x22futtsu.c'+'hiba.jp\x22,\x22'+'hanamigawa'+'.chiba.jp\x22'+',\x22ichihara'+'.chiba.jp\x22'+',\x22ichikawa'+'.chiba.jp\x22'+',\x22ichinomi'+'ya.chiba.j'+'p\x22,\x22inzai.'+'chiba.jp\x22,'+'\x22isumi.chi'+'ba.jp\x22,\x22ka'+'magaya.chi'+'ba.jp\x22,\x22ka'+'mogawa.chi'+'ba.jp\x22,\x22ka'+'shiwa.chib'+'a.jp\x22,\x22kat'+'ori.chiba.'+'jp\x22,\x22katsu'+'ura.chiba.'+'jp\x22,\x22kimit'+'su.chiba.j'+'p\x22,\x22kisara'+'zu.chiba.j'+'p\x22,\x22kozaki'+'.chiba.jp\x22'+',\x22kujukuri'+'.chiba.jp\x22'+',\x22kyonan.c'+'hiba.jp\x22,\x22'+'matsudo.ch'+'iba.jp\x22,\x22m'+'idori.chib'+'a.jp\x22,\x22mih'+'ama.chiba.'+'jp\x22,\x22minam'+'iboso.chib'+'a.jp\x22,\x22mob'+'ara.chiba.'+'jp\x22,\x22mutsu'+'zawa.chiba'+'.jp\x22,\x22naga'+'ra.chiba.j'+'p\x22,\x22nagare'+'yama.chiba'+'.jp\x22,\x22nara'+'shino.chib'+'a.jp\x22,\x22nar'+'ita.chiba.'+'jp\x22,\x22noda.'+'chiba.jp\x22,'+'\x22oamishira'+'sato.chiba'+'.jp\x22,\x22omig'+'awa.chiba.'+'jp\x22,\x22onjuk'+'u.chiba.jp'+'\x22,\x22otaki.c'+'hiba.jp\x22,\x22'+'sakae.chib'+'a.jp\x22,\x22sak'+'ura.chiba.'+'jp\x22,\x22shimo'+'fusa.chiba'+'.jp\x22,\x22shir'+'ako.chiba.'+'jp\x22,\x22shiro'+'i.chiba.jp')+('\x22,\x22shisui.'+'chiba.jp\x22,'+'\x22sodegaura'+'.chiba.jp\x22'+',\x22sosa.chi'+'ba.jp\x22,\x22ta'+'ko.chiba.j'+'p\x22,\x22tateya'+'ma.chiba.j'+'p\x22,\x22togane'+'.chiba.jp\x22'+',\x22tohnosho'+'.chiba.jp\x22'+',\x22tomisato'+'.chiba.jp\x22'+',\x22urayasu.'+'chiba.jp\x22,'+'\x22yachimata'+'.chiba.jp\x22'+',\x22yachiyo.'+'chiba.jp\x22,'+'\x22yokaichib'+'a.chiba.jp'+'\x22,\x22yokoshi'+'bahikari.c'+'hiba.jp\x22,\x22'+'yotsukaido'+'.chiba.jp\x22'+',\x22ainan.eh'+'ime.jp\x22,\x22h'+'onai.ehime'+'.jp\x22,\x22ikat'+'a.ehime.jp'+'\x22,\x22imabari'+'.ehime.jp\x22'+',\x22iyo.ehim'+'e.jp\x22,\x22kam'+'ijima.ehim'+'e.jp\x22,\x22kih'+'oku.ehime.'+'jp\x22,\x22kumak'+'ogen.ehime'+'.jp\x22,\x22masa'+'ki.ehime.j'+'p\x22,\x22matsun'+'o.ehime.jp'+'\x22,\x22matsuya'+'ma.ehime.j'+'p\x22,\x22namika'+'ta.ehime.j'+'p\x22,\x22niiham'+'a.ehime.jp'+'\x22,\x22ozu.ehi'+'me.jp\x22,\x22sa'+'ijo.ehime.'+'jp\x22,\x22seiyo'+'.ehime.jp\x22'+',\x22shikokuc'+'huo.ehime.'+'jp\x22,\x22tobe.'+'ehime.jp\x22,'+'\x22toon.ehim'+'e.jp\x22,\x22uch'+'iko.ehime.'+'jp\x22,\x22uwaji'+'ma.ehime.j'+'p\x22,\x22yawata'+'hama.ehime'+'.jp\x22,\x22echi'+'zen.fukui.'+'jp\x22,\x22eihei'+'ji.fukui.j'+'p\x22,\x22fukui.'+'fukui.jp\x22,'+'\x22ikeda.fuk'+'ui.jp\x22,\x22ka'+'tsuyama.fu'+'kui.jp\x22,\x22m'+'ihama.fuku'+'i.jp\x22,\x22min'+'amiechizen'+'.fukui.jp\x22'+',\x22obama.fu'+'kui.jp\x22,\x22o'+'hi.fukui.j'+'p\x22,\x22ono.fu'+'kui.jp\x22,\x22s'+'abae.fukui'+'.jp\x22,\x22saka'+'i.fukui.jp'+'\x22,\x22takaham'+'a.fukui.jp'+'\x22,\x22tsuruga'+'.fukui.jp\x22'+',\x22wakasa.f'+'ukui.jp\x22,\x22'+'ashiya.fuk'+'uoka.jp\x22,\x22'+'buzen.fuku'+'oka.jp\x22,\x22c')+('hikugo.fuk'+'uoka.jp\x22,\x22'+'chikuho.fu'+'kuoka.jp\x22,'+'\x22chikujo.f'+'ukuoka.jp\x22'+',\x22chikushi'+'no.fukuoka'+'.jp\x22,\x22chik'+'uzen.fukuo'+'ka.jp\x22,\x22ch'+'uo.fukuoka'+'.jp\x22,\x22daza'+'ifu.fukuok'+'a.jp\x22,\x22fuk'+'uchi.fukuo'+'ka.jp\x22,\x22ha'+'kata.fukuo'+'ka.jp\x22,\x22hi'+'gashi.fuku'+'oka.jp\x22,\x22h'+'irokawa.fu'+'kuoka.jp\x22,'+'\x22hisayama.'+'fukuoka.jp'+'\x22,\x22iizuka.'+'fukuoka.jp'+'\x22,\x22inatsuk'+'i.fukuoka.'+'jp\x22,\x22kaho.'+'fukuoka.jp'+'\x22,\x22kasuga.'+'fukuoka.jp'+'\x22,\x22kasuya.'+'fukuoka.jp'+'\x22,\x22kawara.'+'fukuoka.jp'+'\x22,\x22keisen.'+'fukuoka.jp'+'\x22,\x22koga.fu'+'kuoka.jp\x22,'+'\x22kurate.fu'+'kuoka.jp\x22,'+'\x22kurogi.fu'+'kuoka.jp\x22,'+'\x22kurume.fu'+'kuoka.jp\x22,'+'\x22minami.fu'+'kuoka.jp\x22,'+'\x22miyako.fu'+'kuoka.jp\x22,'+'\x22miyama.fu'+'kuoka.jp\x22,'+'\x22miyawaka.'+'fukuoka.jp'+'\x22,\x22mizumak'+'i.fukuoka.'+'jp\x22,\x22munak'+'ata.fukuok'+'a.jp\x22,\x22nak'+'agawa.fuku'+'oka.jp\x22,\x22n'+'akama.fuku'+'oka.jp\x22,\x22n'+'ishi.fukuo'+'ka.jp\x22,\x22no'+'gata.fukuo'+'ka.jp\x22,\x22og'+'ori.fukuok'+'a.jp\x22,\x22oka'+'gaki.fukuo'+'ka.jp\x22,\x22ok'+'awa.fukuok'+'a.jp\x22,\x22oki'+'.fukuoka.j'+'p\x22,\x22omuta.'+'fukuoka.jp'+'\x22,\x22onga.fu'+'kuoka.jp\x22,'+'\x22onojo.fuk'+'uoka.jp\x22,\x22'+'oto.fukuok'+'a.jp\x22,\x22sai'+'gawa.fukuo'+'ka.jp\x22,\x22sa'+'saguri.fuk'+'uoka.jp\x22,\x22'+'shingu.fuk'+'uoka.jp\x22,\x22'+'shinyoshit'+'omi.fukuok'+'a.jp\x22,\x22sho'+'nai.fukuok'+'a.jp\x22,\x22soe'+'da.fukuoka'+'.jp\x22,\x22sue.'+'fukuoka.jp'+'\x22,\x22tachiar'+'ai.fukuoka'+'.jp\x22,\x22taga')+('wa.fukuoka'+'.jp\x22,\x22taka'+'ta.fukuoka'+'.jp\x22,\x22toho'+'.fukuoka.j'+'p\x22,\x22toyots'+'u.fukuoka.'+'jp\x22,\x22tsuik'+'i.fukuoka.'+'jp\x22,\x22ukiha'+'.fukuoka.j'+'p\x22,\x22umi.fu'+'kuoka.jp\x22,'+'\x22usui.fuku'+'oka.jp\x22,\x22y'+'amada.fuku'+'oka.jp\x22,\x22y'+'ame.fukuok'+'a.jp\x22,\x22yan'+'agawa.fuku'+'oka.jp\x22,\x22y'+'ukuhashi.f'+'ukuoka.jp\x22'+',\x22aizubang'+'e.fukushim'+'a.jp\x22,\x22aiz'+'umisato.fu'+'kushima.jp'+'\x22,\x22aizuwak'+'amatsu.fuk'+'ushima.jp\x22'+',\x22asakawa.'+'fukushima.'+'jp\x22,\x22banda'+'i.fukushim'+'a.jp\x22,\x22dat'+'e.fukushim'+'a.jp\x22,\x22fuk'+'ushima.fuk'+'ushima.jp\x22'+',\x22furudono'+'.fukushima'+'.jp\x22,\x22futa'+'ba.fukushi'+'ma.jp\x22,\x22ha'+'nawa.fukus'+'hima.jp\x22,\x22'+'higashi.fu'+'kushima.jp'+'\x22,\x22hirata.'+'fukushima.'+'jp\x22,\x22hiron'+'o.fukushim'+'a.jp\x22,\x22iit'+'ate.fukush'+'ima.jp\x22,\x22i'+'nawashiro.'+'fukushima.'+'jp\x22,\x22ishik'+'awa.fukush'+'ima.jp\x22,\x22i'+'waki.fukus'+'hima.jp\x22,\x22'+'izumizaki.'+'fukushima.'+'jp\x22,\x22kagam'+'iishi.fuku'+'shima.jp\x22,'+'\x22kaneyama.'+'fukushima.'+'jp\x22,\x22kawam'+'ata.fukush'+'ima.jp\x22,\x22k'+'itakata.fu'+'kushima.jp'+'\x22,\x22kitashi'+'obara.fuku'+'shima.jp\x22,'+'\x22koori.fuk'+'ushima.jp\x22'+',\x22koriyama'+'.fukushima'+'.jp\x22,\x22kuni'+'mi.fukushi'+'ma.jp\x22,\x22mi'+'haru.fukus'+'hima.jp\x22,\x22'+'mishima.fu'+'kushima.jp'+'\x22,\x22namie.f'+'ukushima.j'+'p\x22,\x22nango.'+'fukushima.'+'jp\x22,\x22nishi'+'aizu.fukus'+'hima.jp\x22,\x22'+'nishigo.fu'+'kushima.jp'+'\x22,\x22okuma.f'+'ukushima.j')+('p\x22,\x22omoteg'+'o.fukushim'+'a.jp\x22,\x22ono'+'.fukushima'+'.jp\x22,\x22otam'+'a.fukushim'+'a.jp\x22,\x22sam'+'egawa.fuku'+'shima.jp\x22,'+'\x22shimogo.f'+'ukushima.j'+'p\x22,\x22shirak'+'awa.fukush'+'ima.jp\x22,\x22s'+'howa.fukus'+'hima.jp\x22,\x22'+'soma.fukus'+'hima.jp\x22,\x22'+'sukagawa.f'+'ukushima.j'+'p\x22,\x22taishi'+'n.fukushim'+'a.jp\x22,\x22tam'+'akawa.fuku'+'shima.jp\x22,'+'\x22tanagura.'+'fukushima.'+'jp\x22,\x22tenei'+'.fukushima'+'.jp\x22,\x22yabu'+'ki.fukushi'+'ma.jp\x22,\x22ya'+'mato.fukus'+'hima.jp\x22,\x22'+'yamatsuri.'+'fukushima.'+'jp\x22,\x22yanai'+'zu.fukushi'+'ma.jp\x22,\x22yu'+'gawa.fukus'+'hima.jp\x22,\x22'+'anpachi.gi'+'fu.jp\x22,\x22en'+'a.gifu.jp\x22'+',\x22gifu.gif'+'u.jp\x22,\x22gin'+'an.gifu.jp'+'\x22,\x22godo.gi'+'fu.jp\x22,\x22gu'+'jo.gifu.jp'+'\x22,\x22hashima'+'.gifu.jp\x22,'+'\x22hichiso.g'+'ifu.jp\x22,\x22h'+'ida.gifu.j'+'p\x22,\x22higash'+'ishirakawa'+'.gifu.jp\x22,'+'\x22ibigawa.g'+'ifu.jp\x22,\x22i'+'keda.gifu.'+'jp\x22,\x22kakam'+'igahara.gi'+'fu.jp\x22,\x22ka'+'ni.gifu.jp'+'\x22,\x22kasahar'+'a.gifu.jp\x22'+',\x22kasamats'+'u.gifu.jp\x22'+',\x22kawaue.g'+'ifu.jp\x22,\x22k'+'itagata.gi'+'fu.jp\x22,\x22mi'+'no.gifu.jp'+'\x22,\x22minokam'+'o.gifu.jp\x22'+',\x22mitake.g'+'ifu.jp\x22,\x22m'+'izunami.gi'+'fu.jp\x22,\x22mo'+'tosu.gifu.'+'jp\x22,\x22nakat'+'sugawa.gif'+'u.jp\x22,\x22oga'+'ki.gifu.jp'+'\x22,\x22sakahog'+'i.gifu.jp\x22'+',\x22seki.gif'+'u.jp\x22,\x22sek'+'igahara.gi'+'fu.jp\x22,\x22sh'+'irakawa.gi'+'fu.jp\x22,\x22ta'+'jimi.gifu.'+'jp\x22,\x22takay'+'ama.gifu.j'+'p\x22,\x22tarui.'+'gifu.jp\x22,\x22'+'toki.gifu.'+'jp\x22,\x22tomik')+('a.gifu.jp\x22'+',\x22wanouchi'+'.gifu.jp\x22,'+'\x22yamagata.'+'gifu.jp\x22,\x22'+'yaotsu.gif'+'u.jp\x22,\x22yor'+'o.gifu.jp\x22'+',\x22annaka.g'+'unma.jp\x22,\x22'+'chiyoda.gu'+'nma.jp\x22,\x22f'+'ujioka.gun'+'ma.jp\x22,\x22hi'+'gashiagats'+'uma.gunma.'+'jp\x22,\x22isesa'+'ki.gunma.j'+'p\x22,\x22itakur'+'a.gunma.jp'+'\x22,\x22kanna.g'+'unma.jp\x22,\x22'+'kanra.gunm'+'a.jp\x22,\x22kat'+'ashina.gun'+'ma.jp\x22,\x22ka'+'waba.gunma'+'.jp\x22,\x22kiry'+'u.gunma.jp'+'\x22,\x22kusatsu'+'.gunma.jp\x22'+',\x22maebashi'+'.gunma.jp\x22'+',\x22meiwa.gu'+'nma.jp\x22,\x22m'+'idori.gunm'+'a.jp\x22,\x22min'+'akami.gunm'+'a.jp\x22,\x22nag'+'anohara.gu'+'nma.jp\x22,\x22n'+'akanojo.gu'+'nma.jp\x22,\x22n'+'anmoku.gun'+'ma.jp\x22,\x22nu'+'mata.gunma'+'.jp\x22,\x22oizu'+'mi.gunma.j'+'p\x22,\x22ora.gu'+'nma.jp\x22,\x22o'+'ta.gunma.j'+'p\x22,\x22shibuk'+'awa.gunma.'+'jp\x22,\x22shimo'+'nita.gunma'+'.jp\x22,\x22shin'+'to.gunma.j'+'p\x22,\x22showa.'+'gunma.jp\x22,'+'\x22takasaki.'+'gunma.jp\x22,'+'\x22takayama.'+'gunma.jp\x22,'+'\x22tamamura.'+'gunma.jp\x22,'+'\x22tatebayas'+'hi.gunma.j'+'p\x22,\x22tomiok'+'a.gunma.jp'+'\x22,\x22tsukiyo'+'no.gunma.j'+'p\x22,\x22tsumag'+'oi.gunma.j'+'p\x22,\x22ueno.g'+'unma.jp\x22,\x22'+'yoshioka.g'+'unma.jp\x22,\x22'+'asaminami.'+'hiroshima.'+'jp\x22,\x22daiwa'+'.hiroshima'+'.jp\x22,\x22etaj'+'ima.hirosh'+'ima.jp\x22,\x22f'+'uchu.hiros'+'hima.jp\x22,\x22'+'fukuyama.h'+'iroshima.j'+'p\x22,\x22hatsuk'+'aichi.hiro'+'shima.jp\x22,'+'\x22higashihi'+'roshima.hi'+'roshima.jp'+'\x22,\x22hongo.h'+'iroshima.j'+'p\x22,\x22jinsek'+'ikogen.hir'+'oshima.jp\x22'+',\x22kaita.hi')+('roshima.jp'+'\x22,\x22kui.hir'+'oshima.jp\x22'+',\x22kumano.h'+'iroshima.j'+'p\x22,\x22kure.h'+'iroshima.j'+'p\x22,\x22mihara'+'.hiroshima'+'.jp\x22,\x22miyo'+'shi.hirosh'+'ima.jp\x22,\x22n'+'aka.hirosh'+'ima.jp\x22,\x22o'+'nomichi.hi'+'roshima.jp'+'\x22,\x22osakika'+'mijima.hir'+'oshima.jp\x22'+',\x22otake.hi'+'roshima.jp'+'\x22,\x22saka.hi'+'roshima.jp'+'\x22,\x22sera.hi'+'roshima.jp'+'\x22,\x22seranis'+'hi.hiroshi'+'ma.jp\x22,\x22sh'+'inichi.hir'+'oshima.jp\x22'+',\x22shobara.'+'hiroshima.'+'jp\x22,\x22takeh'+'ara.hirosh'+'ima.jp\x22,\x22a'+'bashiri.ho'+'kkaido.jp\x22'+',\x22abira.ho'+'kkaido.jp\x22'+',\x22aibetsu.'+'hokkaido.j'+'p\x22,\x22akabir'+'a.hokkaido'+'.jp\x22,\x22akke'+'shi.hokkai'+'do.jp\x22,\x22as'+'ahikawa.ho'+'kkaido.jp\x22'+',\x22ashibets'+'u.hokkaido'+'.jp\x22,\x22asho'+'ro.hokkaid'+'o.jp\x22,\x22ass'+'abu.hokkai'+'do.jp\x22,\x22at'+'suma.hokka'+'ido.jp\x22,\x22b'+'ibai.hokka'+'ido.jp\x22,\x22b'+'iei.hokkai'+'do.jp\x22,\x22bi'+'fuka.hokka'+'ido.jp\x22,\x22b'+'ihoro.hokk'+'aido.jp\x22,\x22'+'biratori.h'+'okkaido.jp'+'\x22,\x22chippub'+'etsu.hokka'+'ido.jp\x22,\x22c'+'hitose.hok'+'kaido.jp\x22,'+'\x22date.hokk'+'aido.jp\x22,\x22'+'ebetsu.hok'+'kaido.jp\x22,'+'\x22embetsu.h'+'okkaido.jp'+'\x22,\x22eniwa.h'+'okkaido.jp'+'\x22,\x22erimo.h'+'okkaido.jp'+'\x22,\x22esan.ho'+'kkaido.jp\x22'+',\x22esashi.h'+'okkaido.jp'+'\x22,\x22fukagaw'+'a.hokkaido'+'.jp\x22,\x22fuku'+'shima.hokk'+'aido.jp\x22,\x22'+'furano.hok'+'kaido.jp\x22,'+'\x22furubira.'+'hokkaido.j'+'p\x22,\x22haboro'+'.hokkaido.'+'jp\x22,\x22hakod'+'ate.hokkai'+'do.jp\x22,\x22ha')+('matonbetsu'+'.hokkaido.'+'jp\x22,\x22hidak'+'a.hokkaido'+'.jp\x22,\x22higa'+'shikagura.'+'hokkaido.j'+'p\x22,\x22higash'+'ikawa.hokk'+'aido.jp\x22,\x22'+'hiroo.hokk'+'aido.jp\x22,\x22'+'hokuryu.ho'+'kkaido.jp\x22'+',\x22hokuto.h'+'okkaido.jp'+'\x22,\x22honbets'+'u.hokkaido'+'.jp\x22,\x22horo'+'kanai.hokk'+'aido.jp\x22,\x22'+'horonobe.h'+'okkaido.jp'+'\x22,\x22ikeda.h'+'okkaido.jp'+'\x22,\x22imakane'+'.hokkaido.'+'jp\x22,\x22ishik'+'ari.hokkai'+'do.jp\x22,\x22iw'+'amizawa.ho'+'kkaido.jp\x22'+',\x22iwanai.h'+'okkaido.jp'+'\x22,\x22kamifur'+'ano.hokkai'+'do.jp\x22,\x22ka'+'mikawa.hok'+'kaido.jp\x22,'+'\x22kamishiho'+'ro.hokkaid'+'o.jp\x22,\x22kam'+'isunagawa.'+'hokkaido.j'+'p\x22,\x22kamoen'+'ai.hokkaid'+'o.jp\x22,\x22kay'+'abe.hokkai'+'do.jp\x22,\x22ke'+'mbuchi.hok'+'kaido.jp\x22,'+'\x22kikonai.h'+'okkaido.jp'+'\x22,\x22kimobet'+'su.hokkaid'+'o.jp\x22,\x22kit'+'ahiroshima'+'.hokkaido.'+'jp\x22,\x22kitam'+'i.hokkaido'+'.jp\x22,\x22kiyo'+'sato.hokka'+'ido.jp\x22,\x22k'+'oshimizu.h'+'okkaido.jp'+'\x22,\x22kunnepp'+'u.hokkaido'+'.jp\x22,\x22kuri'+'yama.hokka'+'ido.jp\x22,\x22k'+'uromatsuna'+'i.hokkaido'+'.jp\x22,\x22kush'+'iro.hokkai'+'do.jp\x22,\x22ku'+'tchan.hokk'+'aido.jp\x22,\x22'+'kyowa.hokk'+'aido.jp\x22,\x22'+'mashike.ho'+'kkaido.jp\x22'+',\x22matsumae'+'.hokkaido.'+'jp\x22,\x22mikas'+'a.hokkaido'+'.jp\x22,\x22mina'+'mifurano.h'+'okkaido.jp'+'\x22,\x22mombets'+'u.hokkaido'+'.jp\x22,\x22mose'+'ushi.hokka'+'ido.jp\x22,\x22m'+'ukawa.hokk'+'aido.jp\x22,\x22'+'muroran.ho'+'kkaido.jp\x22'+',\x22naie.hok'+'kaido.jp\x22,'+'\x22nakagawa.')+('hokkaido.j'+'p\x22,\x22nakasa'+'tsunai.hok'+'kaido.jp\x22,'+'\x22nakatombe'+'tsu.hokkai'+'do.jp\x22,\x22na'+'nae.hokkai'+'do.jp\x22,\x22na'+'nporo.hokk'+'aido.jp\x22,\x22'+'nayoro.hok'+'kaido.jp\x22,'+'\x22nemuro.ho'+'kkaido.jp\x22'+',\x22niikappu'+'.hokkaido.'+'jp\x22,\x22niki.'+'hokkaido.j'+'p\x22,\x22nishio'+'koppe.hokk'+'aido.jp\x22,\x22'+'noboribets'+'u.hokkaido'+'.jp\x22,\x22numa'+'ta.hokkaid'+'o.jp\x22,\x22obi'+'hiro.hokka'+'ido.jp\x22,\x22o'+'bira.hokka'+'ido.jp\x22,\x22o'+'keto.hokka'+'ido.jp\x22,\x22o'+'koppe.hokk'+'aido.jp\x22,\x22'+'otaru.hokk'+'aido.jp\x22,\x22'+'otobe.hokk'+'aido.jp\x22,\x22'+'otofuke.ho'+'kkaido.jp\x22'+',\x22otoinepp'+'u.hokkaido'+'.jp\x22,\x22oumu'+'.hokkaido.'+'jp\x22,\x22ozora'+'.hokkaido.'+'jp\x22,\x22pippu'+'.hokkaido.'+'jp\x22,\x22ranko'+'shi.hokkai'+'do.jp\x22,\x22re'+'bun.hokkai'+'do.jp\x22,\x22ri'+'kubetsu.ho'+'kkaido.jp\x22'+',\x22rishiri.'+'hokkaido.j'+'p\x22,\x22rishir'+'ifuji.hokk'+'aido.jp\x22,\x22'+'saroma.hok'+'kaido.jp\x22,'+'\x22sarufutsu'+'.hokkaido.'+'jp\x22,\x22shako'+'tan.hokkai'+'do.jp\x22,\x22sh'+'ari.hokkai'+'do.jp\x22,\x22sh'+'ibecha.hok'+'kaido.jp\x22,'+'\x22shibetsu.'+'hokkaido.j'+'p\x22,\x22shikab'+'e.hokkaido'+'.jp\x22,\x22shik'+'aoi.hokkai'+'do.jp\x22,\x22sh'+'imamaki.ho'+'kkaido.jp\x22'+',\x22shimizu.'+'hokkaido.j'+'p\x22,\x22shimok'+'awa.hokkai'+'do.jp\x22,\x22sh'+'inshinotsu'+'.hokkaido.'+'jp\x22,\x22shint'+'oku.hokkai'+'do.jp\x22,\x22sh'+'iranuka.ho'+'kkaido.jp\x22'+',\x22shiraoi.'+'hokkaido.j'+'p\x22,\x22shiriu'+'chi.hokkai'+'do.jp\x22,\x22so'+'betsu.hokk'+'aido.jp\x22,\x22')+('sunagawa.h'+'okkaido.jp'+'\x22,\x22taiki.h'+'okkaido.jp'+'\x22,\x22takasu.'+'hokkaido.j'+'p\x22,\x22takika'+'wa.hokkaid'+'o.jp\x22,\x22tak'+'inoue.hokk'+'aido.jp\x22,\x22'+'teshikaga.'+'hokkaido.j'+'p\x22,\x22tobets'+'u.hokkaido'+'.jp\x22,\x22tohm'+'a.hokkaido'+'.jp\x22,\x22toma'+'komai.hokk'+'aido.jp\x22,\x22'+'tomari.hok'+'kaido.jp\x22,'+'\x22toya.hokk'+'aido.jp\x22,\x22'+'toyako.hok'+'kaido.jp\x22,'+'\x22toyotomi.'+'hokkaido.j'+'p\x22,\x22toyour'+'a.hokkaido'+'.jp\x22,\x22tsub'+'etsu.hokka'+'ido.jp\x22,\x22t'+'sukigata.h'+'okkaido.jp'+'\x22,\x22urakawa'+'.hokkaido.'+'jp\x22,\x22uraus'+'u.hokkaido'+'.jp\x22,\x22uryu'+'.hokkaido.'+'jp\x22,\x22utash'+'inai.hokka'+'ido.jp\x22,\x22w'+'akkanai.ho'+'kkaido.jp\x22'+',\x22wassamu.'+'hokkaido.j'+'p\x22,\x22yakumo'+'.hokkaido.'+'jp\x22,\x22yoich'+'i.hokkaido'+'.jp\x22,\x22aioi'+'.hyogo.jp\x22'+',\x22akashi.h'+'yogo.jp\x22,\x22'+'ako.hyogo.'+'jp\x22,\x22amaga'+'saki.hyogo'+'.jp\x22,\x22aoga'+'ki.hyogo.j'+'p\x22,\x22asago.'+'hyogo.jp\x22,'+'\x22ashiya.hy'+'ogo.jp\x22,\x22a'+'waji.hyogo'+'.jp\x22,\x22fuku'+'saki.hyogo'+'.jp\x22,\x22gosh'+'iki.hyogo.'+'jp\x22,\x22harim'+'a.hyogo.jp'+'\x22,\x22himeji.'+'hyogo.jp\x22,'+'\x22ichikawa.'+'hyogo.jp\x22,'+'\x22inagawa.h'+'yogo.jp\x22,\x22'+'itami.hyog'+'o.jp\x22,\x22kak'+'ogawa.hyog'+'o.jp\x22,\x22kam'+'igori.hyog'+'o.jp\x22,\x22kam'+'ikawa.hyog'+'o.jp\x22,\x22kas'+'ai.hyogo.j'+'p\x22,\x22kasuga'+'.hyogo.jp\x22'+',\x22kawanish'+'i.hyogo.jp'+'\x22,\x22miki.hy'+'ogo.jp\x22,\x22m'+'inamiawaji'+'.hyogo.jp\x22'+',\x22nishinom'+'iya.hyogo.'+'jp\x22,\x22nishi'+'waki.hyogo'+'.jp\x22,\x22ono.')+('hyogo.jp\x22,'+'\x22sanda.hyo'+'go.jp\x22,\x22sa'+'nnan.hyogo'+'.jp\x22,\x22sasa'+'yama.hyogo'+'.jp\x22,\x22sayo'+'.hyogo.jp\x22'+',\x22shingu.h'+'yogo.jp\x22,\x22'+'shinonsen.'+'hyogo.jp\x22,'+'\x22shiso.hyo'+'go.jp\x22,\x22su'+'moto.hyogo'+'.jp\x22,\x22tais'+'hi.hyogo.j'+'p\x22,\x22taka.h'+'yogo.jp\x22,\x22'+'takarazuka'+'.hyogo.jp\x22'+',\x22takasago'+'.hyogo.jp\x22'+',\x22takino.h'+'yogo.jp\x22,\x22'+'tamba.hyog'+'o.jp\x22,\x22tat'+'suno.hyogo'+'.jp\x22,\x22toyo'+'oka.hyogo.'+'jp\x22,\x22yabu.'+'hyogo.jp\x22,'+'\x22yashiro.h'+'yogo.jp\x22,\x22'+'yoka.hyogo'+'.jp\x22,\x22yoka'+'wa.hyogo.j'+'p\x22,\x22ami.ib'+'araki.jp\x22,'+'\x22asahi.iba'+'raki.jp\x22,\x22'+'bando.ibar'+'aki.jp\x22,\x22c'+'hikusei.ib'+'araki.jp\x22,'+'\x22daigo.iba'+'raki.jp\x22,\x22'+'fujishiro.'+'ibaraki.jp'+'\x22,\x22hitachi'+'.ibaraki.j'+'p\x22,\x22hitach'+'inaka.ibar'+'aki.jp\x22,\x22h'+'itachiomiy'+'a.ibaraki.'+'jp\x22,\x22hitac'+'hiota.ibar'+'aki.jp\x22,\x22i'+'baraki.iba'+'raki.jp\x22,\x22'+'ina.ibarak'+'i.jp\x22,\x22ina'+'shiki.ibar'+'aki.jp\x22,\x22i'+'tako.ibara'+'ki.jp\x22,\x22iw'+'ama.ibarak'+'i.jp\x22,\x22jos'+'o.ibaraki.'+'jp\x22,\x22kamis'+'u.ibaraki.'+'jp\x22,\x22kasam'+'a.ibaraki.'+'jp\x22,\x22kashi'+'ma.ibaraki'+'.jp\x22,\x22kasu'+'migaura.ib'+'araki.jp\x22,'+'\x22koga.ibar'+'aki.jp\x22,\x22m'+'iho.ibarak'+'i.jp\x22,\x22mit'+'o.ibaraki.'+'jp\x22,\x22moriy'+'a.ibaraki.'+'jp\x22,\x22naka.'+'ibaraki.jp'+'\x22,\x22namegat'+'a.ibaraki.'+'jp\x22,\x22oarai'+'.ibaraki.j'+'p\x22,\x22ogawa.'+'ibaraki.jp'+'\x22,\x22omitama'+'.ibaraki.j'+'p\x22,\x22ryugas'+'aki.ibarak'+'i.jp\x22,\x22sak'+'ai.ibaraki')+('.jp\x22,\x22saku'+'ragawa.iba'+'raki.jp\x22,\x22'+'shimodate.'+'ibaraki.jp'+'\x22,\x22shimots'+'uma.ibarak'+'i.jp\x22,\x22shi'+'rosato.iba'+'raki.jp\x22,\x22'+'sowa.ibara'+'ki.jp\x22,\x22su'+'ifu.ibarak'+'i.jp\x22,\x22tak'+'ahagi.ibar'+'aki.jp\x22,\x22t'+'amatsukuri'+'.ibaraki.j'+'p\x22,\x22tokai.'+'ibaraki.jp'+'\x22,\x22tomobe.'+'ibaraki.jp'+'\x22,\x22tone.ib'+'araki.jp\x22,'+'\x22toride.ib'+'araki.jp\x22,'+'\x22tsuchiura'+'.ibaraki.j'+'p\x22,\x22tsukub'+'a.ibaraki.'+'jp\x22,\x22uchih'+'ara.ibarak'+'i.jp\x22,\x22ush'+'iku.ibarak'+'i.jp\x22,\x22yac'+'hiyo.ibara'+'ki.jp\x22,\x22ya'+'magata.iba'+'raki.jp\x22,\x22'+'yawara.iba'+'raki.jp\x22,\x22'+'yuki.ibara'+'ki.jp\x22,\x22an'+'amizu.ishi'+'kawa.jp\x22,\x22'+'hakui.ishi'+'kawa.jp\x22,\x22'+'hakusan.is'+'hikawa.jp\x22'+',\x22kaga.ish'+'ikawa.jp\x22,'+'\x22kahoku.is'+'hikawa.jp\x22'+',\x22kanazawa'+'.ishikawa.'+'jp\x22,\x22kawak'+'ita.ishika'+'wa.jp\x22,\x22ko'+'matsu.ishi'+'kawa.jp\x22,\x22'+'nakanoto.i'+'shikawa.jp'+'\x22,\x22nanao.i'+'shikawa.jp'+'\x22,\x22nomi.is'+'hikawa.jp\x22'+',\x22nonoichi'+'.ishikawa.'+'jp\x22,\x22noto.'+'ishikawa.j'+'p\x22,\x22shika.'+'ishikawa.j'+'p\x22,\x22suzu.i'+'shikawa.jp'+'\x22,\x22tsubata'+'.ishikawa.'+'jp\x22,\x22tsuru'+'gi.ishikaw'+'a.jp\x22,\x22uch'+'inada.ishi'+'kawa.jp\x22,\x22'+'wajima.ish'+'ikawa.jp\x22,'+'\x22fudai.iwa'+'te.jp\x22,\x22fu'+'jisawa.iwa'+'te.jp\x22,\x22ha'+'namaki.iwa'+'te.jp\x22,\x22hi'+'raizumi.iw'+'ate.jp\x22,\x22h'+'irono.iwat'+'e.jp\x22,\x22ich'+'inohe.iwat'+'e.jp\x22,\x22ich'+'inoseki.iw'+'ate.jp\x22,\x22i'+'waizumi.iw'+'ate.jp\x22,\x22i'+'wate.iwate')+('.jp\x22,\x22jobo'+'ji.iwate.j'+'p\x22,\x22kamais'+'hi.iwate.j'+'p\x22,\x22kanega'+'saki.iwate'+'.jp\x22,\x22karu'+'mai.iwate.'+'jp\x22,\x22kawai'+'.iwate.jp\x22'+',\x22kitakami'+'.iwate.jp\x22'+',\x22kuji.iwa'+'te.jp\x22,\x22ku'+'nohe.iwate'+'.jp\x22,\x22kuzu'+'maki.iwate'+'.jp\x22,\x22miya'+'ko.iwate.j'+'p\x22,\x22mizusa'+'wa.iwate.j'+'p\x22,\x22moriok'+'a.iwate.jp'+'\x22,\x22ninohe.'+'iwate.jp\x22,'+'\x22noda.iwat'+'e.jp\x22,\x22ofu'+'nato.iwate'+'.jp\x22,\x22oshu'+'.iwate.jp\x22'+',\x22otsuchi.'+'iwate.jp\x22,'+'\x22rikuzenta'+'kata.iwate'+'.jp\x22,\x22shiw'+'a.iwate.jp'+'\x22,\x22shizuku'+'ishi.iwate'+'.jp\x22,\x22sumi'+'ta.iwate.j'+'p\x22,\x22tanoha'+'ta.iwate.j'+'p\x22,\x22tono.i'+'wate.jp\x22,\x22'+'yahaba.iwa'+'te.jp\x22,\x22ya'+'mada.iwate'+'.jp\x22,\x22ayag'+'awa.kagawa'+'.jp\x22,\x22higa'+'shikagawa.'+'kagawa.jp\x22'+',\x22kanonji.'+'kagawa.jp\x22'+',\x22kotohira'+'.kagawa.jp'+'\x22,\x22manno.k'+'agawa.jp\x22,'+'\x22marugame.'+'kagawa.jp\x22'+',\x22mitoyo.k'+'agawa.jp\x22,'+'\x22naoshima.'+'kagawa.jp\x22'+',\x22sanuki.k'+'agawa.jp\x22,'+'\x22tadotsu.k'+'agawa.jp\x22,'+'\x22takamatsu'+'.kagawa.jp'+'\x22,\x22tonosho'+'.kagawa.jp'+'\x22,\x22uchinom'+'i.kagawa.j'+'p\x22,\x22utazu.'+'kagawa.jp\x22'+',\x22zentsuji'+'.kagawa.jp'+'\x22,\x22akune.k'+'agoshima.j'+'p\x22,\x22amami.'+'kagoshima.'+'jp\x22,\x22hioki'+'.kagoshima'+'.jp\x22,\x22isa.'+'kagoshima.'+'jp\x22,\x22isen.'+'kagoshima.'+'jp\x22,\x22izumi'+'.kagoshima'+'.jp\x22,\x22kago'+'shima.kago'+'shima.jp\x22,'+'\x22kanoya.ka'+'goshima.jp'+'\x22,\x22kawanab'+'e.kagoshim'+'a.jp\x22,\x22kin'+'ko.kagoshi'+'ma.jp\x22,\x22ko')+('uyama.kago'+'shima.jp\x22,'+'\x22makurazak'+'i.kagoshim'+'a.jp\x22,\x22mat'+'sumoto.kag'+'oshima.jp\x22'+',\x22minamita'+'ne.kagoshi'+'ma.jp\x22,\x22na'+'katane.kag'+'oshima.jp\x22'+',\x22nishinoo'+'mote.kagos'+'hima.jp\x22,\x22'+'satsumasen'+'dai.kagosh'+'ima.jp\x22,\x22s'+'oo.kagoshi'+'ma.jp\x22,\x22ta'+'rumizu.kag'+'oshima.jp\x22'+',\x22yusui.ka'+'goshima.jp'+'\x22,\x22aikawa.'+'kanagawa.j'+'p\x22,\x22atsugi'+'.kanagawa.'+'jp\x22,\x22ayase'+'.kanagawa.'+'jp\x22,\x22chiga'+'saki.kanag'+'awa.jp\x22,\x22e'+'bina.kanag'+'awa.jp\x22,\x22f'+'ujisawa.ka'+'nagawa.jp\x22'+',\x22hadano.k'+'anagawa.jp'+'\x22,\x22hakone.'+'kanagawa.j'+'p\x22,\x22hirats'+'uka.kanaga'+'wa.jp\x22,\x22is'+'ehara.kana'+'gawa.jp\x22,\x22'+'kaisei.kan'+'agawa.jp\x22,'+'\x22kamakura.'+'kanagawa.j'+'p\x22,\x22kiyoka'+'wa.kanagaw'+'a.jp\x22,\x22mat'+'suda.kanag'+'awa.jp\x22,\x22m'+'inamiashig'+'ara.kanaga'+'wa.jp\x22,\x22mi'+'ura.kanaga'+'wa.jp\x22,\x22na'+'kai.kanaga'+'wa.jp\x22,\x22ni'+'nomiya.kan'+'agawa.jp\x22,'+'\x22odawara.k'+'anagawa.jp'+'\x22,\x22oi.kana'+'gawa.jp\x22,\x22'+'oiso.kanag'+'awa.jp\x22,\x22s'+'agamihara.'+'kanagawa.j'+'p\x22,\x22samuka'+'wa.kanagaw'+'a.jp\x22,\x22tsu'+'kui.kanaga'+'wa.jp\x22,\x22ya'+'makita.kan'+'agawa.jp\x22,'+'\x22yamato.ka'+'nagawa.jp\x22'+',\x22yokosuka'+'.kanagawa.'+'jp\x22,\x22yugaw'+'ara.kanaga'+'wa.jp\x22,\x22za'+'ma.kanagaw'+'a.jp\x22,\x22zus'+'hi.kanagaw'+'a.jp\x22,\x22aki'+'.kochi.jp\x22'+',\x22geisei.k'+'ochi.jp\x22,\x22'+'hidaka.koc'+'hi.jp\x22,\x22hi'+'gashitsuno'+'.kochi.jp\x22'+',\x22ino.koch'+'i.jp\x22,\x22kag'+'ami.kochi.')+('jp\x22,\x22kami.'+'kochi.jp\x22,'+'\x22kitagawa.'+'kochi.jp\x22,'+'\x22kochi.koc'+'hi.jp\x22,\x22mi'+'hara.kochi'+'.jp\x22,\x22moto'+'yama.kochi'+'.jp\x22,\x22muro'+'to.kochi.j'+'p\x22,\x22nahari'+'.kochi.jp\x22'+',\x22nakamura'+'.kochi.jp\x22'+',\x22nankoku.'+'kochi.jp\x22,'+'\x22nishitosa'+'.kochi.jp\x22'+',\x22niyodoga'+'wa.kochi.j'+'p\x22,\x22ochi.k'+'ochi.jp\x22,\x22'+'okawa.koch'+'i.jp\x22,\x22oto'+'yo.kochi.j'+'p\x22,\x22otsuki'+'.kochi.jp\x22'+',\x22sakawa.k'+'ochi.jp\x22,\x22'+'sukumo.koc'+'hi.jp\x22,\x22su'+'saki.kochi'+'.jp\x22,\x22tosa'+'.kochi.jp\x22'+',\x22tosashim'+'izu.kochi.'+'jp\x22,\x22toyo.'+'kochi.jp\x22,'+'\x22tsuno.koc'+'hi.jp\x22,\x22um'+'aji.kochi.'+'jp\x22,\x22yasud'+'a.kochi.jp'+'\x22,\x22yusuhar'+'a.kochi.jp'+'\x22,\x22amakusa'+'.kumamoto.'+'jp\x22,\x22arao.'+'kumamoto.j'+'p\x22,\x22aso.ku'+'mamoto.jp\x22'+',\x22choyo.ku'+'mamoto.jp\x22'+',\x22gyokuto.'+'kumamoto.j'+'p\x22,\x22kamiam'+'akusa.kuma'+'moto.jp\x22,\x22'+'kikuchi.ku'+'mamoto.jp\x22'+',\x22kumamoto'+'.kumamoto.'+'jp\x22,\x22mashi'+'ki.kumamot'+'o.jp\x22,\x22mif'+'une.kumamo'+'to.jp\x22,\x22mi'+'namata.kum'+'amoto.jp\x22,'+'\x22minamiogu'+'ni.kumamot'+'o.jp\x22,\x22nag'+'asu.kumamo'+'to.jp\x22,\x22ni'+'shihara.ku'+'mamoto.jp\x22'+',\x22oguni.ku'+'mamoto.jp\x22'+',\x22ozu.kuma'+'moto.jp\x22,\x22'+'sumoto.kum'+'amoto.jp\x22,'+'\x22takamori.'+'kumamoto.j'+'p\x22,\x22uki.ku'+'mamoto.jp\x22'+',\x22uto.kuma'+'moto.jp\x22,\x22'+'yamaga.kum'+'amoto.jp\x22,'+'\x22yamato.ku'+'mamoto.jp\x22'+',\x22yatsushi'+'ro.kumamot'+'o.jp\x22,\x22aya'+'be.kyoto.j'+'p\x22,\x22fukuch'+'iyama.kyot'+'o.jp\x22,\x22hig')+('ashiyama.k'+'yoto.jp\x22,\x22'+'ide.kyoto.'+'jp\x22,\x22ine.k'+'yoto.jp\x22,\x22'+'joyo.kyoto'+'.jp\x22,\x22kame'+'oka.kyoto.'+'jp\x22,\x22kamo.'+'kyoto.jp\x22,'+'\x22kita.kyot'+'o.jp\x22,\x22kiz'+'u.kyoto.jp'+'\x22,\x22kumiyam'+'a.kyoto.jp'+'\x22,\x22kyotamb'+'a.kyoto.jp'+'\x22,\x22kyotana'+'be.kyoto.j'+'p\x22,\x22kyotan'+'go.kyoto.j'+'p\x22,\x22maizur'+'u.kyoto.jp'+'\x22,\x22minami.'+'kyoto.jp\x22,'+'\x22minamiyam'+'ashiro.kyo'+'to.jp\x22,\x22mi'+'yazu.kyoto'+'.jp\x22,\x22muko'+'.kyoto.jp\x22'+',\x22nagaokak'+'yo.kyoto.j'+'p\x22,\x22nakagy'+'o.kyoto.jp'+'\x22,\x22nantan.'+'kyoto.jp\x22,'+'\x22oyamazaki'+'.kyoto.jp\x22'+',\x22sakyo.ky'+'oto.jp\x22,\x22s'+'eika.kyoto'+'.jp\x22,\x22tana'+'be.kyoto.j'+'p\x22,\x22uji.ky'+'oto.jp\x22,\x22u'+'jitawara.k'+'yoto.jp\x22,\x22'+'wazuka.kyo'+'to.jp\x22,\x22ya'+'mashina.ky'+'oto.jp\x22,\x22y'+'awata.kyot'+'o.jp\x22,\x22asa'+'hi.mie.jp\x22'+',\x22inabe.mi'+'e.jp\x22,\x22ise'+'.mie.jp\x22,\x22'+'kameyama.m'+'ie.jp\x22,\x22ka'+'wagoe.mie.'+'jp\x22,\x22kiho.'+'mie.jp\x22,\x22k'+'isosaki.mi'+'e.jp\x22,\x22kiw'+'a.mie.jp\x22,'+'\x22komono.mi'+'e.jp\x22,\x22kum'+'ano.mie.jp'+'\x22,\x22kuwana.'+'mie.jp\x22,\x22m'+'atsusaka.m'+'ie.jp\x22,\x22me'+'iwa.mie.jp'+'\x22,\x22mihama.'+'mie.jp\x22,\x22m'+'inamiise.m'+'ie.jp\x22,\x22mi'+'sugi.mie.j'+'p\x22,\x22miyama'+'.mie.jp\x22,\x22'+'nabari.mie'+'.jp\x22,\x22shim'+'a.mie.jp\x22,'+'\x22suzuka.mi'+'e.jp\x22,\x22tad'+'o.mie.jp\x22,'+'\x22taiki.mie'+'.jp\x22,\x22taki'+'.mie.jp\x22,\x22'+'tamaki.mie'+'.jp\x22,\x22toba'+'.mie.jp\x22,\x22'+'tsu.mie.jp'+'\x22,\x22udono.m'+'ie.jp\x22,\x22ur'+'eshino.mie'+'.jp\x22,\x22wata'+'rai.mie.jp'+'\x22,\x22yokkaic')+('hi.mie.jp\x22'+',\x22furukawa'+'.miyagi.jp'+'\x22,\x22higashi'+'matsushima'+'.miyagi.jp'+'\x22,\x22ishinom'+'aki.miyagi'+'.jp\x22,\x22iwan'+'uma.miyagi'+'.jp\x22,\x22kaku'+'da.miyagi.'+'jp\x22,\x22kami.'+'miyagi.jp\x22'+',\x22kawasaki'+'.miyagi.jp'+'\x22,\x22marumor'+'i.miyagi.j'+'p\x22,\x22matsus'+'hima.miyag'+'i.jp\x22,\x22min'+'amisanriku'+'.miyagi.jp'+'\x22,\x22misato.'+'miyagi.jp\x22'+',\x22murata.m'+'iyagi.jp\x22,'+'\x22natori.mi'+'yagi.jp\x22,\x22'+'ogawara.mi'+'yagi.jp\x22,\x22'+'ohira.miya'+'gi.jp\x22,\x22on'+'agawa.miya'+'gi.jp\x22,\x22os'+'aki.miyagi'+'.jp\x22,\x22rifu'+'.miyagi.jp'+'\x22,\x22semine.'+'miyagi.jp\x22'+',\x22shibata.'+'miyagi.jp\x22'+',\x22shichika'+'shuku.miya'+'gi.jp\x22,\x22sh'+'ikama.miya'+'gi.jp\x22,\x22sh'+'iogama.miy'+'agi.jp\x22,\x22s'+'hiroishi.m'+'iyagi.jp\x22,'+'\x22tagajo.mi'+'yagi.jp\x22,\x22'+'taiwa.miya'+'gi.jp\x22,\x22to'+'me.miyagi.'+'jp\x22,\x22tomiy'+'a.miyagi.j'+'p\x22,\x22wakuya'+'.miyagi.jp'+'\x22,\x22watari.'+'miyagi.jp\x22'+',\x22yamamoto'+'.miyagi.jp'+'\x22,\x22zao.miy'+'agi.jp\x22,\x22a'+'ya.miyazak'+'i.jp\x22,\x22ebi'+'no.miyazak'+'i.jp\x22,\x22gok'+'ase.miyaza'+'ki.jp\x22,\x22hy'+'uga.miyaza'+'ki.jp\x22,\x22ka'+'dogawa.miy'+'azaki.jp\x22,'+'\x22kawaminam'+'i.miyazaki'+'.jp\x22,\x22kijo'+'.miyazaki.'+'jp\x22,\x22kitag'+'awa.miyaza'+'ki.jp\x22,\x22ki'+'takata.miy'+'azaki.jp\x22,'+'\x22kitaura.m'+'iyazaki.jp'+'\x22,\x22kobayas'+'hi.miyazak'+'i.jp\x22,\x22kun'+'itomi.miya'+'zaki.jp\x22,\x22'+'kushima.mi'+'yazaki.jp\x22'+',\x22mimata.m'+'iyazaki.jp'+'\x22,\x22miyakon'+'ojo.miyaza'+'ki.jp\x22,\x22mi'+'yazaki.miy')+('azaki.jp\x22,'+'\x22morotsuka'+'.miyazaki.'+'jp\x22,\x22nichi'+'nan.miyaza'+'ki.jp\x22,\x22ni'+'shimera.mi'+'yazaki.jp\x22'+',\x22nobeoka.'+'miyazaki.j'+'p\x22,\x22saito.'+'miyazaki.j'+'p\x22,\x22shiiba'+'.miyazaki.'+'jp\x22,\x22shint'+'omi.miyaza'+'ki.jp\x22,\x22ta'+'kaharu.miy'+'azaki.jp\x22,'+'\x22takanabe.'+'miyazaki.j'+'p\x22,\x22takaza'+'ki.miyazak'+'i.jp\x22,\x22tsu'+'no.miyazak'+'i.jp\x22,\x22ach'+'i.nagano.j'+'p\x22,\x22agemat'+'su.nagano.'+'jp\x22,\x22anan.'+'nagano.jp\x22'+',\x22aoki.nag'+'ano.jp\x22,\x22a'+'sahi.nagan'+'o.jp\x22,\x22azu'+'mino.nagan'+'o.jp\x22,\x22chi'+'kuhoku.nag'+'ano.jp\x22,\x22c'+'hikuma.nag'+'ano.jp\x22,\x22c'+'hino.nagan'+'o.jp\x22,\x22fuj'+'imi.nagano'+'.jp\x22,\x22haku'+'ba.nagano.'+'jp\x22,\x22hara.'+'nagano.jp\x22'+',\x22hiraya.n'+'agano.jp\x22,'+'\x22iida.naga'+'no.jp\x22,\x22ii'+'jima.nagan'+'o.jp\x22,\x22iiy'+'ama.nagano'+'.jp\x22,\x22iizu'+'na.nagano.'+'jp\x22,\x22ikeda'+'.nagano.jp'+'\x22,\x22ikusaka'+'.nagano.jp'+'\x22,\x22ina.nag'+'ano.jp\x22,\x22k'+'aruizawa.n'+'agano.jp\x22,'+'\x22kawakami.'+'nagano.jp\x22'+',\x22kiso.nag'+'ano.jp\x22,\x22k'+'isofukushi'+'ma.nagano.'+'jp\x22,\x22kitaa'+'iki.nagano'+'.jp\x22,\x22koma'+'gane.nagan'+'o.jp\x22,\x22kom'+'oro.nagano'+'.jp\x22,\x22mats'+'ukawa.naga'+'no.jp\x22,\x22ma'+'tsumoto.na'+'gano.jp\x22,\x22'+'miasa.naga'+'no.jp\x22,\x22mi'+'namiaiki.n'+'agano.jp\x22,'+'\x22minamimak'+'i.nagano.j'+'p\x22,\x22minami'+'minowa.nag'+'ano.jp\x22,\x22m'+'inowa.naga'+'no.jp\x22,\x22mi'+'yada.nagan'+'o.jp\x22,\x22miy'+'ota.nagano'+'.jp\x22,\x22moch'+'izuki.naga'+'no.jp\x22,\x22na'+'gano.nagan')+('o.jp\x22,\x22nag'+'awa.nagano'+'.jp\x22,\x22nagi'+'so.nagano.'+'jp\x22,\x22nakag'+'awa.nagano'+'.jp\x22,\x22naka'+'no.nagano.'+'jp\x22,\x22nozaw'+'aonsen.nag'+'ano.jp\x22,\x22o'+'buse.nagan'+'o.jp\x22,\x22oga'+'wa.nagano.'+'jp\x22,\x22okaya'+'.nagano.jp'+'\x22,\x22omachi.'+'nagano.jp\x22'+',\x22omi.naga'+'no.jp\x22,\x22oo'+'kuwa.nagan'+'o.jp\x22,\x22oos'+'hika.nagan'+'o.jp\x22,\x22ota'+'ki.nagano.'+'jp\x22,\x22otari'+'.nagano.jp'+'\x22,\x22sakae.n'+'agano.jp\x22,'+'\x22sakaki.na'+'gano.jp\x22,\x22'+'saku.nagan'+'o.jp\x22,\x22sak'+'uho.nagano'+'.jp\x22,\x22shim'+'osuwa.naga'+'no.jp\x22,\x22sh'+'inanomachi'+'.nagano.jp'+'\x22,\x22shiojir'+'i.nagano.j'+'p\x22,\x22suwa.n'+'agano.jp\x22,'+'\x22suzaka.na'+'gano.jp\x22,\x22'+'takagi.nag'+'ano.jp\x22,\x22t'+'akamori.na'+'gano.jp\x22,\x22'+'takayama.n'+'agano.jp\x22,'+'\x22tateshina'+'.nagano.jp'+'\x22,\x22tatsuno'+'.nagano.jp'+'\x22,\x22togakus'+'hi.nagano.'+'jp\x22,\x22togur'+'a.nagano.j'+'p\x22,\x22tomi.n'+'agano.jp\x22,'+'\x22ueda.naga'+'no.jp\x22,\x22wa'+'da.nagano.'+'jp\x22,\x22yamag'+'ata.nagano'+'.jp\x22,\x22yama'+'nouchi.nag'+'ano.jp\x22,\x22y'+'asaka.naga'+'no.jp\x22,\x22ya'+'suoka.naga'+'no.jp\x22,\x22ch'+'ijiwa.naga'+'saki.jp\x22,\x22'+'futsu.naga'+'saki.jp\x22,\x22'+'goto.nagas'+'aki.jp\x22,\x22h'+'asami.naga'+'saki.jp\x22,\x22'+'hirado.nag'+'asaki.jp\x22,'+'\x22iki.nagas'+'aki.jp\x22,\x22i'+'sahaya.nag'+'asaki.jp\x22,'+'\x22kawatana.'+'nagasaki.j'+'p\x22,\x22kuchin'+'otsu.nagas'+'aki.jp\x22,\x22m'+'atsuura.na'+'gasaki.jp\x22'+',\x22nagasaki'+'.nagasaki.'+'jp\x22,\x22obama'+'.nagasaki.'+'jp\x22,\x22omura'+'.nagasaki.')+('jp\x22,\x22oseto'+'.nagasaki.'+'jp\x22,\x22saika'+'i.nagasaki'+'.jp\x22,\x22sase'+'bo.nagasak'+'i.jp\x22,\x22sei'+'hi.nagasak'+'i.jp\x22,\x22shi'+'mabara.nag'+'asaki.jp\x22,'+'\x22shinkamig'+'oto.nagasa'+'ki.jp\x22,\x22to'+'gitsu.naga'+'saki.jp\x22,\x22'+'tsushima.n'+'agasaki.jp'+'\x22,\x22unzen.n'+'agasaki.jp'+'\x22,\x22ando.na'+'ra.jp\x22,\x22go'+'se.nara.jp'+'\x22,\x22heguri.'+'nara.jp\x22,\x22'+'higashiyos'+'hino.nara.'+'jp\x22,\x22ikaru'+'ga.nara.jp'+'\x22,\x22ikoma.n'+'ara.jp\x22,\x22k'+'amikitayam'+'a.nara.jp\x22'+',\x22kanmaki.'+'nara.jp\x22,\x22'+'kashiba.na'+'ra.jp\x22,\x22ka'+'shihara.na'+'ra.jp\x22,\x22ka'+'tsuragi.na'+'ra.jp\x22,\x22ka'+'wai.nara.j'+'p\x22,\x22kawaka'+'mi.nara.jp'+'\x22,\x22kawanis'+'hi.nara.jp'+'\x22,\x22koryo.n'+'ara.jp\x22,\x22k'+'urotaki.na'+'ra.jp\x22,\x22mi'+'tsue.nara.'+'jp\x22,\x22miyak'+'e.nara.jp\x22'+',\x22nara.nar'+'a.jp\x22,\x22nos'+'egawa.nara'+'.jp\x22,\x22oji.'+'nara.jp\x22,\x22'+'ouda.nara.'+'jp\x22,\x22oyodo'+'.nara.jp\x22,'+'\x22sakurai.n'+'ara.jp\x22,\x22s'+'ango.nara.'+'jp\x22,\x22shimo'+'ichi.nara.'+'jp\x22,\x22shimo'+'kitayama.n'+'ara.jp\x22,\x22s'+'hinjo.nara'+'.jp\x22,\x22soni'+'.nara.jp\x22,'+'\x22takatori.'+'nara.jp\x22,\x22'+'tawaramoto'+'.nara.jp\x22,'+'\x22tenkawa.n'+'ara.jp\x22,\x22t'+'enri.nara.'+'jp\x22,\x22uda.n'+'ara.jp\x22,\x22y'+'amatokoriy'+'ama.nara.j'+'p\x22,\x22yamato'+'takada.nar'+'a.jp\x22,\x22yam'+'azoe.nara.'+'jp\x22,\x22yoshi'+'no.nara.jp'+'\x22,\x22aga.nii'+'gata.jp\x22,\x22'+'agano.niig'+'ata.jp\x22,\x22g'+'osen.niiga'+'ta.jp\x22,\x22it'+'oigawa.nii'+'gata.jp\x22,\x22'+'izumozaki.'+'niigata.jp'+'\x22,\x22joetsu.')+('niigata.jp'+'\x22,\x22kamo.ni'+'igata.jp\x22,'+'\x22kariwa.ni'+'igata.jp\x22,'+'\x22kashiwaza'+'ki.niigata'+'.jp\x22,\x22mina'+'miuonuma.n'+'iigata.jp\x22'+',\x22mitsuke.'+'niigata.jp'+'\x22,\x22muika.n'+'iigata.jp\x22'+',\x22murakami'+'.niigata.j'+'p\x22,\x22myoko.'+'niigata.jp'+'\x22,\x22nagaoka'+'.niigata.j'+'p\x22,\x22niigat'+'a.niigata.'+'jp\x22,\x22ojiya'+'.niigata.j'+'p\x22,\x22omi.ni'+'igata.jp\x22,'+'\x22sado.niig'+'ata.jp\x22,\x22s'+'anjo.niiga'+'ta.jp\x22,\x22se'+'iro.niigat'+'a.jp\x22,\x22sei'+'rou.niigat'+'a.jp\x22,\x22sek'+'ikawa.niig'+'ata.jp\x22,\x22s'+'hibata.nii'+'gata.jp\x22,\x22'+'tagami.nii'+'gata.jp\x22,\x22'+'tainai.nii'+'gata.jp\x22,\x22'+'tochio.nii'+'gata.jp\x22,\x22'+'tokamachi.'+'niigata.jp'+'\x22,\x22tsubame'+'.niigata.j'+'p\x22,\x22tsunan'+'.niigata.j'+'p\x22,\x22uonuma'+'.niigata.j'+'p\x22,\x22yahiko'+'.niigata.j'+'p\x22,\x22yoita.'+'niigata.jp'+'\x22,\x22yuzawa.'+'niigata.jp'+'\x22,\x22beppu.o'+'ita.jp\x22,\x22b'+'ungoono.oi'+'ta.jp\x22,\x22bu'+'ngotakada.'+'oita.jp\x22,\x22'+'hasama.oit'+'a.jp\x22,\x22hij'+'i.oita.jp\x22'+',\x22himeshim'+'a.oita.jp\x22'+',\x22hita.oit'+'a.jp\x22,\x22kam'+'itsue.oita'+'.jp\x22,\x22koko'+'noe.oita.j'+'p\x22,\x22kuju.o'+'ita.jp\x22,\x22k'+'unisaki.oi'+'ta.jp\x22,\x22ku'+'su.oita.jp'+'\x22,\x22oita.oi'+'ta.jp\x22,\x22sa'+'iki.oita.j'+'p\x22,\x22taketa'+'.oita.jp\x22,'+'\x22tsukumi.o'+'ita.jp\x22,\x22u'+'sa.oita.jp'+'\x22,\x22usuki.o'+'ita.jp\x22,\x22y'+'ufu.oita.j'+'p\x22,\x22akaiwa'+'.okayama.j'+'p\x22,\x22asakuc'+'hi.okayama'+'.jp\x22,\x22bize'+'n.okayama.'+'jp\x22,\x22hayas'+'hima.okaya'+'ma.jp\x22,\x22ib'+'ara.okayam')+('a.jp\x22,\x22kag'+'amino.okay'+'ama.jp\x22,\x22k'+'asaoka.oka'+'yama.jp\x22,\x22'+'kibichuo.o'+'kayama.jp\x22'+',\x22kumenan.'+'okayama.jp'+'\x22,\x22kurashi'+'ki.okayama'+'.jp\x22,\x22mani'+'wa.okayama'+'.jp\x22,\x22misa'+'ki.okayama'+'.jp\x22,\x22nagi'+'.okayama.j'+'p\x22,\x22niimi.'+'okayama.jp'+'\x22,\x22nishiaw'+'akura.okay'+'ama.jp\x22,\x22o'+'kayama.oka'+'yama.jp\x22,\x22'+'satosho.ok'+'ayama.jp\x22,'+'\x22setouchi.'+'okayama.jp'+'\x22,\x22shinjo.'+'okayama.jp'+'\x22,\x22shoo.ok'+'ayama.jp\x22,'+'\x22soja.okay'+'ama.jp\x22,\x22t'+'akahashi.o'+'kayama.jp\x22'+',\x22tamano.o'+'kayama.jp\x22'+',\x22tsuyama.'+'okayama.jp'+'\x22,\x22wake.ok'+'ayama.jp\x22,'+'\x22yakage.ok'+'ayama.jp\x22,'+'\x22aguni.oki'+'nawa.jp\x22,\x22'+'ginowan.ok'+'inawa.jp\x22,'+'\x22ginoza.ok'+'inawa.jp\x22,'+'\x22gushikami'+'.okinawa.j'+'p\x22,\x22haebar'+'u.okinawa.'+'jp\x22,\x22higas'+'hi.okinawa'+'.jp\x22,\x22hira'+'ra.okinawa'+'.jp\x22,\x22ihey'+'a.okinawa.'+'jp\x22,\x22ishig'+'aki.okinaw'+'a.jp\x22,\x22ish'+'ikawa.okin'+'awa.jp\x22,\x22i'+'toman.okin'+'awa.jp\x22,\x22i'+'zena.okina'+'wa.jp\x22,\x22ka'+'dena.okina'+'wa.jp\x22,\x22ki'+'n.okinawa.'+'jp\x22,\x22kitad'+'aito.okina'+'wa.jp\x22,\x22ki'+'tanakagusu'+'ku.okinawa'+'.jp\x22,\x22kume'+'jima.okina'+'wa.jp\x22,\x22ku'+'nigami.oki'+'nawa.jp\x22,\x22'+'minamidait'+'o.okinawa.'+'jp\x22,\x22motob'+'u.okinawa.'+'jp\x22,\x22nago.'+'okinawa.jp'+'\x22,\x22naha.ok'+'inawa.jp\x22,'+'\x22nakagusuk'+'u.okinawa.'+'jp\x22,\x22nakij'+'in.okinawa'+'.jp\x22,\x22nanj'+'o.okinawa.'+'jp\x22,\x22nishi'+'hara.okina'+'wa.jp\x22,\x22og'+'imi.okinaw')+('a.jp\x22,\x22oki'+'nawa.okina'+'wa.jp\x22,\x22on'+'na.okinawa'+'.jp\x22,\x22shim'+'oji.okinaw'+'a.jp\x22,\x22tak'+'etomi.okin'+'awa.jp\x22,\x22t'+'arama.okin'+'awa.jp\x22,\x22t'+'okashiki.o'+'kinawa.jp\x22'+',\x22tomigusu'+'ku.okinawa'+'.jp\x22,\x22tona'+'ki.okinawa'+'.jp\x22,\x22uras'+'oe.okinawa'+'.jp\x22,\x22urum'+'a.okinawa.'+'jp\x22,\x22yaese'+'.okinawa.j'+'p\x22,\x22yomita'+'n.okinawa.'+'jp\x22,\x22yonab'+'aru.okinaw'+'a.jp\x22,\x22yon'+'aguni.okin'+'awa.jp\x22,\x22z'+'amami.okin'+'awa.jp\x22,\x22a'+'beno.osaka'+'.jp\x22,\x22chih'+'ayaakasaka'+'.osaka.jp\x22'+',\x22chuo.osa'+'ka.jp\x22,\x22da'+'ito.osaka.'+'jp\x22,\x22fujii'+'dera.osaka'+'.jp\x22,\x22habi'+'kino.osaka'+'.jp\x22,\x22hann'+'an.osaka.j'+'p\x22,\x22higash'+'iosaka.osa'+'ka.jp\x22,\x22hi'+'gashisumiy'+'oshi.osaka'+'.jp\x22,\x22higa'+'shiyodogaw'+'a.osaka.jp'+'\x22,\x22hirakat'+'a.osaka.jp'+'\x22,\x22ibaraki'+'.osaka.jp\x22'+',\x22ikeda.os'+'aka.jp\x22,\x22i'+'zumi.osaka'+'.jp\x22,\x22izum'+'iotsu.osak'+'a.jp\x22,\x22izu'+'misano.osa'+'ka.jp\x22,\x22ka'+'doma.osaka'+'.jp\x22,\x22kaiz'+'uka.osaka.'+'jp\x22,\x22kanan'+'.osaka.jp\x22'+',\x22kashiwar'+'a.osaka.jp'+'\x22,\x22katano.'+'osaka.jp\x22,'+'\x22kawachina'+'gano.osaka'+'.jp\x22,\x22kish'+'iwada.osak'+'a.jp\x22,\x22kit'+'a.osaka.jp'+'\x22,\x22kumator'+'i.osaka.jp'+'\x22,\x22matsuba'+'ra.osaka.j'+'p\x22,\x22minato'+'.osaka.jp\x22'+',\x22minoh.os'+'aka.jp\x22,\x22m'+'isaki.osak'+'a.jp\x22,\x22mor'+'iguchi.osa'+'ka.jp\x22,\x22ne'+'yagawa.osa'+'ka.jp\x22,\x22ni'+'shi.osaka.'+'jp\x22,\x22nose.'+'osaka.jp\x22,'+'\x22osakasaya'+'ma.osaka.j'+'p\x22,\x22sakai.')+('osaka.jp\x22,'+'\x22sayama.os'+'aka.jp\x22,\x22s'+'ennan.osak'+'a.jp\x22,\x22set'+'tsu.osaka.'+'jp\x22,\x22shijo'+'nawate.osa'+'ka.jp\x22,\x22sh'+'imamoto.os'+'aka.jp\x22,\x22s'+'uita.osaka'+'.jp\x22,\x22tada'+'oka.osaka.'+'jp\x22,\x22taish'+'i.osaka.jp'+'\x22,\x22tajiri.'+'osaka.jp\x22,'+'\x22takaishi.'+'osaka.jp\x22,'+'\x22takatsuki'+'.osaka.jp\x22'+',\x22tondabay'+'ashi.osaka'+'.jp\x22,\x22toyo'+'naka.osaka'+'.jp\x22,\x22toyo'+'no.osaka.j'+'p\x22,\x22yao.os'+'aka.jp\x22,\x22a'+'riake.saga'+'.jp\x22,\x22arit'+'a.saga.jp\x22'+',\x22fukudomi'+'.saga.jp\x22,'+'\x22genkai.sa'+'ga.jp\x22,\x22ha'+'matama.sag'+'a.jp\x22,\x22hiz'+'en.saga.jp'+'\x22,\x22imari.s'+'aga.jp\x22,\x22k'+'amimine.sa'+'ga.jp\x22,\x22ka'+'nzaki.saga'+'.jp\x22,\x22kara'+'tsu.saga.j'+'p\x22,\x22kashim'+'a.saga.jp\x22'+',\x22kitagata'+'.saga.jp\x22,'+'\x22kitahata.'+'saga.jp\x22,\x22'+'kiyama.sag'+'a.jp\x22,\x22kou'+'hoku.saga.'+'jp\x22,\x22kyura'+'gi.saga.jp'+'\x22,\x22nishiar'+'ita.saga.j'+'p\x22,\x22ogi.sa'+'ga.jp\x22,\x22om'+'achi.saga.'+'jp\x22,\x22ouchi'+'.saga.jp\x22,'+'\x22saga.saga'+'.jp\x22,\x22shir'+'oishi.saga'+'.jp\x22,\x22taku'+'.saga.jp\x22,'+'\x22tara.saga'+'.jp\x22,\x22tosu'+'.saga.jp\x22,'+'\x22yoshinoga'+'ri.saga.jp'+'\x22,\x22arakawa'+'.saitama.j'+'p\x22,\x22asaka.'+'saitama.jp'+'\x22,\x22chichib'+'u.saitama.'+'jp\x22,\x22fujim'+'i.saitama.'+'jp\x22,\x22fujim'+'ino.saitam'+'a.jp\x22,\x22fuk'+'aya.saitam'+'a.jp\x22,\x22han'+'no.saitama'+'.jp\x22,\x22hany'+'u.saitama.'+'jp\x22,\x22hasud'+'a.saitama.'+'jp\x22,\x22hatog'+'aya.saitam'+'a.jp\x22,\x22hat'+'oyama.sait'+'ama.jp\x22,\x22h'+'idaka.sait'+'ama.jp\x22,\x22h')+('igashichic'+'hibu.saita'+'ma.jp\x22,\x22hi'+'gashimatsu'+'yama.saita'+'ma.jp\x22,\x22ho'+'njo.saitam'+'a.jp\x22,\x22ina'+'.saitama.j'+'p\x22,\x22iruma.'+'saitama.jp'+'\x22,\x22iwatsuk'+'i.saitama.'+'jp\x22,\x22kamii'+'zumi.saita'+'ma.jp\x22,\x22ka'+'mikawa.sai'+'tama.jp\x22,\x22'+'kamisato.s'+'aitama.jp\x22'+',\x22kasukabe'+'.saitama.j'+'p\x22,\x22kawago'+'e.saitama.'+'jp\x22,\x22kawag'+'uchi.saita'+'ma.jp\x22,\x22ka'+'wajima.sai'+'tama.jp\x22,\x22'+'kazo.saita'+'ma.jp\x22,\x22ki'+'tamoto.sai'+'tama.jp\x22,\x22'+'koshigaya.'+'saitama.jp'+'\x22,\x22kounosu'+'.saitama.j'+'p\x22,\x22kuki.s'+'aitama.jp\x22'+',\x22kumagaya'+'.saitama.j'+'p\x22,\x22matsub'+'ushi.saita'+'ma.jp\x22,\x22mi'+'nano.saita'+'ma.jp\x22,\x22mi'+'sato.saita'+'ma.jp\x22,\x22mi'+'yashiro.sa'+'itama.jp\x22,'+'\x22miyoshi.s'+'aitama.jp\x22'+',\x22moroyama'+'.saitama.j'+'p\x22,\x22nagato'+'ro.saitama'+'.jp\x22,\x22name'+'gawa.saita'+'ma.jp\x22,\x22ni'+'iza.saitam'+'a.jp\x22,\x22oga'+'no.saitama'+'.jp\x22,\x22ogaw'+'a.saitama.'+'jp\x22,\x22ogose'+'.saitama.j'+'p\x22,\x22okegaw'+'a.saitama.'+'jp\x22,\x22omiya'+'.saitama.j'+'p\x22,\x22otaki.'+'saitama.jp'+'\x22,\x22ranzan.'+'saitama.jp'+'\x22,\x22ryokami'+'.saitama.j'+'p\x22,\x22saitam'+'a.saitama.'+'jp\x22,\x22sakad'+'o.saitama.'+'jp\x22,\x22satte'+'.saitama.j'+'p\x22,\x22sayama'+'.saitama.j'+'p\x22,\x22shiki.'+'saitama.jp'+'\x22,\x22shiraok'+'a.saitama.'+'jp\x22,\x22soka.'+'saitama.jp'+'\x22,\x22sugito.'+'saitama.jp'+'\x22,\x22toda.sa'+'itama.jp\x22,'+'\x22tokigawa.'+'saitama.jp'+'\x22,\x22tokoroz'+'awa.saitam'+'a.jp\x22,\x22tsu'+'rugashima.')+('saitama.jp'+'\x22,\x22urawa.s'+'aitama.jp\x22'+',\x22warabi.s'+'aitama.jp\x22'+',\x22yashio.s'+'aitama.jp\x22'+',\x22yokoze.s'+'aitama.jp\x22'+',\x22yono.sai'+'tama.jp\x22,\x22'+'yorii.sait'+'ama.jp\x22,\x22y'+'oshida.sai'+'tama.jp\x22,\x22'+'yoshikawa.'+'saitama.jp'+'\x22,\x22yoshimi'+'.saitama.j'+'p\x22,\x22aisho.'+'shiga.jp\x22,'+'\x22gamo.shig'+'a.jp\x22,\x22hig'+'ashiomi.sh'+'iga.jp\x22,\x22h'+'ikone.shig'+'a.jp\x22,\x22kok'+'a.shiga.jp'+'\x22,\x22konan.s'+'higa.jp\x22,\x22'+'kosei.shig'+'a.jp\x22,\x22kot'+'o.shiga.jp'+'\x22,\x22kusatsu'+'.shiga.jp\x22'+',\x22maibara.'+'shiga.jp\x22,'+'\x22moriyama.'+'shiga.jp\x22,'+'\x22nagahama.'+'shiga.jp\x22,'+'\x22nishiazai'+'.shiga.jp\x22'+',\x22notogawa'+'.shiga.jp\x22'+',\x22omihachi'+'man.shiga.'+'jp\x22,\x22otsu.'+'shiga.jp\x22,'+'\x22ritto.shi'+'ga.jp\x22,\x22ry'+'uoh.shiga.'+'jp\x22,\x22takas'+'hima.shiga'+'.jp\x22,\x22taka'+'tsuki.shig'+'a.jp\x22,\x22tor'+'ahime.shig'+'a.jp\x22,\x22toy'+'osato.shig'+'a.jp\x22,\x22yas'+'u.shiga.jp'+'\x22,\x22akagi.s'+'himane.jp\x22'+',\x22ama.shim'+'ane.jp\x22,\x22g'+'otsu.shima'+'ne.jp\x22,\x22ha'+'mada.shima'+'ne.jp\x22,\x22hi'+'gashiizumo'+'.shimane.j'+'p\x22,\x22hikawa'+'.shimane.j'+'p\x22,\x22hikimi'+'.shimane.j'+'p\x22,\x22izumo.'+'shimane.jp'+'\x22,\x22kakinok'+'i.shimane.'+'jp\x22,\x22masud'+'a.shimane.'+'jp\x22,\x22matsu'+'e.shimane.'+'jp\x22,\x22misat'+'o.shimane.'+'jp\x22,\x22nishi'+'noshima.sh'+'imane.jp\x22,'+'\x22ohda.shim'+'ane.jp\x22,\x22o'+'kinoshima.'+'shimane.jp'+'\x22,\x22okuizum'+'o.shimane.'+'jp\x22,\x22shima'+'ne.shimane'+'.jp\x22,\x22tama'+'yu.shimane'+'.jp\x22,\x22tsuw')+('ano.shiman'+'e.jp\x22,\x22unn'+'an.shimane'+'.jp\x22,\x22yaku'+'mo.shimane'+'.jp\x22,\x22yasu'+'gi.shimane'+'.jp\x22,\x22yats'+'uka.shiman'+'e.jp\x22,\x22ara'+'i.shizuoka'+'.jp\x22,\x22atam'+'i.shizuoka'+'.jp\x22,\x22fuji'+'.shizuoka.'+'jp\x22,\x22fujie'+'da.shizuok'+'a.jp\x22,\x22fuj'+'ikawa.shiz'+'uoka.jp\x22,\x22'+'fujinomiya'+'.shizuoka.'+'jp\x22,\x22fukur'+'oi.shizuok'+'a.jp\x22,\x22got'+'emba.shizu'+'oka.jp\x22,\x22h'+'aibara.shi'+'zuoka.jp\x22,'+'\x22hamamatsu'+'.shizuoka.'+'jp\x22,\x22higas'+'hiizu.shiz'+'uoka.jp\x22,\x22'+'ito.shizuo'+'ka.jp\x22,\x22iw'+'ata.shizuo'+'ka.jp\x22,\x22iz'+'u.shizuoka'+'.jp\x22,\x22izun'+'okuni.shiz'+'uoka.jp\x22,\x22'+'kakegawa.s'+'hizuoka.jp'+'\x22,\x22kannami'+'.shizuoka.'+'jp\x22,\x22kawan'+'ehon.shizu'+'oka.jp\x22,\x22k'+'awazu.shiz'+'uoka.jp\x22,\x22'+'kikugawa.s'+'hizuoka.jp'+'\x22,\x22kosai.s'+'hizuoka.jp'+'\x22,\x22makinoh'+'ara.shizuo'+'ka.jp\x22,\x22ma'+'tsuzaki.sh'+'izuoka.jp\x22'+',\x22minamiiz'+'u.shizuoka'+'.jp\x22,\x22mish'+'ima.shizuo'+'ka.jp\x22,\x22mo'+'rimachi.sh'+'izuoka.jp\x22'+',\x22nishiizu'+'.shizuoka.'+'jp\x22,\x22numaz'+'u.shizuoka'+'.jp\x22,\x22omae'+'zaki.shizu'+'oka.jp\x22,\x22s'+'himada.shi'+'zuoka.jp\x22,'+'\x22shimizu.s'+'hizuoka.jp'+'\x22,\x22shimoda'+'.shizuoka.'+'jp\x22,\x22shizu'+'oka.shizuo'+'ka.jp\x22,\x22su'+'sono.shizu'+'oka.jp\x22,\x22y'+'aizu.shizu'+'oka.jp\x22,\x22y'+'oshida.shi'+'zuoka.jp\x22,'+'\x22ashikaga.'+'tochigi.jp'+'\x22,\x22bato.to'+'chigi.jp\x22,'+'\x22haga.toch'+'igi.jp\x22,\x22i'+'chikai.toc'+'higi.jp\x22,\x22'+'iwafune.to'+'chigi.jp\x22,'+'\x22kaminokaw')+('a.tochigi.'+'jp\x22,\x22kanum'+'a.tochigi.'+'jp\x22,\x22karas'+'uyama.toch'+'igi.jp\x22,\x22k'+'uroiso.toc'+'higi.jp\x22,\x22'+'mashiko.to'+'chigi.jp\x22,'+'\x22mibu.toch'+'igi.jp\x22,\x22m'+'oka.tochig'+'i.jp\x22,\x22mot'+'egi.tochig'+'i.jp\x22,\x22nas'+'u.tochigi.'+'jp\x22,\x22nasus'+'hiobara.to'+'chigi.jp\x22,'+'\x22nikko.toc'+'higi.jp\x22,\x22'+'nishikata.'+'tochigi.jp'+'\x22,\x22nogi.to'+'chigi.jp\x22,'+'\x22ohira.toc'+'higi.jp\x22,\x22'+'ohtawara.t'+'ochigi.jp\x22'+',\x22oyama.to'+'chigi.jp\x22,'+'\x22sakura.to'+'chigi.jp\x22,'+'\x22sano.toch'+'igi.jp\x22,\x22s'+'himotsuke.'+'tochigi.jp'+'\x22,\x22shioya.'+'tochigi.jp'+'\x22,\x22takanez'+'awa.tochig'+'i.jp\x22,\x22toc'+'higi.tochi'+'gi.jp\x22,\x22ts'+'uga.tochig'+'i.jp\x22,\x22uji'+'ie.tochigi'+'.jp\x22,\x22utsu'+'nomiya.toc'+'higi.jp\x22,\x22'+'yaita.toch'+'igi.jp\x22,\x22a'+'izumi.toku'+'shima.jp\x22,'+'\x22anan.toku'+'shima.jp\x22,'+'\x22ichiba.to'+'kushima.jp'+'\x22,\x22itano.t'+'okushima.j'+'p\x22,\x22kainan'+'.tokushima'+'.jp\x22,\x22koma'+'tsushima.t'+'okushima.j'+'p\x22,\x22matsus'+'hige.tokus'+'hima.jp\x22,\x22'+'mima.tokus'+'hima.jp\x22,\x22'+'minami.tok'+'ushima.jp\x22'+',\x22miyoshi.'+'tokushima.'+'jp\x22,\x22mugi.'+'tokushima.'+'jp\x22,\x22nakag'+'awa.tokush'+'ima.jp\x22,\x22n'+'aruto.toku'+'shima.jp\x22,'+'\x22sanagochi'+'.tokushima'+'.jp\x22,\x22shis'+'hikui.toku'+'shima.jp\x22,'+'\x22tokushima'+'.tokushima'+'.jp\x22,\x22waji'+'ki.tokushi'+'ma.jp\x22,\x22ad'+'achi.tokyo'+'.jp\x22,\x22akir'+'uno.tokyo.'+'jp\x22,\x22akish'+'ima.tokyo.'+'jp\x22,\x22aogas'+'hima.tokyo'+'.jp\x22,\x22arak')+('awa.tokyo.'+'jp\x22,\x22bunky'+'o.tokyo.jp'+'\x22,\x22chiyoda'+'.tokyo.jp\x22'+',\x22chofu.to'+'kyo.jp\x22,\x22c'+'huo.tokyo.'+'jp\x22,\x22edoga'+'wa.tokyo.j'+'p\x22,\x22fuchu.'+'tokyo.jp\x22,'+'\x22fussa.tok'+'yo.jp\x22,\x22ha'+'chijo.toky'+'o.jp\x22,\x22hac'+'hioji.toky'+'o.jp\x22,\x22ham'+'ura.tokyo.'+'jp\x22,\x22higas'+'hikurume.t'+'okyo.jp\x22,\x22'+'higashimur'+'ayama.toky'+'o.jp\x22,\x22hig'+'ashiyamato'+'.tokyo.jp\x22'+',\x22hino.tok'+'yo.jp\x22,\x22hi'+'node.tokyo'+'.jp\x22,\x22hino'+'hara.tokyo'+'.jp\x22,\x22inag'+'i.tokyo.jp'+'\x22,\x22itabash'+'i.tokyo.jp'+'\x22,\x22katsush'+'ika.tokyo.'+'jp\x22,\x22kita.'+'tokyo.jp\x22,'+'\x22kiyose.to'+'kyo.jp\x22,\x22k'+'odaira.tok'+'yo.jp\x22,\x22ko'+'ganei.toky'+'o.jp\x22,\x22kok'+'ubunji.tok'+'yo.jp\x22,\x22ko'+'mae.tokyo.'+'jp\x22,\x22koto.'+'tokyo.jp\x22,'+'\x22kouzushim'+'a.tokyo.jp'+'\x22,\x22kunitac'+'hi.tokyo.j'+'p\x22,\x22machid'+'a.tokyo.jp'+'\x22,\x22meguro.'+'tokyo.jp\x22,'+'\x22minato.to'+'kyo.jp\x22,\x22m'+'itaka.toky'+'o.jp\x22,\x22miz'+'uho.tokyo.'+'jp\x22,\x22musas'+'himurayama'+'.tokyo.jp\x22'+',\x22musashin'+'o.tokyo.jp'+'\x22,\x22nakano.'+'tokyo.jp\x22,'+'\x22nerima.to'+'kyo.jp\x22,\x22o'+'gasawara.t'+'okyo.jp\x22,\x22'+'okutama.to'+'kyo.jp\x22,\x22o'+'me.tokyo.j'+'p\x22,\x22oshima'+'.tokyo.jp\x22'+',\x22ota.toky'+'o.jp\x22,\x22set'+'agaya.toky'+'o.jp\x22,\x22shi'+'buya.tokyo'+'.jp\x22,\x22shin'+'agawa.toky'+'o.jp\x22,\x22shi'+'njuku.toky'+'o.jp\x22,\x22sug'+'inami.toky'+'o.jp\x22,\x22sum'+'ida.tokyo.'+'jp\x22,\x22tachi'+'kawa.tokyo'+'.jp\x22,\x22tait'+'o.tokyo.jp'+'\x22,\x22tama.to'+'kyo.jp\x22,\x22t'+'oshima.tok')+('yo.jp\x22,\x22ch'+'izu.tottor'+'i.jp\x22,\x22hin'+'o.tottori.'+'jp\x22,\x22kawah'+'ara.tottor'+'i.jp\x22,\x22kog'+'e.tottori.'+'jp\x22,\x22kotou'+'ra.tottori'+'.jp\x22,\x22misa'+'sa.tottori'+'.jp\x22,\x22nanb'+'u.tottori.'+'jp\x22,\x22nichi'+'nan.tottor'+'i.jp\x22,\x22sak'+'aiminato.t'+'ottori.jp\x22'+',\x22tottori.'+'tottori.jp'+'\x22,\x22wakasa.'+'tottori.jp'+'\x22,\x22yazu.to'+'ttori.jp\x22,'+'\x22yonago.to'+'ttori.jp\x22,'+'\x22asahi.toy'+'ama.jp\x22,\x22f'+'uchu.toyam'+'a.jp\x22,\x22fuk'+'umitsu.toy'+'ama.jp\x22,\x22f'+'unahashi.t'+'oyama.jp\x22,'+'\x22himi.toya'+'ma.jp\x22,\x22im'+'izu.toyama'+'.jp\x22,\x22inam'+'i.toyama.j'+'p\x22,\x22johana'+'.toyama.jp'+'\x22,\x22kamiich'+'i.toyama.j'+'p\x22,\x22kurobe'+'.toyama.jp'+'\x22,\x22nakanii'+'kawa.toyam'+'a.jp\x22,\x22nam'+'erikawa.to'+'yama.jp\x22,\x22'+'nanto.toya'+'ma.jp\x22,\x22ny'+'uzen.toyam'+'a.jp\x22,\x22oya'+'be.toyama.'+'jp\x22,\x22taira'+'.toyama.jp'+'\x22,\x22takaoka'+'.toyama.jp'+'\x22,\x22tateyam'+'a.toyama.j'+'p\x22,\x22toga.t'+'oyama.jp\x22,'+'\x22tonami.to'+'yama.jp\x22,\x22'+'toyama.toy'+'ama.jp\x22,\x22u'+'nazuki.toy'+'ama.jp\x22,\x22u'+'ozu.toyama'+'.jp\x22,\x22yama'+'da.toyama.'+'jp\x22,\x22arida'+'.wakayama.'+'jp\x22,\x22arida'+'gawa.wakay'+'ama.jp\x22,\x22g'+'obo.wakaya'+'ma.jp\x22,\x22ha'+'shimoto.wa'+'kayama.jp\x22'+',\x22hidaka.w'+'akayama.jp'+'\x22,\x22hirogaw'+'a.wakayama'+'.jp\x22,\x22inam'+'i.wakayama'+'.jp\x22,\x22iwad'+'e.wakayama'+'.jp\x22,\x22kain'+'an.wakayam'+'a.jp\x22,\x22kam'+'itonda.wak'+'ayama.jp\x22,'+'\x22katsuragi'+'.wakayama.'+'jp\x22,\x22kimin'+'o.wakayama'+'.jp\x22,\x22kino')+('kawa.wakay'+'ama.jp\x22,\x22k'+'itayama.wa'+'kayama.jp\x22'+',\x22koya.wak'+'ayama.jp\x22,'+'\x22koza.waka'+'yama.jp\x22,\x22'+'kozagawa.w'+'akayama.jp'+'\x22,\x22kudoyam'+'a.wakayama'+'.jp\x22,\x22kush'+'imoto.waka'+'yama.jp\x22,\x22'+'mihama.wak'+'ayama.jp\x22,'+'\x22misato.wa'+'kayama.jp\x22'+',\x22nachikat'+'suura.waka'+'yama.jp\x22,\x22'+'shingu.wak'+'ayama.jp\x22,'+'\x22shirahama'+'.wakayama.'+'jp\x22,\x22taiji'+'.wakayama.'+'jp\x22,\x22tanab'+'e.wakayama'+'.jp\x22,\x22waka'+'yama.wakay'+'ama.jp\x22,\x22y'+'uasa.wakay'+'ama.jp\x22,\x22y'+'ura.wakaya'+'ma.jp\x22,\x22as'+'ahi.yamaga'+'ta.jp\x22,\x22fu'+'nagata.yam'+'agata.jp\x22,'+'\x22higashine'+'.yamagata.'+'jp\x22,\x22iide.'+'yamagata.j'+'p\x22,\x22kahoku'+'.yamagata.'+'jp\x22,\x22kamin'+'oyama.yama'+'gata.jp\x22,\x22'+'kaneyama.y'+'amagata.jp'+'\x22,\x22kawanis'+'hi.yamagat'+'a.jp\x22,\x22mam'+'urogawa.ya'+'magata.jp\x22'+',\x22mikawa.y'+'amagata.jp'+'\x22,\x22murayam'+'a.yamagata'+'.jp\x22,\x22naga'+'i.yamagata'+'.jp\x22,\x22naka'+'yama.yamag'+'ata.jp\x22,\x22n'+'anyo.yamag'+'ata.jp\x22,\x22n'+'ishikawa.y'+'amagata.jp'+'\x22,\x22obanaza'+'wa.yamagat'+'a.jp\x22,\x22oe.'+'yamagata.j'+'p\x22,\x22oguni.'+'yamagata.j'+'p\x22,\x22ohkura'+'.yamagata.'+'jp\x22,\x22oishi'+'da.yamagat'+'a.jp\x22,\x22sag'+'ae.yamagat'+'a.jp\x22,\x22sak'+'ata.yamaga'+'ta.jp\x22,\x22sa'+'kegawa.yam'+'agata.jp\x22,'+'\x22shinjo.ya'+'magata.jp\x22'+',\x22shiratak'+'a.yamagata'+'.jp\x22,\x22shon'+'ai.yamagat'+'a.jp\x22,\x22tak'+'ahata.yama'+'gata.jp\x22,\x22'+'tendo.yama'+'gata.jp\x22,\x22'+'tozawa.yam'+'agata.jp\x22,')+('\x22tsuruoka.'+'yamagata.j'+'p\x22,\x22yamaga'+'ta.yamagat'+'a.jp\x22,\x22yam'+'anobe.yama'+'gata.jp\x22,\x22'+'yonezawa.y'+'amagata.jp'+'\x22,\x22yuza.ya'+'magata.jp\x22'+',\x22abu.yama'+'guchi.jp\x22,'+'\x22hagi.yama'+'guchi.jp\x22,'+'\x22hikari.ya'+'maguchi.jp'+'\x22,\x22hofu.ya'+'maguchi.jp'+'\x22,\x22iwakuni'+'.yamaguchi'+'.jp\x22,\x22kuda'+'matsu.yama'+'guchi.jp\x22,'+'\x22mitou.yam'+'aguchi.jp\x22'+',\x22nagato.y'+'amaguchi.j'+'p\x22,\x22oshima'+'.yamaguchi'+'.jp\x22,\x22shim'+'onoseki.ya'+'maguchi.jp'+'\x22,\x22shunan.'+'yamaguchi.'+'jp\x22,\x22tabus'+'e.yamaguch'+'i.jp\x22,\x22tok'+'uyama.yama'+'guchi.jp\x22,'+'\x22toyota.ya'+'maguchi.jp'+'\x22,\x22ube.yam'+'aguchi.jp\x22'+',\x22yuu.yama'+'guchi.jp\x22,'+'\x22chuo.yama'+'nashi.jp\x22,'+'\x22doshi.yam'+'anashi.jp\x22'+',\x22fuefuki.'+'yamanashi.'+'jp\x22,\x22fujik'+'awa.yamana'+'shi.jp\x22,\x22f'+'ujikawaguc'+'hiko.yaman'+'ashi.jp\x22,\x22'+'fujiyoshid'+'a.yamanash'+'i.jp\x22,\x22hay'+'akawa.yama'+'nashi.jp\x22,'+'\x22hokuto.ya'+'manashi.jp'+'\x22,\x22ichikaw'+'amisato.ya'+'manashi.jp'+'\x22,\x22kai.yam'+'anashi.jp\x22'+',\x22kofu.yam'+'anashi.jp\x22'+',\x22koshu.ya'+'manashi.jp'+'\x22,\x22kosuge.'+'yamanashi.'+'jp\x22,\x22minam'+'i-alps.yam'+'anashi.jp\x22'+',\x22minobu.y'+'amanashi.j'+'p\x22,\x22nakami'+'chi.yamana'+'shi.jp\x22,\x22n'+'anbu.yaman'+'ashi.jp\x22,\x22'+'narusawa.y'+'amanashi.j'+'p\x22,\x22nirasa'+'ki.yamanas'+'hi.jp\x22,\x22ni'+'shikatsura'+'.yamanashi'+'.jp\x22,\x22oshi'+'no.yamanas'+'hi.jp\x22,\x22ot'+'suki.yaman'+'ashi.jp\x22,\x22'+'showa.yama'+'nashi.jp\x22,')+('\x22tabayama.'+'yamanashi.'+'jp\x22,\x22tsuru'+'.yamanashi'+'.jp\x22,\x22ueno'+'hara.yaman'+'ashi.jp\x22,\x22'+'yamanakako'+'.yamanashi'+'.jp\x22,\x22yama'+'nashi.yama'+'nashi.jp\x22,'+'\x22ke\x22,\x22ac.k'+'e\x22,\x22co.ke\x22'+',\x22go.ke\x22,\x22'+'info.ke\x22,\x22'+'me.ke\x22,\x22mo'+'bi.ke\x22,\x22ne'+'.ke\x22,\x22or.k'+'e\x22,\x22sc.ke\x22'+',\x22kg\x22,\x22org'+'.kg\x22,\x22net.'+'kg\x22,\x22com.k'+'g\x22,\x22edu.kg'+'\x22,\x22gov.kg\x22'+',\x22mil.kg\x22,'+'\x22*.kh\x22,\x22ki'+'\x22,\x22edu.ki\x22'+',\x22biz.ki\x22,'+'\x22net.ki\x22,\x22'+'org.ki\x22,\x22g'+'ov.ki\x22,\x22in'+'fo.ki\x22,\x22co'+'m.ki\x22,\x22km\x22'+',\x22org.km\x22,'+'\x22nom.km\x22,\x22'+'gov.km\x22,\x22p'+'rd.km\x22,\x22tm'+'.km\x22,\x22edu.'+'km\x22,\x22mil.k'+'m\x22,\x22ass.km'+'\x22,\x22com.km\x22'+',\x22coop.km\x22'+',\x22asso.km\x22'+',\x22presse.k'+'m\x22,\x22medeci'+'n.km\x22,\x22not'+'aires.km\x22,'+'\x22pharmacie'+'ns.km\x22,\x22ve'+'terinaire.'+'km\x22,\x22gouv.'+'km\x22,\x22kn\x22,\x22'+'net.kn\x22,\x22o'+'rg.kn\x22,\x22ed'+'u.kn\x22,\x22gov'+'.kn\x22,\x22kp\x22,'+'\x22com.kp\x22,\x22'+'edu.kp\x22,\x22g'+'ov.kp\x22,\x22or'+'g.kp\x22,\x22rep'+'.kp\x22,\x22tra.'+'kp\x22,\x22kr\x22,\x22'+'ac.kr\x22,\x22co'+'.kr\x22,\x22es.k'+'r\x22,\x22go.kr\x22'+',\x22hs.kr\x22,\x22'+'kg.kr\x22,\x22mi'+'l.kr\x22,\x22ms.'+'kr\x22,\x22ne.kr'+'\x22,\x22or.kr\x22,'+'\x22pe.kr\x22,\x22r'+'e.kr\x22,\x22sc.'+'kr\x22,\x22busan'+'.kr\x22,\x22chun'+'gbuk.kr\x22,\x22'+'chungnam.k'+'r\x22,\x22daegu.'+'kr\x22,\x22daeje'+'on.kr\x22,\x22ga'+'ngwon.kr\x22,'+'\x22gwangju.k'+'r\x22,\x22gyeong'+'buk.kr\x22,\x22g'+'yeonggi.kr'+'\x22,\x22gyeongn'+'am.kr\x22,\x22in'+'cheon.kr\x22,'+'\x22jeju.kr\x22,'+'\x22jeonbuk.k'+'r\x22,\x22jeonna'+'m.kr\x22,\x22seo'+'ul.kr\x22,\x22ul'+'san.kr\x22,\x22k'+'w\x22,\x22com.kw'+'\x22,\x22edu.kw\x22'+',\x22emb.kw\x22,'+'\x22gov.kw\x22,\x22'+'ind.kw\x22,\x22n'+'et.kw\x22,\x22or')+('g.kw\x22,\x22ky\x22'+',\x22edu.ky\x22,'+'\x22gov.ky\x22,\x22'+'com.ky\x22,\x22o'+'rg.ky\x22,\x22ne'+'t.ky\x22,\x22kz\x22'+',\x22org.kz\x22,'+'\x22edu.kz\x22,\x22'+'net.kz\x22,\x22g'+'ov.kz\x22,\x22mi'+'l.kz\x22,\x22com'+'.kz\x22,\x22la\x22,'+'\x22int.la\x22,\x22'+'net.la\x22,\x22i'+'nfo.la\x22,\x22e'+'du.la\x22,\x22go'+'v.la\x22,\x22per'+'.la\x22,\x22com.'+'la\x22,\x22org.l'+'a\x22,\x22lb\x22,\x22c'+'om.lb\x22,\x22ed'+'u.lb\x22,\x22gov'+'.lb\x22,\x22net.'+'lb\x22,\x22org.l'+'b\x22,\x22lc\x22,\x22c'+'om.lc\x22,\x22ne'+'t.lc\x22,\x22co.'+'lc\x22,\x22org.l'+'c\x22,\x22edu.lc'+'\x22,\x22gov.lc\x22'+',\x22li\x22,\x22lk\x22'+',\x22gov.lk\x22,'+'\x22sch.lk\x22,\x22'+'net.lk\x22,\x22i'+'nt.lk\x22,\x22co'+'m.lk\x22,\x22org'+'.lk\x22,\x22edu.'+'lk\x22,\x22ngo.l'+'k\x22,\x22soc.lk'+'\x22,\x22web.lk\x22'+',\x22ltd.lk\x22,'+'\x22assn.lk\x22,'+'\x22grp.lk\x22,\x22'+'hotel.lk\x22,'+'\x22ac.lk\x22,\x22l'+'r\x22,\x22com.lr'+'\x22,\x22edu.lr\x22'+',\x22gov.lr\x22,'+'\x22org.lr\x22,\x22'+'net.lr\x22,\x22l'+'s\x22,\x22ac.ls\x22'+',\x22biz.ls\x22,'+'\x22co.ls\x22,\x22e'+'du.ls\x22,\x22go'+'v.ls\x22,\x22inf'+'o.ls\x22,\x22net'+'.ls\x22,\x22org.'+'ls\x22,\x22sc.ls'+'\x22,\x22lt\x22,\x22go'+'v.lt\x22,\x22lu\x22'+',\x22lv\x22,\x22com'+'.lv\x22,\x22edu.'+'lv\x22,\x22gov.l'+'v\x22,\x22org.lv'+'\x22,\x22mil.lv\x22'+',\x22id.lv\x22,\x22'+'net.lv\x22,\x22a'+'sn.lv\x22,\x22co'+'nf.lv\x22,\x22ly'+'\x22,\x22com.ly\x22'+',\x22net.ly\x22,'+'\x22gov.ly\x22,\x22'+'plc.ly\x22,\x22e'+'du.ly\x22,\x22sc'+'h.ly\x22,\x22med'+'.ly\x22,\x22org.'+'ly\x22,\x22id.ly'+'\x22,\x22ma\x22,\x22co'+'.ma\x22,\x22net.'+'ma\x22,\x22gov.m'+'a\x22,\x22org.ma'+'\x22,\x22ac.ma\x22,'+'\x22press.ma\x22'+',\x22mc\x22,\x22tm.'+'mc\x22,\x22asso.'+'mc\x22,\x22md\x22,\x22'+'me\x22,\x22co.me'+'\x22,\x22net.me\x22'+',\x22org.me\x22,'+'\x22edu.me\x22,\x22'+'ac.me\x22,\x22go'+'v.me\x22,\x22its'+'.me\x22,\x22priv'+'.me\x22,\x22mg\x22,'+'\x22org.mg\x22,\x22'+'nom.mg\x22,\x22g'+'ov.mg\x22,\x22pr'+'d.mg\x22,\x22tm.'+'mg\x22,\x22edu.m'+'g\x22,\x22mil.mg')+('\x22,\x22com.mg\x22'+',\x22co.mg\x22,\x22'+'mh\x22,\x22mil\x22,'+'\x22mk\x22,\x22com.'+'mk\x22,\x22org.m'+'k\x22,\x22net.mk'+'\x22,\x22edu.mk\x22'+',\x22gov.mk\x22,'+'\x22inf.mk\x22,\x22'+'name.mk\x22,\x22'+'ml\x22,\x22com.m'+'l\x22,\x22edu.ml'+'\x22,\x22gouv.ml'+'\x22,\x22gov.ml\x22'+',\x22net.ml\x22,'+'\x22org.ml\x22,\x22'+'presse.ml\x22'+',\x22*.mm\x22,\x22m'+'n\x22,\x22gov.mn'+'\x22,\x22edu.mn\x22'+',\x22org.mn\x22,'+'\x22mo\x22,\x22com.'+'mo\x22,\x22net.m'+'o\x22,\x22org.mo'+'\x22,\x22edu.mo\x22'+',\x22gov.mo\x22,'+'\x22mobi\x22,\x22mp'+'\x22,\x22mq\x22,\x22mr'+'\x22,\x22gov.mr\x22'+',\x22ms\x22,\x22com'+'.ms\x22,\x22edu.'+'ms\x22,\x22gov.m'+'s\x22,\x22net.ms'+'\x22,\x22org.ms\x22'+',\x22mt\x22,\x22com'+'.mt\x22,\x22edu.'+'mt\x22,\x22net.m'+'t\x22,\x22org.mt'+'\x22,\x22mu\x22,\x22co'+'m.mu\x22,\x22net'+'.mu\x22,\x22org.'+'mu\x22,\x22gov.m'+'u\x22,\x22ac.mu\x22'+',\x22co.mu\x22,\x22'+'or.mu\x22,\x22mu'+'seum\x22,\x22aca'+'demy.museu'+'m\x22,\x22agricu'+'lture.muse'+'um\x22,\x22air.m'+'useum\x22,\x22ai'+'rguard.mus'+'eum\x22,\x22alab'+'ama.museum'+'\x22,\x22alaska.'+'museum\x22,\x22a'+'mber.museu'+'m\x22,\x22ambula'+'nce.museum'+'\x22,\x22america'+'n.museum\x22,'+'\x22americana'+'.museum\x22,\x22'+'americanan'+'tiques.mus'+'eum\x22,\x22amer'+'icanart.mu'+'seum\x22,\x22ams'+'terdam.mus'+'eum\x22,\x22and.'+'museum\x22,\x22a'+'nnefrank.m'+'useum\x22,\x22an'+'thro.museu'+'m\x22,\x22anthro'+'pology.mus'+'eum\x22,\x22anti'+'ques.museu'+'m\x22,\x22aquari'+'um.museum\x22'+',\x22arboretu'+'m.museum\x22,'+'\x22archaeolo'+'gical.muse'+'um\x22,\x22archa'+'eology.mus'+'eum\x22,\x22arch'+'itecture.m'+'useum\x22,\x22ar'+'t.museum\x22,'+'\x22artanddes'+'ign.museum'+'\x22,\x22artcent'+'er.museum\x22'+',\x22artdeco.'+'museum\x22,\x22a'+'rteducatio'+'n.museum\x22,'+'\x22artgaller'+'y.museum\x22,')+('\x22arts.muse'+'um\x22,\x22artsa'+'ndcrafts.m'+'useum\x22,\x22as'+'matart.mus'+'eum\x22,\x22assa'+'ssination.'+'museum\x22,\x22a'+'ssisi.muse'+'um\x22,\x22assoc'+'iation.mus'+'eum\x22,\x22astr'+'onomy.muse'+'um\x22,\x22atlan'+'ta.museum\x22'+',\x22austin.m'+'useum\x22,\x22au'+'stralia.mu'+'seum\x22,\x22aut'+'omotive.mu'+'seum\x22,\x22avi'+'ation.muse'+'um\x22,\x22axis.'+'museum\x22,\x22b'+'adajoz.mus'+'eum\x22,\x22bagh'+'dad.museum'+'\x22,\x22bahn.mu'+'seum\x22,\x22bal'+'e.museum\x22,'+'\x22baltimore'+'.museum\x22,\x22'+'barcelona.'+'museum\x22,\x22b'+'aseball.mu'+'seum\x22,\x22bas'+'el.museum\x22'+',\x22baths.mu'+'seum\x22,\x22bau'+'ern.museum'+'\x22,\x22beauxar'+'ts.museum\x22'+',\x22beeldeng'+'eluid.muse'+'um\x22,\x22belle'+'vue.museum'+'\x22,\x22bergbau'+'.museum\x22,\x22'+'berkeley.m'+'useum\x22,\x22be'+'rlin.museu'+'m\x22,\x22bern.m'+'useum\x22,\x22bi'+'ble.museum'+'\x22,\x22bilbao.'+'museum\x22,\x22b'+'ill.museum'+'\x22,\x22birdart'+'.museum\x22,\x22'+'birthplace'+'.museum\x22,\x22'+'bonn.museu'+'m\x22,\x22boston'+'.museum\x22,\x22'+'botanical.'+'museum\x22,\x22b'+'otanicalga'+'rden.museu'+'m\x22,\x22botani'+'cgarden.mu'+'seum\x22,\x22bot'+'any.museum'+'\x22,\x22brandyw'+'inevalley.'+'museum\x22,\x22b'+'rasil.muse'+'um\x22,\x22brist'+'ol.museum\x22'+',\x22british.'+'museum\x22,\x22b'+'ritishcolu'+'mbia.museu'+'m\x22,\x22broadc'+'ast.museum'+'\x22,\x22brunel.'+'museum\x22,\x22b'+'russel.mus'+'eum\x22,\x22brus'+'sels.museu'+'m\x22,\x22bruxel'+'les.museum'+'\x22,\x22buildin'+'g.museum\x22,'+'\x22burghof.m'+'useum\x22,\x22bu'+'s.museum\x22,'+'\x22bushey.mu'+'seum\x22,\x22cad'+'aques.muse'+'um\x22,\x22calif')+('ornia.muse'+'um\x22,\x22cambr'+'idge.museu'+'m\x22,\x22can.mu'+'seum\x22,\x22can'+'ada.museum'+'\x22,\x22capebre'+'ton.museum'+'\x22,\x22carrier'+'.museum\x22,\x22'+'cartoonart'+'.museum\x22,\x22'+'casadelamo'+'neda.museu'+'m\x22,\x22castle'+'.museum\x22,\x22'+'castres.mu'+'seum\x22,\x22cel'+'tic.museum'+'\x22,\x22center.'+'museum\x22,\x22c'+'hattanooga'+'.museum\x22,\x22'+'cheltenham'+'.museum\x22,\x22'+'chesapeake'+'bay.museum'+'\x22,\x22chicago'+'.museum\x22,\x22'+'children.m'+'useum\x22,\x22ch'+'ildrens.mu'+'seum\x22,\x22chi'+'ldrensgard'+'en.museum\x22'+',\x22chiropra'+'ctic.museu'+'m\x22,\x22chocol'+'ate.museum'+'\x22,\x22christi'+'ansburg.mu'+'seum\x22,\x22cin'+'cinnati.mu'+'seum\x22,\x22cin'+'ema.museum'+'\x22,\x22circus.'+'museum\x22,\x22c'+'ivilisatio'+'n.museum\x22,'+'\x22civilizat'+'ion.museum'+'\x22,\x22civilwa'+'r.museum\x22,'+'\x22clinton.m'+'useum\x22,\x22cl'+'ock.museum'+'\x22,\x22coal.mu'+'seum\x22,\x22coa'+'staldefenc'+'e.museum\x22,'+'\x22cody.muse'+'um\x22,\x22coldw'+'ar.museum\x22'+',\x22collecti'+'on.museum\x22'+',\x22colonial'+'williamsbu'+'rg.museum\x22'+',\x22colorado'+'plateau.mu'+'seum\x22,\x22col'+'umbia.muse'+'um\x22,\x22colum'+'bus.museum'+'\x22,\x22communi'+'cation.mus'+'eum\x22,\x22comm'+'unications'+'.museum\x22,\x22'+'community.'+'museum\x22,\x22c'+'omputer.mu'+'seum\x22,\x22com'+'puterhisto'+'ry.museum\x22'+',\x22comunica'+'ƧƵes.museu'+'m\x22,\x22contem'+'porary.mus'+'eum\x22,\x22cont'+'emporaryar'+'t.museum\x22,'+'\x22convent.m'+'useum\x22,\x22co'+'penhagen.m'+'useum\x22,\x22co'+'rporation.'+'museum\x22,\x22c'+'orreios-e-'+'telecomuni')+('caƧƵes.mus'+'eum\x22,\x22corv'+'ette.museu'+'m\x22,\x22costum'+'e.museum\x22,'+'\x22countryes'+'tate.museu'+'m\x22,\x22county'+'.museum\x22,\x22'+'crafts.mus'+'eum\x22,\x22cran'+'brook.muse'+'um\x22,\x22creat'+'ion.museum'+'\x22,\x22cultura'+'l.museum\x22,'+'\x22culturalc'+'enter.muse'+'um\x22,\x22cultu'+'re.museum\x22'+',\x22cyber.mu'+'seum\x22,\x22cym'+'ru.museum\x22'+',\x22dali.mus'+'eum\x22,\x22dall'+'as.museum\x22'+',\x22database'+'.museum\x22,\x22'+'ddr.museum'+'\x22,\x22decorat'+'ivearts.mu'+'seum\x22,\x22del'+'aware.muse'+'um\x22,\x22delme'+'nhorst.mus'+'eum\x22,\x22denm'+'ark.museum'+'\x22,\x22depot.m'+'useum\x22,\x22de'+'sign.museu'+'m\x22,\x22detroi'+'t.museum\x22,'+'\x22dinosaur.'+'museum\x22,\x22d'+'iscovery.m'+'useum\x22,\x22do'+'lls.museum'+'\x22,\x22donosti'+'a.museum\x22,'+'\x22durham.mu'+'seum\x22,\x22eas'+'tafrica.mu'+'seum\x22,\x22eas'+'tcoast.mus'+'eum\x22,\x22educ'+'ation.muse'+'um\x22,\x22educa'+'tional.mus'+'eum\x22,\x22egyp'+'tian.museu'+'m\x22,\x22eisenb'+'ahn.museum'+'\x22,\x22elburg.'+'museum\x22,\x22e'+'lvendrell.'+'museum\x22,\x22e'+'mbroidery.'+'museum\x22,\x22e'+'ncyclopedi'+'c.museum\x22,'+'\x22england.m'+'useum\x22,\x22en'+'tomology.m'+'useum\x22,\x22en'+'vironment.'+'museum\x22,\x22e'+'nvironment'+'alconserva'+'tion.museu'+'m\x22,\x22epilep'+'sy.museum\x22'+',\x22essex.mu'+'seum\x22,\x22est'+'ate.museum'+'\x22,\x22ethnolo'+'gy.museum\x22'+',\x22exeter.m'+'useum\x22,\x22ex'+'hibition.m'+'useum\x22,\x22fa'+'mily.museu'+'m\x22,\x22farm.m'+'useum\x22,\x22fa'+'rmequipmen'+'t.museum\x22,'+'\x22farmers.m'+'useum\x22,\x22fa'+'rmstead.mu'+'seum\x22,\x22fie'+'ld.museum\x22')+(',\x22figueres'+'.museum\x22,\x22'+'filatelia.'+'museum\x22,\x22f'+'ilm.museum'+'\x22,\x22fineart'+'.museum\x22,\x22'+'finearts.m'+'useum\x22,\x22fi'+'nland.muse'+'um\x22,\x22fland'+'ers.museum'+'\x22,\x22florida'+'.museum\x22,\x22'+'force.muse'+'um\x22,\x22fortm'+'issoula.mu'+'seum\x22,\x22for'+'tworth.mus'+'eum\x22,\x22foun'+'dation.mus'+'eum\x22,\x22fran'+'caise.muse'+'um\x22,\x22frank'+'furt.museu'+'m\x22,\x22franzi'+'skaner.mus'+'eum\x22,\x22free'+'masonry.mu'+'seum\x22,\x22fre'+'iburg.muse'+'um\x22,\x22fribo'+'urg.museum'+'\x22,\x22frog.mu'+'seum\x22,\x22fun'+'dacio.muse'+'um\x22,\x22furni'+'ture.museu'+'m\x22,\x22galler'+'y.museum\x22,'+'\x22garden.mu'+'seum\x22,\x22gat'+'eway.museu'+'m\x22,\x22geelvi'+'nck.museum'+'\x22,\x22gemolog'+'ical.museu'+'m\x22,\x22geolog'+'y.museum\x22,'+'\x22georgia.m'+'useum\x22,\x22gi'+'essen.muse'+'um\x22,\x22glas.'+'museum\x22,\x22g'+'lass.museu'+'m\x22,\x22gorge.'+'museum\x22,\x22g'+'randrapids'+'.museum\x22,\x22'+'graz.museu'+'m\x22,\x22guerns'+'ey.museum\x22'+',\x22halloffa'+'me.museum\x22'+',\x22hamburg.'+'museum\x22,\x22h'+'andson.mus'+'eum\x22,\x22harv'+'estcelebra'+'tion.museu'+'m\x22,\x22hawaii'+'.museum\x22,\x22'+'health.mus'+'eum\x22,\x22heim'+'atunduhren'+'.museum\x22,\x22'+'hellas.mus'+'eum\x22,\x22hels'+'inki.museu'+'m\x22,\x22hembyg'+'dsforbund.'+'museum\x22,\x22h'+'eritage.mu'+'seum\x22,\x22his'+'toire.muse'+'um\x22,\x22histo'+'rical.muse'+'um\x22,\x22histo'+'ricalsocie'+'ty.museum\x22'+',\x22historic'+'houses.mus'+'eum\x22,\x22hist'+'orisch.mus'+'eum\x22,\x22hist'+'orisches.m'+'useum\x22,\x22hi'+'story.muse'+'um\x22,\x22histo'+'ryofscienc')+('e.museum\x22,'+'\x22horology.'+'museum\x22,\x22h'+'ouse.museu'+'m\x22,\x22humani'+'ties.museu'+'m\x22,\x22illust'+'ration.mus'+'eum\x22,\x22imag'+'eandsound.'+'museum\x22,\x22i'+'ndian.muse'+'um\x22,\x22india'+'na.museum\x22'+',\x22indianap'+'olis.museu'+'m\x22,\x22indian'+'market.mus'+'eum\x22,\x22inte'+'lligence.m'+'useum\x22,\x22in'+'teractive.'+'museum\x22,\x22i'+'raq.museum'+'\x22,\x22iron.mu'+'seum\x22,\x22isl'+'eofman.mus'+'eum\x22,\x22jami'+'son.museum'+'\x22,\x22jeffers'+'on.museum\x22'+',\x22jerusale'+'m.museum\x22,'+'\x22jewelry.m'+'useum\x22,\x22je'+'wish.museu'+'m\x22,\x22jewish'+'art.museum'+'\x22,\x22jfk.mus'+'eum\x22,\x22jour'+'nalism.mus'+'eum\x22,\x22juda'+'ica.museum'+'\x22,\x22judygar'+'land.museu'+'m\x22,\x22juedis'+'ches.museu'+'m\x22,\x22juif.m'+'useum\x22,\x22ka'+'rate.museu'+'m\x22,\x22karika'+'tur.museum'+'\x22,\x22kids.mu'+'seum\x22,\x22koe'+'benhavn.mu'+'seum\x22,\x22koe'+'ln.museum\x22'+',\x22kunst.mu'+'seum\x22,\x22kun'+'stsammlung'+'.museum\x22,\x22'+'kunstundde'+'sign.museu'+'m\x22,\x22labor.'+'museum\x22,\x22l'+'abour.muse'+'um\x22,\x22lajol'+'la.museum\x22'+',\x22lancashi'+'re.museum\x22'+',\x22landes.m'+'useum\x22,\x22la'+'ns.museum\x22'+',\x22lƤns.mus'+'eum\x22,\x22lars'+'son.museum'+'\x22,\x22lewismi'+'ller.museu'+'m\x22,\x22lincol'+'n.museum\x22,'+'\x22linz.muse'+'um\x22,\x22livin'+'g.museum\x22,'+'\x22livinghis'+'tory.museu'+'m\x22,\x22localh'+'istory.mus'+'eum\x22,\x22lond'+'on.museum\x22'+',\x22losangel'+'es.museum\x22'+',\x22louvre.m'+'useum\x22,\x22lo'+'yalist.mus'+'eum\x22,\x22luce'+'rne.museum'+'\x22,\x22luxembo'+'urg.museum'+'\x22,\x22luzern.'+'museum\x22,\x22m')+('ad.museum\x22'+',\x22madrid.m'+'useum\x22,\x22ma'+'llorca.mus'+'eum\x22,\x22manc'+'hester.mus'+'eum\x22,\x22mans'+'ion.museum'+'\x22,\x22mansion'+'s.museum\x22,'+'\x22manx.muse'+'um\x22,\x22marbu'+'rg.museum\x22'+',\x22maritime'+'.museum\x22,\x22'+'maritimo.m'+'useum\x22,\x22ma'+'ryland.mus'+'eum\x22,\x22mary'+'lhurst.mus'+'eum\x22,\x22medi'+'a.museum\x22,'+'\x22medical.m'+'useum\x22,\x22me'+'dizinhisto'+'risches.mu'+'seum\x22,\x22mee'+'res.museum'+'\x22,\x22memoria'+'l.museum\x22,'+'\x22mesaverde'+'.museum\x22,\x22'+'michigan.m'+'useum\x22,\x22mi'+'datlantic.'+'museum\x22,\x22m'+'ilitary.mu'+'seum\x22,\x22mil'+'l.museum\x22,'+'\x22miners.mu'+'seum\x22,\x22min'+'ing.museum'+'\x22,\x22minneso'+'ta.museum\x22'+',\x22missile.'+'museum\x22,\x22m'+'issoula.mu'+'seum\x22,\x22mod'+'ern.museum'+'\x22,\x22moma.mu'+'seum\x22,\x22mon'+'ey.museum\x22'+',\x22monmouth'+'.museum\x22,\x22'+'monticello'+'.museum\x22,\x22'+'montreal.m'+'useum\x22,\x22mo'+'scow.museu'+'m\x22,\x22motorc'+'ycle.museu'+'m\x22,\x22muench'+'en.museum\x22'+',\x22muenster'+'.museum\x22,\x22'+'mulhouse.m'+'useum\x22,\x22mu'+'ncie.museu'+'m\x22,\x22museet'+'.museum\x22,\x22'+'museumcent'+'er.museum\x22'+',\x22museumve'+'reniging.m'+'useum\x22,\x22mu'+'sic.museum'+'\x22,\x22nationa'+'l.museum\x22,'+'\x22nationalf'+'irearms.mu'+'seum\x22,\x22nat'+'ionalherit'+'age.museum'+'\x22,\x22nativea'+'merican.mu'+'seum\x22,\x22nat'+'uralhistor'+'y.museum\x22,'+'\x22naturalhi'+'storymuseu'+'m.museum\x22,'+'\x22naturalsc'+'iences.mus'+'eum\x22,\x22natu'+'re.museum\x22'+',\x22naturhis'+'torisches.'+'museum\x22,\x22n'+'atuurweten'+'schappen.m')+('useum\x22,\x22na'+'umburg.mus'+'eum\x22,\x22nava'+'l.museum\x22,'+'\x22nebraska.'+'museum\x22,\x22n'+'eues.museu'+'m\x22,\x22newham'+'pshire.mus'+'eum\x22,\x22newj'+'ersey.muse'+'um\x22,\x22newme'+'xico.museu'+'m\x22,\x22newpor'+'t.museum\x22,'+'\x22newspaper'+'.museum\x22,\x22'+'newyork.mu'+'seum\x22,\x22nie'+'pce.museum'+'\x22,\x22norfolk'+'.museum\x22,\x22'+'north.muse'+'um\x22,\x22nrw.m'+'useum\x22,\x22ny'+'c.museum\x22,'+'\x22nyny.muse'+'um\x22,\x22ocean'+'ographic.m'+'useum\x22,\x22oc'+'eanographi'+'que.museum'+'\x22,\x22omaha.m'+'useum\x22,\x22on'+'line.museu'+'m\x22,\x22ontari'+'o.museum\x22,'+'\x22openair.m'+'useum\x22,\x22or'+'egon.museu'+'m\x22,\x22oregon'+'trail.muse'+'um\x22,\x22otago'+'.museum\x22,\x22'+'oxford.mus'+'eum\x22,\x22paci'+'fic.museum'+'\x22,\x22paderbo'+'rn.museum\x22'+',\x22palace.m'+'useum\x22,\x22pa'+'leo.museum'+'\x22,\x22palmspr'+'ings.museu'+'m\x22,\x22panama'+'.museum\x22,\x22'+'paris.muse'+'um\x22,\x22pasad'+'ena.museum'+'\x22,\x22pharmac'+'y.museum\x22,'+'\x22philadelp'+'hia.museum'+'\x22,\x22philade'+'lphiaarea.'+'museum\x22,\x22p'+'hilately.m'+'useum\x22,\x22ph'+'oenix.muse'+'um\x22,\x22photo'+'graphy.mus'+'eum\x22,\x22pilo'+'ts.museum\x22'+',\x22pittsbur'+'gh.museum\x22'+',\x22planetar'+'ium.museum'+'\x22,\x22plantat'+'ion.museum'+'\x22,\x22plants.'+'museum\x22,\x22p'+'laza.museu'+'m\x22,\x22portal'+'.museum\x22,\x22'+'portland.m'+'useum\x22,\x22po'+'rtlligat.m'+'useum\x22,\x22po'+'sts-and-te'+'lecommunic'+'ations.mus'+'eum\x22,\x22pres'+'ervation.m'+'useum\x22,\x22pr'+'esidio.mus'+'eum\x22,\x22pres'+'s.museum\x22,'+'\x22project.m'+'useum\x22,\x22pu'+'blic.museu')+('m\x22,\x22pubol.'+'museum\x22,\x22q'+'uebec.muse'+'um\x22,\x22railr'+'oad.museum'+'\x22,\x22railway'+'.museum\x22,\x22'+'research.m'+'useum\x22,\x22re'+'sistance.m'+'useum\x22,\x22ri'+'odejaneiro'+'.museum\x22,\x22'+'rochester.'+'museum\x22,\x22r'+'ockart.mus'+'eum\x22,\x22roma'+'.museum\x22,\x22'+'russia.mus'+'eum\x22,\x22sain'+'tlouis.mus'+'eum\x22,\x22sale'+'m.museum\x22,'+'\x22salvadord'+'ali.museum'+'\x22,\x22salzbur'+'g.museum\x22,'+'\x22sandiego.'+'museum\x22,\x22s'+'anfrancisc'+'o.museum\x22,'+'\x22santabarb'+'ara.museum'+'\x22,\x22santacr'+'uz.museum\x22'+',\x22santafe.'+'museum\x22,\x22s'+'askatchewa'+'n.museum\x22,'+'\x22satx.muse'+'um\x22,\x22savan'+'nahga.muse'+'um\x22,\x22schle'+'sisches.mu'+'seum\x22,\x22sch'+'oenbrunn.m'+'useum\x22,\x22sc'+'hokoladen.'+'museum\x22,\x22s'+'chool.muse'+'um\x22,\x22schwe'+'iz.museum\x22'+',\x22science.'+'museum\x22,\x22s'+'cienceandh'+'istory.mus'+'eum\x22,\x22scie'+'nceandindu'+'stry.museu'+'m\x22,\x22scienc'+'ecenter.mu'+'seum\x22,\x22sci'+'encecenter'+'s.museum\x22,'+'\x22science-f'+'iction.mus'+'eum\x22,\x22scie'+'ncehistory'+'.museum\x22,\x22'+'sciences.m'+'useum\x22,\x22sc'+'iencesnatu'+'relles.mus'+'eum\x22,\x22scot'+'land.museu'+'m\x22,\x22seapor'+'t.museum\x22,'+'\x22settlemen'+'t.museum\x22,'+'\x22settlers.'+'museum\x22,\x22s'+'hell.museu'+'m\x22,\x22sherbr'+'ooke.museu'+'m\x22,\x22sibeni'+'k.museum\x22,'+'\x22silk.muse'+'um\x22,\x22ski.m'+'useum\x22,\x22sk'+'ole.museum'+'\x22,\x22society'+'.museum\x22,\x22'+'sologne.mu'+'seum\x22,\x22sou'+'ndandvisio'+'n.museum\x22,'+'\x22southcaro'+'lina.museu'+'m\x22,\x22southw'+'est.museum')+('\x22,\x22space.m'+'useum\x22,\x22sp'+'y.museum\x22,'+'\x22square.mu'+'seum\x22,\x22sta'+'dt.museum\x22'+',\x22stalbans'+'.museum\x22,\x22'+'starnberg.'+'museum\x22,\x22s'+'tate.museu'+'m\x22,\x22stateo'+'fdelaware.'+'museum\x22,\x22s'+'tation.mus'+'eum\x22,\x22stea'+'m.museum\x22,'+'\x22steiermar'+'k.museum\x22,'+'\x22stjohn.mu'+'seum\x22,\x22sto'+'ckholm.mus'+'eum\x22,\x22stpe'+'tersburg.m'+'useum\x22,\x22st'+'uttgart.mu'+'seum\x22,\x22sui'+'sse.museum'+'\x22,\x22surgeon'+'shall.muse'+'um\x22,\x22surre'+'y.museum\x22,'+'\x22svizzera.'+'museum\x22,\x22s'+'weden.muse'+'um\x22,\x22sydne'+'y.museum\x22,'+'\x22tank.muse'+'um\x22,\x22tcm.m'+'useum\x22,\x22te'+'chnology.m'+'useum\x22,\x22te'+'lekommunik'+'ation.muse'+'um\x22,\x22telev'+'ision.muse'+'um\x22,\x22texas'+'.museum\x22,\x22'+'textile.mu'+'seum\x22,\x22the'+'ater.museu'+'m\x22,\x22time.m'+'useum\x22,\x22ti'+'mekeeping.'+'museum\x22,\x22t'+'opology.mu'+'seum\x22,\x22tor'+'ino.museum'+'\x22,\x22touch.m'+'useum\x22,\x22to'+'wn.museum\x22'+',\x22transpor'+'t.museum\x22,'+'\x22tree.muse'+'um\x22,\x22troll'+'ey.museum\x22'+',\x22trust.mu'+'seum\x22,\x22tru'+'stee.museu'+'m\x22,\x22uhren.'+'museum\x22,\x22u'+'lm.museum\x22'+',\x22undersea'+'.museum\x22,\x22'+'university'+'.museum\x22,\x22'+'usa.museum'+'\x22,\x22usantiq'+'ues.museum'+'\x22,\x22usarts.'+'museum\x22,\x22u'+'scountryes'+'tate.museu'+'m\x22,\x22uscult'+'ure.museum'+'\x22,\x22usdecor'+'ativearts.'+'museum\x22,\x22u'+'sgarden.mu'+'seum\x22,\x22ush'+'istory.mus'+'eum\x22,\x22ushu'+'aia.museum'+'\x22,\x22uslivin'+'ghistory.m'+'useum\x22,\x22ut'+'ah.museum\x22'+',\x22uvic.mus'+'eum\x22,\x22vall'+'ey.museum\x22')+(',\x22vantaa.m'+'useum\x22,\x22ve'+'rsailles.m'+'useum\x22,\x22vi'+'king.museu'+'m\x22,\x22villag'+'e.museum\x22,'+'\x22virginia.'+'museum\x22,\x22v'+'irtual.mus'+'eum\x22,\x22virt'+'uel.museum'+'\x22,\x22vlaande'+'ren.museum'+'\x22,\x22volkenk'+'unde.museu'+'m\x22,\x22wales.'+'museum\x22,\x22w'+'allonie.mu'+'seum\x22,\x22war'+'.museum\x22,\x22'+'washington'+'dc.museum\x22'+',\x22watchand'+'clock.muse'+'um\x22,\x22watch'+'-and-clock'+'.museum\x22,\x22'+'western.mu'+'seum\x22,\x22wes'+'tfalen.mus'+'eum\x22,\x22whal'+'ing.museum'+'\x22,\x22wildlif'+'e.museum\x22,'+'\x22williamsb'+'urg.museum'+'\x22,\x22windmil'+'l.museum\x22,'+'\x22workshop.'+'museum\x22,\x22y'+'ork.museum'+'\x22,\x22yorkshi'+'re.museum\x22'+',\x22yosemite'+'.museum\x22,\x22'+'youth.muse'+'um\x22,\x22zoolo'+'gical.muse'+'um\x22,\x22zoolo'+'gy.museum\x22'+',\x22×™×Ø×•×©×œ×™×.'+'museum\x22,\x22Šø'+'ком.museum'+'\x22,\x22mv\x22,\x22ae'+'ro.mv\x22,\x22bi'+'z.mv\x22,\x22com'+'.mv\x22,\x22coop'+'.mv\x22,\x22edu.'+'mv\x22,\x22gov.m'+'v\x22,\x22info.m'+'v\x22,\x22int.mv'+'\x22,\x22mil.mv\x22'+',\x22museum.m'+'v\x22,\x22name.m'+'v\x22,\x22net.mv'+'\x22,\x22org.mv\x22'+',\x22pro.mv\x22,'+'\x22mw\x22,\x22ac.m'+'w\x22,\x22biz.mw'+'\x22,\x22co.mw\x22,'+'\x22com.mw\x22,\x22'+'coop.mw\x22,\x22'+'edu.mw\x22,\x22g'+'ov.mw\x22,\x22in'+'t.mw\x22,\x22mus'+'eum.mw\x22,\x22n'+'et.mw\x22,\x22or'+'g.mw\x22,\x22mx\x22'+',\x22com.mx\x22,'+'\x22org.mx\x22,\x22'+'gob.mx\x22,\x22e'+'du.mx\x22,\x22ne'+'t.mx\x22,\x22my\x22'+',\x22com.my\x22,'+'\x22net.my\x22,\x22'+'org.my\x22,\x22g'+'ov.my\x22,\x22ed'+'u.my\x22,\x22mil'+'.my\x22,\x22name'+'.my\x22,\x22mz\x22,'+'\x22ac.mz\x22,\x22a'+'dv.mz\x22,\x22co'+'.mz\x22,\x22edu.'+'mz\x22,\x22gov.m'+'z\x22,\x22mil.mz'+'\x22,\x22net.mz\x22'+',\x22org.mz\x22,'+'\x22na\x22,\x22info'+'.na\x22,\x22pro.')+('na\x22,\x22name.'+'na\x22,\x22schoo'+'l.na\x22,\x22or.'+'na\x22,\x22dr.na'+'\x22,\x22us.na\x22,'+'\x22mx.na\x22,\x22c'+'a.na\x22,\x22in.'+'na\x22,\x22cc.na'+'\x22,\x22tv.na\x22,'+'\x22ws.na\x22,\x22m'+'obi.na\x22,\x22c'+'o.na\x22,\x22com'+'.na\x22,\x22org.'+'na\x22,\x22name\x22'+',\x22nc\x22,\x22ass'+'o.nc\x22,\x22nom'+'.nc\x22,\x22ne\x22,'+'\x22net\x22,\x22nf\x22'+',\x22com.nf\x22,'+'\x22net.nf\x22,\x22'+'per.nf\x22,\x22r'+'ec.nf\x22,\x22we'+'b.nf\x22,\x22art'+'s.nf\x22,\x22fir'+'m.nf\x22,\x22inf'+'o.nf\x22,\x22oth'+'er.nf\x22,\x22st'+'ore.nf\x22,\x22n'+'g\x22,\x22com.ng'+'\x22,\x22edu.ng\x22'+',\x22gov.ng\x22,'+'\x22i.ng\x22,\x22mi'+'l.ng\x22,\x22mob'+'i.ng\x22,\x22nam'+'e.ng\x22,\x22net'+'.ng\x22,\x22org.'+'ng\x22,\x22sch.n'+'g\x22,\x22ni\x22,\x22a'+'c.ni\x22,\x22biz'+'.ni\x22,\x22co.n'+'i\x22,\x22com.ni'+'\x22,\x22edu.ni\x22'+',\x22gob.ni\x22,'+'\x22in.ni\x22,\x22i'+'nfo.ni\x22,\x22i'+'nt.ni\x22,\x22mi'+'l.ni\x22,\x22net'+'.ni\x22,\x22nom.'+'ni\x22,\x22org.n'+'i\x22,\x22web.ni'+'\x22,\x22nl\x22,\x22no'+'\x22,\x22fhs.no\x22'+',\x22vgs.no\x22,'+'\x22fylkesbib'+'l.no\x22,\x22fol'+'kebibl.no\x22'+',\x22museum.n'+'o\x22,\x22idrett'+'.no\x22,\x22priv'+'.no\x22,\x22mil.'+'no\x22,\x22stat.'+'no\x22,\x22dep.n'+'o\x22,\x22kommun'+'e.no\x22,\x22her'+'ad.no\x22,\x22aa'+'.no\x22,\x22ah.n'+'o\x22,\x22bu.no\x22'+',\x22fm.no\x22,\x22'+'hl.no\x22,\x22hm'+'.no\x22,\x22jan-'+'mayen.no\x22,'+'\x22mr.no\x22,\x22n'+'l.no\x22,\x22nt.'+'no\x22,\x22of.no'+'\x22,\x22ol.no\x22,'+'\x22oslo.no\x22,'+'\x22rl.no\x22,\x22s'+'f.no\x22,\x22st.'+'no\x22,\x22svalb'+'ard.no\x22,\x22t'+'m.no\x22,\x22tr.'+'no\x22,\x22va.no'+'\x22,\x22vf.no\x22,'+'\x22gs.aa.no\x22'+',\x22gs.ah.no'+'\x22,\x22gs.bu.n'+'o\x22,\x22gs.fm.'+'no\x22,\x22gs.hl'+'.no\x22,\x22gs.h'+'m.no\x22,\x22gs.'+'jan-mayen.'+'no\x22,\x22gs.mr'+'.no\x22,\x22gs.n'+'l.no\x22,\x22gs.'+'nt.no\x22,\x22gs'+'.of.no\x22,\x22g'+'s.ol.no\x22,\x22'+'gs.oslo.no'+'\x22,\x22gs.rl.n'+'o\x22,\x22gs.sf.')+('no\x22,\x22gs.st'+'.no\x22,\x22gs.s'+'valbard.no'+'\x22,\x22gs.tm.n'+'o\x22,\x22gs.tr.'+'no\x22,\x22gs.va'+'.no\x22,\x22gs.v'+'f.no\x22,\x22akr'+'ehamn.no\x22,'+'\x22Ć„krehamn.'+'no\x22,\x22algar'+'d.no\x22,\x22Ć„lg'+'Ć„rd.no\x22,\x22a'+'rna.no\x22,\x22b'+'rumunddal.'+'no\x22,\x22bryne'+'.no\x22,\x22bron'+'noysund.no'+'\x22,\x22brĆønnĆøy'+'sund.no\x22,\x22'+'drobak.no\x22'+',\x22drĆøbak.n'+'o\x22,\x22egersu'+'nd.no\x22,\x22fe'+'tsund.no\x22,'+'\x22floro.no\x22'+',\x22florĆø.no'+'\x22,\x22fredrik'+'stad.no\x22,\x22'+'hokksund.n'+'o\x22,\x22honefo'+'ss.no\x22,\x22hĆø'+'nefoss.no\x22'+',\x22jessheim'+'.no\x22,\x22jorp'+'eland.no\x22,'+'\x22jĆørpeland'+'.no\x22,\x22kirk'+'enes.no\x22,\x22'+'kopervik.n'+'o\x22,\x22krokst'+'adelva.no\x22'+',\x22langevag'+'.no\x22,\x22lang'+'evĆ„g.no\x22,\x22'+'leirvik.no'+'\x22,\x22mjondal'+'en.no\x22,\x22mj'+'Ćøndalen.no'+'\x22,\x22mo-i-ra'+'na.no\x22,\x22mo'+'sjoen.no\x22,'+'\x22mosjĆøen.n'+'o\x22,\x22nesodd'+'tangen.no\x22'+',\x22orkanger'+'.no\x22,\x22osoy'+'ro.no\x22,\x22os'+'Ćøyro.no\x22,\x22'+'raholt.no\x22'+',\x22rĆ„holt.n'+'o\x22,\x22sandne'+'ssjoen.no\x22'+',\x22sandness'+'jĆøen.no\x22,\x22'+'skedsmokor'+'set.no\x22,\x22s'+'lattum.no\x22'+',\x22spjelkav'+'ik.no\x22,\x22st'+'athelle.no'+'\x22,\x22stavern'+'.no\x22,\x22stjo'+'rdalshalse'+'n.no\x22,\x22stj'+'Ćørdalshals'+'en.no\x22,\x22ta'+'nanger.no\x22'+',\x22tranby.n'+'o\x22,\x22vossev'+'angen.no\x22,'+'\x22afjord.no'+'\x22,\x22Ć„fjord.'+'no\x22,\x22agden'+'es.no\x22,\x22al'+'.no\x22,\x22Ć„l.n'+'o\x22,\x22alesun'+'d.no\x22,\x22Ć„le'+'sund.no\x22,\x22'+'alstahaug.'+'no\x22,\x22alta.'+'no\x22,\x22Ć”ltĆ”.'+'no\x22,\x22alahe'+'adju.no\x22,\x22'+'Ć”laheadju.'+'no\x22,\x22alvda'+'l.no\x22,\x22aml'+'i.no\x22,\x22Ć„ml'+'i.no\x22,\x22amo'+'t.no\x22,\x22Ć„mo')+('t.no\x22,\x22and'+'ebu.no\x22,\x22a'+'ndoy.no\x22,\x22'+'andĆøy.no\x22,'+'\x22andasuolo'+'.no\x22,\x22arda'+'l.no\x22,\x22Ć„rd'+'al.no\x22,\x22ar'+'emark.no\x22,'+'\x22arendal.n'+'o\x22,\x22Ć„s.no\x22'+',\x22aseral.n'+'o\x22,\x22Ć„seral'+'.no\x22,\x22aske'+'r.no\x22,\x22ask'+'im.no\x22,\x22as'+'kvoll.no\x22,'+'\x22askoy.no\x22'+',\x22askĆøy.no'+'\x22,\x22asnes.n'+'o\x22,\x22Ć„snes.'+'no\x22,\x22audne'+'daln.no\x22,\x22'+'aukra.no\x22,'+'\x22aure.no\x22,'+'\x22aurland.n'+'o\x22,\x22aursko'+'g-holand.n'+'o\x22,\x22aursko'+'g-hĆøland.n'+'o\x22,\x22austev'+'oll.no\x22,\x22a'+'ustrheim.n'+'o\x22,\x22averoy'+'.no\x22,\x22aver'+'Ćøy.no\x22,\x22ba'+'lestrand.n'+'o\x22,\x22ballan'+'gen.no\x22,\x22b'+'alat.no\x22,\x22'+'bĆ”lĆ”t.no\x22,'+'\x22balsfjord'+'.no\x22,\x22bahc'+'cavuotna.n'+'o\x22,\x22bĆ”hcca'+'vuotna.no\x22'+',\x22bamble.n'+'o\x22,\x22bardu.'+'no\x22,\x22beard'+'u.no\x22,\x22bei'+'arn.no\x22,\x22b'+'ajddar.no\x22'+',\x22bĆ”jddar.'+'no\x22,\x22baida'+'r.no\x22,\x22bĆ”i'+'dĆ”r.no\x22,\x22b'+'erg.no\x22,\x22b'+'ergen.no\x22,'+'\x22berlevag.'+'no\x22,\x22berle'+'vĆ„g.no\x22,\x22b'+'earalvahki'+'.no\x22,\x22bear'+'alvĆ”hki.no'+'\x22,\x22bindal.'+'no\x22,\x22birke'+'nes.no\x22,\x22b'+'jarkoy.no\x22'+',\x22bjarkĆøy.'+'no\x22,\x22bjerk'+'reim.no\x22,\x22'+'bjugn.no\x22,'+'\x22bodo.no\x22,'+'\x22bodĆø.no\x22,'+'\x22badaddja.'+'no\x22,\x22bĆ„dĆ„d'+'djĆ„.no\x22,\x22b'+'udejju.no\x22'+',\x22bokn.no\x22'+',\x22bremange'+'r.no\x22,\x22bro'+'nnoy.no\x22,\x22'+'brĆønnĆøy.no'+'\x22,\x22bygland'+'.no\x22,\x22bykl'+'e.no\x22,\x22bar'+'um.no\x22,\x22bƦ'+'rum.no\x22,\x22b'+'o.telemark'+'.no\x22,\x22bĆø.t'+'elemark.no'+'\x22,\x22bo.nord'+'land.no\x22,\x22'+'bĆø.nordlan'+'d.no\x22,\x22bie'+'vat.no\x22,\x22b'+'ievĆ”t.no\x22,'+'\x22bomlo.no\x22'+',\x22bĆømlo.no'+'\x22,\x22batsfjo')+('rd.no\x22,\x22bĆ„'+'tsfjord.no'+'\x22,\x22bahcavu'+'otna.no\x22,\x22'+'bĆ”hcavuotn'+'a.no\x22,\x22dov'+'re.no\x22,\x22dr'+'ammen.no\x22,'+'\x22drangedal'+'.no\x22,\x22dyro'+'y.no\x22,\x22dyr'+'Ćøy.no\x22,\x22do'+'nna.no\x22,\x22d'+'Ćønna.no\x22,\x22'+'eid.no\x22,\x22e'+'idfjord.no'+'\x22,\x22eidsber'+'g.no\x22,\x22eid'+'skog.no\x22,\x22'+'eidsvoll.n'+'o\x22,\x22eigers'+'und.no\x22,\x22e'+'lverum.no\x22'+',\x22enebakk.'+'no\x22,\x22enger'+'dal.no\x22,\x22e'+'tne.no\x22,\x22e'+'tnedal.no\x22'+',\x22evenes.n'+'o\x22,\x22evenas'+'si.no\x22,\x22ev'+'enÔŔŔi.no\x22'+',\x22evje-og-'+'hornnes.no'+'\x22,\x22farsund'+'.no\x22,\x22faus'+'ke.no\x22,\x22fu'+'ossko.no\x22,'+'\x22fuoisku.n'+'o\x22,\x22fedje.'+'no\x22,\x22fet.n'+'o\x22,\x22finnoy'+'.no\x22,\x22finn'+'Ćøy.no\x22,\x22fi'+'tjar.no\x22,\x22'+'fjaler.no\x22'+',\x22fjell.no'+'\x22,\x22flaksta'+'d.no\x22,\x22fla'+'tanger.no\x22'+',\x22flekkefj'+'ord.no\x22,\x22f'+'lesberg.no'+'\x22,\x22flora.n'+'o\x22,\x22fla.no'+'\x22,\x22flĆ„.no\x22'+',\x22folldal.'+'no\x22,\x22forsa'+'nd.no\x22,\x22fo'+'snes.no\x22,\x22'+'frei.no\x22,\x22'+'frogn.no\x22,'+'\x22froland.n'+'o\x22,\x22frosta'+'.no\x22,\x22fran'+'a.no\x22,\x22frƦ'+'na.no\x22,\x22fr'+'oya.no\x22,\x22f'+'rĆøya.no\x22,\x22'+'fusa.no\x22,\x22'+'fyresdal.n'+'o\x22,\x22forde.'+'no\x22,\x22fĆørde'+'.no\x22,\x22gamv'+'ik.no\x22,\x22ga'+'ngaviika.n'+'o\x22,\x22gÔŋgav'+'iika.no\x22,\x22'+'gaular.no\x22'+',\x22gausdal.'+'no\x22,\x22gilde'+'skal.no\x22,\x22'+'gildeskĆ„l.'+'no\x22,\x22giske'+'.no\x22,\x22gjem'+'nes.no\x22,\x22g'+'jerdrum.no'+'\x22,\x22gjersta'+'d.no\x22,\x22gje'+'sdal.no\x22,\x22'+'gjovik.no\x22'+',\x22gjĆøvik.n'+'o\x22,\x22gloppe'+'n.no\x22,\x22gol'+'.no\x22,\x22gran'+'.no\x22,\x22gran'+'e.no\x22,\x22gra'+'nvin.no\x22,\x22'+'gratangen.'+'no\x22,\x22grims')+('tad.no\x22,\x22g'+'rong.no\x22,\x22'+'kraanghke.'+'no\x22,\x22krĆ„an'+'ghke.no\x22,\x22'+'grue.no\x22,\x22'+'gulen.no\x22,'+'\x22hadsel.no'+'\x22,\x22halden.'+'no\x22,\x22halsa'+'.no\x22,\x22hama'+'r.no\x22,\x22ham'+'aroy.no\x22,\x22'+'habmer.no\x22'+',\x22hĆ”bmer.n'+'o\x22,\x22hapmir'+'.no\x22,\x22hĆ”pm'+'ir.no\x22,\x22ha'+'mmerfest.n'+'o\x22,\x22hammar'+'feasta.no\x22'+',\x22hĆ”mmĆ”rfe'+'asta.no\x22,\x22'+'haram.no\x22,'+'\x22hareid.no'+'\x22,\x22harstad'+'.no\x22,\x22hasv'+'ik.no\x22,\x22ak'+'noluokta.n'+'o\x22,\x22Ć”kŋolu'+'okta.no\x22,\x22'+'hattfjelld'+'al.no\x22,\x22aa'+'rborte.no\x22'+',\x22haugesun'+'d.no\x22,\x22hem'+'ne.no\x22,\x22he'+'mnes.no\x22,\x22'+'hemsedal.n'+'o\x22,\x22heroy.'+'more-og-ro'+'msdal.no\x22,'+'\x22herĆøy.mĆør'+'e-og-romsd'+'al.no\x22,\x22he'+'roy.nordla'+'nd.no\x22,\x22he'+'rĆøy.nordla'+'nd.no\x22,\x22hi'+'tra.no\x22,\x22h'+'jartdal.no'+'\x22,\x22hjelmel'+'and.no\x22,\x22h'+'obol.no\x22,\x22'+'hobĆøl.no\x22,'+'\x22hof.no\x22,\x22'+'hol.no\x22,\x22h'+'ole.no\x22,\x22h'+'olmestrand'+'.no\x22,\x22holt'+'alen.no\x22,\x22'+'holtĆ„len.n'+'o\x22,\x22hornin'+'dal.no\x22,\x22h'+'orten.no\x22,'+'\x22hurdal.no'+'\x22,\x22hurum.n'+'o\x22,\x22hvaler'+'.no\x22,\x22hyll'+'estad.no\x22,'+'\x22hagebosta'+'d.no\x22,\x22hƦg'+'ebostad.no'+'\x22,\x22hoyange'+'r.no\x22,\x22hĆøy'+'anger.no\x22,'+'\x22hoylandet'+'.no\x22,\x22hĆøyl'+'andet.no\x22,'+'\x22ha.no\x22,\x22h'+'Ć„.no\x22,\x22ibe'+'stad.no\x22,\x22'+'inderoy.no'+'\x22,\x22inderĆøy'+'.no\x22,\x22ivel'+'and.no\x22,\x22j'+'evnaker.no'+'\x22,\x22jondal.'+'no\x22,\x22jolst'+'er.no\x22,\x22jĆø'+'lster.no\x22,'+'\x22karasjok.'+'no\x22,\x22karas'+'johka.no\x22,'+'\x22kĆ”rÔŔjohk'+'a.no\x22,\x22kar'+'lsoy.no\x22,\x22'+'galsa.no\x22,'+'\x22gĆ”lsĆ”.no\x22'+',\x22karmoy.n')+('o\x22,\x22karmĆøy'+'.no\x22,\x22kaut'+'okeino.no\x22'+',\x22guovdage'+'aidnu.no\x22,'+'\x22klepp.no\x22'+',\x22klabu.no'+'\x22,\x22klƦbu.n'+'o\x22,\x22kongsb'+'erg.no\x22,\x22k'+'ongsvinger'+'.no\x22,\x22krag'+'ero.no\x22,\x22k'+'ragerĆø.no\x22'+',\x22kristian'+'sand.no\x22,\x22'+'kristiansu'+'nd.no\x22,\x22kr'+'odsherad.n'+'o\x22,\x22krĆødsh'+'erad.no\x22,\x22'+'kvalsund.n'+'o\x22,\x22rahkke'+'ravju.no\x22,'+'\x22rĆ”hkkerĆ”v'+'ju.no\x22,\x22kv'+'am.no\x22,\x22kv'+'inesdal.no'+'\x22,\x22kvinnhe'+'rad.no\x22,\x22k'+'viteseid.n'+'o\x22,\x22kvitso'+'y.no\x22,\x22kvi'+'tsĆøy.no\x22,\x22'+'kvafjord.n'+'o\x22,\x22kvƦfjo'+'rd.no\x22,\x22gi'+'ehtavuoatn'+'a.no\x22,\x22kva'+'nangen.no\x22'+',\x22kvƦnange'+'n.no\x22,\x22nav'+'uotna.no\x22,'+'\x22nĆ”vuotna.'+'no\x22,\x22kafjo'+'rd.no\x22,\x22kĆ„'+'fjord.no\x22,'+'\x22gaivuotna'+'.no\x22,\x22gĆ”iv'+'uotna.no\x22,'+'\x22larvik.no'+'\x22,\x22lavange'+'n.no\x22,\x22lav'+'agis.no\x22,\x22'+'loabat.no\x22'+',\x22loabĆ”t.n'+'o\x22,\x22lebesb'+'y.no\x22,\x22dav'+'vesiida.no'+'\x22,\x22leikang'+'er.no\x22,\x22le'+'irfjord.no'+'\x22,\x22leka.no'+'\x22,\x22leksvik'+'.no\x22,\x22lenv'+'ik.no\x22,\x22le'+'angaviika.'+'no\x22,\x22leaŋg'+'aviika.no\x22'+',\x22lesja.no'+'\x22,\x22levange'+'r.no\x22,\x22lie'+'r.no\x22,\x22lie'+'rne.no\x22,\x22l'+'illehammer'+'.no\x22,\x22lill'+'esand.no\x22,'+'\x22lindesnes'+'.no\x22,\x22lind'+'as.no\x22,\x22li'+'ndĆ„s.no\x22,\x22'+'lom.no\x22,\x22l'+'oppa.no\x22,\x22'+'lahppi.no\x22'+',\x22lĆ”hppi.n'+'o\x22,\x22lund.n'+'o\x22,\x22lunner'+'.no\x22,\x22luro'+'y.no\x22,\x22lur'+'Ćøy.no\x22,\x22lu'+'ster.no\x22,\x22'+'lyngdal.no'+'\x22,\x22lyngen.'+'no\x22,\x22ivgu.'+'no\x22,\x22larda'+'l.no\x22,\x22ler'+'dal.no\x22,\x22l'+'Ʀrdal.no\x22,'+'\x22lodingen.'+'no\x22,\x22lĆødin')+('gen.no\x22,\x22l'+'orenskog.n'+'o\x22,\x22lĆørens'+'kog.no\x22,\x22l'+'oten.no\x22,\x22'+'lĆøten.no\x22,'+'\x22malvik.no'+'\x22,\x22masoy.n'+'o\x22,\x22mĆ„sĆøy.'+'no\x22,\x22muosa'+'t.no\x22,\x22muo'+'sĆ”t.no\x22,\x22m'+'andal.no\x22,'+'\x22marker.no'+'\x22,\x22marnard'+'al.no\x22,\x22ma'+'sfjorden.n'+'o\x22,\x22meland'+'.no\x22,\x22meld'+'al.no\x22,\x22me'+'lhus.no\x22,\x22'+'meloy.no\x22,'+'\x22melĆøy.no\x22'+',\x22meraker.'+'no\x22,\x22merĆ„k'+'er.no\x22,\x22mo'+'areke.no\x22,'+'\x22moĆ„reke.n'+'o\x22,\x22midsun'+'d.no\x22,\x22mid'+'tre-gaulda'+'l.no\x22,\x22mod'+'alen.no\x22,\x22'+'modum.no\x22,'+'\x22molde.no\x22'+',\x22moskenes'+'.no\x22,\x22moss'+'.no\x22,\x22mosv'+'ik.no\x22,\x22ma'+'lselv.no\x22,'+'\x22mĆ„lselv.n'+'o\x22,\x22malatv'+'uopmi.no\x22,'+'\x22mĆ”latvuop'+'mi.no\x22,\x22na'+'mdalseid.n'+'o\x22,\x22aejrie'+'.no\x22,\x22nams'+'os.no\x22,\x22na'+'msskogan.n'+'o\x22,\x22naames'+'jevuemie.n'+'o\x22,\x22nƄƄmes'+'jevuemie.n'+'o\x22,\x22laakes'+'vuemie.no\x22'+',\x22nannesta'+'d.no\x22,\x22nar'+'vik.no\x22,\x22n'+'arviika.no'+'\x22,\x22naustda'+'l.no\x22,\x22ned'+'re-eiker.n'+'o\x22,\x22nes.ak'+'ershus.no\x22'+',\x22nes.busk'+'erud.no\x22,\x22'+'nesna.no\x22,'+'\x22nesodden.'+'no\x22,\x22nesse'+'by.no\x22,\x22un'+'jarga.no\x22,'+'\x22unjĆ”rga.n'+'o\x22,\x22nesset'+'.no\x22,\x22niss'+'edal.no\x22,\x22'+'nittedal.n'+'o\x22,\x22nord-a'+'urdal.no\x22,'+'\x22nord-fron'+'.no\x22,\x22nord'+'-odal.no\x22,'+'\x22norddal.n'+'o\x22,\x22nordka'+'pp.no\x22,\x22da'+'vvenjarga.'+'no\x22,\x22davve'+'njĆ”rga.no\x22'+',\x22nordre-l'+'and.no\x22,\x22n'+'ordreisa.n'+'o\x22,\x22raisa.'+'no\x22,\x22rĆ”isa'+'.no\x22,\x22nore'+'-og-uvdal.'+'no\x22,\x22notod'+'den.no\x22,\x22n'+'aroy.no\x22,\x22'+'nƦrĆøy.no\x22,'+'\x22notteroy.')+('no\x22,\x22nĆøtte'+'rĆøy.no\x22,\x22o'+'dda.no\x22,\x22o'+'ksnes.no\x22,'+'\x22Ćøksnes.no'+'\x22,\x22oppdal.'+'no\x22,\x22oppeg'+'ard.no\x22,\x22o'+'ppegĆ„rd.no'+'\x22,\x22orkdal.'+'no\x22,\x22orlan'+'d.no\x22,\x22Ćørl'+'and.no\x22,\x22o'+'rskog.no\x22,'+'\x22Ćørskog.no'+'\x22,\x22orsta.n'+'o\x22,\x22Ćørsta.'+'no\x22,\x22os.he'+'dmark.no\x22,'+'\x22os.hordal'+'and.no\x22,\x22o'+'sen.no\x22,\x22o'+'steroy.no\x22'+',\x22osterĆøy.'+'no\x22,\x22ostre'+'-toten.no\x22'+',\x22Ćøstre-to'+'ten.no\x22,\x22o'+'verhalla.n'+'o\x22,\x22ovre-e'+'iker.no\x22,\x22'+'Ćøvre-eiker'+'.no\x22,\x22oyer'+'.no\x22,\x22Ćøyer'+'.no\x22,\x22oyga'+'rden.no\x22,\x22'+'Ćøygarden.n'+'o\x22,\x22oystre'+'-slidre.no'+'\x22,\x22Ćøystre-'+'slidre.no\x22'+',\x22porsange'+'r.no\x22,\x22por'+'sangu.no\x22,'+'\x22porsÔŋgu.'+'no\x22,\x22porsg'+'runn.no\x22,\x22'+'radoy.no\x22,'+'\x22radĆøy.no\x22'+',\x22rakkesta'+'d.no\x22,\x22ran'+'a.no\x22,\x22ruo'+'vat.no\x22,\x22r'+'andaberg.n'+'o\x22,\x22rauma.'+'no\x22,\x22renda'+'len.no\x22,\x22r'+'ennebu.no\x22'+',\x22rennesoy'+'.no\x22,\x22renn'+'esĆøy.no\x22,\x22'+'rindal.no\x22'+',\x22ringebu.'+'no\x22,\x22ringe'+'rike.no\x22,\x22'+'ringsaker.'+'no\x22,\x22rissa'+'.no\x22,\x22riso'+'r.no\x22,\x22ris'+'Ćør.no\x22,\x22ro'+'an.no\x22,\x22ro'+'llag.no\x22,\x22'+'rygge.no\x22,'+'\x22ralingen.'+'no\x22,\x22rƦlin'+'gen.no\x22,\x22r'+'odoy.no\x22,\x22'+'rĆødĆøy.no\x22,'+'\x22romskog.n'+'o\x22,\x22rĆømsko'+'g.no\x22,\x22ror'+'os.no\x22,\x22rĆø'+'ros.no\x22,\x22r'+'ost.no\x22,\x22r'+'Ćøst.no\x22,\x22r'+'oyken.no\x22,'+'\x22rĆøyken.no'+'\x22,\x22royrvik'+'.no\x22,\x22rĆøyr'+'vik.no\x22,\x22r'+'ade.no\x22,\x22r'+'Ć„de.no\x22,\x22s'+'alangen.no'+'\x22,\x22siellak'+'.no\x22,\x22salt'+'dal.no\x22,\x22s'+'alat.no\x22,\x22'+'sĆ”lĆ”t.no\x22,'+'\x22sĆ”lat.no\x22'+',\x22samnange')+('r.no\x22,\x22san'+'de.more-og'+'-romsdal.n'+'o\x22,\x22sande.'+'mĆøre-og-ro'+'msdal.no\x22,'+'\x22sande.ves'+'tfold.no\x22,'+'\x22sandefjor'+'d.no\x22,\x22san'+'dnes.no\x22,\x22'+'sandoy.no\x22'+',\x22sandĆøy.n'+'o\x22,\x22sarpsb'+'org.no\x22,\x22s'+'auda.no\x22,\x22'+'sauherad.n'+'o\x22,\x22sel.no'+'\x22,\x22selbu.n'+'o\x22,\x22selje.'+'no\x22,\x22seljo'+'rd.no\x22,\x22si'+'gdal.no\x22,\x22'+'siljan.no\x22'+',\x22sirdal.n'+'o\x22,\x22skaun.'+'no\x22,\x22skeds'+'mo.no\x22,\x22sk'+'i.no\x22,\x22ski'+'en.no\x22,\x22sk'+'iptvet.no\x22'+',\x22skjervoy'+'.no\x22,\x22skje'+'rvĆøy.no\x22,\x22'+'skierva.no'+'\x22,\x22skiervĆ”'+'.no\x22,\x22skja'+'k.no\x22,\x22skj'+'Ć„k.no\x22,\x22sk'+'odje.no\x22,\x22'+'skanland.n'+'o\x22,\x22skĆ„nla'+'nd.no\x22,\x22sk'+'anit.no\x22,\x22'+'skĆ”nit.no\x22'+',\x22smola.no'+'\x22,\x22smĆøla.n'+'o\x22,\x22snillf'+'jord.no\x22,\x22'+'snasa.no\x22,'+'\x22snĆ„sa.no\x22'+',\x22snoasa.n'+'o\x22,\x22snaase'+'.no\x22,\x22snĆ„a'+'se.no\x22,\x22so'+'gndal.no\x22,'+'\x22sokndal.n'+'o\x22,\x22sola.n'+'o\x22,\x22solund'+'.no\x22,\x22song'+'dalen.no\x22,'+'\x22sortland.'+'no\x22,\x22spyde'+'berg.no\x22,\x22'+'stange.no\x22'+',\x22stavange'+'r.no\x22,\x22ste'+'igen.no\x22,\x22'+'steinkjer.'+'no\x22,\x22stjor'+'dal.no\x22,\x22s'+'tjĆørdal.no'+'\x22,\x22stokke.'+'no\x22,\x22stor-'+'elvdal.no\x22'+',\x22stord.no'+'\x22,\x22stordal'+'.no\x22,\x22stor'+'fjord.no\x22,'+'\x22omasvuotn'+'a.no\x22,\x22str'+'and.no\x22,\x22s'+'tranda.no\x22'+',\x22stryn.no'+'\x22,\x22sula.no'+'\x22,\x22suldal.'+'no\x22,\x22sund.'+'no\x22,\x22sunnd'+'al.no\x22,\x22su'+'rnadal.no\x22'+',\x22sveio.no'+'\x22,\x22svelvik'+'.no\x22,\x22sykk'+'ylven.no\x22,'+'\x22sogne.no\x22'+',\x22sĆøgne.no'+'\x22,\x22somna.n'+'o\x22,\x22sĆømna.'+'no\x22,\x22sondr'+'e-land.no\x22')+(',\x22sĆøndre-l'+'and.no\x22,\x22s'+'or-aurdal.'+'no\x22,\x22sĆør-a'+'urdal.no\x22,'+'\x22sor-fron.'+'no\x22,\x22sĆør-f'+'ron.no\x22,\x22s'+'or-odal.no'+'\x22,\x22sĆør-oda'+'l.no\x22,\x22sor'+'-varanger.'+'no\x22,\x22sĆør-v'+'aranger.no'+'\x22,\x22matta-v'+'arjjat.no\x22'+',\x22mĆ”tta-vĆ”'+'rjjat.no\x22,'+'\x22sorfold.n'+'o\x22,\x22sĆørfol'+'d.no\x22,\x22sor'+'reisa.no\x22,'+'\x22sĆørreisa.'+'no\x22,\x22sorum'+'.no\x22,\x22sĆøru'+'m.no\x22,\x22tan'+'a.no\x22,\x22dea'+'tnu.no\x22,\x22t'+'ime.no\x22,\x22t'+'ingvoll.no'+'\x22,\x22tinn.no'+'\x22,\x22tjeldsu'+'nd.no\x22,\x22di'+'elddanuorr'+'i.no\x22,\x22tjo'+'me.no\x22,\x22tj'+'Ćøme.no\x22,\x22t'+'okke.no\x22,\x22'+'tolga.no\x22,'+'\x22torsken.n'+'o\x22,\x22tranoy'+'.no\x22,\x22tran'+'Ćøy.no\x22,\x22tr'+'omso.no\x22,\x22'+'tromsĆø.no\x22'+',\x22tromsa.n'+'o\x22,\x22romsa.'+'no\x22,\x22trond'+'heim.no\x22,\x22'+'troandin.n'+'o\x22,\x22trysil'+'.no\x22,\x22tran'+'a.no\x22,\x22trƦ'+'na.no\x22,\x22tr'+'ogstad.no\x22'+',\x22trĆøgstad'+'.no\x22,\x22tved'+'estrand.no'+'\x22,\x22tydal.n'+'o\x22,\x22tynset'+'.no\x22,\x22tysf'+'jord.no\x22,\x22'+'divtasvuod'+'na.no\x22,\x22di'+'vttasvuotn'+'a.no\x22,\x22tys'+'nes.no\x22,\x22t'+'ysvar.no\x22,'+'\x22tysvƦr.no'+'\x22,\x22tonsber'+'g.no\x22,\x22tĆøn'+'sberg.no\x22,'+'\x22ullensake'+'r.no\x22,\x22ull'+'ensvang.no'+'\x22,\x22ulvik.n'+'o\x22,\x22utsira'+'.no\x22,\x22vads'+'o.no\x22,\x22vad'+'sĆø.no\x22,\x22ca'+'hcesuolo.n'+'o\x22,\x22ÄĆ”hces'+'uolo.no\x22,\x22'+'vaksdal.no'+'\x22,\x22valle.n'+'o\x22,\x22vang.n'+'o\x22,\x22vanylv'+'en.no\x22,\x22va'+'rdo.no\x22,\x22v'+'ardĆø.no\x22,\x22'+'varggat.no'+'\x22,\x22vĆ”rggĆ”t'+'.no\x22,\x22vefs'+'n.no\x22,\x22vaa'+'pste.no\x22,\x22'+'vega.no\x22,\x22'+'vegarshei.'+'no\x22,\x22vegĆ„r'+'shei.no\x22,\x22'+'vennesla.n')+('o\x22,\x22verdal'+'.no\x22,\x22verr'+'an.no\x22,\x22ve'+'stby.no\x22,\x22'+'vestnes.no'+'\x22,\x22vestre-'+'slidre.no\x22'+',\x22vestre-t'+'oten.no\x22,\x22'+'vestvagoy.'+'no\x22,\x22vestv'+'Ć„gĆøy.no\x22,\x22'+'vevelstad.'+'no\x22,\x22vik.n'+'o\x22,\x22vikna.'+'no\x22,\x22vinda'+'fjord.no\x22,'+'\x22volda.no\x22'+',\x22voss.no\x22'+',\x22varoy.no'+'\x22,\x22vƦrĆøy.n'+'o\x22,\x22vagan.'+'no\x22,\x22vĆ„gan'+'.no\x22,\x22voag'+'at.no\x22,\x22va'+'gsoy.no\x22,\x22'+'vĆ„gsĆøy.no\x22'+',\x22vaga.no\x22'+',\x22vĆ„gĆ„.no\x22'+',\x22valer.os'+'tfold.no\x22,'+'\x22vĆ„ler.Ćøst'+'fold.no\x22,\x22'+'valer.hedm'+'ark.no\x22,\x22v'+'Ć„ler.hedma'+'rk.no\x22,\x22*.'+'np\x22,\x22nr\x22,\x22'+'biz.nr\x22,\x22i'+'nfo.nr\x22,\x22g'+'ov.nr\x22,\x22ed'+'u.nr\x22,\x22org'+'.nr\x22,\x22net.'+'nr\x22,\x22com.n'+'r\x22,\x22nu\x22,\x22n'+'z\x22,\x22ac.nz\x22'+',\x22co.nz\x22,\x22'+'cri.nz\x22,\x22g'+'eek.nz\x22,\x22g'+'en.nz\x22,\x22go'+'vt.nz\x22,\x22he'+'alth.nz\x22,\x22'+'iwi.nz\x22,\x22k'+'iwi.nz\x22,\x22m'+'aori.nz\x22,\x22'+'mil.nz\x22,\x22m'+'āori.nz\x22,\x22'+'net.nz\x22,\x22o'+'rg.nz\x22,\x22pa'+'rliament.n'+'z\x22,\x22school'+'.nz\x22,\x22om\x22,'+'\x22co.om\x22,\x22c'+'om.om\x22,\x22ed'+'u.om\x22,\x22gov'+'.om\x22,\x22med.'+'om\x22,\x22museu'+'m.om\x22,\x22net'+'.om\x22,\x22org.'+'om\x22,\x22pro.o'+'m\x22,\x22onion\x22'+',\x22org\x22,\x22pa'+'\x22,\x22ac.pa\x22,'+'\x22gob.pa\x22,\x22'+'com.pa\x22,\x22o'+'rg.pa\x22,\x22sl'+'d.pa\x22,\x22edu'+'.pa\x22,\x22net.'+'pa\x22,\x22ing.p'+'a\x22,\x22abo.pa'+'\x22,\x22med.pa\x22'+',\x22nom.pa\x22,'+'\x22pe\x22,\x22edu.'+'pe\x22,\x22gob.p'+'e\x22,\x22nom.pe'+'\x22,\x22mil.pe\x22'+',\x22org.pe\x22,'+'\x22com.pe\x22,\x22'+'net.pe\x22,\x22p'+'f\x22,\x22com.pf'+'\x22,\x22org.pf\x22'+',\x22edu.pf\x22,'+'\x22*.pg\x22,\x22ph'+'\x22,\x22com.ph\x22'+',\x22net.ph\x22,'+'\x22org.ph\x22,\x22'+'gov.ph\x22,\x22e'+'du.ph\x22,\x22ng'+'o.ph\x22,\x22mil'+'.ph\x22,\x22i.ph')+('\x22,\x22pk\x22,\x22co'+'m.pk\x22,\x22net'+'.pk\x22,\x22edu.'+'pk\x22,\x22org.p'+'k\x22,\x22fam.pk'+'\x22,\x22biz.pk\x22'+',\x22web.pk\x22,'+'\x22gov.pk\x22,\x22'+'gob.pk\x22,\x22g'+'ok.pk\x22,\x22go'+'n.pk\x22,\x22gop'+'.pk\x22,\x22gos.'+'pk\x22,\x22info.'+'pk\x22,\x22pl\x22,\x22'+'com.pl\x22,\x22n'+'et.pl\x22,\x22or'+'g.pl\x22,\x22aid'+'.pl\x22,\x22agro'+'.pl\x22,\x22atm.'+'pl\x22,\x22auto.'+'pl\x22,\x22biz.p'+'l\x22,\x22edu.pl'+'\x22,\x22gmina.p'+'l\x22,\x22gsm.pl'+'\x22,\x22info.pl'+'\x22,\x22mail.pl'+'\x22,\x22miasta.'+'pl\x22,\x22media'+'.pl\x22,\x22mil.'+'pl\x22,\x22nieru'+'chomosci.p'+'l\x22,\x22nom.pl'+'\x22,\x22pc.pl\x22,'+'\x22powiat.pl'+'\x22,\x22priv.pl'+'\x22,\x22realest'+'ate.pl\x22,\x22r'+'el.pl\x22,\x22se'+'x.pl\x22,\x22sho'+'p.pl\x22,\x22skl'+'ep.pl\x22,\x22so'+'s.pl\x22,\x22szk'+'ola.pl\x22,\x22t'+'argi.pl\x22,\x22'+'tm.pl\x22,\x22to'+'urism.pl\x22,'+'\x22travel.pl'+'\x22,\x22turysty'+'ka.pl\x22,\x22go'+'v.pl\x22,\x22ap.'+'gov.pl\x22,\x22i'+'c.gov.pl\x22,'+'\x22is.gov.pl'+'\x22,\x22us.gov.'+'pl\x22,\x22kmpsp'+'.gov.pl\x22,\x22'+'kppsp.gov.'+'pl\x22,\x22kwpsp'+'.gov.pl\x22,\x22'+'psp.gov.pl'+'\x22,\x22wskr.go'+'v.pl\x22,\x22kwp'+'.gov.pl\x22,\x22'+'mw.gov.pl\x22'+',\x22ug.gov.p'+'l\x22,\x22um.gov'+'.pl\x22,\x22umig'+'.gov.pl\x22,\x22'+'ugim.gov.p'+'l\x22,\x22upow.g'+'ov.pl\x22,\x22uw'+'.gov.pl\x22,\x22'+'starostwo.'+'gov.pl\x22,\x22p'+'a.gov.pl\x22,'+'\x22po.gov.pl'+'\x22,\x22psse.go'+'v.pl\x22,\x22pup'+'.gov.pl\x22,\x22'+'rzgw.gov.p'+'l\x22,\x22sa.gov'+'.pl\x22,\x22so.g'+'ov.pl\x22,\x22sr'+'.gov.pl\x22,\x22'+'wsa.gov.pl'+'\x22,\x22sko.gov'+'.pl\x22,\x22uzs.'+'gov.pl\x22,\x22w'+'iih.gov.pl'+'\x22,\x22winb.go'+'v.pl\x22,\x22pin'+'b.gov.pl\x22,'+'\x22wios.gov.'+'pl\x22,\x22witd.'+'gov.pl\x22,\x22w'+'zmiuw.gov.'+'pl\x22,\x22piw.g'+'ov.pl\x22,\x22wi'+'w.gov.pl\x22,'+'\x22griw.gov.')+('pl\x22,\x22wif.g'+'ov.pl\x22,\x22ou'+'m.gov.pl\x22,'+'\x22sdn.gov.p'+'l\x22,\x22zp.gov'+'.pl\x22,\x22uppo'+'.gov.pl\x22,\x22'+'mup.gov.pl'+'\x22,\x22wuoz.go'+'v.pl\x22,\x22kon'+'sulat.gov.'+'pl\x22,\x22oirm.'+'gov.pl\x22,\x22a'+'ugustow.pl'+'\x22,\x22babia-g'+'ora.pl\x22,\x22b'+'edzin.pl\x22,'+'\x22beskidy.p'+'l\x22,\x22bialow'+'ieza.pl\x22,\x22'+'bialystok.'+'pl\x22,\x22biela'+'wa.pl\x22,\x22bi'+'eszczady.p'+'l\x22,\x22bolesl'+'awiec.pl\x22,'+'\x22bydgoszcz'+'.pl\x22,\x22byto'+'m.pl\x22,\x22cie'+'szyn.pl\x22,\x22'+'czeladz.pl'+'\x22,\x22czest.p'+'l\x22,\x22dlugol'+'eka.pl\x22,\x22e'+'lblag.pl\x22,'+'\x22elk.pl\x22,\x22'+'glogow.pl\x22'+',\x22gniezno.'+'pl\x22,\x22gorli'+'ce.pl\x22,\x22gr'+'ajewo.pl\x22,'+'\x22ilawa.pl\x22'+',\x22jaworzno'+'.pl\x22,\x22jele'+'nia-gora.p'+'l\x22,\x22jgora.'+'pl\x22,\x22kalis'+'z.pl\x22,\x22kaz'+'imierz-dol'+'ny.pl\x22,\x22ka'+'rpacz.pl\x22,'+'\x22kartuzy.p'+'l\x22,\x22kaszub'+'y.pl\x22,\x22kat'+'owice.pl\x22,'+'\x22kepno.pl\x22'+',\x22ketrzyn.'+'pl\x22,\x22klodz'+'ko.pl\x22,\x22ko'+'bierzyce.p'+'l\x22,\x22kolobr'+'zeg.pl\x22,\x22k'+'onin.pl\x22,\x22'+'konskowola'+'.pl\x22,\x22kutn'+'o.pl\x22,\x22lap'+'y.pl\x22,\x22leb'+'ork.pl\x22,\x22l'+'egnica.pl\x22'+',\x22lezajsk.'+'pl\x22,\x22liman'+'owa.pl\x22,\x22l'+'omza.pl\x22,\x22'+'lowicz.pl\x22'+',\x22lubin.pl'+'\x22,\x22lukow.p'+'l\x22,\x22malbor'+'k.pl\x22,\x22mal'+'opolska.pl'+'\x22,\x22mazowsz'+'e.pl\x22,\x22maz'+'ury.pl\x22,\x22m'+'ielec.pl\x22,'+'\x22mielno.pl'+'\x22,\x22mragowo'+'.pl\x22,\x22nakl'+'o.pl\x22,\x22now'+'aruda.pl\x22,'+'\x22nysa.pl\x22,'+'\x22olawa.pl\x22'+',\x22olecko.p'+'l\x22,\x22olkusz'+'.pl\x22,\x22olsz'+'tyn.pl\x22,\x22o'+'poczno.pl\x22'+',\x22opole.pl'+'\x22,\x22ostroda'+'.pl\x22,\x22ostr'+'oleka.pl\x22,'+'\x22ostrowiec')+('.pl\x22,\x22ostr'+'owwlkp.pl\x22'+',\x22pila.pl\x22'+',\x22pisz.pl\x22'+',\x22podhale.'+'pl\x22,\x22podla'+'sie.pl\x22,\x22p'+'olkowice.p'+'l\x22,\x22pomorz'+'e.pl\x22,\x22pom'+'orskie.pl\x22'+',\x22prochowi'+'ce.pl\x22,\x22pr'+'uszkow.pl\x22'+',\x22przewors'+'k.pl\x22,\x22pul'+'awy.pl\x22,\x22r'+'adom.pl\x22,\x22'+'rawa-maz.p'+'l\x22,\x22rybnik'+'.pl\x22,\x22rzes'+'zow.pl\x22,\x22s'+'anok.pl\x22,\x22'+'sejny.pl\x22,'+'\x22slask.pl\x22'+',\x22slupsk.p'+'l\x22,\x22sosnow'+'iec.pl\x22,\x22s'+'talowa-wol'+'a.pl\x22,\x22sko'+'czow.pl\x22,\x22'+'starachowi'+'ce.pl\x22,\x22st'+'argard.pl\x22'+',\x22suwalki.'+'pl\x22,\x22swidn'+'ica.pl\x22,\x22s'+'wiebodzin.'+'pl\x22,\x22swino'+'ujscie.pl\x22'+',\x22szczecin'+'.pl\x22,\x22szcz'+'ytno.pl\x22,\x22'+'tarnobrzeg'+'.pl\x22,\x22tgor'+'y.pl\x22,\x22tur'+'ek.pl\x22,\x22ty'+'chy.pl\x22,\x22u'+'stka.pl\x22,\x22'+'walbrzych.'+'pl\x22,\x22warmi'+'a.pl\x22,\x22war'+'szawa.pl\x22,'+'\x22waw.pl\x22,\x22'+'wegrow.pl\x22'+',\x22wielun.p'+'l\x22,\x22wlocl.'+'pl\x22,\x22wlocl'+'awek.pl\x22,\x22'+'wodzislaw.'+'pl\x22,\x22wolom'+'in.pl\x22,\x22wr'+'oclaw.pl\x22,'+'\x22zachpomor'+'.pl\x22,\x22zaga'+'n.pl\x22,\x22zar'+'ow.pl\x22,\x22zg'+'ora.pl\x22,\x22z'+'gorzelec.p'+'l\x22,\x22pm\x22,\x22p'+'n\x22,\x22gov.pn'+'\x22,\x22co.pn\x22,'+'\x22org.pn\x22,\x22'+'edu.pn\x22,\x22n'+'et.pn\x22,\x22po'+'st\x22,\x22pr\x22,\x22'+'com.pr\x22,\x22n'+'et.pr\x22,\x22or'+'g.pr\x22,\x22gov'+'.pr\x22,\x22edu.'+'pr\x22,\x22isla.'+'pr\x22,\x22pro.p'+'r\x22,\x22biz.pr'+'\x22,\x22info.pr'+'\x22,\x22name.pr'+'\x22,\x22est.pr\x22'+',\x22prof.pr\x22'+',\x22ac.pr\x22,\x22'+'pro\x22,\x22aaa.'+'pro\x22,\x22aca.'+'pro\x22,\x22acct'+'.pro\x22,\x22avo'+'cat.pro\x22,\x22'+'bar.pro\x22,\x22'+'cpa.pro\x22,\x22'+'eng.pro\x22,\x22'+'jur.pro\x22,\x22'+'law.pro\x22,\x22'+'med.pro\x22,\x22'+'recht.pro\x22')+(',\x22ps\x22,\x22edu'+'.ps\x22,\x22gov.'+'ps\x22,\x22sec.p'+'s\x22,\x22plo.ps'+'\x22,\x22com.ps\x22'+',\x22org.ps\x22,'+'\x22net.ps\x22,\x22'+'pt\x22,\x22net.p'+'t\x22,\x22gov.pt'+'\x22,\x22org.pt\x22'+',\x22edu.pt\x22,'+'\x22int.pt\x22,\x22'+'publ.pt\x22,\x22'+'com.pt\x22,\x22n'+'ome.pt\x22,\x22p'+'w\x22,\x22co.pw\x22'+',\x22ne.pw\x22,\x22'+'or.pw\x22,\x22ed'+'.pw\x22,\x22go.p'+'w\x22,\x22belau.'+'pw\x22,\x22py\x22,\x22'+'com.py\x22,\x22c'+'oop.py\x22,\x22e'+'du.py\x22,\x22go'+'v.py\x22,\x22mil'+'.py\x22,\x22net.'+'py\x22,\x22org.p'+'y\x22,\x22qa\x22,\x22c'+'om.qa\x22,\x22ed'+'u.qa\x22,\x22gov'+'.qa\x22,\x22mil.'+'qa\x22,\x22name.'+'qa\x22,\x22net.q'+'a\x22,\x22org.qa'+'\x22,\x22sch.qa\x22'+',\x22re\x22,\x22ass'+'o.re\x22,\x22com'+'.re\x22,\x22nom.'+'re\x22,\x22ro\x22,\x22'+'arts.ro\x22,\x22'+'com.ro\x22,\x22f'+'irm.ro\x22,\x22i'+'nfo.ro\x22,\x22n'+'om.ro\x22,\x22nt'+'.ro\x22,\x22org.'+'ro\x22,\x22rec.r'+'o\x22,\x22store.'+'ro\x22,\x22tm.ro'+'\x22,\x22www.ro\x22'+',\x22rs\x22,\x22ac.'+'rs\x22,\x22co.rs'+'\x22,\x22edu.rs\x22'+',\x22gov.rs\x22,'+'\x22in.rs\x22,\x22o'+'rg.rs\x22,\x22ru'+'\x22,\x22rw\x22,\x22ac'+'.rw\x22,\x22co.r'+'w\x22,\x22coop.r'+'w\x22,\x22gov.rw'+'\x22,\x22mil.rw\x22'+',\x22net.rw\x22,'+'\x22org.rw\x22,\x22'+'sa\x22,\x22com.s'+'a\x22,\x22net.sa'+'\x22,\x22org.sa\x22'+',\x22gov.sa\x22,'+'\x22med.sa\x22,\x22'+'pub.sa\x22,\x22e'+'du.sa\x22,\x22sc'+'h.sa\x22,\x22sb\x22'+',\x22com.sb\x22,'+'\x22edu.sb\x22,\x22'+'gov.sb\x22,\x22n'+'et.sb\x22,\x22or'+'g.sb\x22,\x22sc\x22'+',\x22com.sc\x22,'+'\x22gov.sc\x22,\x22'+'net.sc\x22,\x22o'+'rg.sc\x22,\x22ed'+'u.sc\x22,\x22sd\x22'+',\x22com.sd\x22,'+'\x22net.sd\x22,\x22'+'org.sd\x22,\x22e'+'du.sd\x22,\x22me'+'d.sd\x22,\x22tv.'+'sd\x22,\x22gov.s'+'d\x22,\x22info.s'+'d\x22,\x22se\x22,\x22a'+'.se\x22,\x22ac.s'+'e\x22,\x22b.se\x22,'+'\x22bd.se\x22,\x22b'+'rand.se\x22,\x22'+'c.se\x22,\x22d.s'+'e\x22,\x22e.se\x22,'+'\x22f.se\x22,\x22fh'+'.se\x22,\x22fhsk'+'.se\x22,\x22fhv.'+'se\x22,\x22g.se\x22'+',\x22h.se\x22,\x22i'+'.se\x22,\x22k.se')+('\x22,\x22komforb'+'.se\x22,\x22komm'+'unalforbun'+'d.se\x22,\x22kom'+'vux.se\x22,\x22l'+'.se\x22,\x22lanb'+'ib.se\x22,\x22m.'+'se\x22,\x22n.se\x22'+',\x22naturbru'+'ksgymn.se\x22'+',\x22o.se\x22,\x22o'+'rg.se\x22,\x22p.'+'se\x22,\x22parti'+'.se\x22,\x22pp.s'+'e\x22,\x22press.'+'se\x22,\x22r.se\x22'+',\x22s.se\x22,\x22t'+'.se\x22,\x22tm.s'+'e\x22,\x22u.se\x22,'+'\x22w.se\x22,\x22x.'+'se\x22,\x22y.se\x22'+',\x22z.se\x22,\x22s'+'g\x22,\x22com.sg'+'\x22,\x22net.sg\x22'+',\x22org.sg\x22,'+'\x22gov.sg\x22,\x22'+'edu.sg\x22,\x22p'+'er.sg\x22,\x22sh'+'\x22,\x22com.sh\x22'+',\x22net.sh\x22,'+'\x22gov.sh\x22,\x22'+'org.sh\x22,\x22m'+'il.sh\x22,\x22si'+'\x22,\x22sj\x22,\x22sk'+'\x22,\x22sl\x22,\x22co'+'m.sl\x22,\x22net'+'.sl\x22,\x22edu.'+'sl\x22,\x22gov.s'+'l\x22,\x22org.sl'+'\x22,\x22sm\x22,\x22sn'+'\x22,\x22art.sn\x22'+',\x22com.sn\x22,'+'\x22edu.sn\x22,\x22'+'gouv.sn\x22,\x22'+'org.sn\x22,\x22p'+'erso.sn\x22,\x22'+'univ.sn\x22,\x22'+'so\x22,\x22com.s'+'o\x22,\x22edu.so'+'\x22,\x22gov.so\x22'+',\x22me.so\x22,\x22'+'net.so\x22,\x22o'+'rg.so\x22,\x22sr'+'\x22,\x22ss\x22,\x22bi'+'z.ss\x22,\x22com'+'.ss\x22,\x22edu.'+'ss\x22,\x22gov.s'+'s\x22,\x22net.ss'+'\x22,\x22org.ss\x22'+',\x22st\x22,\x22co.'+'st\x22,\x22com.s'+'t\x22,\x22consul'+'ado.st\x22,\x22e'+'du.st\x22,\x22em'+'baixada.st'+'\x22,\x22gov.st\x22'+',\x22mil.st\x22,'+'\x22net.st\x22,\x22'+'org.st\x22,\x22p'+'rincipe.st'+'\x22,\x22saotome'+'.st\x22,\x22stor'+'e.st\x22,\x22su\x22'+',\x22sv\x22,\x22com'+'.sv\x22,\x22edu.'+'sv\x22,\x22gob.s'+'v\x22,\x22org.sv'+'\x22,\x22red.sv\x22'+',\x22sx\x22,\x22gov'+'.sx\x22,\x22sy\x22,'+'\x22edu.sy\x22,\x22'+'gov.sy\x22,\x22n'+'et.sy\x22,\x22mi'+'l.sy\x22,\x22com'+'.sy\x22,\x22org.'+'sy\x22,\x22sz\x22,\x22'+'co.sz\x22,\x22ac'+'.sz\x22,\x22org.'+'sz\x22,\x22tc\x22,\x22'+'td\x22,\x22tel\x22,'+'\x22tf\x22,\x22tg\x22,'+'\x22th\x22,\x22ac.t'+'h\x22,\x22co.th\x22'+',\x22go.th\x22,\x22'+'in.th\x22,\x22mi'+'.th\x22,\x22net.'+'th\x22,\x22or.th'+'\x22,\x22tj\x22,\x22ac'+'.tj\x22,\x22biz.'+'tj\x22,\x22co.tj')+('\x22,\x22com.tj\x22'+',\x22edu.tj\x22,'+'\x22go.tj\x22,\x22g'+'ov.tj\x22,\x22in'+'t.tj\x22,\x22mil'+'.tj\x22,\x22name'+'.tj\x22,\x22net.'+'tj\x22,\x22nic.t'+'j\x22,\x22org.tj'+'\x22,\x22test.tj'+'\x22,\x22web.tj\x22'+',\x22tk\x22,\x22tl\x22'+',\x22gov.tl\x22,'+'\x22tm\x22,\x22com.'+'tm\x22,\x22co.tm'+'\x22,\x22org.tm\x22'+',\x22net.tm\x22,'+'\x22nom.tm\x22,\x22'+'gov.tm\x22,\x22m'+'il.tm\x22,\x22ed'+'u.tm\x22,\x22tn\x22'+',\x22com.tn\x22,'+'\x22ens.tn\x22,\x22'+'fin.tn\x22,\x22g'+'ov.tn\x22,\x22in'+'d.tn\x22,\x22int'+'l.tn\x22,\x22nat'+'.tn\x22,\x22net.'+'tn\x22,\x22org.t'+'n\x22,\x22info.t'+'n\x22,\x22perso.'+'tn\x22,\x22touri'+'sm.tn\x22,\x22ed'+'unet.tn\x22,\x22'+'rnrt.tn\x22,\x22'+'rns.tn\x22,\x22r'+'nu.tn\x22,\x22mi'+'ncom.tn\x22,\x22'+'agrinet.tn'+'\x22,\x22defense'+'.tn\x22,\x22ture'+'n.tn\x22,\x22to\x22'+',\x22com.to\x22,'+'\x22gov.to\x22,\x22'+'net.to\x22,\x22o'+'rg.to\x22,\x22ed'+'u.to\x22,\x22mil'+'.to\x22,\x22tr\x22,'+'\x22av.tr\x22,\x22b'+'bs.tr\x22,\x22be'+'l.tr\x22,\x22biz'+'.tr\x22,\x22com.'+'tr\x22,\x22dr.tr'+'\x22,\x22edu.tr\x22'+',\x22gen.tr\x22,'+'\x22gov.tr\x22,\x22'+'info.tr\x22,\x22'+'mil.tr\x22,\x22k'+'12.tr\x22,\x22ke'+'p.tr\x22,\x22nam'+'e.tr\x22,\x22net'+'.tr\x22,\x22org.'+'tr\x22,\x22pol.t'+'r\x22,\x22tel.tr'+'\x22,\x22tsk.tr\x22'+',\x22tv.tr\x22,\x22'+'web.tr\x22,\x22n'+'c.tr\x22,\x22gov'+'.nc.tr\x22,\x22t'+'t\x22,\x22co.tt\x22'+',\x22com.tt\x22,'+'\x22org.tt\x22,\x22'+'net.tt\x22,\x22b'+'iz.tt\x22,\x22in'+'fo.tt\x22,\x22pr'+'o.tt\x22,\x22int'+'.tt\x22,\x22coop'+'.tt\x22,\x22jobs'+'.tt\x22,\x22mobi'+'.tt\x22,\x22trav'+'el.tt\x22,\x22mu'+'seum.tt\x22,\x22'+'aero.tt\x22,\x22'+'name.tt\x22,\x22'+'gov.tt\x22,\x22e'+'du.tt\x22,\x22tv'+'\x22,\x22tw\x22,\x22ed'+'u.tw\x22,\x22gov'+'.tw\x22,\x22mil.'+'tw\x22,\x22com.t'+'w\x22,\x22net.tw'+'\x22,\x22org.tw\x22'+',\x22idv.tw\x22,'+'\x22game.tw\x22,'+'\x22ebiz.tw\x22,'+'\x22club.tw\x22,'+'\x22網路.tw\x22,\x22組'+'ē¹”.tw\x22,\x22商愭.'+'tw\x22,\x22tz\x22,\x22'+'ac.tz\x22,\x22co')+('.tz\x22,\x22go.t'+'z\x22,\x22hotel.'+'tz\x22,\x22info.'+'tz\x22,\x22me.tz'+'\x22,\x22mil.tz\x22'+',\x22mobi.tz\x22'+',\x22ne.tz\x22,\x22'+'or.tz\x22,\x22sc'+'.tz\x22,\x22tv.t'+'z\x22,\x22ua\x22,\x22c'+'om.ua\x22,\x22ed'+'u.ua\x22,\x22gov'+'.ua\x22,\x22in.u'+'a\x22,\x22net.ua'+'\x22,\x22org.ua\x22'+',\x22cherkass'+'y.ua\x22,\x22che'+'rkasy.ua\x22,'+'\x22chernigov'+'.ua\x22,\x22cher'+'nihiv.ua\x22,'+'\x22chernivts'+'i.ua\x22,\x22che'+'rnovtsy.ua'+'\x22,\x22ck.ua\x22,'+'\x22cn.ua\x22,\x22c'+'r.ua\x22,\x22cri'+'mea.ua\x22,\x22c'+'v.ua\x22,\x22dn.'+'ua\x22,\x22dnepr'+'opetrovsk.'+'ua\x22,\x22dnipr'+'opetrovsk.'+'ua\x22,\x22domin'+'ic.ua\x22,\x22do'+'netsk.ua\x22,'+'\x22dp.ua\x22,\x22i'+'f.ua\x22,\x22iva'+'no-frankiv'+'sk.ua\x22,\x22kh'+'.ua\x22,\x22khar'+'kiv.ua\x22,\x22k'+'harkov.ua\x22'+',\x22kherson.'+'ua\x22,\x22khmel'+'nitskiy.ua'+'\x22,\x22khmelny'+'tskyi.ua\x22,'+'\x22kiev.ua\x22,'+'\x22kirovogra'+'d.ua\x22,\x22km.'+'ua\x22,\x22kr.ua'+'\x22,\x22krym.ua'+'\x22,\x22ks.ua\x22,'+'\x22kv.ua\x22,\x22k'+'yiv.ua\x22,\x22l'+'g.ua\x22,\x22lt.'+'ua\x22,\x22lugan'+'sk.ua\x22,\x22lu'+'tsk.ua\x22,\x22l'+'v.ua\x22,\x22lvi'+'v.ua\x22,\x22mk.'+'ua\x22,\x22mykol'+'aiv.ua\x22,\x22n'+'ikolaev.ua'+'\x22,\x22od.ua\x22,'+'\x22odesa.ua\x22'+',\x22odessa.u'+'a\x22,\x22pl.ua\x22'+',\x22poltava.'+'ua\x22,\x22rivne'+'.ua\x22,\x22rovn'+'o.ua\x22,\x22rv.'+'ua\x22,\x22sb.ua'+'\x22,\x22sebasto'+'pol.ua\x22,\x22s'+'evastopol.'+'ua\x22,\x22sm.ua'+'\x22,\x22sumy.ua'+'\x22,\x22te.ua\x22,'+'\x22ternopil.'+'ua\x22,\x22uz.ua'+'\x22,\x22uzhgoro'+'d.ua\x22,\x22vin'+'nica.ua\x22,\x22'+'vinnytsia.'+'ua\x22,\x22vn.ua'+'\x22,\x22volyn.u'+'a\x22,\x22yalta.'+'ua\x22,\x22zapor'+'izhzhe.ua\x22'+',\x22zaporizh'+'zhia.ua\x22,\x22'+'zhitomir.u'+'a\x22,\x22zhytom'+'yr.ua\x22,\x22zp'+'.ua\x22,\x22zt.u'+'a\x22,\x22ug\x22,\x22c'+'o.ug\x22,\x22or.'+'ug\x22,\x22ac.ug')+('\x22,\x22sc.ug\x22,'+'\x22go.ug\x22,\x22n'+'e.ug\x22,\x22com'+'.ug\x22,\x22org.'+'ug\x22,\x22uk\x22,\x22'+'ac.uk\x22,\x22co'+'.uk\x22,\x22gov.'+'uk\x22,\x22ltd.u'+'k\x22,\x22me.uk\x22'+',\x22net.uk\x22,'+'\x22nhs.uk\x22,\x22'+'org.uk\x22,\x22p'+'lc.uk\x22,\x22po'+'lice.uk\x22,\x22'+'*.sch.uk\x22,'+'\x22us\x22,\x22dni.'+'us\x22,\x22fed.u'+'s\x22,\x22isa.us'+'\x22,\x22kids.us'+'\x22,\x22nsn.us\x22'+',\x22ak.us\x22,\x22'+'al.us\x22,\x22ar'+'.us\x22,\x22as.u'+'s\x22,\x22az.us\x22'+',\x22ca.us\x22,\x22'+'co.us\x22,\x22ct'+'.us\x22,\x22dc.u'+'s\x22,\x22de.us\x22'+',\x22fl.us\x22,\x22'+'ga.us\x22,\x22gu'+'.us\x22,\x22hi.u'+'s\x22,\x22ia.us\x22'+',\x22id.us\x22,\x22'+'il.us\x22,\x22in'+'.us\x22,\x22ks.u'+'s\x22,\x22ky.us\x22'+',\x22la.us\x22,\x22'+'ma.us\x22,\x22md'+'.us\x22,\x22me.u'+'s\x22,\x22mi.us\x22'+',\x22mn.us\x22,\x22'+'mo.us\x22,\x22ms'+'.us\x22,\x22mt.u'+'s\x22,\x22nc.us\x22'+',\x22nd.us\x22,\x22'+'ne.us\x22,\x22nh'+'.us\x22,\x22nj.u'+'s\x22,\x22nm.us\x22'+',\x22nv.us\x22,\x22'+'ny.us\x22,\x22oh'+'.us\x22,\x22ok.u'+'s\x22,\x22or.us\x22'+',\x22pa.us\x22,\x22'+'pr.us\x22,\x22ri'+'.us\x22,\x22sc.u'+'s\x22,\x22sd.us\x22'+',\x22tn.us\x22,\x22'+'tx.us\x22,\x22ut'+'.us\x22,\x22vi.u'+'s\x22,\x22vt.us\x22'+',\x22va.us\x22,\x22'+'wa.us\x22,\x22wi'+'.us\x22,\x22wv.u'+'s\x22,\x22wy.us\x22'+',\x22k12.ak.u'+'s\x22,\x22k12.al'+'.us\x22,\x22k12.'+'ar.us\x22,\x22k1'+'2.as.us\x22,\x22'+'k12.az.us\x22'+',\x22k12.ca.u'+'s\x22,\x22k12.co'+'.us\x22,\x22k12.'+'ct.us\x22,\x22k1'+'2.dc.us\x22,\x22'+'k12.de.us\x22'+',\x22k12.fl.u'+'s\x22,\x22k12.ga'+'.us\x22,\x22k12.'+'gu.us\x22,\x22k1'+'2.ia.us\x22,\x22'+'k12.id.us\x22'+',\x22k12.il.u'+'s\x22,\x22k12.in'+'.us\x22,\x22k12.'+'ks.us\x22,\x22k1'+'2.ky.us\x22,\x22'+'k12.la.us\x22'+',\x22k12.ma.u'+'s\x22,\x22k12.md'+'.us\x22,\x22k12.'+'me.us\x22,\x22k1'+'2.mi.us\x22,\x22'+'k12.mn.us\x22'+',\x22k12.mo.u'+'s\x22,\x22k12.ms'+'.us\x22,\x22k12.'+'mt.us\x22,\x22k1'+'2.nc.us\x22,\x22'+'k12.ne.us\x22')+(',\x22k12.nh.u'+'s\x22,\x22k12.nj'+'.us\x22,\x22k12.'+'nm.us\x22,\x22k1'+'2.nv.us\x22,\x22'+'k12.ny.us\x22'+',\x22k12.oh.u'+'s\x22,\x22k12.ok'+'.us\x22,\x22k12.'+'or.us\x22,\x22k1'+'2.pa.us\x22,\x22'+'k12.pr.us\x22'+',\x22k12.ri.u'+'s\x22,\x22k12.sc'+'.us\x22,\x22k12.'+'tn.us\x22,\x22k1'+'2.tx.us\x22,\x22'+'k12.ut.us\x22'+',\x22k12.vi.u'+'s\x22,\x22k12.vt'+'.us\x22,\x22k12.'+'va.us\x22,\x22k1'+'2.wa.us\x22,\x22'+'k12.wi.us\x22'+',\x22k12.wy.u'+'s\x22,\x22cc.ak.'+'us\x22,\x22cc.al'+'.us\x22,\x22cc.a'+'r.us\x22,\x22cc.'+'as.us\x22,\x22cc'+'.az.us\x22,\x22c'+'c.ca.us\x22,\x22'+'cc.co.us\x22,'+'\x22cc.ct.us\x22'+',\x22cc.dc.us'+'\x22,\x22cc.de.u'+'s\x22,\x22cc.fl.'+'us\x22,\x22cc.ga'+'.us\x22,\x22cc.g'+'u.us\x22,\x22cc.'+'hi.us\x22,\x22cc'+'.ia.us\x22,\x22c'+'c.id.us\x22,\x22'+'cc.il.us\x22,'+'\x22cc.in.us\x22'+',\x22cc.ks.us'+'\x22,\x22cc.ky.u'+'s\x22,\x22cc.la.'+'us\x22,\x22cc.ma'+'.us\x22,\x22cc.m'+'d.us\x22,\x22cc.'+'me.us\x22,\x22cc'+'.mi.us\x22,\x22c'+'c.mn.us\x22,\x22'+'cc.mo.us\x22,'+'\x22cc.ms.us\x22'+',\x22cc.mt.us'+'\x22,\x22cc.nc.u'+'s\x22,\x22cc.nd.'+'us\x22,\x22cc.ne'+'.us\x22,\x22cc.n'+'h.us\x22,\x22cc.'+'nj.us\x22,\x22cc'+'.nm.us\x22,\x22c'+'c.nv.us\x22,\x22'+'cc.ny.us\x22,'+'\x22cc.oh.us\x22'+',\x22cc.ok.us'+'\x22,\x22cc.or.u'+'s\x22,\x22cc.pa.'+'us\x22,\x22cc.pr'+'.us\x22,\x22cc.r'+'i.us\x22,\x22cc.'+'sc.us\x22,\x22cc'+'.sd.us\x22,\x22c'+'c.tn.us\x22,\x22'+'cc.tx.us\x22,'+'\x22cc.ut.us\x22'+',\x22cc.vi.us'+'\x22,\x22cc.vt.u'+'s\x22,\x22cc.va.'+'us\x22,\x22cc.wa'+'.us\x22,\x22cc.w'+'i.us\x22,\x22cc.'+'wv.us\x22,\x22cc'+'.wy.us\x22,\x22l'+'ib.ak.us\x22,'+'\x22lib.al.us'+'\x22,\x22lib.ar.'+'us\x22,\x22lib.a'+'s.us\x22,\x22lib'+'.az.us\x22,\x22l'+'ib.ca.us\x22,'+'\x22lib.co.us'+'\x22,\x22lib.ct.'+'us\x22,\x22lib.d'+'c.us\x22,\x22lib'+'.fl.us\x22,\x22l'+'ib.ga.us\x22,'+'\x22lib.gu.us')+('\x22,\x22lib.hi.'+'us\x22,\x22lib.i'+'a.us\x22,\x22lib'+'.id.us\x22,\x22l'+'ib.il.us\x22,'+'\x22lib.in.us'+'\x22,\x22lib.ks.'+'us\x22,\x22lib.k'+'y.us\x22,\x22lib'+'.la.us\x22,\x22l'+'ib.ma.us\x22,'+'\x22lib.md.us'+'\x22,\x22lib.me.'+'us\x22,\x22lib.m'+'i.us\x22,\x22lib'+'.mn.us\x22,\x22l'+'ib.mo.us\x22,'+'\x22lib.ms.us'+'\x22,\x22lib.mt.'+'us\x22,\x22lib.n'+'c.us\x22,\x22lib'+'.nd.us\x22,\x22l'+'ib.ne.us\x22,'+'\x22lib.nh.us'+'\x22,\x22lib.nj.'+'us\x22,\x22lib.n'+'m.us\x22,\x22lib'+'.nv.us\x22,\x22l'+'ib.ny.us\x22,'+'\x22lib.oh.us'+'\x22,\x22lib.ok.'+'us\x22,\x22lib.o'+'r.us\x22,\x22lib'+'.pa.us\x22,\x22l'+'ib.pr.us\x22,'+'\x22lib.ri.us'+'\x22,\x22lib.sc.'+'us\x22,\x22lib.s'+'d.us\x22,\x22lib'+'.tn.us\x22,\x22l'+'ib.tx.us\x22,'+'\x22lib.ut.us'+'\x22,\x22lib.vi.'+'us\x22,\x22lib.v'+'t.us\x22,\x22lib'+'.va.us\x22,\x22l'+'ib.wa.us\x22,'+'\x22lib.wi.us'+'\x22,\x22lib.wy.'+'us\x22,\x22pvt.k'+'12.ma.us\x22,'+'\x22chtr.k12.'+'ma.us\x22,\x22pa'+'roch.k12.m'+'a.us\x22,\x22ann'+'-arbor.mi.'+'us\x22,\x22cog.m'+'i.us\x22,\x22dst'+'.mi.us\x22,\x22e'+'aton.mi.us'+'\x22,\x22gen.mi.'+'us\x22,\x22mus.m'+'i.us\x22,\x22tec'+'.mi.us\x22,\x22w'+'ashtenaw.m'+'i.us\x22,\x22uy\x22'+',\x22com.uy\x22,'+'\x22edu.uy\x22,\x22'+'gub.uy\x22,\x22m'+'il.uy\x22,\x22ne'+'t.uy\x22,\x22org'+'.uy\x22,\x22uz\x22,'+'\x22co.uz\x22,\x22c'+'om.uz\x22,\x22ne'+'t.uz\x22,\x22org'+'.uz\x22,\x22va\x22,'+'\x22vc\x22,\x22com.'+'vc\x22,\x22net.v'+'c\x22,\x22org.vc'+'\x22,\x22gov.vc\x22'+',\x22mil.vc\x22,'+'\x22edu.vc\x22,\x22'+'ve\x22,\x22arts.'+'ve\x22,\x22co.ve'+'\x22,\x22com.ve\x22'+',\x22e12.ve\x22,'+'\x22edu.ve\x22,\x22'+'firm.ve\x22,\x22'+'gob.ve\x22,\x22g'+'ov.ve\x22,\x22in'+'fo.ve\x22,\x22in'+'t.ve\x22,\x22mil'+'.ve\x22,\x22net.'+'ve\x22,\x22org.v'+'e\x22,\x22rec.ve'+'\x22,\x22store.v'+'e\x22,\x22tec.ve'+'\x22,\x22web.ve\x22'+',\x22vg\x22,\x22vi\x22'+',\x22co.vi\x22,\x22')+('com.vi\x22,\x22k'+'12.vi\x22,\x22ne'+'t.vi\x22,\x22org'+'.vi\x22,\x22vn\x22,'+'\x22com.vn\x22,\x22'+'net.vn\x22,\x22o'+'rg.vn\x22,\x22ed'+'u.vn\x22,\x22gov'+'.vn\x22,\x22int.'+'vn\x22,\x22ac.vn'+'\x22,\x22biz.vn\x22'+',\x22info.vn\x22'+',\x22name.vn\x22'+',\x22pro.vn\x22,'+'\x22health.vn'+'\x22,\x22vu\x22,\x22co'+'m.vu\x22,\x22edu'+'.vu\x22,\x22net.'+'vu\x22,\x22org.v'+'u\x22,\x22wf\x22,\x22w'+'s\x22,\x22com.ws'+'\x22,\x22net.ws\x22'+',\x22org.ws\x22,'+'\x22gov.ws\x22,\x22'+'edu.ws\x22,\x22y'+'t\x22,\x22Ų§Ł…Ų§Ų±Ų§ŲŖ'+'\x22,\x22Õ°Õ”Õµ\x22,\x22ব'+'াংলা\x22,\x22бг\x22'+',\x22бел\x22,\x22中国'+'\x22,\x22äø­åœ‹\x22,\x22Ų§Ł„'+'Ų¬Ų²Ų§Ų¦Ų±\x22,\x22Ł…Ųµ'+'Ų±\x22,\x22ŠµŃŽ\x22,\x22ε'+'Ļ…\x22,\x22Ł…ŁˆŲ±ŁŠŲŖŲ§'+'Ł†ŁŠŲ§\x22,\x22įƒ’įƒ”\x22,'+'\x22ελ\x22,\x22香港\x22,'+'\x22å…¬åø.香港\x22,\x22ꕙ'+'育.香港\x22,\x22ę”æåŗœ.'+'香港\x22,\x22個人.香港'+'\x22,\x22網絔.香港\x22,'+'\x22組織.香港\x22,\x22ą²­'+'ಾರತ\x22,\x22ଭାରତ'+'\x22,\x22ভাৰত\x22,\x22'+'ą¤­ą¤¾ą¤°ą¤¤ą¤®ą„\x22,\x22भ'+'ą¤¾ą¤°ą„‹ą¤¤\x22,\x22Ś€Ų§Ų±'+'ŲŖ\x22,\x22ą“­ą“¾ą“°ą“¤ą“‚\x22'+',\x22भारत\x22,\x22ŲØ'+'Ų§Ų±ŲŖ\x22,\x22بھار'+'ŲŖ\x22,\x22ą°­ą°¾ą°°ą°¤ą±\x22'+',\x22ભારત\x22,\x22ਭ'+'ਾਰਤ\x22,\x22ভারত'+'\x22,\x22ą®‡ą®ØąÆą®¤ą®æą®Æą®¾'+'\x22,\x22Ų§ŪŒŲ±Ų§Ł†\x22,'+'\x22Ų§ŁŠŲ±Ų§Ł†\x22,\x22Ų¹'+'Ų±Ų§Ł‚\x22,\x22الار'+'دن\x22,\x22ķ•œźµ­\x22,\x22'+'қаз\x22,\x22ą¶½ą¶‚ą¶šą·'+'\x22,\x22ą®‡ą®²ą®™ąÆą®•ąÆˆ\x22'+',\x22المغرب\x22,'+'\x22мкГ\x22,\x22мон'+'\x22,\x22澳門\x22,\x22澳门'+'\x22,\x22Ł…Ł„ŁŠŲ³ŁŠŲ§\x22'+',\x22عمان\x22,\x22پ'+'اکستان\x22,\x22پ'+'Ų§ŁƒŲ³ŲŖŲ§Ł†\x22,\x22ف'+'Ł„Ų³Ų·ŁŠŁ†\x22,\x22ср'+'б\x22,\x22пр.срб'+'\x22,\x22орг.срб'+'\x22,\x22обр.срб'+'\x22,\x22оГ.срб\x22'+',\x22ŃƒŠæŃ€.срб\x22'+',\x22ак.срб\x22,'+'\x22рф\x22,\x22قطر\x22'+',\x22Ų§Ł„Ų³Ų¹ŁˆŲÆŁŠŲ©'+'\x22,\x22Ų§Ł„Ų³Ų¹ŁˆŲÆŪŒ'+'Ų©\x22,\x22Ų§Ł„Ų³Ų¹ŁˆŲÆ'+'یۃ\x22,\x22Ų§Ł„Ų³Ų¹Łˆ'+'ŲÆŁŠŁ‡\x22,\x22سودا'+'ن\x22,\x22ę–°åŠ å”\x22,\x22'+'ą®šą®æą®™ąÆą®•ą®ŖąÆą®ŖąÆ‚ą®°'+'ąÆ\x22,\x22سورية\x22'+',\x22سوريا\x22,\x22'+'ไทย\x22,\x22ศึกษ'+'ąø².ไทย\x22,\x22ธุ'+'รกณจ.ไทย\x22,'+'\x22รัฐบาค.ไท'+'ąø¢\x22,\x22ทหาร.ไ'+'ąø—ąø¢\x22,\x22เน็ต.'+'ไทย\x22,\x22ąø­ąø‡ąø„ą¹Œ'+'กร.ไทย\x22,\x22ŲŖ'+'ŁˆŁ†Ų³\x22,\x22å°ē£\x22,'+'\x22å°ę¹¾\x22,\x22臺灣\x22,'+'\x22ŃƒŠŗŃ€\x22,\x22Ų§Ł„ŁŠ'+'من\x22,\x22xxx\x22,'+'\x22*.ye\x22,\x22ac'+'.za\x22,\x22agri'+'c.za\x22,\x22alt'+'.za\x22,\x22co.z'+'a\x22,\x22edu.za'+'\x22,\x22gov.za\x22'+',\x22grondar.')+('za\x22,\x22law.z'+'a\x22,\x22mil.za'+'\x22,\x22net.za\x22'+',\x22ngo.za\x22,'+'\x22nic.za\x22,\x22'+'nis.za\x22,\x22n'+'om.za\x22,\x22or'+'g.za\x22,\x22sch'+'ool.za\x22,\x22t'+'m.za\x22,\x22web'+'.za\x22,\x22zm\x22,'+'\x22ac.zm\x22,\x22b'+'iz.zm\x22,\x22co'+'.zm\x22,\x22com.'+'zm\x22,\x22edu.z'+'m\x22,\x22gov.zm'+'\x22,\x22info.zm'+'\x22,\x22mil.zm\x22'+',\x22net.zm\x22,'+'\x22org.zm\x22,\x22'+'sch.zm\x22,\x22z'+'w\x22,\x22ac.zw\x22'+',\x22co.zw\x22,\x22'+'gov.zw\x22,\x22m'+'il.zw\x22,\x22or'+'g.zw\x22,\x22aaa'+'\x22,\x22aarp\x22,\x22'+'abarth\x22,\x22a'+'bb\x22,\x22abbot'+'t\x22,\x22abbvie'+'\x22,\x22abc\x22,\x22a'+'ble\x22,\x22abog'+'ado\x22,\x22abud'+'habi\x22,\x22aca'+'demy\x22,\x22acc'+'enture\x22,\x22a'+'ccountant\x22'+',\x22accounta'+'nts\x22,\x22aco\x22'+',\x22actor\x22,\x22'+'adac\x22,\x22ads'+'\x22,\x22adult\x22,'+'\x22aeg\x22,\x22aet'+'na\x22,\x22afami'+'lycompany\x22'+',\x22afl\x22,\x22af'+'rica\x22,\x22aga'+'khan\x22,\x22age'+'ncy\x22,\x22aig\x22'+',\x22aigo\x22,\x22a'+'irbus\x22,\x22ai'+'rforce\x22,\x22a'+'irtel\x22,\x22ak'+'dn\x22,\x22alfar'+'omeo\x22,\x22ali'+'baba\x22,\x22ali'+'pay\x22,\x22allf'+'inanz\x22,\x22al'+'lstate\x22,\x22a'+'lly\x22,\x22alsa'+'ce\x22,\x22alsto'+'m\x22,\x22amazon'+'\x22,\x22america'+'nexpress\x22,'+'\x22americanf'+'amily\x22,\x22am'+'ex\x22,\x22amfam'+'\x22,\x22amica\x22,'+'\x22amsterdam'+'\x22,\x22analyti'+'cs\x22,\x22andro'+'id\x22,\x22anqua'+'n\x22,\x22anz\x22,\x22'+'aol\x22,\x22apar'+'tments\x22,\x22a'+'pp\x22,\x22apple'+'\x22,\x22aquarel'+'le\x22,\x22arab\x22'+',\x22aramco\x22,'+'\x22archi\x22,\x22a'+'rmy\x22,\x22art\x22'+',\x22arte\x22,\x22a'+'sda\x22,\x22asso'+'ciates\x22,\x22a'+'thleta\x22,\x22a'+'ttorney\x22,\x22'+'auction\x22,\x22'+'audi\x22,\x22aud'+'ible\x22,\x22aud'+'io\x22,\x22auspo'+'st\x22,\x22autho'+'r\x22,\x22auto\x22,'+'\x22autos\x22,\x22a'+'vianca\x22,\x22a'+'ws\x22,\x22axa\x22,'+'\x22azure\x22,\x22b'+'aby\x22,\x22baid'+'u\x22,\x22baname'+'x\x22,\x22banana'+'republic\x22,')+('\x22band\x22,\x22ba'+'nk\x22,\x22bar\x22,'+'\x22barcelona'+'\x22,\x22barclay'+'card\x22,\x22bar'+'clays\x22,\x22ba'+'refoot\x22,\x22b'+'argains\x22,\x22'+'baseball\x22,'+'\x22basketbal'+'l\x22,\x22bauhau'+'s\x22,\x22bayern'+'\x22,\x22bbc\x22,\x22b'+'bt\x22,\x22bbva\x22'+',\x22bcg\x22,\x22bc'+'n\x22,\x22beats\x22'+',\x22beauty\x22,'+'\x22beer\x22,\x22be'+'ntley\x22,\x22be'+'rlin\x22,\x22bes'+'t\x22,\x22bestbu'+'y\x22,\x22bet\x22,\x22'+'bharti\x22,\x22b'+'ible\x22,\x22bid'+'\x22,\x22bike\x22,\x22'+'bing\x22,\x22bin'+'go\x22,\x22bio\x22,'+'\x22black\x22,\x22b'+'lackfriday'+'\x22,\x22blockbu'+'ster\x22,\x22blo'+'g\x22,\x22bloomb'+'erg\x22,\x22blue'+'\x22,\x22bms\x22,\x22b'+'mw\x22,\x22bnppa'+'ribas\x22,\x22bo'+'ats\x22,\x22boeh'+'ringer\x22,\x22b'+'ofa\x22,\x22bom\x22'+',\x22bond\x22,\x22b'+'oo\x22,\x22book\x22'+',\x22booking\x22'+',\x22bosch\x22,\x22'+'bostik\x22,\x22b'+'oston\x22,\x22bo'+'t\x22,\x22boutiq'+'ue\x22,\x22box\x22,'+'\x22bradesco\x22'+',\x22bridgest'+'one\x22,\x22broa'+'dway\x22,\x22bro'+'ker\x22,\x22brot'+'her\x22,\x22brus'+'sels\x22,\x22bud'+'apest\x22,\x22bu'+'gatti\x22,\x22bu'+'ild\x22,\x22buil'+'ders\x22,\x22bus'+'iness\x22,\x22bu'+'y\x22,\x22buzz\x22,'+'\x22bzh\x22,\x22cab'+'\x22,\x22cafe\x22,\x22'+'cal\x22,\x22call'+'\x22,\x22calvink'+'lein\x22,\x22cam'+'\x22,\x22camera\x22'+',\x22camp\x22,\x22c'+'ancerresea'+'rch\x22,\x22cano'+'n\x22,\x22capeto'+'wn\x22,\x22capit'+'al\x22,\x22capit'+'alone\x22,\x22ca'+'r\x22,\x22carava'+'n\x22,\x22cards\x22'+',\x22care\x22,\x22c'+'areer\x22,\x22ca'+'reers\x22,\x22ca'+'rs\x22,\x22casa\x22'+',\x22case\x22,\x22c'+'aseih\x22,\x22ca'+'sh\x22,\x22casin'+'o\x22,\x22cateri'+'ng\x22,\x22catho'+'lic\x22,\x22cba\x22'+',\x22cbn\x22,\x22cb'+'re\x22,\x22cbs\x22,'+'\x22ceb\x22,\x22cen'+'ter\x22,\x22ceo\x22'+',\x22cern\x22,\x22c'+'fa\x22,\x22cfd\x22,'+'\x22chanel\x22,\x22'+'channel\x22,\x22'+'charity\x22,\x22'+'chase\x22,\x22ch'+'at\x22,\x22cheap'+'\x22,\x22chintai'+'\x22,\x22christm'+'as\x22,\x22chrom'+'e\x22,\x22church')+('\x22,\x22ciprian'+'i\x22,\x22circle'+'\x22,\x22cisco\x22,'+'\x22citadel\x22,'+'\x22citi\x22,\x22ci'+'tic\x22,\x22city'+'\x22,\x22cityeat'+'s\x22,\x22claims'+'\x22,\x22cleanin'+'g\x22,\x22click\x22'+',\x22clinic\x22,'+'\x22clinique\x22'+',\x22clothing'+'\x22,\x22cloud\x22,'+'\x22club\x22,\x22cl'+'ubmed\x22,\x22co'+'ach\x22,\x22code'+'s\x22,\x22coffee'+'\x22,\x22college'+'\x22,\x22cologne'+'\x22,\x22comcast'+'\x22,\x22commban'+'k\x22,\x22commun'+'ity\x22,\x22comp'+'any\x22,\x22comp'+'are\x22,\x22comp'+'uter\x22,\x22com'+'sec\x22,\x22cond'+'os\x22,\x22const'+'ruction\x22,\x22'+'consulting'+'\x22,\x22contact'+'\x22,\x22contrac'+'tors\x22,\x22coo'+'king\x22,\x22coo'+'kingchanne'+'l\x22,\x22cool\x22,'+'\x22corsica\x22,'+'\x22country\x22,'+'\x22coupon\x22,\x22'+'coupons\x22,\x22'+'courses\x22,\x22'+'cpa\x22,\x22cred'+'it\x22,\x22credi'+'tcard\x22,\x22cr'+'editunion\x22'+',\x22cricket\x22'+',\x22crown\x22,\x22'+'crs\x22,\x22crui'+'se\x22,\x22cruis'+'es\x22,\x22csc\x22,'+'\x22cuisinell'+'a\x22,\x22cymru\x22'+',\x22cyou\x22,\x22d'+'abur\x22,\x22dad'+'\x22,\x22dance\x22,'+'\x22data\x22,\x22da'+'te\x22,\x22datin'+'g\x22,\x22datsun'+'\x22,\x22day\x22,\x22d'+'clk\x22,\x22dds\x22'+',\x22deal\x22,\x22d'+'ealer\x22,\x22de'+'als\x22,\x22degr'+'ee\x22,\x22deliv'+'ery\x22,\x22dell'+'\x22,\x22deloitt'+'e\x22,\x22delta\x22'+',\x22democrat'+'\x22,\x22dental\x22'+',\x22dentist\x22'+',\x22desi\x22,\x22d'+'esign\x22,\x22de'+'v\x22,\x22dhl\x22,\x22'+'diamonds\x22,'+'\x22diet\x22,\x22di'+'gital\x22,\x22di'+'rect\x22,\x22dir'+'ectory\x22,\x22d'+'iscount\x22,\x22'+'discover\x22,'+'\x22dish\x22,\x22di'+'y\x22,\x22dnp\x22,\x22'+'docs\x22,\x22doc'+'tor\x22,\x22dog\x22'+',\x22domains\x22'+',\x22dot\x22,\x22do'+'wnload\x22,\x22d'+'rive\x22,\x22dtv'+'\x22,\x22dubai\x22,'+'\x22duck\x22,\x22du'+'nlop\x22,\x22dup'+'ont\x22,\x22durb'+'an\x22,\x22dvag\x22'+',\x22dvr\x22,\x22ea'+'rth\x22,\x22eat\x22'+',\x22eco\x22,\x22ed'+'eka\x22,\x22educ'+'ation\x22,\x22em'+'ail\x22,\x22emer')+('ck\x22,\x22energ'+'y\x22,\x22engine'+'er\x22,\x22engin'+'eering\x22,\x22e'+'nterprises'+'\x22,\x22epson\x22,'+'\x22equipment'+'\x22,\x22ericsso'+'n\x22,\x22erni\x22,'+'\x22esq\x22,\x22est'+'ate\x22,\x22esur'+'ance\x22,\x22eti'+'salat\x22,\x22eu'+'rovision\x22,'+'\x22eus\x22,\x22eve'+'nts\x22,\x22exch'+'ange\x22,\x22exp'+'ert\x22,\x22expo'+'sed\x22,\x22expr'+'ess\x22,\x22extr'+'aspace\x22,\x22f'+'age\x22,\x22fail'+'\x22,\x22fairwin'+'ds\x22,\x22faith'+'\x22,\x22family\x22'+',\x22fan\x22,\x22fa'+'ns\x22,\x22farm\x22'+',\x22farmers\x22'+',\x22fashion\x22'+',\x22fast\x22,\x22f'+'edex\x22,\x22fee'+'dback\x22,\x22fe'+'rrari\x22,\x22fe'+'rrero\x22,\x22fi'+'at\x22,\x22fidel'+'ity\x22,\x22fido'+'\x22,\x22film\x22,\x22'+'final\x22,\x22fi'+'nance\x22,\x22fi'+'nancial\x22,\x22'+'fire\x22,\x22fir'+'estone\x22,\x22f'+'irmdale\x22,\x22'+'fish\x22,\x22fis'+'hing\x22,\x22fit'+'\x22,\x22fitness'+'\x22,\x22flickr\x22'+',\x22flights\x22'+',\x22flir\x22,\x22f'+'lorist\x22,\x22f'+'lowers\x22,\x22f'+'ly\x22,\x22foo\x22,'+'\x22food\x22,\x22fo'+'odnetwork\x22'+',\x22football'+'\x22,\x22ford\x22,\x22'+'forex\x22,\x22fo'+'rsale\x22,\x22fo'+'rum\x22,\x22foun'+'dation\x22,\x22f'+'ox\x22,\x22free\x22'+',\x22freseniu'+'s\x22,\x22frl\x22,\x22'+'frogans\x22,\x22'+'frontdoor\x22'+',\x22frontier'+'\x22,\x22ftr\x22,\x22f'+'ujitsu\x22,\x22f'+'ujixerox\x22,'+'\x22fun\x22,\x22fun'+'d\x22,\x22furnit'+'ure\x22,\x22futb'+'ol\x22,\x22fyi\x22,'+'\x22gal\x22,\x22gal'+'lery\x22,\x22gal'+'lo\x22,\x22gallu'+'p\x22,\x22game\x22,'+'\x22games\x22,\x22g'+'ap\x22,\x22garde'+'n\x22,\x22gay\x22,\x22'+'gbiz\x22,\x22gdn'+'\x22,\x22gea\x22,\x22g'+'ent\x22,\x22gent'+'ing\x22,\x22geor'+'ge\x22,\x22ggee\x22'+',\x22gift\x22,\x22g'+'ifts\x22,\x22giv'+'es\x22,\x22givin'+'g\x22,\x22glade\x22'+',\x22glass\x22,\x22'+'gle\x22,\x22glob'+'al\x22,\x22globo'+'\x22,\x22gmail\x22,'+'\x22gmbh\x22,\x22gm'+'o\x22,\x22gmx\x22,\x22'+'godaddy\x22,\x22'+'gold\x22,\x22gol'+'dpoint\x22,\x22g'+'olf\x22,\x22goo\x22'+',\x22goodyear')+('\x22,\x22goog\x22,\x22'+'google\x22,\x22g'+'op\x22,\x22got\x22,'+'\x22grainger\x22'+',\x22graphics'+'\x22,\x22gratis\x22'+',\x22green\x22,\x22'+'gripe\x22,\x22gr'+'ocery\x22,\x22gr'+'oup\x22,\x22guar'+'dian\x22,\x22guc'+'ci\x22,\x22guge\x22'+',\x22guide\x22,\x22'+'guitars\x22,\x22'+'guru\x22,\x22hai'+'r\x22,\x22hambur'+'g\x22,\x22hangou'+'t\x22,\x22haus\x22,'+'\x22hbo\x22,\x22hdf'+'c\x22,\x22hdfcba'+'nk\x22,\x22healt'+'h\x22,\x22health'+'care\x22,\x22hel'+'p\x22,\x22helsin'+'ki\x22,\x22here\x22'+',\x22hermes\x22,'+'\x22hgtv\x22,\x22hi'+'phop\x22,\x22his'+'amitsu\x22,\x22h'+'itachi\x22,\x22h'+'iv\x22,\x22hkt\x22,'+'\x22hockey\x22,\x22'+'holdings\x22,'+'\x22holiday\x22,'+'\x22homedepot'+'\x22,\x22homegoo'+'ds\x22,\x22homes'+'\x22,\x22homesen'+'se\x22,\x22honda'+'\x22,\x22horse\x22,'+'\x22hospital\x22'+',\x22host\x22,\x22h'+'osting\x22,\x22h'+'ot\x22,\x22hotel'+'es\x22,\x22hotel'+'s\x22,\x22hotmai'+'l\x22,\x22house\x22'+',\x22how\x22,\x22hs'+'bc\x22,\x22hughe'+'s\x22,\x22hyatt\x22'+',\x22hyundai\x22'+',\x22ibm\x22,\x22ic'+'bc\x22,\x22ice\x22,'+'\x22icu\x22,\x22iee'+'e\x22,\x22ifm\x22,\x22'+'ikano\x22,\x22im'+'amat\x22,\x22imd'+'b\x22,\x22immo\x22,'+'\x22immobilie'+'n\x22,\x22inc\x22,\x22'+'industries'+'\x22,\x22infinit'+'i\x22,\x22ing\x22,\x22'+'ink\x22,\x22inst'+'itute\x22,\x22in'+'surance\x22,\x22'+'insure\x22,\x22i'+'ntel\x22,\x22int'+'ernational'+'\x22,\x22intuit\x22'+',\x22investme'+'nts\x22,\x22ipir'+'anga\x22,\x22iri'+'sh\x22,\x22ismai'+'li\x22,\x22ist\x22,'+'\x22istanbul\x22'+',\x22itau\x22,\x22i'+'tv\x22,\x22iveco'+'\x22,\x22jaguar\x22'+',\x22java\x22,\x22j'+'cb\x22,\x22jcp\x22,'+'\x22jeep\x22,\x22je'+'tzt\x22,\x22jewe'+'lry\x22,\x22jio\x22'+',\x22jll\x22,\x22jm'+'p\x22,\x22jnj\x22,\x22'+'joburg\x22,\x22j'+'ot\x22,\x22joy\x22,'+'\x22jpmorgan\x22'+',\x22jprs\x22,\x22j'+'uegos\x22,\x22ju'+'niper\x22,\x22ka'+'ufen\x22,\x22kdd'+'i\x22,\x22kerryh'+'otels\x22,\x22ke'+'rrylogisti'+'cs\x22,\x22kerry'+'properties'+'\x22,\x22kfh\x22,\x22k'+'ia\x22,\x22kim\x22,')+('\x22kinder\x22,\x22'+'kindle\x22,\x22k'+'itchen\x22,\x22k'+'iwi\x22,\x22koel'+'n\x22,\x22komats'+'u\x22,\x22kosher'+'\x22,\x22kpmg\x22,\x22'+'kpn\x22,\x22krd\x22'+',\x22kred\x22,\x22k'+'uokgroup\x22,'+'\x22kyoto\x22,\x22l'+'acaixa\x22,\x22l'+'amborghini'+'\x22,\x22lamer\x22,'+'\x22lancaster'+'\x22,\x22lancia\x22'+',\x22land\x22,\x22l'+'androver\x22,'+'\x22lanxess\x22,'+'\x22lasalle\x22,'+'\x22lat\x22,\x22lat'+'ino\x22,\x22latr'+'obe\x22,\x22law\x22'+',\x22lawyer\x22,'+'\x22lds\x22,\x22lea'+'se\x22,\x22lecle'+'rc\x22,\x22lefra'+'k\x22,\x22legal\x22'+',\x22lego\x22,\x22l'+'exus\x22,\x22lgb'+'t\x22,\x22lidl\x22,'+'\x22life\x22,\x22li'+'feinsuranc'+'e\x22,\x22lifest'+'yle\x22,\x22ligh'+'ting\x22,\x22lik'+'e\x22,\x22lilly\x22'+',\x22limited\x22'+',\x22limo\x22,\x22l'+'incoln\x22,\x22l'+'inde\x22,\x22lin'+'k\x22,\x22lipsy\x22'+',\x22live\x22,\x22l'+'iving\x22,\x22li'+'xil\x22,\x22llc\x22'+',\x22llp\x22,\x22lo'+'an\x22,\x22loans'+'\x22,\x22locker\x22'+',\x22locus\x22,\x22'+'loft\x22,\x22lol'+'\x22,\x22london\x22'+',\x22lotte\x22,\x22'+'lotto\x22,\x22lo'+'ve\x22,\x22lpl\x22,'+'\x22lplfinanc'+'ial\x22,\x22ltd\x22'+',\x22ltda\x22,\x22l'+'undbeck\x22,\x22'+'lupin\x22,\x22lu'+'xe\x22,\x22luxur'+'y\x22,\x22macys\x22'+',\x22madrid\x22,'+'\x22maif\x22,\x22ma'+'ison\x22,\x22mak'+'eup\x22,\x22man\x22'+',\x22manageme'+'nt\x22,\x22mango'+'\x22,\x22map\x22,\x22m'+'arket\x22,\x22ma'+'rketing\x22,\x22'+'markets\x22,\x22'+'marriott\x22,'+'\x22marshalls'+'\x22,\x22maserat'+'i\x22,\x22mattel'+'\x22,\x22mba\x22,\x22m'+'ckinsey\x22,\x22'+'med\x22,\x22medi'+'a\x22,\x22meet\x22,'+'\x22melbourne'+'\x22,\x22meme\x22,\x22'+'memorial\x22,'+'\x22men\x22,\x22men'+'u\x22,\x22merckm'+'sd\x22,\x22metli'+'fe\x22,\x22miami'+'\x22,\x22microso'+'ft\x22,\x22mini\x22'+',\x22mint\x22,\x22m'+'it\x22,\x22mitsu'+'bishi\x22,\x22ml'+'b\x22,\x22mls\x22,\x22'+'mma\x22,\x22mobi'+'le\x22,\x22moda\x22'+',\x22moe\x22,\x22mo'+'i\x22,\x22mom\x22,\x22'+'monash\x22,\x22m'+'oney\x22,\x22mon'+'ster\x22,\x22mor'+'mon\x22,\x22mort')+('gage\x22,\x22mos'+'cow\x22,\x22moto'+'\x22,\x22motorcy'+'cles\x22,\x22mov'+'\x22,\x22movie\x22,'+'\x22msd\x22,\x22mtn'+'\x22,\x22mtr\x22,\x22m'+'utual\x22,\x22na'+'b\x22,\x22nadex\x22'+',\x22nagoya\x22,'+'\x22nationwid'+'e\x22,\x22natura'+'\x22,\x22navy\x22,\x22'+'nba\x22,\x22nec\x22'+',\x22netbank\x22'+',\x22netflix\x22'+',\x22network\x22'+',\x22neustar\x22'+',\x22new\x22,\x22ne'+'wholland\x22,'+'\x22news\x22,\x22ne'+'xt\x22,\x22nextd'+'irect\x22,\x22ne'+'xus\x22,\x22nfl\x22'+',\x22ngo\x22,\x22nh'+'k\x22,\x22nico\x22,'+'\x22nike\x22,\x22ni'+'kon\x22,\x22ninj'+'a\x22,\x22nissan'+'\x22,\x22nissay\x22'+',\x22nokia\x22,\x22'+'northweste'+'rnmutual\x22,'+'\x22norton\x22,\x22'+'now\x22,\x22nowr'+'uz\x22,\x22nowtv'+'\x22,\x22nra\x22,\x22n'+'rw\x22,\x22ntt\x22,'+'\x22nyc\x22,\x22obi'+'\x22,\x22observe'+'r\x22,\x22off\x22,\x22'+'office\x22,\x22o'+'kinawa\x22,\x22o'+'layan\x22,\x22ol'+'ayangroup\x22'+',\x22oldnavy\x22'+',\x22ollo\x22,\x22o'+'mega\x22,\x22one'+'\x22,\x22ong\x22,\x22o'+'nl\x22,\x22onlin'+'e\x22,\x22onyour'+'side\x22,\x22ooo'+'\x22,\x22open\x22,\x22'+'oracle\x22,\x22o'+'range\x22,\x22or'+'ganic\x22,\x22or'+'igins\x22,\x22os'+'aka\x22,\x22otsu'+'ka\x22,\x22ott\x22,'+'\x22ovh\x22,\x22pag'+'e\x22,\x22panaso'+'nic\x22,\x22pari'+'s\x22,\x22pars\x22,'+'\x22partners\x22'+',\x22parts\x22,\x22'+'party\x22,\x22pa'+'ssagens\x22,\x22'+'pay\x22,\x22pccw'+'\x22,\x22pet\x22,\x22p'+'fizer\x22,\x22ph'+'armacy\x22,\x22p'+'hd\x22,\x22phili'+'ps\x22,\x22phone'+'\x22,\x22photo\x22,'+'\x22photograp'+'hy\x22,\x22photo'+'s\x22,\x22physio'+'\x22,\x22pics\x22,\x22'+'pictet\x22,\x22p'+'ictures\x22,\x22'+'pid\x22,\x22pin\x22'+',\x22ping\x22,\x22p'+'ink\x22,\x22pion'+'eer\x22,\x22pizz'+'a\x22,\x22place\x22'+',\x22play\x22,\x22p'+'laystation'+'\x22,\x22plumbin'+'g\x22,\x22plus\x22,'+'\x22pnc\x22,\x22poh'+'l\x22,\x22poker\x22'+',\x22politie\x22'+',\x22porn\x22,\x22p'+'ramerica\x22,'+'\x22praxi\x22,\x22p'+'ress\x22,\x22pri'+'me\x22,\x22prod\x22'+',\x22producti'+'ons\x22,\x22prof'+'\x22,\x22progres')+('sive\x22,\x22pro'+'mo\x22,\x22prope'+'rties\x22,\x22pr'+'operty\x22,\x22p'+'rotection\x22'+',\x22pru\x22,\x22pr'+'udential\x22,'+'\x22pub\x22,\x22pwc'+'\x22,\x22qpon\x22,\x22'+'quebec\x22,\x22q'+'uest\x22,\x22qvc'+'\x22,\x22racing\x22'+',\x22radio\x22,\x22'+'raid\x22,\x22rea'+'d\x22,\x22reales'+'tate\x22,\x22rea'+'ltor\x22,\x22rea'+'lty\x22,\x22reci'+'pes\x22,\x22red\x22'+',\x22redstone'+'\x22,\x22redumbr'+'ella\x22,\x22reh'+'ab\x22,\x22reise'+'\x22,\x22reisen\x22'+',\x22reit\x22,\x22r'+'eliance\x22,\x22'+'ren\x22,\x22rent'+'\x22,\x22rentals'+'\x22,\x22repair\x22'+',\x22report\x22,'+'\x22republica'+'n\x22,\x22rest\x22,'+'\x22restauran'+'t\x22,\x22review'+'\x22,\x22reviews'+'\x22,\x22rexroth'+'\x22,\x22rich\x22,\x22'+'richardli\x22'+',\x22ricoh\x22,\x22'+'rightathom'+'e\x22,\x22ril\x22,\x22'+'rio\x22,\x22rip\x22'+',\x22rmit\x22,\x22r'+'ocher\x22,\x22ro'+'cks\x22,\x22rode'+'o\x22,\x22rogers'+'\x22,\x22room\x22,\x22'+'rsvp\x22,\x22rug'+'by\x22,\x22ruhr\x22'+',\x22run\x22,\x22rw'+'e\x22,\x22ryukyu'+'\x22,\x22saarlan'+'d\x22,\x22safe\x22,'+'\x22safety\x22,\x22'+'sakura\x22,\x22s'+'ale\x22,\x22salo'+'n\x22,\x22samscl'+'ub\x22,\x22samsu'+'ng\x22,\x22sandv'+'ik\x22,\x22sandv'+'ikcoromant'+'\x22,\x22sanofi\x22'+',\x22sap\x22,\x22sa'+'rl\x22,\x22sas\x22,'+'\x22save\x22,\x22sa'+'xo\x22,\x22sbi\x22,'+'\x22sbs\x22,\x22sca'+'\x22,\x22scb\x22,\x22s'+'chaeffler\x22'+',\x22schmidt\x22'+',\x22scholars'+'hips\x22,\x22sch'+'ool\x22,\x22schu'+'le\x22,\x22schwa'+'rz\x22,\x22scien'+'ce\x22,\x22scjoh'+'nson\x22,\x22sco'+'r\x22,\x22scot\x22,'+'\x22search\x22,\x22'+'seat\x22,\x22sec'+'ure\x22,\x22secu'+'rity\x22,\x22see'+'k\x22,\x22select'+'\x22,\x22sener\x22,'+'\x22services\x22'+',\x22ses\x22,\x22se'+'ven\x22,\x22sew\x22'+',\x22sex\x22,\x22se'+'xy\x22,\x22sfr\x22,'+'\x22shangrila'+'\x22,\x22sharp\x22,'+'\x22shaw\x22,\x22sh'+'ell\x22,\x22shia'+'\x22,\x22shiksha'+'\x22,\x22shoes\x22,'+'\x22shop\x22,\x22sh'+'opping\x22,\x22s'+'houji\x22,\x22sh'+'ow\x22,\x22showt'+'ime\x22,\x22shri')+('ram\x22,\x22silk'+'\x22,\x22sina\x22,\x22'+'singles\x22,\x22'+'site\x22,\x22ski'+'\x22,\x22skin\x22,\x22'+'sky\x22,\x22skyp'+'e\x22,\x22sling\x22'+',\x22smart\x22,\x22'+'smile\x22,\x22sn'+'cf\x22,\x22socce'+'r\x22,\x22social'+'\x22,\x22softban'+'k\x22,\x22softwa'+'re\x22,\x22sohu\x22'+',\x22solar\x22,\x22'+'solutions\x22'+',\x22song\x22,\x22s'+'ony\x22,\x22soy\x22'+',\x22spa\x22,\x22sp'+'ace\x22,\x22spor'+'t\x22,\x22spot\x22,'+'\x22spreadbet'+'ting\x22,\x22srl'+'\x22,\x22stada\x22,'+'\x22staples\x22,'+'\x22star\x22,\x22st'+'atebank\x22,\x22'+'statefarm\x22'+',\x22stc\x22,\x22st'+'cgroup\x22,\x22s'+'tockholm\x22,'+'\x22storage\x22,'+'\x22store\x22,\x22s'+'tream\x22,\x22st'+'udio\x22,\x22stu'+'dy\x22,\x22style'+'\x22,\x22sucks\x22,'+'\x22supplies\x22'+',\x22supply\x22,'+'\x22support\x22,'+'\x22surf\x22,\x22su'+'rgery\x22,\x22su'+'zuki\x22,\x22swa'+'tch\x22,\x22swif'+'tcover\x22,\x22s'+'wiss\x22,\x22syd'+'ney\x22,\x22syma'+'ntec\x22,\x22sys'+'tems\x22,\x22tab'+'\x22,\x22taipei\x22'+',\x22talk\x22,\x22t'+'aobao\x22,\x22ta'+'rget\x22,\x22tat'+'amotors\x22,\x22'+'tatar\x22,\x22ta'+'ttoo\x22,\x22tax'+'\x22,\x22taxi\x22,\x22'+'tci\x22,\x22tdk\x22'+',\x22team\x22,\x22t'+'ech\x22,\x22tech'+'nology\x22,\x22t'+'emasek\x22,\x22t'+'ennis\x22,\x22te'+'va\x22,\x22thd\x22,'+'\x22theater\x22,'+'\x22theatre\x22,'+'\x22tiaa\x22,\x22ti'+'ckets\x22,\x22ti'+'enda\x22,\x22tif'+'fany\x22,\x22tip'+'s\x22,\x22tires\x22'+',\x22tirol\x22,\x22'+'tjmaxx\x22,\x22t'+'jx\x22,\x22tkmax'+'x\x22,\x22tmall\x22'+',\x22today\x22,\x22'+'tokyo\x22,\x22to'+'ols\x22,\x22top\x22'+',\x22toray\x22,\x22'+'toshiba\x22,\x22'+'total\x22,\x22to'+'urs\x22,\x22town'+'\x22,\x22toyota\x22'+',\x22toys\x22,\x22t'+'rade\x22,\x22tra'+'ding\x22,\x22tra'+'ining\x22,\x22tr'+'avel\x22,\x22tra'+'velchannel'+'\x22,\x22travele'+'rs\x22,\x22trave'+'lersinsura'+'nce\x22,\x22trus'+'t\x22,\x22trv\x22,\x22'+'tube\x22,\x22tui'+'\x22,\x22tunes\x22,'+'\x22tushu\x22,\x22t'+'vs\x22,\x22ubank'+'\x22,\x22ubs\x22,\x22u'+'nicom\x22,\x22un')+('iversity\x22,'+'\x22uno\x22,\x22uol'+'\x22,\x22ups\x22,\x22v'+'acations\x22,'+'\x22vana\x22,\x22va'+'nguard\x22,\x22v'+'egas\x22,\x22ven'+'tures\x22,\x22ve'+'risign\x22,\x22v'+'ersicherun'+'g\x22,\x22vet\x22,\x22'+'viajes\x22,\x22v'+'ideo\x22,\x22vig'+'\x22,\x22viking\x22'+',\x22villas\x22,'+'\x22vin\x22,\x22vip'+'\x22,\x22virgin\x22'+',\x22visa\x22,\x22v'+'ision\x22,\x22vi'+'va\x22,\x22vivo\x22'+',\x22vlaander'+'en\x22,\x22vodka'+'\x22,\x22volkswa'+'gen\x22,\x22volv'+'o\x22,\x22vote\x22,'+'\x22voting\x22,\x22'+'voto\x22,\x22voy'+'age\x22,\x22vuel'+'os\x22,\x22wales'+'\x22,\x22walmart'+'\x22,\x22walter\x22'+',\x22wang\x22,\x22w'+'anggou\x22,\x22w'+'atch\x22,\x22wat'+'ches\x22,\x22wea'+'ther\x22,\x22wea'+'therchanne'+'l\x22,\x22webcam'+'\x22,\x22weber\x22,'+'\x22website\x22,'+'\x22wed\x22,\x22wed'+'ding\x22,\x22wei'+'bo\x22,\x22weir\x22'+',\x22whoswho\x22'+',\x22wien\x22,\x22w'+'iki\x22,\x22will'+'iamhill\x22,\x22'+'win\x22,\x22wind'+'ows\x22,\x22wine'+'\x22,\x22winners'+'\x22,\x22wme\x22,\x22w'+'olterskluw'+'er\x22,\x22woods'+'ide\x22,\x22work'+'\x22,\x22works\x22,'+'\x22world\x22,\x22w'+'ow\x22,\x22wtc\x22,'+'\x22wtf\x22,\x22xbo'+'x\x22,\x22xerox\x22'+',\x22xfinity\x22'+',\x22xihuan\x22,'+'\x22xin\x22,\x22ą¤•ą„‰ą¤®'+'\x22,\x22ć‚»ćƒ¼ćƒ«\x22,\x22佛'+'å±±\x22,\x22ę…ˆå–„\x22,\x22集'+'团\x22,\x22在线\x22,\x22大'+'众汽车\x22,\x22ē‚¹ēœ‹\x22,'+'\x22ąø„ąø­ąø”\x22,\x22八卦\x22'+',\x22Ł…ŁˆŁ‚Ų¹\x22,\x22公'+'ē›Š\x22,\x22å…¬åø\x22,\x22香'+'ę ¼é‡Œę‹‰\x22,\x22网站\x22,'+'\x22移动\x22,\x22ęˆ‘ēˆ±ä½ \x22'+',\x22москва\x22,'+'\x22католик\x22,'+'\x22онлайн\x22,\x22'+'сайт\x22,\x22联通\x22'+',\x22קום\x22,\x22ę—¶å°š'+'\x22,\x22微博\x22,\x22귔马'+'é””\x22,\x22ćƒ•ć‚”ćƒƒć‚·ćƒ§ćƒ³'+'\x22,\x22орг\x22,\x22न'+'ą„‡ą¤Ÿ\x22,\x22ć‚¹ćƒˆć‚¢\x22,'+'\x22ć‚¢ćƒžć‚¾ćƒ³\x22,\x22삼성'+'\x22,\x22商标\x22,\x22商店'+'\x22,\x22商城\x22,\x22Ге'+'ти\x22,\x22ćƒć‚¤ćƒ³ćƒˆ\x22'+',\x22ę–°é—»\x22,\x22巄蔌\x22'+',\x22家電\x22,\x22ŁƒŁˆŁ…'+'\x22,\x22中文网\x22,\x22äø­'+'äæ”\x22,\x22娱乐\x22,\x22č°·'+'歌\x22,\x22é›»čØŠē›ˆē§‘\x22,'+'\x22蓭物\x22,\x22ć‚Æćƒ©ć‚¦ćƒ‰'+'\x22,\x22é€šč²©\x22,\x22网店'+'\x22,\x22संगठन\x22,'+'\x22餐厅\x22,\x22ē½‘ē»œ\x22,'+'\x22ком\x22,\x22äŗšé©¬é€Š'+'\x22,\x22诺基亚\x22,\x22食'+'品\x22,\x22é£žåˆ©ęµ¦\x22,\x22'+'手蔨\x22,\x22ę‰‹ęœŗ\x22,\x22'+'Ų§Ų±Ų§Ł…ŁƒŁˆ\x22,\x22Ų§'+'Ł„Ų¹Ł„ŁŠŲ§Ł†\x22,\x22Ų§'+'تصالات\x22,\x22ŲØ')+('Ų§Ų²Ų§Ų±\x22,\x22ابو'+'ظبي\x22,\x22كاثو'+'Ł„ŁŠŁƒ\x22,\x22همرا'+'ه\x22,\x22닷컓\x22,\x22政'+'府\x22,\x22ؓبكة\x22,'+'\x22بيتك\x22,\x22Ų¹Ų±'+'ŲØ\x22,\x22ęœŗęž„\x22,\x22组'+'ē»‡ęœŗęž„\x22,\x22偄康\x22,'+'\x22ꋛ聘\x22,\x22рус\x22'+',\x22ē å®\x22,\x22大拿\x22'+',\x22みんな\x22,\x22ć‚°ćƒ¼'+'ć‚°ćƒ«\x22,\x22äø–ē•Œ\x22,\x22'+'ę›øē±\x22,\x22ē½‘å€\x22,\x22'+'ė‹·ė„·\x22,\x22ć‚³ćƒ \x22,\x22'+'天主教\x22,\x22ęøøęˆ\x22,'+'\x22vermƶgens'+'berater\x22,\x22'+'vermƶgensb'+'eratung\x22,\x22'+'企业\x22,\x22俔息\x22,\x22'+'å˜‰é‡Œå¤§é…’åŗ—\x22,\x22嘉里'+'\x22,\x22广东\x22,\x22ę”æåŠ”'+'\x22,\x22xyz\x22,\x22y'+'achts\x22,\x22ya'+'hoo\x22,\x22yama'+'xun\x22,\x22yand'+'ex\x22,\x22yodob'+'ashi\x22,\x22yog'+'a\x22,\x22yokoha'+'ma\x22,\x22you\x22,'+'\x22youtube\x22,'+'\x22yun\x22,\x22zap'+'pos\x22,\x22zara'+'\x22,\x22zero\x22,\x22'+'zip\x22,\x22zone'+'\x22,\x22zuerich'+'\x22,\x22cc.ua\x22,'+'\x22inf.ua\x22,\x22'+'ltd.ua\x22,\x22a'+'dobeaemclo'+'ud.com\x22,\x22a'+'dobeaemclo'+'ud.net\x22,\x22*'+'.dev.adobe'+'aemcloud.c'+'om\x22,\x22beep.'+'pl\x22,\x22barsy'+'.ca\x22,\x22*.co'+'mpute.esta'+'te\x22,\x22*.alc'+'es.network'+'\x22,\x22altervi'+'sta.org\x22,\x22'+'alwaysdata'+'.net\x22,\x22clo'+'udfront.ne'+'t\x22,\x22*.comp'+'ute.amazon'+'aws.com\x22,\x22'+'*.compute-'+'1.amazonaw'+'s.com\x22,\x22*.'+'compute.am'+'azonaws.co'+'m.cn\x22,\x22us-'+'east-1.ama'+'zonaws.com'+'\x22,\x22cn-nort'+'h-1.eb.ama'+'zonaws.com'+'.cn\x22,\x22cn-n'+'orthwest-1'+'.eb.amazon'+'aws.com.cn'+'\x22,\x22elastic'+'beanstalk.'+'com\x22,\x22ap-n'+'ortheast-1'+'.elasticbe'+'anstalk.co'+'m\x22,\x22ap-nor'+'theast-2.e'+'lasticbean'+'stalk.com\x22'+',\x22ap-north'+'east-3.ela'+'sticbeanst'+'alk.com\x22,\x22'+'ap-south-1'+'.elasticbe'+'anstalk.co'+'m\x22,\x22ap-sou'+'theast-1.e'+'lasticbean'+'stalk.com\x22'+',\x22ap-south'+'east-2.ela'+'sticbeanst'+'alk.com\x22,\x22'+'ca-central')+('-1.elastic'+'beanstalk.'+'com\x22,\x22eu-c'+'entral-1.e'+'lasticbean'+'stalk.com\x22'+',\x22eu-west-'+'1.elasticb'+'eanstalk.c'+'om\x22,\x22eu-we'+'st-2.elast'+'icbeanstal'+'k.com\x22,\x22eu'+'-west-3.el'+'asticbeans'+'talk.com\x22,'+'\x22sa-east-1'+'.elasticbe'+'anstalk.co'+'m\x22,\x22us-eas'+'t-1.elasti'+'cbeanstalk'+'.com\x22,\x22us-'+'east-2.ela'+'sticbeanst'+'alk.com\x22,\x22'+'us-gov-wes'+'t-1.elasti'+'cbeanstalk'+'.com\x22,\x22us-'+'west-1.ela'+'sticbeanst'+'alk.com\x22,\x22'+'us-west-2.'+'elasticbea'+'nstalk.com'+'\x22,\x22*.elb.a'+'mazonaws.c'+'om\x22,\x22*.elb'+'.amazonaws'+'.com.cn\x22,\x22'+'s3.amazona'+'ws.com\x22,\x22s'+'3-ap-north'+'east-1.ama'+'zonaws.com'+'\x22,\x22s3-ap-n'+'ortheast-2'+'.amazonaws'+'.com\x22,\x22s3-'+'ap-south-1'+'.amazonaws'+'.com\x22,\x22s3-'+'ap-southea'+'st-1.amazo'+'naws.com\x22,'+'\x22s3-ap-sou'+'theast-2.a'+'mazonaws.c'+'om\x22,\x22s3-ca'+'-central-1'+'.amazonaws'+'.com\x22,\x22s3-'+'eu-central'+'-1.amazona'+'ws.com\x22,\x22s'+'3-eu-west-'+'1.amazonaw'+'s.com\x22,\x22s3'+'-eu-west-2'+'.amazonaws'+'.com\x22,\x22s3-'+'eu-west-3.'+'amazonaws.'+'com\x22,\x22s3-e'+'xternal-1.'+'amazonaws.'+'com\x22,\x22s3-f'+'ips-us-gov'+'-west-1.am'+'azonaws.co'+'m\x22,\x22s3-sa-'+'east-1.ama'+'zonaws.com'+'\x22,\x22s3-us-g'+'ov-west-1.'+'amazonaws.'+'com\x22,\x22s3-u'+'s-east-2.a'+'mazonaws.c'+'om\x22,\x22s3-us'+'-west-1.am'+'azonaws.co'+'m\x22,\x22s3-us-'+'west-2.ama'+'zonaws.com'+'\x22,\x22s3.ap-n'+'ortheast-2'+'.amazonaws'+'.com\x22,\x22s3.')+('ap-south-1'+'.amazonaws'+'.com\x22,\x22s3.'+'cn-north-1'+'.amazonaws'+'.com.cn\x22,\x22'+'s3.ca-cent'+'ral-1.amaz'+'onaws.com\x22'+',\x22s3.eu-ce'+'ntral-1.am'+'azonaws.co'+'m\x22,\x22s3.eu-'+'west-2.ama'+'zonaws.com'+'\x22,\x22s3.eu-w'+'est-3.amaz'+'onaws.com\x22'+',\x22s3.us-ea'+'st-2.amazo'+'naws.com\x22,'+'\x22s3.dualst'+'ack.ap-nor'+'theast-1.a'+'mazonaws.c'+'om\x22,\x22s3.du'+'alstack.ap'+'-northeast'+'-2.amazona'+'ws.com\x22,\x22s'+'3.dualstac'+'k.ap-south'+'-1.amazona'+'ws.com\x22,\x22s'+'3.dualstac'+'k.ap-south'+'east-1.ama'+'zonaws.com'+'\x22,\x22s3.dual'+'stack.ap-s'+'outheast-2'+'.amazonaws'+'.com\x22,\x22s3.'+'dualstack.'+'ca-central'+'-1.amazona'+'ws.com\x22,\x22s'+'3.dualstac'+'k.eu-centr'+'al-1.amazo'+'naws.com\x22,'+'\x22s3.dualst'+'ack.eu-wes'+'t-1.amazon'+'aws.com\x22,\x22'+'s3.dualsta'+'ck.eu-west'+'-2.amazona'+'ws.com\x22,\x22s'+'3.dualstac'+'k.eu-west-'+'3.amazonaw'+'s.com\x22,\x22s3'+'.dualstack'+'.sa-east-1'+'.amazonaws'+'.com\x22,\x22s3.'+'dualstack.'+'us-east-1.'+'amazonaws.'+'com\x22,\x22s3.d'+'ualstack.u'+'s-east-2.a'+'mazonaws.c'+'om\x22,\x22s3-we'+'bsite-us-e'+'ast-1.amaz'+'onaws.com\x22'+',\x22s3-websi'+'te-us-west'+'-1.amazona'+'ws.com\x22,\x22s'+'3-website-'+'us-west-2.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite-ap-'+'northeast-'+'1.amazonaw'+'s.com\x22,\x22s3'+'-website-a'+'p-southeas'+'t-1.amazon'+'aws.com\x22,\x22'+'s3-website'+'-ap-southe'+'ast-2.amaz'+'onaws.com\x22'+',\x22s3-websi'+'te-eu-west')+('-1.amazona'+'ws.com\x22,\x22s'+'3-website-'+'sa-east-1.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite.ap-'+'northeast-'+'2.amazonaw'+'s.com\x22,\x22s3'+'-website.a'+'p-south-1.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite.ca-'+'central-1.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite.eu-'+'central-1.'+'amazonaws.'+'com\x22,\x22s3-w'+'ebsite.eu-'+'west-2.ama'+'zonaws.com'+'\x22,\x22s3-webs'+'ite.eu-wes'+'t-3.amazon'+'aws.com\x22,\x22'+'s3-website'+'.us-east-2'+'.amazonaws'+'.com\x22,\x22ams'+'w.nl\x22,\x22t3l'+'3p0rt.net\x22'+',\x22tele.amu'+'ne.org\x22,\x22a'+'pigee.io\x22,'+'\x22on-aptibl'+'e.com\x22,\x22us'+'er.aseinet'+'.ne.jp\x22,\x22g'+'v.vc\x22,\x22d.g'+'v.vc\x22,\x22use'+'r.party.eu'+'s\x22,\x22pimien'+'ta.org\x22,\x22p'+'oivron.org'+'\x22,\x22potager'+'.org\x22,\x22swe'+'etpepper.o'+'rg\x22,\x22myasu'+'stor.com\x22,'+'\x22myfritz.n'+'et\x22,\x22*.awd'+'ev.ca\x22,\x22*.'+'advisor.ws'+'\x22,\x22b-data.'+'io\x22,\x22backp'+'laneapp.io'+'\x22,\x22balena-'+'devices.co'+'m\x22,\x22app.ba'+'nzaicloud.'+'io\x22,\x22betai'+'nabox.com\x22'+',\x22bnr.la\x22,'+'\x22blackbaud'+'cdn.net\x22,\x22'+'boomla.net'+'\x22,\x22boxfuse'+'.io\x22,\x22squa'+'re7.ch\x22,\x22b'+'placed.com'+'\x22,\x22bplaced'+'.de\x22,\x22squa'+'re7.de\x22,\x22b'+'placed.net'+'\x22,\x22square7'+'.net\x22,\x22bro'+'wsersafety'+'mark.io\x22,\x22'+'uk0.bigv.i'+'o\x22,\x22dh.byt'+'emark.co.u'+'k\x22,\x22vm.byt'+'emark.co.u'+'k\x22,\x22mycd.e'+'u\x22,\x22carrd.'+'co\x22,\x22crd.c'+'o\x22,\x22uwu.ai'+'\x22,\x22ae.org\x22'+',\x22ar.com\x22,'+'\x22br.com\x22,\x22'+'cn.com\x22,\x22c'+'om.de\x22,\x22co'+'m.se\x22,\x22de.'+'com\x22,\x22eu.c'+'om\x22,\x22gb.co'+'m\x22,\x22gb.net')+('\x22,\x22hu.com\x22'+',\x22hu.net\x22,'+'\x22jp.net\x22,\x22'+'jpn.com\x22,\x22'+'kr.com\x22,\x22m'+'ex.com\x22,\x22n'+'o.com\x22,\x22qc'+'.com\x22,\x22ru.'+'com\x22,\x22sa.c'+'om\x22,\x22se.ne'+'t\x22,\x22uk.com'+'\x22,\x22uk.net\x22'+',\x22us.com\x22,'+'\x22uy.com\x22,\x22'+'za.bz\x22,\x22za'+'.com\x22,\x22afr'+'ica.com\x22,\x22'+'gr.com\x22,\x22i'+'n.net\x22,\x22us'+'.org\x22,\x22co.'+'com\x22,\x22c.la'+'\x22,\x22certmgr'+'.org\x22,\x22xen'+'apponazure'+'.com\x22,\x22dis'+'course.gro'+'up\x22,\x22disco'+'urse.team\x22'+',\x22virtueel'+'domein.nl\x22'+',\x22cleverap'+'ps.io\x22,\x22*.'+'lcl.dev\x22,\x22'+'*.stg.dev\x22'+',\x22c66.me\x22,'+'\x22cloud66.w'+'s\x22,\x22cloud6'+'6.zone\x22,\x22j'+'devcloud.c'+'om\x22,\x22wpdev'+'cloud.com\x22'+',\x22cloudacc'+'ess.host\x22,'+'\x22freesite.'+'host\x22,\x22clo'+'udaccess.n'+'et\x22,\x22cloud'+'controlled'+'.com\x22,\x22clo'+'udcontrola'+'pp.com\x22,\x22c'+'loudera.si'+'te\x22,\x22trycl'+'oudflare.c'+'om\x22,\x22worke'+'rs.dev\x22,\x22w'+'next.app\x22,'+'\x22co.ca\x22,\x22*'+'.otap.co\x22,'+'\x22co.cz\x22,\x22c'+'.cdn77.org'+'\x22,\x22cdn77-s'+'sl.net\x22,\x22r'+'.cdn77.net'+'\x22,\x22rsc.cdn'+'77.org\x22,\x22s'+'sl.origin.'+'cdn77-secu'+'re.org\x22,\x22c'+'loudns.asi'+'a\x22,\x22cloudn'+'s.biz\x22,\x22cl'+'oudns.club'+'\x22,\x22cloudns'+'.cc\x22,\x22clou'+'dns.eu\x22,\x22c'+'loudns.in\x22'+',\x22cloudns.'+'info\x22,\x22clo'+'udns.org\x22,'+'\x22cloudns.p'+'ro\x22,\x22cloud'+'ns.pw\x22,\x22cl'+'oudns.us\x22,'+'\x22cloudeity'+'.net\x22,\x22cnp'+'y.gdn\x22,\x22co'+'.nl\x22,\x22co.n'+'o\x22,\x22webhos'+'ting.be\x22,\x22'+'hosting-cl'+'uster.nl\x22,'+'\x22ac.ru\x22,\x22e'+'du.ru\x22,\x22go'+'v.ru\x22,\x22int'+'.ru\x22,\x22mil.'+'ru\x22,\x22test.'+'ru\x22,\x22dyn.c'+'osidns.de\x22'+',\x22dynamisc')+('hes-dns.de'+'\x22,\x22dnsupda'+'ter.de\x22,\x22i'+'nternet-dn'+'s.de\x22,\x22l-o'+'-g-i-n.de\x22'+',\x22dynamic-'+'dns.info\x22,'+'\x22feste-ip.'+'net\x22,\x22knx-'+'server.net'+'\x22,\x22static-'+'access.net'+'\x22,\x22realm.c'+'z\x22,\x22*.cryp'+'tonomic.ne'+'t\x22,\x22cupcak'+'e.is\x22,\x22*.c'+'ustomer-oc'+'i.com\x22,\x22*.'+'oci.custom'+'er-oci.com'+'\x22,\x22*.ocp.c'+'ustomer-oc'+'i.com\x22,\x22*.'+'ocs.custom'+'er-oci.com'+'\x22,\x22cyon.li'+'nk\x22,\x22cyon.'+'site\x22,\x22dap'+'lie.me\x22,\x22l'+'ocalhost.d'+'aplie.me\x22,'+'\x22dattoloca'+'l.com\x22,\x22da'+'ttorelay.c'+'om\x22,\x22datto'+'web.com\x22,\x22'+'mydatto.co'+'m\x22,\x22dattol'+'ocal.net\x22,'+'\x22mydatto.n'+'et\x22,\x22biz.d'+'k\x22,\x22co.dk\x22'+',\x22firm.dk\x22'+',\x22reg.dk\x22,'+'\x22store.dk\x22'+',\x22*.dapps.'+'earth\x22,\x22*.'+'bzz.dapps.'+'earth\x22,\x22bu'+'iltwithdar'+'k.com\x22,\x22ed'+'gestack.me'+'\x22,\x22debian.'+'net\x22,\x22dedy'+'n.io\x22,\x22dns'+'home.de\x22,\x22'+'online.th\x22'+',\x22shop.th\x22'+',\x22drayddns'+'.com\x22,\x22dre'+'amhosters.'+'com\x22,\x22mydr'+'obo.com\x22,\x22'+'drud.io\x22,\x22'+'drud.us\x22,\x22'+'duckdns.or'+'g\x22,\x22dy.fi\x22'+',\x22tunk.org'+'\x22,\x22dyndns-'+'at-home.co'+'m\x22,\x22dyndns'+'-at-work.c'+'om\x22,\x22dyndn'+'s-blog.com'+'\x22,\x22dyndns-'+'free.com\x22,'+'\x22dyndns-ho'+'me.com\x22,\x22d'+'yndns-ip.c'+'om\x22,\x22dyndn'+'s-mail.com'+'\x22,\x22dyndns-'+'office.com'+'\x22,\x22dyndns-'+'pics.com\x22,'+'\x22dyndns-re'+'mote.com\x22,'+'\x22dyndns-se'+'rver.com\x22,'+'\x22dyndns-we'+'b.com\x22,\x22dy'+'ndns-wiki.'+'com\x22,\x22dynd'+'ns-work.co'+'m\x22,\x22dyndns'+'.biz\x22,\x22dyn'+'dns.info\x22,'+'\x22dyndns.or')+('g\x22,\x22dyndns'+'.tv\x22,\x22at-b'+'and-camp.n'+'et\x22,\x22ath.c'+'x\x22,\x22barrel'+'-of-knowle'+'dge.info\x22,'+'\x22barrell-o'+'f-knowledg'+'e.info\x22,\x22b'+'etter-than'+'.tv\x22,\x22blog'+'dns.com\x22,\x22'+'blogdns.ne'+'t\x22,\x22blogdn'+'s.org\x22,\x22bl'+'ogsite.org'+'\x22,\x22boldlyg'+'oingnowher'+'e.org\x22,\x22br'+'oke-it.net'+'\x22,\x22buyshou'+'ses.net\x22,\x22'+'cechire.co'+'m\x22,\x22dnsali'+'as.com\x22,\x22d'+'nsalias.ne'+'t\x22,\x22dnsali'+'as.org\x22,\x22d'+'nsdojo.com'+'\x22,\x22dnsdojo'+'.net\x22,\x22dns'+'dojo.org\x22,'+'\x22does-it.n'+'et\x22,\x22doesn'+'texist.com'+'\x22,\x22doesnte'+'xist.org\x22,'+'\x22dontexist'+'.com\x22,\x22don'+'texist.net'+'\x22,\x22dontexi'+'st.org\x22,\x22d'+'oomdns.com'+'\x22,\x22doomdns'+'.org\x22,\x22dvr'+'dns.org\x22,\x22'+'dyn-o-saur'+'.com\x22,\x22dyn'+'alias.com\x22'+',\x22dynalias'+'.net\x22,\x22dyn'+'alias.org\x22'+',\x22dynathom'+'e.net\x22,\x22dy'+'ndns.ws\x22,\x22'+'endofinter'+'net.net\x22,\x22'+'endofinter'+'net.org\x22,\x22'+'endofthein'+'ternet.org'+'\x22,\x22est-a-l'+'a-maison.c'+'om\x22,\x22est-a'+'-la-masion'+'.com\x22,\x22est'+'-le-patron'+'.com\x22,\x22est'+'-mon-blogu'+'eur.com\x22,\x22'+'for-better'+'.biz\x22,\x22for'+'-more.biz\x22'+',\x22for-our.'+'info\x22,\x22for'+'-some.biz\x22'+',\x22for-the.'+'biz\x22,\x22forg'+'ot.her.nam'+'e\x22,\x22forgot'+'.his.name\x22'+',\x22from-ak.'+'com\x22,\x22from'+'-al.com\x22,\x22'+'from-ar.co'+'m\x22,\x22from-a'+'z.net\x22,\x22fr'+'om-ca.com\x22'+',\x22from-co.'+'net\x22,\x22from'+'-ct.com\x22,\x22'+'from-dc.co'+'m\x22,\x22from-d'+'e.com\x22,\x22fr'+'om-fl.com\x22'+',\x22from-ga.'+'com\x22,\x22from'+'-hi.com\x22,\x22'+'from-ia.co')+('m\x22,\x22from-i'+'d.com\x22,\x22fr'+'om-il.com\x22'+',\x22from-in.'+'com\x22,\x22from'+'-ks.com\x22,\x22'+'from-ky.co'+'m\x22,\x22from-l'+'a.net\x22,\x22fr'+'om-ma.com\x22'+',\x22from-md.'+'com\x22,\x22from'+'-me.org\x22,\x22'+'from-mi.co'+'m\x22,\x22from-m'+'n.com\x22,\x22fr'+'om-mo.com\x22'+',\x22from-ms.'+'com\x22,\x22from'+'-mt.com\x22,\x22'+'from-nc.co'+'m\x22,\x22from-n'+'d.com\x22,\x22fr'+'om-ne.com\x22'+',\x22from-nh.'+'com\x22,\x22from'+'-nj.com\x22,\x22'+'from-nm.co'+'m\x22,\x22from-n'+'v.com\x22,\x22fr'+'om-ny.net\x22'+',\x22from-oh.'+'com\x22,\x22from'+'-ok.com\x22,\x22'+'from-or.co'+'m\x22,\x22from-p'+'a.com\x22,\x22fr'+'om-pr.com\x22'+',\x22from-ri.'+'com\x22,\x22from'+'-sc.com\x22,\x22'+'from-sd.co'+'m\x22,\x22from-t'+'n.com\x22,\x22fr'+'om-tx.com\x22'+',\x22from-ut.'+'com\x22,\x22from'+'-va.com\x22,\x22'+'from-vt.co'+'m\x22,\x22from-w'+'a.com\x22,\x22fr'+'om-wi.com\x22'+',\x22from-wv.'+'com\x22,\x22from'+'-wy.com\x22,\x22'+'ftpaccess.'+'cc\x22,\x22fuett'+'ertdasnetz'+'.de\x22,\x22game'+'-host.org\x22'+',\x22game-ser'+'ver.cc\x22,\x22g'+'etmyip.com'+'\x22,\x22gets-it'+'.net\x22,\x22go.'+'dyndns.org'+'\x22,\x22gotdns.'+'com\x22,\x22gotd'+'ns.org\x22,\x22g'+'roks-the.i'+'nfo\x22,\x22grok'+'s-this.inf'+'o\x22,\x22ham-ra'+'dio-op.net'+'\x22,\x22here-fo'+'r-more.inf'+'o\x22,\x22hobby-'+'site.com\x22,'+'\x22hobby-sit'+'e.org\x22,\x22ho'+'me.dyndns.'+'org\x22,\x22home'+'dns.org\x22,\x22'+'homeftp.ne'+'t\x22,\x22homeft'+'p.org\x22,\x22ho'+'meip.net\x22,'+'\x22homelinux'+'.com\x22,\x22hom'+'elinux.net'+'\x22,\x22homelin'+'ux.org\x22,\x22h'+'omeunix.co'+'m\x22,\x22homeun'+'ix.net\x22,\x22h'+'omeunix.or'+'g\x22,\x22iamall'+'ama.com\x22,\x22'+'in-the-ban'+'d.net\x22,\x22is')+('-a-anarchi'+'st.com\x22,\x22i'+'s-a-blogge'+'r.com\x22,\x22is'+'-a-bookkee'+'per.com\x22,\x22'+'is-a-bruin'+'sfan.org\x22,'+'\x22is-a-bull'+'s-fan.com\x22'+',\x22is-a-can'+'didate.org'+'\x22,\x22is-a-ca'+'terer.com\x22'+',\x22is-a-cel'+'ticsfan.or'+'g\x22,\x22is-a-c'+'hef.com\x22,\x22'+'is-a-chef.'+'net\x22,\x22is-a'+'-chef.org\x22'+',\x22is-a-con'+'servative.'+'com\x22,\x22is-a'+'-cpa.com\x22,'+'\x22is-a-cubi'+'cle-slave.'+'com\x22,\x22is-a'+'-democrat.'+'com\x22,\x22is-a'+'-designer.'+'com\x22,\x22is-a'+'-doctor.co'+'m\x22,\x22is-a-f'+'inancialad'+'visor.com\x22'+',\x22is-a-gee'+'k.com\x22,\x22is'+'-a-geek.ne'+'t\x22,\x22is-a-g'+'eek.org\x22,\x22'+'is-a-green'+'.com\x22,\x22is-'+'a-guru.com'+'\x22,\x22is-a-ha'+'rd-worker.'+'com\x22,\x22is-a'+'-hunter.co'+'m\x22,\x22is-a-k'+'night.org\x22'+',\x22is-a-lan'+'dscaper.co'+'m\x22,\x22is-a-l'+'awyer.com\x22'+',\x22is-a-lib'+'eral.com\x22,'+'\x22is-a-libe'+'rtarian.co'+'m\x22,\x22is-a-l'+'inux-user.'+'org\x22,\x22is-a'+'-llama.com'+'\x22,\x22is-a-mu'+'sician.com'+'\x22,\x22is-a-na'+'scarfan.co'+'m\x22,\x22is-a-n'+'urse.com\x22,'+'\x22is-a-pain'+'ter.com\x22,\x22'+'is-a-patsf'+'an.org\x22,\x22i'+'s-a-person'+'altrainer.'+'com\x22,\x22is-a'+'-photograp'+'her.com\x22,\x22'+'is-a-playe'+'r.com\x22,\x22is'+'-a-republi'+'can.com\x22,\x22'+'is-a-rocks'+'tar.com\x22,\x22'+'is-a-socia'+'list.com\x22,'+'\x22is-a-soxf'+'an.org\x22,\x22i'+'s-a-studen'+'t.com\x22,\x22is'+'-a-teacher'+'.com\x22,\x22is-'+'a-techie.c'+'om\x22,\x22is-a-'+'therapist.'+'com\x22,\x22is-a'+'n-accounta'+'nt.com\x22,\x22i'+'s-an-actor'+'.com\x22,\x22is-'+'an-actress')+('.com\x22,\x22is-'+'an-anarchi'+'st.com\x22,\x22i'+'s-an-artis'+'t.com\x22,\x22is'+'-an-engine'+'er.com\x22,\x22i'+'s-an-enter'+'tainer.com'+'\x22,\x22is-by.u'+'s\x22,\x22is-cer'+'tified.com'+'\x22,\x22is-foun'+'d.org\x22,\x22is'+'-gone.com\x22'+',\x22is-into-'+'anime.com\x22'+',\x22is-into-'+'cars.com\x22,'+'\x22is-into-c'+'artoons.co'+'m\x22,\x22is-int'+'o-games.co'+'m\x22,\x22is-lee'+'t.com\x22,\x22is'+'-lost.org\x22'+',\x22is-not-c'+'ertified.c'+'om\x22,\x22is-sa'+'ved.org\x22,\x22'+'is-slick.c'+'om\x22,\x22is-ub'+'erleet.com'+'\x22,\x22is-very'+'-bad.org\x22,'+'\x22is-very-e'+'vil.org\x22,\x22'+'is-very-go'+'od.org\x22,\x22i'+'s-very-nic'+'e.org\x22,\x22is'+'-very-swee'+'t.org\x22,\x22is'+'-with-theb'+'and.com\x22,\x22'+'isa-geek.c'+'om\x22,\x22isa-g'+'eek.net\x22,\x22'+'isa-geek.o'+'rg\x22,\x22isa-h'+'ockeynut.c'+'om\x22,\x22issma'+'rterthanyo'+'u.com\x22,\x22is'+'teingeek.d'+'e\x22,\x22istmei'+'n.de\x22,\x22kic'+'ks-ass.net'+'\x22,\x22kicks-a'+'ss.org\x22,\x22k'+'nowsitall.'+'info\x22,\x22lan'+'d-4-sale.u'+'s\x22,\x22lebtim'+'netz.de\x22,\x22'+'leitungsen'+'.de\x22,\x22like'+'s-pie.com\x22'+',\x22likescan'+'dy.com\x22,\x22m'+'erseine.nu'+'\x22,\x22mine.nu'+'\x22,\x22misconf'+'used.org\x22,'+'\x22mypets.ws'+'\x22,\x22myphoto'+'s.cc\x22,\x22nea'+'t-url.com\x22'+',\x22office-o'+'n-the.net\x22'+',\x22on-the-w'+'eb.tv\x22,\x22po'+'dzone.net\x22'+',\x22podzone.'+'org\x22,\x22read'+'myblog.org'+'\x22,\x22saves-t'+'he-whales.'+'com\x22,\x22scra'+'pper-site.'+'net\x22,\x22scra'+'pping.cc\x22,'+'\x22selfip.bi'+'z\x22,\x22selfip'+'.com\x22,\x22sel'+'fip.info\x22,'+'\x22selfip.ne'+'t\x22,\x22selfip'+'.org\x22,\x22sel'+'ls-for-les')+('s.com\x22,\x22se'+'lls-for-u.'+'com\x22,\x22sell'+'s-it.net\x22,'+'\x22sellsyour'+'home.org\x22,'+'\x22servebbs.'+'com\x22,\x22serv'+'ebbs.net\x22,'+'\x22servebbs.'+'org\x22,\x22serv'+'eftp.net\x22,'+'\x22serveftp.'+'org\x22,\x22serv'+'egame.org\x22'+',\x22shacknet'+'.nu\x22,\x22simp'+'le-url.com'+'\x22,\x22space-t'+'o-rent.com'+'\x22,\x22stuff-4'+'-sale.org\x22'+',\x22stuff-4-'+'sale.us\x22,\x22'+'teaches-yo'+'ga.com\x22,\x22t'+'hruhere.ne'+'t\x22,\x22traeum'+'tgerade.de'+'\x22,\x22webhop.'+'biz\x22,\x22webh'+'op.info\x22,\x22'+'webhop.net'+'\x22,\x22webhop.'+'org\x22,\x22wors'+'e-than.tv\x22'+',\x22writesth'+'isblog.com'+'\x22,\x22ddnss.d'+'e\x22,\x22dyn.dd'+'nss.de\x22,\x22d'+'yndns.ddns'+'s.de\x22,\x22dyn'+'dns1.de\x22,\x22'+'dyn-ip24.d'+'e\x22,\x22home-w'+'ebserver.d'+'e\x22,\x22dyn.ho'+'me-webserv'+'er.de\x22,\x22my'+'home-serve'+'r.de\x22,\x22ddn'+'ss.org\x22,\x22d'+'efinima.ne'+'t\x22,\x22defini'+'ma.io\x22,\x22bc'+'i.dnstrace'+'.pro\x22,\x22ddn'+'sfree.com\x22'+',\x22ddnsgeek'+'.com\x22,\x22gii'+'ze.com\x22,\x22g'+'leeze.com\x22'+',\x22kozow.co'+'m\x22,\x22loseyo'+'urip.com\x22,'+'\x22ooguy.com'+'\x22,\x22thework'+'pc.com\x22,\x22c'+'asacam.net'+'\x22,\x22dynu.ne'+'t\x22,\x22access'+'cam.org\x22,\x22'+'camdvr.org'+'\x22,\x22freeddn'+'s.org\x22,\x22my'+'wire.org\x22,'+'\x22webredire'+'ct.org\x22,\x22m'+'yddns.rock'+'s\x22,\x22blogsi'+'te.xyz\x22,\x22d'+'ynv6.net\x22,'+'\x22e4.cz\x22,\x22e'+'n-root.fr\x22'+',\x22mytuleap'+'.com\x22,\x22onr'+'ed.one\x22,\x22s'+'taging.onr'+'ed.one\x22,\x22e'+'nonic.io\x22,'+'\x22customer.'+'enonic.io\x22'+',\x22eu.org\x22,'+'\x22al.eu.org'+'\x22,\x22asso.eu'+'.org\x22,\x22at.'+'eu.org\x22,\x22a'+'u.eu.org\x22,'+'\x22be.eu.org')+('\x22,\x22bg.eu.o'+'rg\x22,\x22ca.eu'+'.org\x22,\x22cd.'+'eu.org\x22,\x22c'+'h.eu.org\x22,'+'\x22cn.eu.org'+'\x22,\x22cy.eu.o'+'rg\x22,\x22cz.eu'+'.org\x22,\x22de.'+'eu.org\x22,\x22d'+'k.eu.org\x22,'+'\x22edu.eu.or'+'g\x22,\x22ee.eu.'+'org\x22,\x22es.e'+'u.org\x22,\x22fi'+'.eu.org\x22,\x22'+'fr.eu.org\x22'+',\x22gr.eu.or'+'g\x22,\x22hr.eu.'+'org\x22,\x22hu.e'+'u.org\x22,\x22ie'+'.eu.org\x22,\x22'+'il.eu.org\x22'+',\x22in.eu.or'+'g\x22,\x22int.eu'+'.org\x22,\x22is.'+'eu.org\x22,\x22i'+'t.eu.org\x22,'+'\x22jp.eu.org'+'\x22,\x22kr.eu.o'+'rg\x22,\x22lt.eu'+'.org\x22,\x22lu.'+'eu.org\x22,\x22l'+'v.eu.org\x22,'+'\x22mc.eu.org'+'\x22,\x22me.eu.o'+'rg\x22,\x22mk.eu'+'.org\x22,\x22mt.'+'eu.org\x22,\x22m'+'y.eu.org\x22,'+'\x22net.eu.or'+'g\x22,\x22ng.eu.'+'org\x22,\x22nl.e'+'u.org\x22,\x22no'+'.eu.org\x22,\x22'+'nz.eu.org\x22'+',\x22paris.eu'+'.org\x22,\x22pl.'+'eu.org\x22,\x22p'+'t.eu.org\x22,'+'\x22q-a.eu.or'+'g\x22,\x22ro.eu.'+'org\x22,\x22ru.e'+'u.org\x22,\x22se'+'.eu.org\x22,\x22'+'si.eu.org\x22'+',\x22sk.eu.or'+'g\x22,\x22tr.eu.'+'org\x22,\x22uk.e'+'u.org\x22,\x22us'+'.eu.org\x22,\x22'+'eu-1.evenn'+'ode.com\x22,\x22'+'eu-2.evenn'+'ode.com\x22,\x22'+'eu-3.evenn'+'ode.com\x22,\x22'+'eu-4.evenn'+'ode.com\x22,\x22'+'us-1.evenn'+'ode.com\x22,\x22'+'us-2.evenn'+'ode.com\x22,\x22'+'us-3.evenn'+'ode.com\x22,\x22'+'us-4.evenn'+'ode.com\x22,\x22'+'twmail.cc\x22'+',\x22twmail.n'+'et\x22,\x22twmai'+'l.org\x22,\x22my'+'mailer.com'+'.tw\x22,\x22url.'+'tw\x22,\x22apps.'+'fbsbx.com\x22'+',\x22ru.net\x22,'+'\x22adygeya.r'+'u\x22,\x22bashki'+'ria.ru\x22,\x22b'+'ir.ru\x22,\x22cb'+'g.ru\x22,\x22com'+'.ru\x22,\x22dage'+'stan.ru\x22,\x22'+'grozny.ru\x22'+',\x22kalmykia'+'.ru\x22,\x22kust'+'anai.ru\x22,\x22'+'marine.ru\x22'+',\x22mordovia'+'.ru\x22,\x22msk.')+('ru\x22,\x22mytis'+'.ru\x22,\x22nalc'+'hik.ru\x22,\x22n'+'ov.ru\x22,\x22py'+'atigorsk.r'+'u\x22,\x22spb.ru'+'\x22,\x22vladika'+'vkaz.ru\x22,\x22'+'vladimir.r'+'u\x22,\x22abkhaz'+'ia.su\x22,\x22ad'+'ygeya.su\x22,'+'\x22aktyubins'+'k.su\x22,\x22ark'+'hangelsk.s'+'u\x22,\x22armeni'+'a.su\x22,\x22ash'+'gabad.su\x22,'+'\x22azerbaija'+'n.su\x22,\x22bal'+'ashov.su\x22,'+'\x22bashkiria'+'.su\x22,\x22brya'+'nsk.su\x22,\x22b'+'ukhara.su\x22'+',\x22chimkent'+'.su\x22,\x22dage'+'stan.su\x22,\x22'+'east-kazak'+'hstan.su\x22,'+'\x22exnet.su\x22'+',\x22georgia.'+'su\x22,\x22grozn'+'y.su\x22,\x22iva'+'novo.su\x22,\x22'+'jambyl.su\x22'+',\x22kalmykia'+'.su\x22,\x22kalu'+'ga.su\x22,\x22ka'+'racol.su\x22,'+'\x22karaganda'+'.su\x22,\x22kare'+'lia.su\x22,\x22k'+'hakassia.s'+'u\x22,\x22krasno'+'dar.su\x22,\x22k'+'urgan.su\x22,'+'\x22kustanai.'+'su\x22,\x22lenug'+'.su\x22,\x22mang'+'yshlak.su\x22'+',\x22mordovia'+'.su\x22,\x22msk.'+'su\x22,\x22murma'+'nsk.su\x22,\x22n'+'alchik.su\x22'+',\x22navoi.su'+'\x22,\x22north-k'+'azakhstan.'+'su\x22,\x22nov.s'+'u\x22,\x22obnins'+'k.su\x22,\x22pen'+'za.su\x22,\x22po'+'krovsk.su\x22'+',\x22sochi.su'+'\x22,\x22spb.su\x22'+',\x22tashkent'+'.su\x22,\x22term'+'ez.su\x22,\x22to'+'gliatti.su'+'\x22,\x22troitsk'+'.su\x22,\x22tsel'+'inograd.su'+'\x22,\x22tula.su'+'\x22,\x22tuva.su'+'\x22,\x22vladika'+'vkaz.su\x22,\x22'+'vladimir.s'+'u\x22,\x22vologd'+'a.su\x22,\x22cha'+'nnelsdvr.n'+'et\x22,\x22u.cha'+'nnelsdvr.n'+'et\x22,\x22fastl'+'y-terrariu'+'m.com\x22,\x22fa'+'stlylb.net'+'\x22,\x22map.fas'+'tlylb.net\x22'+',\x22freetls.'+'fastly.net'+'\x22,\x22map.fas'+'tly.net\x22,\x22'+'a.prod.fas'+'tly.net\x22,\x22'+'global.pro'+'d.fastly.n'+'et\x22,\x22a.ssl'+'.fastly.ne'+'t\x22,\x22b.ssl.')+('fastly.net'+'\x22,\x22global.'+'ssl.fastly'+'.net\x22,\x22fas'+'tpanel.dir'+'ect\x22,\x22fast'+'vps-server'+'.com\x22,\x22fha'+'pp.xyz\x22,\x22f'+'edorainfra'+'cloud.org\x22'+',\x22fedorape'+'ople.org\x22,'+'\x22cloud.fed'+'oraproject'+'.org\x22,\x22app'+'.os.fedora'+'project.or'+'g\x22,\x22app.os'+'.stg.fedor'+'aproject.o'+'rg\x22,\x22mydob'+'iss.com\x22,\x22'+'filegear.m'+'e\x22,\x22filege'+'ar-au.me\x22,'+'\x22filegear-'+'de.me\x22,\x22fi'+'legear-gb.'+'me\x22,\x22fileg'+'ear-ie.me\x22'+',\x22filegear'+'-jp.me\x22,\x22f'+'ilegear-sg'+'.me\x22,\x22fire'+'baseapp.co'+'m\x22,\x22flynnh'+'ub.com\x22,\x22f'+'lynnhostin'+'g.net\x22,\x220e'+'.vc\x22,\x22free'+'box-os.com'+'\x22,\x22freebox'+'os.com\x22,\x22f'+'bx-os.fr\x22,'+'\x22fbxos.fr\x22'+',\x22freebox-'+'os.fr\x22,\x22fr'+'eeboxos.fr'+'\x22,\x22freedes'+'ktop.org\x22,'+'\x22*.futurec'+'ms.at\x22,\x22*.'+'ex.futurec'+'ms.at\x22,\x22*.'+'in.futurec'+'ms.at\x22,\x22fu'+'turehostin'+'g.at\x22,\x22fut'+'uremailing'+'.at\x22,\x22*.ex'+'.ortsinfo.'+'at\x22,\x22*.kun'+'den.ortsin'+'fo.at\x22,\x22*.'+'statics.cl'+'oud\x22,\x22serv'+'ice.gov.uk'+'\x22,\x22gehirn.'+'ne.jp\x22,\x22us'+'ercontent.'+'jp\x22,\x22genta'+'pps.com\x22,\x22'+'lab.ms\x22,\x22g'+'ithub.io\x22,'+'\x22githubuse'+'rcontent.c'+'om\x22,\x22gitla'+'b.io\x22,\x22gli'+'tch.me\x22,\x22l'+'olipop.io\x22'+',\x22cloudapp'+'s.digital\x22'+',\x22london.c'+'loudapps.d'+'igital\x22,\x22h'+'omeoffice.'+'gov.uk\x22,\x22r'+'o.im\x22,\x22sho'+'p.ro\x22,\x22goi'+'p.de\x22,\x22run'+'.app\x22,\x22a.r'+'un.app\x22,\x22w'+'eb.app\x22,\x22*'+'.0emm.com\x22'+',\x22appspot.'+'com\x22,\x22*.r.'+'appspot.co'+'m\x22,\x22blogsp'+'ot.ae\x22,\x22bl')+('ogspot.al\x22'+',\x22blogspot'+'.am\x22,\x22blog'+'spot.ba\x22,\x22'+'blogspot.b'+'e\x22,\x22blogsp'+'ot.bg\x22,\x22bl'+'ogspot.bj\x22'+',\x22blogspot'+'.ca\x22,\x22blog'+'spot.cf\x22,\x22'+'blogspot.c'+'h\x22,\x22blogsp'+'ot.cl\x22,\x22bl'+'ogspot.co.'+'at\x22,\x22blogs'+'pot.co.id\x22'+',\x22blogspot'+'.co.il\x22,\x22b'+'logspot.co'+'.ke\x22,\x22blog'+'spot.co.nz'+'\x22,\x22blogspo'+'t.co.uk\x22,\x22'+'blogspot.c'+'o.za\x22,\x22blo'+'gspot.com\x22'+',\x22blogspot'+'.com.ar\x22,\x22'+'blogspot.c'+'om.au\x22,\x22bl'+'ogspot.com'+'.br\x22,\x22blog'+'spot.com.b'+'y\x22,\x22blogsp'+'ot.com.co\x22'+',\x22blogspot'+'.com.cy\x22,\x22'+'blogspot.c'+'om.ee\x22,\x22bl'+'ogspot.com'+'.eg\x22,\x22blog'+'spot.com.e'+'s\x22,\x22blogsp'+'ot.com.mt\x22'+',\x22blogspot'+'.com.ng\x22,\x22'+'blogspot.c'+'om.tr\x22,\x22bl'+'ogspot.com'+'.uy\x22,\x22blog'+'spot.cv\x22,\x22'+'blogspot.c'+'z\x22,\x22blogsp'+'ot.de\x22,\x22bl'+'ogspot.dk\x22'+',\x22blogspot'+'.fi\x22,\x22blog'+'spot.fr\x22,\x22'+'blogspot.g'+'r\x22,\x22blogsp'+'ot.hk\x22,\x22bl'+'ogspot.hr\x22'+',\x22blogspot'+'.hu\x22,\x22blog'+'spot.ie\x22,\x22'+'blogspot.i'+'n\x22,\x22blogsp'+'ot.is\x22,\x22bl'+'ogspot.it\x22'+',\x22blogspot'+'.jp\x22,\x22blog'+'spot.kr\x22,\x22'+'blogspot.l'+'i\x22,\x22blogsp'+'ot.lt\x22,\x22bl'+'ogspot.lu\x22'+',\x22blogspot'+'.md\x22,\x22blog'+'spot.mk\x22,\x22'+'blogspot.m'+'r\x22,\x22blogsp'+'ot.mx\x22,\x22bl'+'ogspot.my\x22'+',\x22blogspot'+'.nl\x22,\x22blog'+'spot.no\x22,\x22'+'blogspot.p'+'e\x22,\x22blogsp'+'ot.pt\x22,\x22bl'+'ogspot.qa\x22'+',\x22blogspot'+'.re\x22,\x22blog'+'spot.ro\x22,\x22'+'blogspot.r'+'s\x22,\x22blogsp'+'ot.ru\x22,\x22bl'+'ogspot.se\x22'+',\x22blogspot'+'.sg\x22,\x22blog')+('spot.si\x22,\x22'+'blogspot.s'+'k\x22,\x22blogsp'+'ot.sn\x22,\x22bl'+'ogspot.td\x22'+',\x22blogspot'+'.tw\x22,\x22blog'+'spot.ug\x22,\x22'+'blogspot.v'+'n\x22,\x22cloudf'+'unctions.n'+'et\x22,\x22cloud'+'.goog\x22,\x22co'+'despot.com'+'\x22,\x22googlea'+'pis.com\x22,\x22'+'googlecode'+'.com\x22,\x22pag'+'espeedmobi'+'lizer.com\x22'+',\x22publishp'+'roxy.com\x22,'+'\x22withgoogl'+'e.com\x22,\x22wi'+'thyoutube.'+'com\x22,\x22awsm'+'ppl.com\x22,\x22'+'fin.ci\x22,\x22f'+'ree.hr\x22,\x22c'+'aa.li\x22,\x22ua'+'.rs\x22,\x22conf'+'.se\x22,\x22hs.z'+'one\x22,\x22hs.r'+'un\x22,\x22hashb'+'ang.sh\x22,\x22h'+'asura.app\x22'+',\x22hasura-a'+'pp.io\x22,\x22he'+'pforge.org'+'\x22,\x22herokua'+'pp.com\x22,\x22h'+'erokussl.c'+'om\x22,\x22myrav'+'endb.com\x22,'+'\x22ravendb.c'+'ommunity\x22,'+'\x22ravendb.m'+'e\x22,\x22develo'+'pment.run\x22'+',\x22ravendb.'+'run\x22,\x22bpl.'+'biz\x22,\x22orx.'+'biz\x22,\x22ng.c'+'ity\x22,\x22biz.'+'gl\x22,\x22ng.in'+'k\x22,\x22col.ng'+'\x22,\x22firm.ng'+'\x22,\x22gen.ng\x22'+',\x22ltd.ng\x22,'+'\x22ngo.ng\x22,\x22'+'ng.school\x22'+',\x22sch.so\x22,'+'\x22hƤkkinen.'+'fi\x22,\x22*.moo'+'nscale.io\x22'+',\x22moonscal'+'e.net\x22,\x22ik'+'i.fi\x22,\x22dyn'+'-berlin.de'+'\x22,\x22in-berl'+'in.de\x22,\x22in'+'-brb.de\x22,\x22'+'in-butter.'+'de\x22,\x22in-ds'+'l.de\x22,\x22in-'+'dsl.net\x22,\x22'+'in-dsl.org'+'\x22,\x22in-vpn.'+'de\x22,\x22in-vp'+'n.net\x22,\x22in'+'-vpn.org\x22,'+'\x22biz.at\x22,\x22'+'info.at\x22,\x22'+'info.cx\x22,\x22'+'ac.leg.br\x22'+',\x22al.leg.b'+'r\x22,\x22am.leg'+'.br\x22,\x22ap.l'+'eg.br\x22,\x22ba'+'.leg.br\x22,\x22'+'ce.leg.br\x22'+',\x22df.leg.b'+'r\x22,\x22es.leg'+'.br\x22,\x22go.l'+'eg.br\x22,\x22ma'+'.leg.br\x22,\x22'+'mg.leg.br\x22'+',\x22ms.leg.b'+'r\x22,\x22mt.leg'+'.br\x22,\x22pa.l')+('eg.br\x22,\x22pb'+'.leg.br\x22,\x22'+'pe.leg.br\x22'+',\x22pi.leg.b'+'r\x22,\x22pr.leg'+'.br\x22,\x22rj.l'+'eg.br\x22,\x22rn'+'.leg.br\x22,\x22'+'ro.leg.br\x22'+',\x22rr.leg.b'+'r\x22,\x22rs.leg'+'.br\x22,\x22sc.l'+'eg.br\x22,\x22se'+'.leg.br\x22,\x22'+'sp.leg.br\x22'+',\x22to.leg.b'+'r\x22,\x22pixoli'+'no.com\x22,\x22i'+'pifony.net'+'\x22,\x22mein-is'+'erv.de\x22,\x22t'+'est-iserv.'+'de\x22,\x22iserv'+'.dev\x22,\x22iob'+'b.net\x22,\x22my'+'jino.ru\x22,\x22'+'*.hosting.'+'myjino.ru\x22'+',\x22*.landin'+'g.myjino.r'+'u\x22,\x22*.spec'+'trum.myjin'+'o.ru\x22,\x22*.v'+'ps.myjino.'+'ru\x22,\x22*.tri'+'ton.zone\x22,'+'\x22*.cns.joy'+'ent.com\x22,\x22'+'js.org\x22,\x22k'+'aas.gg\x22,\x22k'+'hplay.nl\x22,'+'\x22keymachin'+'e.de\x22,\x22kin'+'ghost.net\x22'+',\x22uni5.net'+'\x22,\x22knightp'+'oint.syste'+'ms\x22,\x22oya.t'+'o\x22,\x22co.krd'+'\x22,\x22edu.krd'+'\x22,\x22git-rep'+'os.de\x22,\x22lc'+'ube-server'+'.de\x22,\x22svn-'+'repos.de\x22,'+'\x22leadpages'+'.co\x22,\x22lpag'+'es.co\x22,\x22lp'+'userconten'+'t.com\x22,\x22le'+'lux.site\x22,'+'\x22co.busine'+'ss\x22,\x22co.ed'+'ucation\x22,\x22'+'co.events\x22'+',\x22co.finan'+'cial\x22,\x22co.'+'network\x22,\x22'+'co.place\x22,'+'\x22co.techno'+'logy\x22,\x22app'+'.lmpm.com\x22'+',\x22linkitoo'+'ls.space\x22,'+'\x22linkyard.'+'cloud\x22,\x22li'+'nkyard-clo'+'ud.ch\x22,\x22me'+'mbers.lino'+'de.com\x22,\x22n'+'odebalance'+'r.linode.c'+'om\x22,\x22we.bs'+'\x22,\x22loginli'+'ne.app\x22,\x22l'+'oginline.d'+'ev\x22,\x22login'+'line.io\x22,\x22'+'loginline.'+'services\x22,'+'\x22loginline'+'.site\x22,\x22kr'+'asnik.pl\x22,'+'\x22leczna.pl'+'\x22,\x22lubarto'+'w.pl\x22,\x22lub'+'lin.pl\x22,\x22p'+'oniatowa.p'+'l\x22,\x22swidni'+'k.pl\x22,\x22ukl')+('ugs.org\x22,\x22'+'glug.org.u'+'k\x22,\x22lug.or'+'g.uk\x22,\x22lug'+'s.org.uk\x22,'+'\x22barsy.bg\x22'+',\x22barsy.co'+'.uk\x22,\x22bars'+'yonline.co'+'.uk\x22,\x22bars'+'ycenter.co'+'m\x22,\x22barsyo'+'nline.com\x22'+',\x22barsy.cl'+'ub\x22,\x22barsy'+'.de\x22,\x22bars'+'y.eu\x22,\x22bar'+'sy.in\x22,\x22ba'+'rsy.info\x22,'+'\x22barsy.io\x22'+',\x22barsy.me'+'\x22,\x22barsy.m'+'enu\x22,\x22bars'+'y.mobi\x22,\x22b'+'arsy.net\x22,'+'\x22barsy.onl'+'ine\x22,\x22bars'+'y.org\x22,\x22ba'+'rsy.pro\x22,\x22'+'barsy.pub\x22'+',\x22barsy.sh'+'op\x22,\x22barsy'+'.site\x22,\x22ba'+'rsy.suppor'+'t\x22,\x22barsy.'+'uk\x22,\x22*.mag'+'entosite.c'+'loud\x22,\x22may'+'first.info'+'\x22,\x22mayfirs'+'t.org\x22,\x22hb'+'.cldmail.r'+'u\x22,\x22minise'+'rver.com\x22,'+'\x22memset.ne'+'t\x22,\x22cloud.'+'metacentru'+'m.cz\x22,\x22cus'+'tom.metace'+'ntrum.cz\x22,'+'\x22flt.cloud'+'.muni.cz\x22,'+'\x22usr.cloud'+'.muni.cz\x22,'+'\x22meteorapp'+'.com\x22,\x22eu.'+'meteorapp.'+'com\x22,\x22co.p'+'l\x22,\x22azurec'+'ontainer.i'+'o\x22,\x22azurew'+'ebsites.ne'+'t\x22,\x22azure-'+'mobile.net'+'\x22,\x22cloudap'+'p.net\x22,\x22mo'+'zilla-iot.'+'org\x22,\x22bmoa'+'ttachments'+'.org\x22,\x22net'+'.ru\x22,\x22org.'+'ru\x22,\x22pp.ru'+'\x22,\x22ui.nabu'+'.casa\x22,\x22po'+'ny.club\x22,\x22'+'of.fashion'+'\x22,\x22on.fash'+'ion\x22,\x22of.f'+'ootball\x22,\x22'+'in.london\x22'+',\x22of.londo'+'n\x22,\x22for.me'+'n\x22,\x22and.mo'+'m\x22,\x22for.mo'+'m\x22,\x22for.on'+'e\x22,\x22for.sa'+'le\x22,\x22of.wo'+'rk\x22,\x22to.wo'+'rk\x22,\x22nctu.'+'me\x22,\x22bitba'+'lloon.com\x22'+',\x22netlify.'+'com\x22,\x224u.c'+'om\x22,\x22ngrok'+'.io\x22,\x22nh-s'+'erv.co.uk\x22'+',\x22nfshost.'+'com\x22,\x22dnsk'+'ing.ch\x22,\x22m'+'ypi.co\x22,\x22n')+('4t.co\x22,\x2200'+'1www.com\x22,'+'\x22ddnslive.'+'com\x22,\x22myip'+'host.com\x22,'+'\x22forumz.in'+'fo\x22,\x2216-b.'+'it\x22,\x2232-b.'+'it\x22,\x2264-b.'+'it\x22,\x22sound'+'cast.me\x22,\x22'+'tcp4.me\x22,\x22'+'dnsup.net\x22'+',\x22hicam.ne'+'t\x22,\x22now-dn'+'s.net\x22,\x22ow'+'nip.net\x22,\x22'+'vpndns.net'+'\x22,\x22dynserv'+'.org\x22,\x22now'+'-dns.org\x22,'+'\x22x443.pw\x22,'+'\x22now-dns.t'+'op\x22,\x22ntdll'+'.top\x22,\x22fre'+'eddns.us\x22,'+'\x22crafting.'+'xyz\x22,\x22zapt'+'o.xyz\x22,\x22ns'+'update.inf'+'o\x22,\x22nerdpo'+'l.ovh\x22,\x22bl'+'ogsyte.com'+'\x22,\x22brasili'+'a.me\x22,\x22cab'+'le-modem.o'+'rg\x22,\x22cisco'+'freak.com\x22'+',\x22collegef'+'an.org\x22,\x22c'+'ouchpotato'+'fries.org\x22'+',\x22damnserv'+'er.com\x22,\x22d'+'dns.me\x22,\x22d'+'itchyourip'+'.com\x22,\x22dns'+'for.me\x22,\x22d'+'nsiskinky.'+'com\x22,\x22dvrc'+'am.info\x22,\x22'+'dynns.com\x22'+',\x22eating-o'+'rganic.net'+'\x22,\x22fantasy'+'league.cc\x22'+',\x22geekgala'+'xy.com\x22,\x22g'+'olffan.us\x22'+',\x22health-c'+'arereform.'+'com\x22,\x22home'+'securityma'+'c.com\x22,\x22ho'+'mesecurity'+'pc.com\x22,\x22h'+'opto.me\x22,\x22'+'ilovecolle'+'ge.info\x22,\x22'+'loginto.me'+'\x22,\x22mlbfan.'+'org\x22,\x22mmaf'+'an.biz\x22,\x22m'+'yactivedir'+'ectory.com'+'\x22,\x22mydisse'+'nt.net\x22,\x22m'+'yeffect.ne'+'t\x22,\x22mymedi'+'apc.net\x22,\x22'+'mypsx.net\x22'+',\x22mysecuri'+'tycamera.c'+'om\x22,\x22mysec'+'uritycamer'+'a.net\x22,\x22my'+'securityca'+'mera.org\x22,'+'\x22net-freak'+'s.com\x22,\x22nf'+'lfan.org\x22,'+'\x22nhlfan.ne'+'t\x22,\x22no-ip.'+'ca\x22,\x22no-ip'+'.co.uk\x22,\x22n'+'o-ip.net\x22,'+'\x22noip.us\x22,'+'\x22onthewifi'+'.com\x22,\x22pga'+'fan.net\x22,\x22')+('point2this'+'.com\x22,\x22poi'+'ntto.us\x22,\x22'+'privatizeh'+'ealthinsur'+'ance.net\x22,'+'\x22quicksyte'+'s.com\x22,\x22re'+'ad-books.o'+'rg\x22,\x22secur'+'itytactics'+'.com\x22,\x22ser'+'veexchange'+'.com\x22,\x22ser'+'vehumour.c'+'om\x22,\x22serve'+'p2p.com\x22,\x22'+'servesarca'+'sm.com\x22,\x22s'+'tufftoread'+'.com\x22,\x22ufc'+'fan.org\x22,\x22'+'unusualper'+'son.com\x22,\x22'+'workisbori'+'ng.com\x22,\x223'+'utilities.'+'com\x22,\x22boun'+'ceme.net\x22,'+'\x22ddns.net\x22'+',\x22ddnsking'+'.com\x22,\x22got'+'dns.ch\x22,\x22h'+'opto.org\x22,'+'\x22myftp.biz'+'\x22,\x22myftp.o'+'rg\x22,\x22myvnc'+'.com\x22,\x22no-'+'ip.biz\x22,\x22n'+'o-ip.info\x22'+',\x22no-ip.or'+'g\x22,\x22noip.m'+'e\x22,\x22redire'+'ctme.net\x22,'+'\x22servebeer'+'.com\x22,\x22ser'+'veblog.net'+'\x22,\x22serveco'+'unterstrik'+'e.com\x22,\x22se'+'rveftp.com'+'\x22,\x22servega'+'me.com\x22,\x22s'+'ervehalfli'+'fe.com\x22,\x22s'+'ervehttp.c'+'om\x22,\x22serve'+'irc.com\x22,\x22'+'serveminec'+'raft.net\x22,'+'\x22servemp3.'+'com\x22,\x22serv'+'epics.com\x22'+',\x22servequa'+'ke.com\x22,\x22s'+'ytes.net\x22,'+'\x22webhop.me'+'\x22,\x22zapto.o'+'rg\x22,\x22stage'+'.nodeart.i'+'o\x22,\x22nodum.'+'co\x22,\x22nodum'+'.io\x22,\x22pclo'+'ud.host\x22,\x22'+'nyc.mn\x22,\x22n'+'om.ae\x22,\x22no'+'m.af\x22,\x22nom'+'.ai\x22,\x22nom.'+'al\x22,\x22nym.b'+'y\x22,\x22nom.bz'+'\x22,\x22nym.bz\x22'+',\x22nom.cl\x22,'+'\x22nym.ec\x22,\x22'+'nom.gd\x22,\x22n'+'om.ge\x22,\x22no'+'m.gl\x22,\x22nym'+'.gr\x22,\x22nom.'+'gt\x22,\x22nym.g'+'y\x22,\x22nym.hk'+'\x22,\x22nom.hn\x22'+',\x22nym.ie\x22,'+'\x22nom.im\x22,\x22'+'nom.ke\x22,\x22n'+'ym.kz\x22,\x22ny'+'m.la\x22,\x22nym'+'.lc\x22,\x22nom.'+'li\x22,\x22nym.l'+'i\x22,\x22nym.lt'+'\x22,\x22nym.lu\x22'+',\x22nom.lv\x22,')+('\x22nym.me\x22,\x22'+'nom.mk\x22,\x22n'+'ym.mn\x22,\x22ny'+'m.mx\x22,\x22nom'+'.nu\x22,\x22nym.'+'nz\x22,\x22nym.p'+'e\x22,\x22nym.pt'+'\x22,\x22nom.pw\x22'+',\x22nom.qa\x22,'+'\x22nym.ro\x22,\x22'+'nom.rs\x22,\x22n'+'om.si\x22,\x22ny'+'m.sk\x22,\x22nom'+'.st\x22,\x22nym.'+'su\x22,\x22nym.s'+'x\x22,\x22nom.tj'+'\x22,\x22nym.tw\x22'+',\x22nom.ug\x22,'+'\x22nom.uy\x22,\x22'+'nom.vc\x22,\x22n'+'om.vg\x22,\x22st'+'atic.obser'+'vableuserc'+'ontent.com'+'\x22,\x22cya.gg\x22'+',\x22cloudycl'+'uster.net\x22'+',\x22nid.io\x22,'+'\x22opencraft'+'.hosting\x22,'+'\x22operaunit'+'e.com\x22,\x22sk'+'ygearapp.c'+'om\x22,\x22outsy'+'stemscloud'+'.com\x22,\x22own'+'provider.c'+'om\x22,\x22own.p'+'m\x22,\x22ox.rs\x22'+',\x22oy.lc\x22,\x22'+'pgfog.com\x22'+',\x22pagefron'+'tapp.com\x22,'+'\x22art.pl\x22,\x22'+'gliwice.pl'+'\x22,\x22krakow.'+'pl\x22,\x22pozna'+'n.pl\x22,\x22wro'+'c.pl\x22,\x22zak'+'opane.pl\x22,'+'\x22pantheons'+'ite.io\x22,\x22g'+'otpantheon'+'.com\x22,\x22myp'+'ep.link\x22,\x22'+'perspecta.'+'cloud\x22,\x22on'+'-web.fr\x22,\x22'+'*.platform'+'.sh\x22,\x22*.pl'+'atformsh.s'+'ite\x22,\x22dyn5'+'3.io\x22,\x22co.'+'bn\x22,\x22xen.p'+'rgmr.com\x22,'+'\x22priv.at\x22,'+'\x22prvcy.pag'+'e\x22,\x22*.dweb'+'.link\x22,\x22pr'+'otonet.io\x22'+',\x22chirurgi'+'ens-dentis'+'tes-en-fra'+'nce.fr\x22,\x22b'+'yen.site\x22,'+'\x22pubtls.or'+'g\x22,\x22qualif'+'ioapp.com\x22'+',\x22qbuser.c'+'om\x22,\x22insta'+'ntcloud.cn'+'\x22,\x22ras.ru\x22'+',\x22qa2.com\x22'+',\x22qcx.io\x22,'+'\x22*.sys.qcx'+'.io\x22,\x22dev-'+'myqnapclou'+'d.com\x22,\x22al'+'pha-myqnap'+'cloud.com\x22'+',\x22myqnapcl'+'oud.com\x22,\x22'+'*.quipelem'+'ents.com\x22,'+'\x22vapor.clo'+'ud\x22,\x22vapor'+'cloud.io\x22,'+'\x22rackmaze.'+'com\x22,\x22rack'+'maze.net\x22,')+('\x22*.on-k3s.'+'io\x22,\x22*.on-'+'rancher.cl'+'oud\x22,\x22*.on'+'-rio.io\x22,\x22'+'readthedoc'+'s.io\x22,\x22rhc'+'loud.com\x22,'+'\x22app.rende'+'r.com\x22,\x22on'+'render.com'+'\x22,\x22repl.co'+'\x22,\x22repl.ru'+'n\x22,\x22resind'+'evice.io\x22,'+'\x22devices.r'+'esinstagin'+'g.io\x22,\x22hzc'+'.io\x22,\x22well'+'beingzone.'+'eu\x22,\x22ptplu'+'s.fit\x22,\x22we'+'llbeingzon'+'e.co.uk\x22,\x22'+'git-pages.'+'rit.edu\x22,\x22'+'sandcats.i'+'o\x22,\x22logoip'+'.de\x22,\x22logo'+'ip.com\x22,\x22s'+'chokokeks.'+'net\x22,\x22gov.'+'scot\x22,\x22scr'+'ysec.com\x22,'+'\x22firewall-'+'gateway.co'+'m\x22,\x22firewa'+'ll-gateway'+'.de\x22,\x22my-g'+'ateway.de\x22'+',\x22my-route'+'r.de\x22,\x22spd'+'ns.de\x22,\x22sp'+'dns.eu\x22,\x22f'+'irewall-ga'+'teway.net\x22'+',\x22my-firew'+'all.org\x22,\x22'+'myfirewall'+'.org\x22,\x22spd'+'ns.org\x22,\x22s'+'enseering.'+'net\x22,\x22biz.'+'ua\x22,\x22co.ua'+'\x22,\x22pp.ua\x22,'+'\x22shiftedit'+'.io\x22,\x22mysh'+'opblocks.c'+'om\x22,\x22shopi'+'tsite.com\x22'+',\x22mo-sieme'+'ns.io\x22,\x221k'+'app.com\x22,\x22'+'appchizi.c'+'om\x22,\x22appli'+'nzi.com\x22,\x22'+'sinaapp.co'+'m\x22,\x22vipsin'+'aapp.com\x22,'+'\x22siteleaf.'+'net\x22,\x22boun'+'ty-full.co'+'m\x22,\x22alpha.'+'bounty-ful'+'l.com\x22,\x22be'+'ta.bounty-'+'full.com\x22,'+'\x22stackhero'+'-network.c'+'om\x22,\x22stati'+'c.land\x22,\x22d'+'ev.static.'+'land\x22,\x22sit'+'es.static.'+'land\x22,\x22app'+'s.lair.io\x22'+',\x22*.stolos'+'.io\x22,\x22spac'+'ekit.io\x22,\x22'+'customer.s'+'peedpartne'+'r.de\x22,\x22api'+'.stdlib.co'+'m\x22,\x22storj.'+'farm\x22,\x22utw'+'ente.io\x22,\x22'+'soc.srcf.n'+'et\x22,\x22user.'+'srcf.net\x22,'+'\x22temp-dns.')+('com\x22,\x22appl'+'icationclo'+'ud.io\x22,\x22sc'+'app.io\x22,\x22*'+'.s5y.io\x22,\x22'+'*.sensiosi'+'te.cloud\x22,'+'\x22syncloud.'+'it\x22,\x22disks'+'tation.me\x22'+',\x22dscloud.'+'biz\x22,\x22dscl'+'oud.me\x22,\x22d'+'scloud.mob'+'i\x22,\x22dsmyna'+'s.com\x22,\x22ds'+'mynas.net\x22'+',\x22dsmynas.'+'org\x22,\x22fami'+'lyds.com\x22,'+'\x22familyds.'+'net\x22,\x22fami'+'lyds.org\x22,'+'\x22i234.me\x22,'+'\x22myds.me\x22,'+'\x22synology.'+'me\x22,\x22vpnpl'+'us.to\x22,\x22di'+'rect.quick'+'connect.to'+'\x22,\x22taifun-'+'dns.de\x22,\x22g'+'da.pl\x22,\x22gd'+'ansk.pl\x22,\x22'+'gdynia.pl\x22'+',\x22med.pl\x22,'+'\x22sopot.pl\x22'+',\x22edugit.o'+'rg\x22,\x22teleb'+'it.app\x22,\x22t'+'elebit.io\x22'+',\x22*.telebi'+'t.xyz\x22,\x22gw'+'iddle.co.u'+'k\x22,\x22thingd'+'ustdata.co'+'m\x22,\x22cust.d'+'ev.thingdu'+'st.io\x22,\x22cu'+'st.disrec.'+'thingdust.'+'io\x22,\x22cust.'+'prod.thing'+'dust.io\x22,\x22'+'cust.testi'+'ng.thingdu'+'st.io\x22,\x22ar'+'vo.network'+'\x22,\x22azimuth'+'.network\x22,'+'\x22bloxcms.c'+'om\x22,\x22townn'+'ews-stagin'+'g.com\x22,\x2212'+'hp.at\x22,\x222i'+'x.at\x22,\x224li'+'ma.at\x22,\x22li'+'ma-city.at'+'\x22,\x2212hp.ch'+'\x22,\x222ix.ch\x22'+',\x224lima.ch'+'\x22,\x22lima-ci'+'ty.ch\x22,\x22tr'+'afficplex.'+'cloud\x22,\x22de'+'.cool\x22,\x2212'+'hp.de\x22,\x222i'+'x.de\x22,\x224li'+'ma.de\x22,\x22li'+'ma-city.de'+'\x22,\x221337.pi'+'ctures\x22,\x22c'+'lan.rip\x22,\x22'+'lima-city.'+'rocks\x22,\x22we'+'bspace.roc'+'ks\x22,\x22lima.'+'zone\x22,\x22*.t'+'ransurl.be'+'\x22,\x22*.trans'+'url.eu\x22,\x22*'+'.transurl.'+'nl\x22,\x22tuxfa'+'mily.org\x22,'+'\x22dd-dns.de'+'\x22,\x22disksta'+'tion.eu\x22,\x22'+'diskstatio'+'n.org\x22,\x22dr'+'ay-dns.de\x22')+(',\x22draydns.'+'de\x22,\x22dyn-v'+'pn.de\x22,\x22dy'+'nvpn.de\x22,\x22'+'mein-vigor'+'.de\x22,\x22my-v'+'igor.de\x22,\x22'+'my-wan.de\x22'+',\x22syno-ds.'+'de\x22,\x22synol'+'ogy-diskst'+'ation.de\x22,'+'\x22synology-'+'ds.de\x22,\x22ub'+'er.space\x22,'+'\x22*.uberspa'+'ce.de\x22,\x22hk'+'.com\x22,\x22hk.'+'org\x22,\x22ltd.'+'hk\x22,\x22inc.h'+'k\x22,\x22virtua'+'luser.de\x22,'+'\x22virtual-u'+'ser.de\x22,\x22u'+'rown.cloud'+'\x22,\x22dnsupda'+'te.info\x22,\x22'+'lib.de.us\x22'+',\x222038.io\x22'+',\x22router.m'+'anagement\x22'+',\x22v-info.i'+'nfo\x22,\x22voor'+'loper.clou'+'d\x22,\x22v.ua\x22,'+'\x22wafflecel'+'l.com\x22,\x22*.'+'webhare.de'+'v\x22,\x22wedepl'+'oy.io\x22,\x22we'+'deploy.me\x22'+',\x22wedeploy'+'.sh\x22,\x22remo'+'tewd.com\x22,'+'\x22wmflabs.o'+'rg\x22,\x22myfor'+'um.communi'+'ty\x22,\x22commu'+'nity-pro.d'+'e\x22,\x22diskus'+'sionsberei'+'ch.de\x22,\x22co'+'mmunity-pr'+'o.net\x22,\x22me'+'inforum.ne'+'t\x22,\x22half.h'+'ost\x22,\x22xnba'+'y.com\x22,\x22u2'+'.xnbay.com'+'\x22,\x22u2-loca'+'l.xnbay.co'+'m\x22,\x22cistro'+'n.nl\x22,\x22dem'+'on.nl\x22,\x22xs'+'4all.space'+'\x22,\x22yandexc'+'loud.net\x22,'+'\x22storage.y'+'andexcloud'+'.net\x22,\x22web'+'site.yande'+'xcloud.net'+'\x22,\x22officia'+'l.academy\x22'+',\x22yolasite'+'.com\x22,\x22ybo'+'.faith\x22,\x22y'+'ombo.me\x22,\x22'+'homelink.o'+'ne\x22,\x22ybo.p'+'arty\x22,\x22ybo'+'.review\x22,\x22'+'ybo.scienc'+'e\x22,\x22ybo.tr'+'ade\x22,\x22noho'+'st.me\x22,\x22no'+'ho.st\x22,\x22za'+'.net\x22,\x22za.'+'org\x22,\x22now.'+'sh\x22,\x22bss.d'+'esign\x22,\x22ba'+'sicserver.'+'io\x22,\x22virtu'+'alserver.i'+'o\x22,\x22enterp'+'risecloud.'+'nu\x22]'));}},_0xe259aa={};function _0x2fe768(_0xd498f8){var _0xa8b5f1=_0xe259aa[_0xd498f8];if(void(-0xaad+-0x1373*0x2+0x3193)!==_0xa8b5f1)return _0xa8b5f1['exports'];var _0x3ec851=_0xe259aa[_0xd498f8]={'exports':{}};return _0x37fdef[_0xd498f8]['call'](_0x3ec851['exports'],_0x3ec851,_0x3ec851['exports'],_0x2fe768),_0x3ec851['exports'];}_0x2fe768['d']=(_0xe2e9ad,_0x549183)=>{for(var _0x326826 in _0x549183)_0x2fe768['o'](_0x549183,_0x326826)&&!_0x2fe768['o'](_0xe2e9ad,_0x326826)&&Object['defineProp'+'erty'](_0xe2e9ad,_0x326826,{'enumerable':!(-0x1e3d+-0x89b+0x26d8),'get':_0x549183[_0x326826]});},_0x2fe768['o']=(_0x275a4b,_0x31fa1c)=>Object['prototype']['hasOwnProp'+'erty']['call'](_0x275a4b,_0x31fa1c),_0x2fe768['r']=_0x145874=>{'undefined'!=typeof Symbol&&Symbol['toStringTa'+'g']&&Object['defineProp'+'erty'](_0x145874,Symbol['toStringTa'+'g'],{'value':'Module'}),Object['defineProp'+'erty'](_0x145874,'__esModule',{'value':!(-0x2*0x8b5+0x1fec+-0x4d6*0x3)});};var _0x4925d2=_0x2fe768(-0x40f3+0x2f3c+0x38bf);module['exports']=_0x4925d2;})()); \ No newline at end of file diff --git a/src/mvm/impl/MVM.d.ts b/src/mvm/impl/MVM.d.ts index 1966380..7c46fef 100644 --- a/src/mvm/impl/MVM.d.ts +++ b/src/mvm/impl/MVM.d.ts @@ -27,6 +27,7 @@ export default class MVM extends EventEmitter implements IMVM { clearBreakpoint(fileName: string, lineNumber: number, condition?: string, anonymousIndex?: number): Promise; unpause(): void; interrupt(): void; + pauseInDebugger(): void; getMatlabRelease(): string | null; isReady(): boolean; waitUntilReady(): Promise; diff --git a/src/mvm/impl/MVM.js b/src/mvm/impl/MVM.js index 0304447..abb0bc2 100644 --- a/src/mvm/impl/MVM.js +++ b/src/mvm/impl/MVM.js @@ -1 +1 @@ -((()=>{'use strict';var _0x251337={0x96:function(_0x500a1b,_0x22f576,_0x3f8296){var _0x2bce9c=this&&this['__createBi'+'nding']||(Object['create']?function(_0x1b0130,_0x1ca415,_0x16f7b0,_0x24914e){void(-0x139f*-0x1+-0x150*-0xa+-0x20bf)===_0x24914e&&(_0x24914e=_0x16f7b0);var _0x61420=Object['getOwnProp'+'ertyDescri'+'ptor'](_0x1ca415,_0x16f7b0);_0x61420&&!('get'in _0x61420?!_0x1ca415['__esModule']:_0x61420['writable']||_0x61420['configurab'+'le'])||(_0x61420={'enumerable':!(-0x1bd*-0x2+0x1*0x11b5+-0x152f),'get':function(){return _0x1ca415[_0x16f7b0];}}),Object['defineProp'+'erty'](_0x1b0130,_0x24914e,_0x61420);}:function(_0x41720a,_0x37f35a,_0x1e139c,_0x206acd){void(-0x1307*0x1+-0xfe1+0x22e8)===_0x206acd&&(_0x206acd=_0x1e139c),_0x41720a[_0x206acd]=_0x37f35a[_0x1e139c];}),_0x4408b0=this&&this['__exportSt'+'ar']||function(_0x422cd4,_0x211b4d){for(var _0x2e5a3d in _0x422cd4)'default'===_0x2e5a3d||Object['prototype']['hasOwnProp'+'erty']['call'](_0x211b4d,_0x2e5a3d)||_0x2bce9c(_0x211b4d,_0x422cd4,_0x2e5a3d);},_0x3d99d1=this&&this['__awaiter']||function(_0x45fbe4,_0x358bcb,_0x47b2c4,_0x428917){return new(_0x47b2c4||(_0x47b2c4=Promise))(function(_0x2d6429,_0x25cc77){function _0x5487e8(_0x3adcc8){try{_0x590af4(_0x428917['next'](_0x3adcc8));}catch(_0x277e82){_0x25cc77(_0x277e82);}}function _0x29e6e5(_0xbbd534){try{_0x590af4(_0x428917['throw'](_0xbbd534));}catch(_0x45c801){_0x25cc77(_0x45c801);}}function _0x590af4(_0x561d61){var _0x23783e;_0x561d61['done']?_0x2d6429(_0x561d61['value']):(_0x23783e=_0x561d61['value'],_0x23783e instanceof _0x47b2c4?_0x23783e:new _0x47b2c4(function(_0x5eb92c){_0x5eb92c(_0x23783e);}))['then'](_0x5487e8,_0x29e6e5);}_0x590af4((_0x428917=_0x428917['apply'](_0x45fbe4,_0x358bcb||[]))['next']());});},_0x1756a4=this&&this['__importDe'+'fault']||function(_0x187ec4){return _0x187ec4&&_0x187ec4['__esModule']?_0x187ec4:{'default':_0x187ec4};};Object['defineProp'+'erty'](_0x22f576,'__esModule',{'value':!(-0x6f*0x9+-0x183a+-0x1*-0x1c21)}),_0x22f576['MatlabStat'+'e']=void(0x19d5+-0x174*-0x17+-0x3b41);const _0x53806f=_0x1756a4(_0x3f8296(0xd*-0x281+-0x1*-0x1ac1+0x9*0x107)),_0x588f0f=_0x1756a4(_0x3f8296(0x104d*-0x1+-0xe99+0x201e)),_0x2eae81=_0x1756a4(_0x3f8296(-0x1*-0xf32+0x9*-0x315+0x115*0xc)),_0x4e2b69=_0x1756a4(_0x3f8296(-0x1*0xaf7+0x5c*0x23+-0x176)),_0x5627f4=_0x3f8296(0x49*-0x6b+0x239c+-0x3b2),_0x2ecef9=_0x1756a4(_0x3f8296(-0x158*0x1b+0x15a*-0xa+-0x6*-0x895));var _0x135c23;_0x4408b0(_0x3f8296(0xf95+-0x1*0x1ed4+-0x10a6*-0x1),_0x22f576),function(_0x1cfdba){_0x1cfdba['DISCONNECT'+'ED']='disconnect'+'ed',_0x1cfdba['READY']='ready',_0x1cfdba['BUSY']='busy';}(_0x135c23=_0x22f576['MatlabStat'+'e']||(_0x22f576['MatlabStat'+'e']={}));class _0x49bdb2 extends _0x2ecef9['default']{constructor(_0x3cec6f,_0x514feb){super(),this['_isReady']=!(-0x1e2e+-0x1*0xa6b+-0x144d*-0x2),this['_lifecycle'+'Manager']=_0x3cec6f,this['_logger']=_0x514feb,this['_lifecycle'+'Manager']['eventEmitt'+'er']['on']('connected',this['_handleMat'+'labConnect'+'ed']['bind'](this)),this['_lifecycle'+'Manager']['eventEmitt'+'er']['on']('disconnect'+'ed',this['_handleMat'+'labDisconn'+'ected']['bind'](this));}['eval'](_0xe9e73,_0x3b9fcb=!(0x546+-0xce1+0x79b),_0x3389c2){return this['_mvmImpl']?this['_mvmImpl']['eval'](_0xe9e73,_0x3b9fcb,_0x3389c2):Promise['reject']();}['feval'](_0x4ef53e,_0xf918fc,_0x274096,_0x3aa68c=!(0x9d*0x1+0x11*0x1c9+-0x1ef5),_0x11ee69){return this['_mvmImpl']?this['_mvmImpl']['feval'](_0x4ef53e,_0xf918fc,_0x274096,_0x3aa68c,_0x11ee69):Promise['reject']();}['setBreakpo'+'int'](_0x4a0392,_0x213e58,_0x5ee945,_0x34d988){return this['_mvmImpl']?this['_mvmImpl']['setBreakpo'+'int'](_0x4a0392,_0x213e58,_0x5ee945,_0x34d988):Promise['reject']();}['clearBreak'+'point'](_0x4b5077,_0x43ac8b,_0x787113,_0x1c1cce){return this['_mvmImpl']?this['_mvmImpl']['clearBreak'+'point'](_0x4b5077,_0x43ac8b,_0x787113,_0x1c1cce):Promise['reject']();}['unpause'](){var _0x185e19;null===(_0x185e19=this['_mvmImpl'])||void(-0xaed*0x1+0x220a+0x1*-0x171d)===_0x185e19||_0x185e19['unpause']();}['interrupt'](){var _0x3276be;null===(_0x3276be=this['_mvmImpl'])||void(-0x2642+-0x1bc9+0x420b)===_0x3276be||_0x3276be['interrupt']();}['getMatlabR'+'elease'](){var _0xce8f02;return null!==(_0xce8f02=this['_lifecycle'+'Manager']['getMatlabR'+'elease']())&&void(0xf21*-0x1+0x25f+-0xcc2*-0x1)!==_0xce8f02?_0xce8f02:null;}['isReady'](){return this['_isReady'];}['waitUntilR'+'eady'](){return _0x3d99d1(this,void(-0x313*-0x4+0x1*0x8b+0xad*-0x13),void(-0xe*-0x202+-0x1*0x218d+0x571),function*(){return this['isReady']()?Promise['resolve']():null==this['_readyProm'+'ise']?Promise['reject']():this['_readyProm'+'ise'];});}['_handleMat'+'labDisconn'+'ected'](){this['_mvmImpl']&&this['_mvmImpl']['detach'](),this['_mvmImpl']=void(0x340+-0x4*0x998+0x2320),this['_isReady']=!(0x11*-0x79+0x4*0x8de+-0x1b6e),this['emit'](_0x5627f4['IMVM']['Events']['stateChang'+'e'],_0x135c23['DISCONNECT'+'ED'],void(-0x12f5+0xb15*0x3+-0xe4a));}['_handleMat'+'labConnect'+'ed'](){this['_tryAttach']();}['_tryAttach'](){this['_readyProm'+'ise']=this['_detectImp'+'l'](),this['_readyProm'+'ise']['then'](this['_handleRea'+'dy']['bind'](this),this['_handleRea'+'dyError']['bind'](this));}['_handleRea'+'dy'](){if(!this['_mvmImpl'])throw'MVMImpl\x20no'+'t\x20set';this['_mvmImpl']['on'](_0x5627f4['IMVM']['Events']['output'],this['emit']['bind'](this,_0x5627f4['IMVM']['Events']['output'])),this['_mvmImpl']['on'](_0x5627f4['IMVM']['Events']['clc'],this['emit']['bind'](this,_0x5627f4['IMVM']['Events']['clc'])),this['_mvmImpl']['on'](_0x5627f4['IMVM']['Events']['promptChan'+'ge'],this['emit']['bind'](this,_0x5627f4['IMVM']['Events']['promptChan'+'ge'])),this['_isReady']=!(0xcf8+0x1ac6+-0x1*0x27be),this['emit'](_0x5627f4['IMVM']['Events']['stateChang'+'e'],_0x135c23['READY'],this['_lifecycle'+'Manager']['getMatlabR'+'elease']()),this['_setupDebu'+'ggerListen'+'ers']();}['_handleRea'+'dyError'](){}['_detectImp'+'l'](){return _0x3d99d1(this,void(-0x1e+-0x3*0x676+-0x1*-0x1380),void(0xb31+0x260c+0x1*-0x313d),function*(){const _0xde5c1e=this['_lifecycle'+'Manager']['getMatlabR'+'elease']();if(null===_0xde5c1e)throw new Error('No\x20valid\x20M'+'ATLAB\x20rele'+'ase\x20detect'+'ed\x20when\x20tr'+'ying\x20to\x20at'+'tach');const _0x3ab00e=_0xde5c1e['match'](/^R20([0-9]{2}[ab])$/);if(null==_0x3ab00e)throw new Error('No\x20valid\x20M'+'ATLAB\x20rele'+'ase\x20match\x20'+'detected\x20w'+'hen\x20trying'+'\x20to\x20attach');const _0x4a8ae9=_0x3ab00e[0xabe*-0x1+-0x889+0x1348];switch(_0x4a8ae9){case'21b':{const _0x98e4f8=new _0x4e2b69['default'](this['_lifecycle'+'Manager'],this['_logger']);if(yield _0x98e4f8['tryAttach'](_0x4a8ae9))return void(this['_mvmImpl']=_0x98e4f8);}break;case'22a':{const _0x4c4a09=new _0x2eae81['default'](this['_lifecycle'+'Manager'],this['_logger']);if(yield _0x4c4a09['tryAttach'](_0x4a8ae9))return void(this['_mvmImpl']=_0x4c4a09);}break;case'22b':{const _0x40df04=new _0x588f0f['default'](this['_lifecycle'+'Manager'],this['_logger']);if(yield _0x40df04['tryAttach'](_0x4a8ae9))return void(this['_mvmImpl']=_0x40df04);}break;default:{const _0x43549a=new _0x53806f['default'](this['_lifecycle'+'Manager'],this['_logger']);if(yield _0x43549a['tryAttach'](_0x4a8ae9))return void(this['_mvmImpl']=_0x43549a);}}throw new Error('Unable\x20to\x20'+'attach\x20to\x20'+'MATLAB\x20MVM');});}['_setupDebu'+'ggerListen'+'ers'](){return _0x3d99d1(this,void(-0x159d+0x151e+0x7f*0x1),void(-0x79f+-0xcfb+0x36f*0x6),function*(){const _0xb2e9c1=yield this['_lifecycle'+'Manager']['getMatlabC'+'onnection']();_0xb2e9c1&&(this['_setupDebu'+'gListener'](_0xb2e9c1,'EnterDebug'+'gerEvent'),this['_setupDebu'+'gListener'](_0xb2e9c1,'EnterDebug'+'gerWithWar'+'ningEvent'),this['_setupDebu'+'gListener'](_0xb2e9c1,'ContinueEx'+'ecutionEve'+'nt'),this['_setupDebu'+'gListener'](_0xb2e9c1,'ExitDebugg'+'erEvent'),this['_setupDebu'+'gListener'](_0xb2e9c1,'ChangeCurr'+'entWorkspa'+'ceEvent'),this['_setupDebu'+'gListener'](_0xb2e9c1,'AddLineNum'+'berBreakpo'+'intEvent'),this['_setupDebu'+'gListener'](_0xb2e9c1,'DeleteLine'+'NumberBrea'+'kpointEven'+'t'),this['_setupDebu'+'gListener'](_0xb2e9c1,'DeleteAllB'+'reakpoints'+'Event'),this['_setupDebu'+'gListener'](_0xb2e9c1,'AddProgram'+'WideBreakp'+'ointEvent'),this['_setupDebu'+'gListener'](_0xb2e9c1,'DeleteProg'+'ramWideBre'+'akpointEve'+'nt'));});}['_setupDebu'+'gListener'](_0x4147cb,_0x1d4ae1){_0x4147cb['subscribe']('/eventmgr/'+'1/::MathWo'+'rks::Execu'+'tionEvents'+'::'+_0x1d4ae1,_0x470e7d=>{this['emit'](_0x1d4ae1,_0x470e7d);});}}_0x22f576['default']=_0x49bdb2;},0x27:function(_0x3c0340,_0x1efa58,_0x48282b){var _0x11ae5f=this&&this['__createBi'+'nding']||(Object['create']?function(_0x1249ca,_0x879ca7,_0x5f46b3,_0x417b8c){void(0xbcd+-0x50*0x14+0x58d*-0x1)===_0x417b8c&&(_0x417b8c=_0x5f46b3);var _0x179d85=Object['getOwnProp'+'ertyDescri'+'ptor'](_0x879ca7,_0x5f46b3);_0x179d85&&!('get'in _0x179d85?!_0x879ca7['__esModule']:_0x179d85['writable']||_0x179d85['configurab'+'le'])||(_0x179d85={'enumerable':!(0x2e7*-0x4+0x9f3+0x55*0x5),'get':function(){return _0x879ca7[_0x5f46b3];}}),Object['defineProp'+'erty'](_0x1249ca,_0x417b8c,_0x179d85);}:function(_0x59228b,_0x45e1b5,_0x2fd386,_0x30a0b7){void(0xc*-0x5c+0xde*0x1+0x372)===_0x30a0b7&&(_0x30a0b7=_0x2fd386),_0x59228b[_0x30a0b7]=_0x45e1b5[_0x2fd386];}),_0x2ea4d5=this&&this['__setModul'+'eDefault']||(Object['create']?function(_0xe1913d,_0x43dd6d){Object['defineProp'+'erty'](_0xe1913d,'default',{'enumerable':!(0x60b+0x1b01+0xbc*-0x2d),'value':_0x43dd6d});}:function(_0xee9420,_0x539f84){_0xee9420['default']=_0x539f84;}),_0x1c279b=this&&this['__importSt'+'ar']||function(_0x1be834){if(_0x1be834&&_0x1be834['__esModule'])return _0x1be834;var _0xbacd56={};if(null!=_0x1be834){for(var _0x56bbf9 in _0x1be834)'default'!==_0x56bbf9&&Object['prototype']['hasOwnProp'+'erty']['call'](_0x1be834,_0x56bbf9)&&_0x11ae5f(_0xbacd56,_0x1be834,_0x56bbf9);}return _0x2ea4d5(_0xbacd56,_0x1be834),_0xbacd56;},_0x4165a7=this&&this['__awaiter']||function(_0x3ceec5,_0x5c2fac,_0x5280e0,_0x366a90){return new(_0x5280e0||(_0x5280e0=Promise))(function(_0xbcd2ad,_0x399c98){function _0x13d7df(_0x2b8351){try{_0x2a1c0c(_0x366a90['next'](_0x2b8351));}catch(_0x3a34b5){_0x399c98(_0x3a34b5);}}function _0x44467e(_0x47fad0){try{_0x2a1c0c(_0x366a90['throw'](_0x47fad0));}catch(_0x2c689a){_0x399c98(_0x2c689a);}}function _0x2a1c0c(_0x3a6080){var _0x2c387b;_0x3a6080['done']?_0xbcd2ad(_0x3a6080['value']):(_0x2c387b=_0x3a6080['value'],_0x2c387b instanceof _0x5280e0?_0x2c387b:new _0x5280e0(function(_0x305d45){_0x305d45(_0x2c387b);}))['then'](_0x13d7df,_0x44467e);}_0x2a1c0c((_0x366a90=_0x366a90['apply'](_0x3ceec5,_0x5c2fac||[]))['next']());});};Object['defineProp'+'erty'](_0x1efa58,'__esModule',{'value':!(-0x1e22+0x1*-0x13ab+0x31cd*0x1)});const _0x2e5c5a=_0x1c279b(_0x48282b(-0x2*-0xc76+0xa2*-0x7+0x11*-0x121)),_0x5980df=_0x48282b(0xd0f*-0x2+0x1737*-0x1+-0xad*-0x49),_0x5812f3=_0x48282b(0x1*0x174b+-0x1085*-0x1+0x2669*-0x1);class _0x1ada44 extends _0x2e5c5a['default']{constructor(_0x1f76a4,_0x17752f){super(_0x17752f),this['_currentRe'+'questId']=-0x8d*-0x2b+0xbeb+-0x239a,this['_eventSubs'+'criptions']={},this['_lifecycle'+'Manager']=_0x1f76a4;}['_getChanne'+'l'](_0x1b4551,..._0x5cad0d){switch(_0x1b4551){case _0x2e5c5a['MessageTyp'+'e']['ATTACH']:return'/mvm/attac'+'h';case _0x2e5c5a['MessageTyp'+'e']['ATTACH_RES'+'PONSE']:return'/mvm/attac'+'h/response'+'/'+_0x5cad0d[0x9f*-0x37+0x5*-0x65a+0x41eb];case _0x2e5c5a['MessageTyp'+'e']['EVAL_REQUE'+'ST']:return'/mvm/reque'+'st/eval';case _0x2e5c5a['MessageTyp'+'e']['FEVAL_REQU'+'EST']:return'/mvm/reque'+'st/feval';case _0x2e5c5a['MessageTyp'+'e']['CANCEL']:return'/mvm/cance'+'l';case _0x2e5c5a['MessageTyp'+'e']['EVAL_FEVAL'+'_RESPONSE']:return'/mvm/respo'+'nse/'+this['_attachId'];case _0x2e5c5a['MessageTyp'+'e']['OUTPUT']:return'/mvm/outpu'+'t/'+this['_attachId'];case _0x2e5c5a['MessageTyp'+'e']['ERROR_OUTP'+'UT']:return'/mvm/error'+'/'+this['_attachId'];case _0x2e5c5a['MessageTyp'+'e']['CLC']:return'/matlabls/'+'events/clc';case _0x2e5c5a['MessageTyp'+'e']['EVENT_FIRE'+'D']:return'/mvm/event'+'Mgr/event/'+this['_attachId'];case _0x2e5c5a['MessageTyp'+'e']['EVENT_SUBS'+'CRIBE']:return'/mvm/event'+'Mgr/reques'+'t';case _0x2e5c5a['MessageTyp'+'e']['EVENT_SUBS'+'CRIBED']:return'/mvm/event'+'Mgr/respon'+'se/'+this['_attachId'];case _0x2e5c5a['MessageTyp'+'e']['SET_BREAKP'+'OINT_REQUE'+'ST']:case _0x2e5c5a['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_REQ'+'UEST']:case _0x2e5c5a['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_RES'+'PONSE']:case _0x2e5c5a['MessageTyp'+'e']['SET_BREAKP'+'OINT_RESPO'+'NSE']:case _0x2e5c5a['MessageTyp'+'e']['EVAL_RESPO'+'NSE']:case _0x2e5c5a['MessageTyp'+'e']['FEVAL_RESP'+'ONSE']:case _0x2e5c5a['MessageTyp'+'e']['STILL_ALIV'+'E']:case _0x2e5c5a['MessageTyp'+'e']['INTERRUPT']:throw'Message\x20un'+'used';}}['_getMessag'+'eData'](_0x16596d,..._0x4fd737){switch(_0x16596d){case _0x2e5c5a['MessageTyp'+'e']['ATTACH']:return{'attachID':_0x4fd737[0xb51+-0xaf6+0xd*-0x7],'mvmID':'user-mvm'};case _0x2e5c5a['MessageTyp'+'e']['EVAL_REQUE'+'ST']:return{'attachID':this['_attachId'],'requestID':_0x4fd737[0x2108+-0x2b*0x53+-0x1317],'command':_0x4fd737[0x2af+-0x840+-0x2c9*-0x2],'isUserEval':!(0x37+-0xee*-0x14+-0x12cf),'runOptions':_0x4fd737[-0x5d5*-0x1+0x1*0x1873+-0x1e46]};case _0x2e5c5a['MessageTyp'+'e']['FEVAL_REQU'+'EST']:return{'attachID':this['_attachId'],'requestID':_0x4fd737[-0x787+0x64d+0x13a],'function':_0x4fd737[-0x1*0x225a+-0x2635+0x4890],'numOutputsExpected':_0x4fd737[0x12b3*-0x1+0xb9*0x35+-0x344*0x6],'rhsArgs':_0x4fd737[0x31+-0x1*0x355+0x327],'runOptions':_0x4fd737[-0x247*0x1+0x25a+-0xf]};case _0x2e5c5a['MessageTyp'+'e']['CANCEL']:return{'attachID':this['_attachId'],'requestID':_0x4fd737[0x1db6+0x1a*-0x3a+-0xbe9*0x2],'interrupt':!(-0x11b5*-0x1+-0x1801+0x64c)};case _0x2e5c5a['MessageTyp'+'e']['SET_BREAKP'+'OINT_REQUE'+'ST']:return{'attachID':this['_attachId'],'requestID':_0x4fd737[-0x184f*0x1+-0xe*-0x25+0x1649],'breakpoint':_0x4fd737[-0xdca+0x2f5*0x4+0x1f7]};case _0x2e5c5a['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_REQ'+'UEST']:return{'attachID':this['_attachId'],'requestID':_0x4fd737[0xe3e+-0x2074+-0x309*-0x6],'interrupt':_0x4fd737[0x1cb0+-0x181+-0x1b2e]};}throw'Unknown\x20me'+'ssage\x20type'+'\x20to\x20get\x20da'+'ta\x20from';}['tryAttach'](_0x5819c3){return _0x4165a7(this,void(-0x14c*-0x1+0x19b6+0x2*-0xd81),void(-0x233*-0x1+0x2*0x1146+-0x24bf),function*(){if(this['_matlabCon'+'nection']=yield this['_lifecycle'+'Manager']['getMatlabC'+'onnection'](),null==this['_matlabCon'+'nection'])return!(0x1*0x1e01+-0xb3*0x31+-0x1*-0x443);const _0x426bab=(-0x3b*0x10+0x25b3+0x2203*-0x1,_0x5980df['createReso'+'lvableProm'+'ise'])(),_0x1b5c01=this['_getNewAtt'+'achId']();let _0x173418=0x127e+-0x6*0x176+-0x9ba,_0x297aae=!(0x1b5+-0xdd*0xb+0x7cb);const _0x4a03bf=()=>{var _0xe0774a;null===(_0xe0774a=this['_matlabCon'+'nection'])||void(0x9*-0xb4+-0x1ff8+0x264c)===_0xe0774a||_0xe0774a['publish'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['ATTACH']),this['_getMessag'+'eData'](_0x2e5c5a['MessageTyp'+'e']['ATTACH'],_0x1b5c01));},_0x134d41=setInterval(()=>{this['_logger']['error']('Timeout\x20wh'+'en\x20attachi'+'ng\x20to\x20rele'+'ase:\x20'+_0x5819c3),_0x173418++,_0x173418<-0x1*0x1b67+-0xd01*-0x2+0x168?(this['_logger']['log']('Retrying\x20a'+'ttach'),_0x4a03bf()):(this['_logger']['log']('Unable\x20to\x20'+'attach\x20aft'+'er\x20retries'),_0x297aae=!(0x17f5+0x2244+-0x3a39*0x1),clearInterval(_0x134d41),_0x426bab['resolve'](!(0x1718+-0x56f+0x1*-0x11a8)));},0xa5*-0x11+0x8fe*-0x1+0x1fab);return this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['ATTACH_RES'+'PONSE'],_0x1b5c01),_0x38acc0=>{clearInterval(_0x134d41),_0x297aae||(this['_logger']['log']('MVM\x20attach'+'\x20success'),_0x38acc0['error']?_0x426bab['resolve'](!(0xe15+-0x3*-0x9cc+-0x2b78)):this['_matlabCon'+'nection']?(this['_attachId']=_0x1b5c01,this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['EVAL_FEVAL'+'_RESPONSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['OUTPUT']),this['_handleOut'+'put']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['ERROR_OUTP'+'UT']),this['_handleOut'+'put']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['EVENT_FIRE'+'D']),this['_handleEve'+'ntFired']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['EVENT_SUBS'+'CRIBED']),this['_handleEve'+'ntSubscrip'+'tion']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['CLC']),this['_handleClc'+'Event']['bind'](this))),this['_listenToP'+'romptEvent'](),_0x426bab['resolve'](!(0x1*-0x8f5+-0xc*0x250+0x24b5))):_0x426bab['resolve'](!(-0x5*0x289+0x6*-0x5e4+0x1002*0x3)));}),_0x4a03bf(),_0x426bab;});}['_listenToP'+'romptEvent'](){this['_subscribe'+'Event']('mlutil::pr'+'ompt::Prom'+'ptEvent',this['_handlePro'+'mptEvent']['bind'](this));}['_subscribe'+'Event'](_0x519dc4,_0xe84955){var _0x24e442;return _0x4165a7(this,void(0xf1*0x1a+-0x270a+0xe90),void(0x11b6+0x1*0x13a2+-0x2558),function*(){if(yield this['_attachPro'+'mise'],void(-0xd4f*0x1+0x1*0x1a64+-0x1*0xd15)===this['_eventSubs'+'criptions'][_0x519dc4]){const _0x543cb3=(0x191a+-0x53*-0x4f+-0x32b7,_0x5980df['createReso'+'lvableProm'+'ise'])(),_0x2aeef1=Math['random']()['toString'](-0x1174*-0x2+-0x128+-0x219c)['substr'](-0x25e*0x1+0xf*0xb4+-0x416*0x2,0x2f6*-0x2+0x421+0x1d4);this['_eventSubs'+'criptions'][_0x519dc4]={'subscriptionPromise':_0x543cb3,'eventSubscriptionRequestId':_0x2aeef1,'callbacks':[]},null===(_0x24e442=this['_matlabCon'+'nection'])||void(0x266+-0x2*0x6e3+0xb60)===_0x24e442||_0x24e442['publish'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['EVENT_SUBS'+'CRIBE']),{'type':'subscribe','uId':_0x519dc4,'eventName':_0x519dc4,'requestId':_0x2aeef1,'connectionId':this['_attachId']});}return this['_eventSubs'+'criptions'][_0x519dc4]['callbacks']['push'](_0xe84955),()=>{this['_eventSubs'+'criptions'][_0x519dc4]['callbacks']=this['_eventSubs'+'criptions'][_0x519dc4]['callbacks']['filter'](_0x1e4bc2=>_0x1e4bc2!==_0xe84955);};});}['_handleEve'+'ntSubscrip'+'tion'](_0x53a42b){if(_0x53a42b['requestId']){for(const _0x58891e in this['_eventSubs'+'criptions'])if(this['_eventSubs'+'criptions'][_0x58891e]['eventSubsc'+'riptionReq'+'uestId']===_0x53a42b['requestId'])return this['_eventSubs'+'criptions'][_0x58891e]['subscripti'+'onPromise']['resolve'](),void(this['_eventSubs'+'criptions'][_0x58891e]['eventSubsc'+'riptionReq'+'uestId']='');}}['_handleEve'+'ntFired'](_0x37ba0c){for(let _0x1d231b=-0x1e66+0x22de+-0x478;_0x1d231b<_0x37ba0c['eventData']['filterTags']['length'];_0x1d231b++){const _0x5c190d=this['_eventSubs'+'criptions'][_0x37ba0c['eventData']['filterTags'][_0x1d231b]];void(0x1a7f+0xd*-0x136+-0xac1)===_0x5c190d||_0x5c190d['callbacks']['slice']()['forEach'](_0xf5fb12=>{_0xf5fb12(_0x37ba0c['eventData']);});}}['_handlePro'+'mptEvent'](_0x36cfae){this['emit'](_0x5812f3['IMVM']['Events']['promptChan'+'ge'],_0x5812f3['STATE_REQU'+'ESTER_TO_S'+'TATE'][_0x36cfae['requester']],_0x36cfae['isIdle']);}['detach'](){super['detach']();}['setBreakpo'+'int'](_0x1a0eac,_0x1eaaeb,_0x27f933,_0x119021){return this['feval']('dbstop',0xf3*0x2+-0x96f+0x283*0x3,['in',_0x1a0eac,'at',_0x1eaaeb['toString']()]);}['clearBreak'+'point'](_0x549405,_0xec4ed5,_0xa118ba,_0x430a23){return this['feval']('dbclear',-0x1271+0x71*-0x47+-0x18*-0x213,['in',_0x549405,'at',_0xec4ed5['toString']()]);}['_cancel'](_0x4bf2df){var _0xd3d75;null===(_0xd3d75=this['_matlabCon'+'nection'])||void(0x7c8+-0x209f+0x1*0x18d7)===_0xd3d75||_0xd3d75['publish'](this['_getChanne'+'l'](_0x2e5c5a['MessageTyp'+'e']['CANCEL']),this['_getMessag'+'eData'](_0x2e5c5a['MessageTyp'+'e']['CANCEL'],_0x4bf2df));}['_getNewAtt'+'achId'](){return Math['random']()['toString'](-0x177*-0x1+-0xb*0x257+0x186a)['substr'](-0x1*-0x266f+0x2*-0x18d+-0x2353,-0x85c+-0x1118+0x197d);}['_getNewReq'+'uestId'](){return this['_currentRe'+'questId']++;}['getMatlabR'+'elease'](){return this['_lifecycle'+'Manager']['getMatlabR'+'elease']();}}_0x1efa58['default']=_0x1ada44;},0x71:function(_0x39543a,_0x32d524,_0x5ddc1f){var _0x128b6a=this&&this['__createBi'+'nding']||(Object['create']?function(_0x151e33,_0x160f7b,_0x201423,_0x1b9ae8){void(0x6*-0x5e+0x636+-0x402)===_0x1b9ae8&&(_0x1b9ae8=_0x201423);var _0x87610a=Object['getOwnProp'+'ertyDescri'+'ptor'](_0x160f7b,_0x201423);_0x87610a&&!('get'in _0x87610a?!_0x160f7b['__esModule']:_0x87610a['writable']||_0x87610a['configurab'+'le'])||(_0x87610a={'enumerable':!(-0x1a*-0x11f+-0xe69+-0xebd),'get':function(){return _0x160f7b[_0x201423];}}),Object['defineProp'+'erty'](_0x151e33,_0x1b9ae8,_0x87610a);}:function(_0x57c42e,_0x3c1fd5,_0x22c6a5,_0x507ff4){void(0xece+-0x312*-0x2+0x1*-0x14f2)===_0x507ff4&&(_0x507ff4=_0x22c6a5),_0x57c42e[_0x507ff4]=_0x3c1fd5[_0x22c6a5];}),_0x5b7ba7=this&&this['__setModul'+'eDefault']||(Object['create']?function(_0x2c77ad,_0x15f90f){Object['defineProp'+'erty'](_0x2c77ad,'default',{'enumerable':!(-0x20cc+-0x1*-0xc77+0x1455),'value':_0x15f90f});}:function(_0x82036a,_0x5cf456){_0x82036a['default']=_0x5cf456;}),_0x2f2e12=this&&this['__importSt'+'ar']||function(_0x58ed8b){if(_0x58ed8b&&_0x58ed8b['__esModule'])return _0x58ed8b;var _0x22b242={};if(null!=_0x58ed8b){for(var _0x30a6ed in _0x58ed8b)'default'!==_0x30a6ed&&Object['prototype']['hasOwnProp'+'erty']['call'](_0x58ed8b,_0x30a6ed)&&_0x128b6a(_0x22b242,_0x58ed8b,_0x30a6ed);}return _0x5b7ba7(_0x22b242,_0x58ed8b),_0x22b242;},_0x1eec40=this&&this['__awaiter']||function(_0x8f204b,_0x178f6d,_0x129aa5,_0x1a5234){return new(_0x129aa5||(_0x129aa5=Promise))(function(_0x3f61b8,_0x16944f){function _0x1b5635(_0x445cd0){try{_0x3bd347(_0x1a5234['next'](_0x445cd0));}catch(_0x2ec6bc){_0x16944f(_0x2ec6bc);}}function _0x2c4a8c(_0x4694ff){try{_0x3bd347(_0x1a5234['throw'](_0x4694ff));}catch(_0x46f39b){_0x16944f(_0x46f39b);}}function _0x3bd347(_0x13b375){var _0x1567d9;_0x13b375['done']?_0x3f61b8(_0x13b375['value']):(_0x1567d9=_0x13b375['value'],_0x1567d9 instanceof _0x129aa5?_0x1567d9:new _0x129aa5(function(_0x208a3a){_0x208a3a(_0x1567d9);}))['then'](_0x1b5635,_0x2c4a8c);}_0x3bd347((_0x1a5234=_0x1a5234['apply'](_0x8f204b,_0x178f6d||[]))['next']());});};Object['defineProp'+'erty'](_0x32d524,'__esModule',{'value':!(-0xd*0x161+0x1b2e+-0x17*0x67)});const _0x1dc3e9=_0x2f2e12(_0x5ddc1f(0x12d0+0x20b7+-0x191d*0x2)),_0x153ffe=_0x5ddc1f(0xf0c+0x6a*-0x12+-0x798),_0x2f9f8d=_0x5ddc1f(-0x1*-0xe73+-0x1356+-0x73*-0xe);var _0x4b88b3;!function(_0x4893cb){_0x4893cb[_0x4893cb['PreAttach']=0x1d74+-0x45d+-0x1917]='PreAttach',_0x4893cb[_0x4893cb['Attaching']=0x22b8+-0x5e5*-0x1+0xa27*-0x4]='Attaching',_0x4893cb[_0x4893cb['Attached']=0x25*-0xff+0x1*0x2663+0x186*-0x1]='Attached',_0x4893cb[_0x4893cb['Invalid']=-0x2418+0xe4b*0x2+0x785]='Invalid';}(_0x4b88b3||(_0x4b88b3={}));class _0x5d651d extends _0x1dc3e9['default']{constructor(_0x46de73,_0x5e9e4e){super(_0x5e9e4e),this['_channelPr'+'efix']=null,this['_eventSubs'+'criptions']={},this['_attachmen'+'tState']=_0x4b88b3['PreAttach'],this['_lifecycle'+'Manager']=_0x46de73,this['_attachPro'+'mise']=(0x79*-0x11+-0xd*0x19b+0x1ce8,_0x153ffe['createReso'+'lvableProm'+'ise'])();}['_getChanne'+'l'](_0x1519d2,..._0x11238c){switch(_0x1519d2){case _0x1dc3e9['MessageTyp'+'e']['ATTACH']:return'/mvm/attac'+'h/request';case _0x1dc3e9['MessageTyp'+'e']['ATTACH_RES'+'PONSE']:return'/mvm/attac'+'h/response';case _0x1dc3e9['MessageTyp'+'e']['EVAL_REQUE'+'ST']:return this['_channelPr'+'efix']+('/eval/requ'+'est');case _0x1dc3e9['MessageTyp'+'e']['FEVAL_REQU'+'EST']:return this['_channelPr'+'efix']+('/feval/req'+'uest');case _0x1dc3e9['MessageTyp'+'e']['SET_BREAKP'+'OINT_REQUE'+'ST']:return this['_channelPr'+'efix']+('/setLineBr'+'eakpoint/r'+'equest');case _0x1dc3e9['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_REQ'+'UEST']:return this['_channelPr'+'efix']+('/clearLine'+'Breakpoint'+'/request');case _0x1dc3e9['MessageTyp'+'e']['CANCEL']:return this['_channelPr'+'efix']+('/cancel/re'+'quest');case _0x1dc3e9['MessageTyp'+'e']['EVAL_RESPO'+'NSE']:return this['_channelPr'+'efix']+('/eval/resp'+'onse');case _0x1dc3e9['MessageTyp'+'e']['FEVAL_RESP'+'ONSE']:return this['_channelPr'+'efix']+('/feval/res'+'ponse');case _0x1dc3e9['MessageTyp'+'e']['SET_BREAKP'+'OINT_RESPO'+'NSE']:return this['_channelPr'+'efix']+('/setLineBr'+'eakpoint/r'+'esponse');case _0x1dc3e9['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_RES'+'PONSE']:return this['_channelPr'+'efix']+('/clearLine'+'Breakpoint'+'/response');case _0x1dc3e9['MessageTyp'+'e']['OUTPUT']:return this['_channelPr'+'efix']+'/output';case _0x1dc3e9['MessageTyp'+'e']['ERROR_OUTP'+'UT']:return this['_channelPr'+'efix']+'/error';case _0x1dc3e9['MessageTyp'+'e']['STILL_ALIV'+'E']:return this['_channelPr'+'efix']+('/connectio'+'n/stillAli'+'ve');case _0x1dc3e9['MessageTyp'+'e']['EVENT_FIRE'+'D']:return this['_channelPr'+'efix']+('/event/fir'+'eEvent');case _0x1dc3e9['MessageTyp'+'e']['EVENT_SUBS'+'CRIBE']:return this['_channelPr'+'efix']+('/subscribe'+'Event/requ'+'est');case _0x1dc3e9['MessageTyp'+'e']['EVENT_SUBS'+'CRIBED']:return this['_channelPr'+'efix']+('/subscribe'+'Event/resp'+'onse');case _0x1dc3e9['MessageTyp'+'e']['CLC']:return'/matlabls/'+'events/clc';case _0x1dc3e9['MessageTyp'+'e']['EVAL_FEVAL'+'_RESPONSE']:case _0x1dc3e9['MessageTyp'+'e']['INTERRUPT']:throw'Message\x20Ty'+'pe\x20unused';}throw'Unknown\x20me'+'ssage\x20type';}['_getMessag'+'eData'](_0x42697d,..._0x55fb84){switch(_0x42697d){case _0x1dc3e9['MessageTyp'+'e']['ATTACH']:return{'requestID':_0x55fb84[0x5*0x4f6+-0x2014+0x746],'mvmID':'user-mvm','supportedApiVersions':['r22a0']};case _0x1dc3e9['MessageTyp'+'e']['EVAL_REQUE'+'ST']:return{'requestID':_0x55fb84[-0x1a90+-0x1b03+0x3593*0x1],'command':_0x55fb84[0x38*0x61+-0x57*-0x29+-0x2326],'isUserEval':!(-0x583+-0x4bb*0x5+-0xe95*-0x2),'runOptions':_0x55fb84[0x56*0x4+0x1*0x21b5+0x1*-0x230b]};case _0x1dc3e9['MessageTyp'+'e']['FEVAL_REQU'+'EST']:return{'requestID':_0x55fb84[-0x1d*-0x10d+-0x2660+0x7e7],'function':_0x55fb84[0x15*-0x2+-0xb64*-0x3+-0x2201],'numOutputsExpected':_0x55fb84[-0xa3*-0x29+0x1957+0x19b8*-0x2],'rhsArgs':_0x55fb84[0x2094+-0x1c61+0x10*-0x43],'runOptions':_0x55fb84[-0x4aa*-0x7+-0x2*-0x31d+-0x26dc]};case _0x1dc3e9['MessageTyp'+'e']['SET_BREAKP'+'OINT_REQUE'+'ST']:case _0x1dc3e9['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_REQ'+'UEST']:return{'requestID':_0x55fb84[0xd39+-0x358+-0x34b*0x3],'breakpoint':_0x55fb84[0x7*0x2e7+-0x2154+0x62*0x22]};case _0x1dc3e9['MessageTyp'+'e']['CANCEL']:return{'requestID':_0x55fb84[0xa3*0x22+0x151*-0x7+-0xc6f],'interrupt':!(-0x1*-0xe7f+0x24f2+0x1*-0x3371),'requestIDtoCancel':_0x55fb84[0x24d3+0x65*0x49+0x419f*-0x1]};}throw'Unknown\x20ch'+'annel\x20type'+'\x20to\x20get\x20da'+'ta\x20from';}['tryAttach'](_0x16972e){return _0x1eec40(this,void(0xe42+-0xe36+-0xc),void(0x1e4f*0x1+0x5*-0x56f+0x6*-0x86),function*(){if(this['_attachmen'+'tState']!==_0x4b88b3['PreAttach'])throw new Error('Can\x27t\x20reus'+'e\x20impl\x20ins'+'tance');if(this['_attachmen'+'tState']=_0x4b88b3['Attaching'],this['_matlabCon'+'nection']=yield this['_lifecycle'+'Manager']['getMatlabC'+'onnection'](),null==this['_matlabCon'+'nection'])return this['_attachmen'+'tState']=_0x4b88b3['Invalid'],!(0xb*0x159+0x4cf+-0x13a1);const _0x18234e=this['_attachPro'+'mise'];let _0x404dea=0x28a+-0x1801*0x1+-0x23*-0x9d;const _0x13e6d6=()=>{var _0x1fa179;null===(_0x1fa179=this['_matlabCon'+'nection'])||void(-0x1fc0+0x1531+-0x385*-0x3)===_0x1fa179||_0x1fa179['publish'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['ATTACH']),this['_getMessag'+'eData'](_0x1dc3e9['MessageTyp'+'e']['ATTACH'],_0x1e763f));},_0x4979c7=setInterval(()=>{this['_logger']['error']('Timeout\x20wh'+'en\x20attachi'+'ng\x20to\x20rele'+'ase:\x20'+_0x16972e),_0x404dea++,_0x404dea<0x48d*-0x4+0xa5f+0x7d8?(this['_logger']['log']('Retrying\x20a'+'ttach'),_0x13e6d6()):(this['_logger']['log']('Unable\x20to\x20'+'attach\x20aft'+'er\x20retries'),this['_attachmen'+'tState']=_0x4b88b3['Invalid'],clearInterval(_0x4979c7),_0x18234e['resolve'](!(0x342+0x477+-0x7b8)));},-0x3*-0x27f+0xd03*-0x1+-0x2*-0x89f),_0x1e763f=this['_getNewReq'+'uestId']();return this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['ATTACH_RES'+'PONSE']),_0x4c7599=>{if(_0x4c7599['requestID']===_0x1e763f&&(clearInterval(_0x4979c7),this['_attachmen'+'tState']===_0x4b88b3['Attaching'])){if(this['_logger']['log']('MVM\x20attach'+'\x20success'),_0x4c7599['error'])return this['_logger']['error'](_0x4c7599['error']['msg']),void _0x18234e['resolve'](!(0xca0+0x1*-0x1235+0x11e*0x5));this['_matlabCon'+'nection']?(this['_channelPr'+'efix']=_0x4c7599['channelPre'+'fix'],this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['STILL_ALIV'+'E']),()=>{})),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['EVAL_RESPO'+'NSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['FEVAL_RESP'+'ONSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['SET_BREAKP'+'OINT_RESPO'+'NSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_RES'+'PONSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['OUTPUT']),this['_handleOut'+'put']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['ERROR_OUTP'+'UT']),this['_handleOut'+'put']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['EVENT_FIRE'+'D']),this['_handleEve'+'ntFired']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['EVENT_SUBS'+'CRIBED']),this['_handleEve'+'ntSubscrip'+'tion']['bind'](this))),this['_listenToC'+'lcEvent'](),this['_listenToP'+'romptEvent'](),_0x18234e['resolve'](!(0x15*0x1d3+0x1146+-0x62d*0x9))):_0x18234e['resolve'](!(0x1cd9+0xbed*0x3+-0xe9*0x47));}}),_0x13e6d6(),_0x18234e;});}['detach'](){this['_attachmen'+'tState']!==_0x4b88b3['Attaching']&&this['_attachmen'+'tState']!==_0x4b88b3['PreAttach']||this['_attachPro'+'mise']['reject'](),this['_attachmen'+'tState']=_0x4b88b3['Invalid'],super['detach']();}['_listenToC'+'lcEvent'](){this['_subscribe'+'Event']('services::'+'io::CLCEve'+'nt',this['_handleClc'+'Event']['bind'](this)),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['CLC']),()=>{this['_handleClc'+'Event']();}));}['_listenToP'+'romptEvent'](){this['_subscribe'+'Event']('mlutil::pr'+'ompt::Prom'+'ptEvent',this['_handlePro'+'mptEvent']['bind'](this));}['_handlePro'+'mptEvent'](_0x27aff0){this['emit'](_0x2f9f8d['IMVM']['Events']['promptChan'+'ge'],_0x2f9f8d['STATE_REQU'+'ESTER_TO_S'+'TATE'][_0x27aff0['requester']],_0x27aff0['isIdle']);}['_handleEve'+'ntSubscrip'+'tion'](_0x3af465){if(_0x3af465['requestID']){for(const _0x499c7b in this['_eventSubs'+'criptions'])if(this['_eventSubs'+'criptions'][_0x499c7b]['subscripti'+'onRequestI'+'d']===_0x3af465['requestID']){_0x3af465['error']?delete this['_eventSubs'+'criptions'][_0x499c7b]:(this['_eventSubs'+'criptions'][_0x499c7b]['subscripti'+'onPromise']['resolve'](),this['_eventSubs'+'criptions'][_0x499c7b]['subscripti'+'onRequestI'+'d']='');break;}}}['_subscribe'+'Event'](_0x41a710,_0x2dce97){var _0x345a43;return _0x1eec40(this,void(0x19df+0x1*-0xe77+-0xb68),void(-0xb53*-0x1+-0x5*0x433+0x1*0x9ac),function*(){if(yield this['_attachPro'+'mise'],void(-0x1e11*0x1+-0x18a*0xc+0x3089)===this['_eventSubs'+'criptions'][_0x41a710]){const _0x564310=(0xc5*0x2d+-0xbf7+-0x78e*0x3,_0x153ffe['createReso'+'lvableProm'+'ise'])(),_0x29eaef=this['_getNewReq'+'uestId']();this['_eventSubs'+'criptions'][_0x41a710]={'subscriptionPromise':_0x564310,'subscriptionRequestId':_0x29eaef,'callbacks':[]},null===(_0x345a43=this['_matlabCon'+'nection'])||void(0x1382+-0x7b7*-0x5+-0x3a15)===_0x345a43||_0x345a43['publish'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['EVENT_SUBS'+'CRIBE']),{'requestID':_0x29eaef,'eventName':_0x41a710});}return this['_eventSubs'+'criptions'][_0x41a710]['callbacks']['push'](_0x2dce97),()=>{this['_eventSubs'+'criptions'][_0x41a710]['callbacks']=this['_eventSubs'+'criptions'][_0x41a710]['callbacks']['filter'](_0x2e0d79=>_0x2e0d79!==_0x2dce97);};});}['_handleEve'+'ntFired'](_0x1a2260){for(let _0x4f1ba2=-0x2604+0x5cf*-0x3+0x3771*0x1;_0x4f1ba2<_0x1a2260['eventData']['filterTags']['length'];_0x4f1ba2++){const _0x16a04a=this['_eventSubs'+'criptions'][_0x1a2260['eventData']['filterTags'][_0x4f1ba2]];void(0xc11*0x1+-0x2339*0x1+0x1728)===_0x16a04a||_0x16a04a['callbacks']['slice']()['forEach'](_0x109b76=>{_0x109b76(_0x1a2260['eventData']);});}}['_cancel'](_0x4806e7){var _0x12ffc0;const _0x29295e=this['_getNewReq'+'uestId']();null===(_0x12ffc0=this['_matlabCon'+'nection'])||void(0x2f7+-0x5*0x175+-0x452*-0x1)===_0x12ffc0||_0x12ffc0['publish'](this['_getChanne'+'l'](_0x1dc3e9['MessageTyp'+'e']['CANCEL']),this['_getMessag'+'eData'](_0x1dc3e9['MessageTyp'+'e']['CANCEL'],_0x29295e,_0x4806e7));}['_getNewReq'+'uestId'](){return Math['random']()['toString'](0x1*-0x1a23+-0x14c5+0x1*0x2f0c)['substr'](0x123*-0x1+-0x5*-0x5b8+0x1b73*-0x1,0x1*-0x12ef+-0xcb9*-0x1+0x27*0x29);}['getMatlabR'+'elease'](){return this['_lifecycle'+'Manager']['getMatlabR'+'elease']();}}_0x32d524['default']=_0x5d651d;},0x138:function(_0x37c8fb,_0x17171c,_0x5278d4){var _0x42915e=this&&this['__awaiter']||function(_0x5b9e05,_0x6967b4,_0x1cd7fb,_0x2916d5){return new(_0x1cd7fb||(_0x1cd7fb=Promise))(function(_0x188ef5,_0x2f662f){function _0x419052(_0x57273d){try{_0x108d8f(_0x2916d5['next'](_0x57273d));}catch(_0x104386){_0x2f662f(_0x104386);}}function _0x10784e(_0xef7d69){try{_0x108d8f(_0x2916d5['throw'](_0xef7d69));}catch(_0x130fc6){_0x2f662f(_0x130fc6);}}function _0x108d8f(_0x3f0fdb){var _0x5eed61;_0x3f0fdb['done']?_0x188ef5(_0x3f0fdb['value']):(_0x5eed61=_0x3f0fdb['value'],_0x5eed61 instanceof _0x1cd7fb?_0x5eed61:new _0x1cd7fb(function(_0x3fc3ec){_0x3fc3ec(_0x5eed61);}))['then'](_0x419052,_0x10784e);}_0x108d8f((_0x2916d5=_0x2916d5['apply'](_0x5b9e05,_0x6967b4||[]))['next']());});},_0x396472=this&&this['__importDe'+'fault']||function(_0x28506c){return _0x28506c&&_0x28506c['__esModule']?_0x28506c:{'default':_0x28506c};};Object['defineProp'+'erty'](_0x17171c,'__esModule',{'value':!(-0xa5f*0x1+-0x26ef+-0x314e*-0x1)});const _0x2606e2=_0x5278d4(-0x232*0x5+0x20e8+-0x14a1),_0x58ff1e=_0x396472(_0x5278d4(-0xa64+-0x29*0xde+0x2e63));class _0x17f0b4 extends _0x58ff1e['default']{constructor(_0x357741,_0x5545e4){super(_0x357741,_0x5545e4);}['_getChanne'+'l'](_0x5b6140,..._0xf7bbc3){return _0x5b6140===_0x2606e2['MessageTyp'+'e']['OUTPUT']?this['_channelPr'+'efix']+('/text/outp'+'ut'):_0x5b6140===_0x2606e2['MessageTyp'+'e']['ERROR_OUTP'+'UT']?this['_channelPr'+'efix']+('/text/erro'+'r'):_0x5b6140===_0x2606e2['MessageTyp'+'e']['INTERRUPT']?this['_channelPr'+'efix']+('/interrupt'+'/request'):super['_getChanne'+'l'](_0x5b6140,..._0xf7bbc3);}['_getAPIVer'+'sion'](){return'r22b0';}['_listenToP'+'romptEvent'](){this['_subscribe'+'Event']('mlutil::pr'+'ompt::Prom'+'ptEvent',this['_handlePro'+'mptEvent']['bind'](this));}['_getMessag'+'eData'](_0x5d34b1,..._0x101ff0){return _0x5d34b1===_0x2606e2['MessageTyp'+'e']['ATTACH']?{'requestID':_0x101ff0[-0x1*0xa54+-0x2*-0xa57+0x6a*-0x19],'mvmID':'user-mvm','supportedApiVersions':[this['_getAPIVer'+'sion']()]}:_0x5d34b1===_0x2606e2['MessageTyp'+'e']['INTERRUPT']?{'requestID':this['_getNewReq'+'uestId']()}:_0x5d34b1===_0x2606e2['MessageTyp'+'e']['FEVAL_REQU'+'EST']?{'requestID':_0x101ff0[0x5*0x2f9+0x1a8c+-0x2969],'function':_0x101ff0[0x1*-0x1187+-0x8e4*0x3+-0x7b*-0x5c],'numOutputsExpected':_0x101ff0[0x57*0x41+0x1*0x13fe+-0x1*0x2a13],'rhsArgs':_0x101ff0[0x10a5+0x501+0x1*-0x15a3]['map'](JSON['stringify']),'runOptions':_0x101ff0[-0x2*-0xd01+0x163b+-0x3*0x1013]}:super['_getMessag'+'eData'](_0x5d34b1,..._0x101ff0);}['tryAttach'](_0x2cf081){const _0x17e976=Object['create'](null,{'tryAttach':{'get':()=>super['tryAttach']}});return _0x42915e(this,void(0x2226+0x50c+-0x1*0x2732),void(0x24b1+0x1cde*0x1+-0x418f),function*(){return this['_release']=_0x2cf081,_0x17e976['tryAttach']['call'](this,_0x2cf081);});}['interrupt'](){var _0x1d4408;null===(_0x1d4408=this['_matlabCon'+'nection'])||void(0x8cd*-0x3+-0x9*-0x158+-0x1*-0xe4f)===_0x1d4408||_0x1d4408['publish'](this['_getChanne'+'l'](_0x2606e2['MessageTyp'+'e']['INTERRUPT']),this['_getMessag'+'eData'](_0x2606e2['MessageTyp'+'e']['INTERRUPT']));}}_0x17171c['default']=_0x17f0b4;},0x14d:(_0x2aa2eb,_0x31aa8e,_0x2c246)=>{Object['defineProp'+'erty'](_0x31aa8e,'__esModule',{'value':!(-0x2237+0x1162+-0x1f*-0x8b)}),_0x31aa8e['RequestTyp'+'e']=_0x31aa8e['MessageTyp'+'e']=void(-0x140d+-0x5*0x424+0x28c1);const _0x29d871=_0x2c246(0xd*-0x185+0x2a7+0x11d9),_0x4333be=_0x2c246(-0x593*-0x5+0x3a5*0x7+0x3562*-0x1),_0x1234c8=_0x2c246(-0x2325+-0x7a4+0x2c30),_0x3c7e8d=_0x2c246(-0xe7+0x11f*0x6+-0x7*0x97);var _0x3445b2,_0xadaa47;!function(_0x548c19){_0x548c19[_0x548c19['ATTACH']=0x1b71+-0x1*0x64+-0x1b0d]='ATTACH',_0x548c19[_0x548c19['ATTACH_RES'+'PONSE']=0x1*-0x12dd+-0x1e93+0x3171]='ATTACH_RES'+'PONSE',_0x548c19[_0x548c19['EVAL_REQUE'+'ST']=-0x181b+0x56f*0x5+-0x30e]='EVAL_REQUE'+'ST',_0x548c19[_0x548c19['FEVAL_REQU'+'EST']=0x47c+-0x21df+0x1d66]='FEVAL_REQU'+'EST',_0x548c19[_0x548c19['SET_BREAKP'+'OINT_REQUE'+'ST']=-0x7af+0x1f5e*0x1+-0x1*0x17ab]='SET_BREAKP'+'OINT_REQUE'+'ST',_0x548c19[_0x548c19['CLEAR_BREA'+'KPOINT_REQ'+'UEST']=-0x2*0x8c1+0x364+0xe23]='CLEAR_BREA'+'KPOINT_REQ'+'UEST',_0x548c19[_0x548c19['CANCEL']=-0x86c+0xb27*0x3+-0x1903*0x1]='CANCEL',_0x548c19[_0x548c19['INTERRUPT']=0x20cb+0x402+-0x3*0xc42]='INTERRUPT',_0x548c19[_0x548c19['EVAL_RESPO'+'NSE']=-0xbd6+-0x10f8+0x1cd6]='EVAL_RESPO'+'NSE',_0x548c19[_0x548c19['FEVAL_RESP'+'ONSE']=0x1600+0x3e*-0x2c+-0xb4f]='FEVAL_RESP'+'ONSE',_0x548c19[_0x548c19['EVAL_FEVAL'+'_RESPONSE']=-0x1b7*-0x5+-0x29*0x65+0x7a4]='EVAL_FEVAL'+'_RESPONSE',_0x548c19[_0x548c19['SET_BREAKP'+'OINT_RESPO'+'NSE']=0x4b2+-0x1*-0x1de1+-0x2288]='SET_BREAKP'+'OINT_RESPO'+'NSE',_0x548c19[_0x548c19['CLEAR_BREA'+'KPOINT_RES'+'PONSE']=0xf*-0xb1+-0x83*-0x37+-0x11ba]='CLEAR_BREA'+'KPOINT_RES'+'PONSE',_0x548c19[_0x548c19['OUTPUT']=0x772+0x15e3+-0x1d48]='OUTPUT',_0x548c19[_0x548c19['ERROR_OUTP'+'UT']=-0x5f5+0x1*0x1721+-0xe*0x139]='ERROR_OUTP'+'UT',_0x548c19[_0x548c19['STILL_ALIV'+'E']=0x540+0x279*-0x5+0x72c]='STILL_ALIV'+'E',_0x548c19[_0x548c19['EVENT_SUBS'+'CRIBE']=-0x116c+0x26b7+-0x153b]='EVENT_SUBS'+'CRIBE',_0x548c19[_0x548c19['EVENT_SUBS'+'CRIBED']=-0x147c+-0x58f*-0x3+-0x3e*-0x10]='EVENT_SUBS'+'CRIBED',_0x548c19[_0x548c19['EVENT_FIRE'+'D']=-0x1fd2+0x1f8*-0x12+-0x4*-0x10d5]='EVENT_FIRE'+'D',_0x548c19[_0x548c19['CLC']=-0x1b*-0xab+-0x4*-0x433+-0x22c2*0x1]='CLC';}(_0x3445b2=_0x31aa8e['MessageTyp'+'e']||(_0x31aa8e['MessageTyp'+'e']={})),function(_0x405e8d){_0x405e8d[_0x405e8d['EVAL']=0xe33+0x1de+0x9*-0x1c9]='EVAL',_0x405e8d[_0x405e8d['FEVAL']=0x985+-0x692*-0x3+-0x1d3a]='FEVAL',_0x405e8d[_0x405e8d['BREAKPOINT']=-0xb2*0x23+0x4*0x2e1+0xcd4]='BREAKPOINT';}(_0xadaa47=_0x31aa8e['RequestTyp'+'e']||(_0x31aa8e['RequestTyp'+'e']={}));class _0x5cb40d{constructor(_0x56e96e,_0x20f14a,_0x116ed8,_0x168ddd){this['fileName']=_0x56e96e,this['location']={'lineNumber':_0x20f14a},void(-0x2033+0x9b9+0x167a)!==_0x116ed8&&(this['expression']=_0x116ed8),void(-0x7*-0x222+0xa96+0x2e*-0x8e)!==_0x168ddd&&(this['location']['anonymousI'+'ndex']=_0x168ddd);}}class _0x1a6aff extends _0x3c7e8d['EventEmitt'+'er']{constructor(_0x57f920){super(),this['_matlabCon'+'nection']=null,this['_requestMa'+'p']={},this['_connectio'+'ns']=[],this['_logger']=_0x57f920;}['_getChanne'+'l'](_0x2dc4d8,..._0x3f2d88){throw'Unimplemen'+'ted';}['_getMessag'+'eData'](_0x34d611,..._0x46ad05){throw'Unimplemen'+'ted';}['_handleClc'+'Event'](){this['emit'](_0x1234c8['IMVM']['Events']['clc']);}['_cancel'](_0x482c80){throw'Unimplemen'+'ted';}['_getNewReq'+'uestId'](){throw'Unimplemen'+'ted';}['detach'](){this['_requestMa'+'p']=[],this['_matlabCon'+'nection']=null,this['_connectio'+'ns']=[];}['eval'](_0x56ee1f,_0x597a41=!(-0x15fb*-0x1+-0x9*-0x228+-0x2963),_0x4f2818){const _0x21aeda=(-0x5*0x611+-0x80c*-0x2+0xe3d,_0x4333be['createReso'+'lvableProm'+'ise'])();if(!this['_matlabCon'+'nection'])return _0x21aeda['reject'](),_0x21aeda;const _0x468b5e=this['_getNewReq'+'uestId'](),_0x1abc54={'useNullOutSink':!(-0x2*-0xd7f+0x1*0x69d+-0x11*0x1fa),'useNullErrSink':!(0x2469+-0x3*0xd2+-0x21f2),'suppressDebugControlOutput':!(-0x17f9+0x6fd*-0x5+0x1*0x3aeb),'eventConnections':{}};return _0x597a41&&(_0x1abc54['groupNames']=['UserGroup']),_0x4f2818&&(_0x1abc54['capabiliti'+'esList']=_0x29d871['FullCapabi'+'litiesList']['filter'](_0x46c77e=>!_0x4f2818['includes'](_0x46c77e))),this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0x3445b2['EVAL_REQUE'+'ST']),this['_getMessag'+'eData'](_0x3445b2['EVAL_REQUE'+'ST'],_0x468b5e,_0x56ee1f,_0x1abc54)),this['_requestMa'+'p'][_0x468b5e]={'promise':_0x21aeda,'requestType':_0xadaa47['EVAL'],'cancel':this['_cancel']['bind'](this,_0x468b5e)},_0x21aeda;}['feval'](_0x3effa7,_0xc48e59,_0x428001,_0x5ca4be=!(-0xa79*0x1+0xb7e+0xa*-0x1a),_0x3861e9){const _0x37cdf6=(0x2459+0x27e*-0x2+-0x1f5d,_0x4333be['createReso'+'lvableProm'+'ise'])();if(!this['_matlabCon'+'nection'])return this['_logger']['error']('Eval\x20with\x20'+'no\x20connect'+'ion!'),_0x37cdf6['reject'](),_0x37cdf6;const _0x30c9fb=this['_getNewReq'+'uestId']();let _0x9110d4={};return _0x9110d4['useNullOut'+'Sink']=!_0x5ca4be,_0x9110d4['useNullErr'+'Sink']=!_0x5ca4be,_0x5ca4be&&(_0x9110d4['groupNames']=['UserGroup']),_0x9110d4['suppressDe'+'bugControl'+'Output']=!(-0x1c3e+0x1074+0xbcb*0x1),_0x3861e9&&(_0x9110d4['capabiliti'+'esList']=_0x29d871['FullCapabi'+'litiesList']['filter'](_0x3c9fdb=>!_0x3861e9['includes'](_0x3c9fdb))),this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0x3445b2['FEVAL_REQU'+'EST']),this['_getMessag'+'eData'](_0x3445b2['FEVAL_REQU'+'EST'],_0x30c9fb,_0x3effa7,_0xc48e59,_0x428001,_0x9110d4)),this['_requestMa'+'p'][_0x30c9fb]={'promise':_0x37cdf6,'requestType':_0xadaa47['FEVAL'],'cancel':this['_cancel']['bind'](this,_0x30c9fb)},_0x37cdf6;}['_handleGen'+'ericRespon'+'se'](_0x32d327){const _0x1d6d25=this['_requestMa'+'p'][_0x32d327['requestID']];if(!_0x1d6d25)return;delete this['_requestMa'+'p'][_0x32d327['requestID']];const _0x2db69b=_0x1d6d25['promise'];_0x32d327['error'],_0x2db69b['resolve'](_0x32d327);}['interrupt'](){if(this['_matlabCon'+'nection'])for(const _0x528cf7 in this['_requestMa'+'p']){const _0x51a584=this['_requestMa'+'p'][_0x528cf7]['requestTyp'+'e'];_0x51a584!==_0xadaa47['EVAL']&&_0x51a584!=_0xadaa47['FEVAL']||this['_requestMa'+'p'][_0x528cf7]['cancel']();}}['_handleOut'+'put'](_0x4c3175){this['emit'](_0x1234c8['IMVM']['Events']['output'],_0x4c3175);}['setBreakpo'+'int'](_0x11c85d,_0x5e6f77,_0xd02bd8,_0x55fbc4){const _0x154632=(0x1*-0x3a7+-0xe62+0x1209,_0x4333be['createReso'+'lvableProm'+'ise'])();if(!this['_matlabCon'+'nection'])return _0x154632['reject'](),_0x154632;const _0x32d5c8=this['_getNewReq'+'uestId'](),_0x182a4d=new _0x5cb40d(_0x11c85d,_0x5e6f77,_0xd02bd8,_0x55fbc4);return this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0x3445b2['SET_BREAKP'+'OINT_REQUE'+'ST']),this['_getMessag'+'eData'](_0x3445b2['SET_BREAKP'+'OINT_REQUE'+'ST'],_0x32d5c8,_0x182a4d)),this['_requestMa'+'p'][_0x32d5c8]={'promise':_0x154632,'requestType':_0xadaa47['BREAKPOINT'],'cancel':()=>{}},_0x154632;}['clearBreak'+'point'](_0x455611,_0x2d0a0d,_0x308510,_0x148044){const _0x4bb432=(-0x1*0x4a9+-0x5*0x1d7+0x1*0xddc,_0x4333be['createReso'+'lvableProm'+'ise'])();if(!this['_matlabCon'+'nection'])return _0x4bb432['reject'](),_0x4bb432;const _0x3cf029=this['_getNewReq'+'uestId'](),_0x2dfcad=new _0x5cb40d(_0x455611,_0x2d0a0d,_0x308510,_0x148044);return this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0x3445b2['CLEAR_BREA'+'KPOINT_REQ'+'UEST']),this['_getMessag'+'eData'](_0x3445b2['CLEAR_BREA'+'KPOINT_REQ'+'UEST'],_0x3cf029,_0x2dfcad)),this['_requestMa'+'p'][_0x3cf029]={'promise':_0x4bb432,'requestType':_0xadaa47['BREAKPOINT'],'cancel':()=>{}},_0x4bb432;}['unpause'](){if(!this['_matlabCon'+'nection'])return void this['_logger']['error']('Unpause\x20wi'+'th\x20no\x20conn'+'ection!');const _0x234b86=this['_getNewReq'+'uestId']();this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0x3445b2['FEVAL_REQU'+'EST']),this['_getMessag'+'eData'](_0x3445b2['FEVAL_REQU'+'EST'],_0x234b86,'matlab.int'+'ernal.sing'+'lekeypress'+'.pause.res'+'ume',-0x1901+0x3*0x658+0x1*0x5f9,[],{'useNullOutSink':!(-0xc94+-0x1944+0x25d8),'useNullErrSink':!(-0x1*-0x914+-0x1d2*0x14+0x1b54),'queueName':'SingleKeyP'+'ress'}));const _0x522c4b=(0x17f5+-0xab3*-0x2+-0x2d5b,_0x4333be['createReso'+'lvableProm'+'ise'])();this['_requestMa'+'p'][_0x234b86]={'promise':_0x522c4b,'requestType':_0xadaa47['FEVAL'],'cancel':this['_cancel']['bind'](this,_0x234b86)};}}_0x31aa8e['default']=_0x1a6aff;},0x373:function(_0x1ef17b,_0x263687,_0x4306ce){var _0x2de149=this&&this['__importDe'+'fault']||function(_0x231afe){return _0x231afe&&_0x231afe['__esModule']?_0x231afe:{'default':_0x231afe};};Object['defineProp'+'erty'](_0x263687,'__esModule',{'value':!(-0x14c6+-0x3af*-0x5+-0x3*-0xc9)});const _0x1105ee=_0x2de149(_0x4306ce(0x12ac+0x2400+-0x3574));class _0xfbc2f9 extends _0x1105ee['default']{['_getAPIVer'+'sion'](){return'22b'===this['_release']?'r22b0':'23a'===this['_release']?'r23a0':'23b'===this['_release']?'r23b0':(this['_release'],'r24a0');}['_listenToP'+'romptEvent'](){this['_subscribe'+'Event']('mlutil::pr'+'ompt::Prom'+'ptEvent||U'+'serGroup',this['_handlePro'+'mptEvent']['bind'](this));}}_0x263687['default']=_0xfbc2f9;},0x167:(_0x86428b,_0x33dbcf)=>{var _0x2271fe;Object['defineProp'+'erty'](_0x33dbcf,'__esModule',{'value':!(0xeee+-0x13f4*0x1+-0x506*-0x1)}),_0x33dbcf['IMVM']=_0x33dbcf['STATE_REQU'+'ESTER_TO_S'+'TATE']=_0x33dbcf['STATE_REQU'+'ESTER']=_0x33dbcf['PromptStat'+'e']=void(-0xcf7*-0x1+-0x6*-0x629+0x1*-0x31ed),function(_0x40a8a8){_0x40a8a8['INITIALIZI'+'NG']='INITIALIZI'+'NG',_0x40a8a8['READY']='READY',_0x40a8a8['BUSY']='BUSY',_0x40a8a8['DEBUG']='DEBUG',_0x40a8a8['INPUT']='INPUT',_0x40a8a8['PAUSE']='PAUSE',_0x40a8a8['MORE']='MORE',_0x40a8a8['COMPLETING'+'_BLOCK']='COMPLETING'+'_BLOCK';}(_0x2271fe=_0x33dbcf['PromptStat'+'e']||(_0x33dbcf['PromptStat'+'e']={})),_0x33dbcf['STATE_REQU'+'ESTER']={'INITIALIZING':'','READY':'BASE_PROMP'+'T','BUSY':'NO_PROMPT','DEBUG':'DEBUG_PROM'+'PT','INPUT':'INPUT_PROM'+'PT','KEYBOARD':'KEYBOARD_P'+'ROMPT','PAUSE':'PAUSE_PROM'+'PT','MORE':'MORE_PROMP'+'T','COMPLETING_BLOCK':'INCOMPLETE'+'_BLOCK_PRO'+'MPT','BANG':'BANG_PROMP'+'T'},_0x33dbcf['STATE_REQU'+'ESTER_TO_S'+'TATE']={[_0x33dbcf['STATE_REQU'+'ESTER']['INITIALIZI'+'NG']]:_0x2271fe['INITIALIZI'+'NG'],[_0x33dbcf['STATE_REQU'+'ESTER']['READY']]:_0x2271fe['READY'],[_0x33dbcf['STATE_REQU'+'ESTER']['BUSY']]:_0x2271fe['BUSY'],[_0x33dbcf['STATE_REQU'+'ESTER']['BANG']]:_0x2271fe['BUSY'],[_0x33dbcf['STATE_REQU'+'ESTER']['DEBUG']]:_0x2271fe['DEBUG'],[_0x33dbcf['STATE_REQU'+'ESTER']['INPUT']]:_0x2271fe['INPUT'],[_0x33dbcf['STATE_REQU'+'ESTER']['KEYBOARD']]:_0x2271fe['DEBUG'],[_0x33dbcf['STATE_REQU'+'ESTER']['PAUSE']]:_0x2271fe['PAUSE'],[_0x33dbcf['STATE_REQU'+'ESTER']['MORE']]:_0x2271fe['MORE'],[_0x33dbcf['STATE_REQU'+'ESTER']['COMPLETING'+'_BLOCK']]:_0x2271fe['COMPLETING'+'_BLOCK']},function(_0x135435){let _0xa54396;!function(_0x40a218){_0x40a218['clc']='clc',_0x40a218['output']='output',_0x40a218['promptChan'+'ge']='promptChan'+'ge',_0x40a218['stateChang'+'e']='stateChang'+'e';}(_0xa54396=_0x135435['Events']||(_0x135435['Events']={}));}(_0x33dbcf['IMVM']||(_0x33dbcf['IMVM']={}));},0xbf:(_0x1f0709,_0x36c7dc)=>{var _0x2d6f78;Object['defineProp'+'erty'](_0x36c7dc,'__esModule',{'value':!(0x1*0x1a3b+0x829+0x8e*-0x3e)}),_0x36c7dc['FullCapabi'+'litiesList']=_0x36c7dc['Capability']=void(0x1a5b+-0x999+0x37*-0x4e),function(_0x1bfce7){_0x1bfce7['Interactiv'+'eCommandLi'+'ne']='Interactiv'+'eCommandLi'+'ne',_0x1bfce7['Swing']='Swing',_0x1bfce7['ComplexSwi'+'ng']='ComplexSwi'+'ng',_0x1bfce7['LocalClien'+'t']='LocalClien'+'t',_0x1bfce7['WebWindow']='WebWindow',_0x1bfce7['ModalDialo'+'gs']='ModalDialo'+'gs',_0x1bfce7['Debugging']='Debugging';}(_0x2d6f78=_0x36c7dc['Capability']||(_0x36c7dc['Capability']={})),_0x36c7dc['FullCapabi'+'litiesList']=[_0x2d6f78['Interactiv'+'eCommandLi'+'ne'],_0x2d6f78['Swing'],_0x2d6f78['ComplexSwi'+'ng'],_0x2d6f78['LocalClien'+'t'],_0x2d6f78['WebWindow'],_0x2d6f78['ModalDialo'+'gs'],_0x2d6f78['Debugging']];},0x0:(_0xaf570c,_0x21ff16)=>{Object['defineProp'+'erty'](_0x21ff16,'__esModule',{'value':!(0x1ba8+-0x4*-0x851+-0x8b4*0x7)}),_0x21ff16['createReso'+'lvableProm'+'ise']=void(0x503+-0x372*-0x8+-0x2093),_0x21ff16['createReso'+'lvableProm'+'ise']=function(){let _0x55fc43,_0x3a3b9f;const _0x14650c=new Promise((_0x7510ed,_0x35f9ea)=>{_0x55fc43=_0x7510ed,_0x3a3b9f=_0x35f9ea;});return _0x14650c['resolve']=_0x55fc43,_0x14650c['reject']=_0x3a3b9f,_0x14650c;};},0x1b2:_0x2b69e2=>{_0x2b69e2['exports']=require('events');}},_0x223ec7={},_0x14289d=function _0x6bb42a(_0x5e0175){var _0x57cb02=_0x223ec7[_0x5e0175];if(void(-0x23*-0x107+0x1*0x2668+-0x4a5d)!==_0x57cb02)return _0x57cb02['exports'];var _0x5e8868=_0x223ec7[_0x5e0175]={'exports':{}};return _0x251337[_0x5e0175]['call'](_0x5e8868['exports'],_0x5e8868,_0x5e8868['exports'],_0x6bb42a),_0x5e8868['exports'];}(0x1a9+0x1*0xf52+-0x1065*0x1);module['exports']=_0x14289d;})()); \ No newline at end of file +((()=>{'use strict';var _0x1055e8={0x96:function(_0x38495b,_0x2b03ff,_0x1ecf47){var _0x5baffe=this&&this['__createBi'+'nding']||(Object['create']?function(_0xc1f2e8,_0x2474a8,_0x3e0e79,_0x1402c7){void(0x605+-0x2*0x346+0x1*0x87)===_0x1402c7&&(_0x1402c7=_0x3e0e79);var _0x206365=Object['getOwnProp'+'ertyDescri'+'ptor'](_0x2474a8,_0x3e0e79);_0x206365&&!('get'in _0x206365?!_0x2474a8['__esModule']:_0x206365['writable']||_0x206365['configurab'+'le'])||(_0x206365={'enumerable':!(-0xb5b+-0x12f9+-0xa1c*-0x3),'get':function(){return _0x2474a8[_0x3e0e79];}}),Object['defineProp'+'erty'](_0xc1f2e8,_0x1402c7,_0x206365);}:function(_0x3018d1,_0x2a0d8d,_0x246a34,_0x1e983d){void(0x4*-0x687+-0x22bd+0x25*0x1a5)===_0x1e983d&&(_0x1e983d=_0x246a34),_0x3018d1[_0x1e983d]=_0x2a0d8d[_0x246a34];}),_0x241ec2=this&&this['__exportSt'+'ar']||function(_0x24be69,_0x4c7589){for(var _0x266089 in _0x24be69)'default'===_0x266089||Object['prototype']['hasOwnProp'+'erty']['call'](_0x4c7589,_0x266089)||_0x5baffe(_0x4c7589,_0x24be69,_0x266089);},_0x55a0ab=this&&this['__awaiter']||function(_0x11abbb,_0x17cd87,_0x208efa,_0x27975e){return new(_0x208efa||(_0x208efa=Promise))(function(_0x1f6cd9,_0x148684){function _0x2c7bed(_0x385745){try{_0x2c046f(_0x27975e['next'](_0x385745));}catch(_0x56ef98){_0x148684(_0x56ef98);}}function _0x1a4820(_0x4933ed){try{_0x2c046f(_0x27975e['throw'](_0x4933ed));}catch(_0x16f6f1){_0x148684(_0x16f6f1);}}function _0x2c046f(_0x31bfc9){var _0x3bbd6d;_0x31bfc9['done']?_0x1f6cd9(_0x31bfc9['value']):(_0x3bbd6d=_0x31bfc9['value'],_0x3bbd6d instanceof _0x208efa?_0x3bbd6d:new _0x208efa(function(_0x35f87b){_0x35f87b(_0x3bbd6d);}))['then'](_0x2c7bed,_0x1a4820);}_0x2c046f((_0x27975e=_0x27975e['apply'](_0x11abbb,_0x17cd87||[]))['next']());});},_0x37a65b=this&&this['__importDe'+'fault']||function(_0x15e02f){return _0x15e02f&&_0x15e02f['__esModule']?_0x15e02f:{'default':_0x15e02f};};Object['defineProp'+'erty'](_0x2b03ff,'__esModule',{'value':!(0x2b*0x21+-0x2163+0x1bd8)}),_0x2b03ff['MatlabStat'+'e']=void(0x314+0x23*-0xb5+0x15ab);const _0x526706=_0x37a65b(_0x1ecf47(-0xd*-0xad+0x5d*0x1b+-0xf25*0x1)),_0x380187=_0x37a65b(_0x1ecf47(-0x21*-0x83+-0x260f+0x1664)),_0x4175c5=_0x37a65b(_0x1ecf47(-0x1*0xf19+0x168e+0x1*-0x704)),_0x1061d5=_0x37a65b(_0x1ecf47(0x1*0xa9f+-0x14f1+0xa79)),_0x27cff0=_0x1ecf47(0x1f*-0xab+0x68d*-0x1+0x1ca9),_0x2d287f=_0x37a65b(_0x1ecf47(-0x93a+-0x3e1*-0x7+-0x103b));var _0x5ba231;_0x241ec2(_0x1ecf47(-0xeb2+0x2*0x33+-0x1*-0xfb3),_0x2b03ff),function(_0x17c267){_0x17c267['DISCONNECT'+'ED']='disconnect'+'ed',_0x17c267['READY']='ready',_0x17c267['BUSY']='busy';}(_0x5ba231=_0x2b03ff['MatlabStat'+'e']||(_0x2b03ff['MatlabStat'+'e']={}));class _0x3ef973 extends _0x2d287f['default']{constructor(_0x2b11e1,_0x261627){super(),this['_isReady']=!(-0x1b2+-0x1*-0x24cb+-0x2318),this['_lifecycle'+'Manager']=_0x2b11e1,this['_logger']=_0x261627,this['_lifecycle'+'Manager']['eventEmitt'+'er']['on']('connected',this['_handleMat'+'labConnect'+'ed']['bind'](this)),this['_lifecycle'+'Manager']['eventEmitt'+'er']['on']('disconnect'+'ed',this['_handleMat'+'labDisconn'+'ected']['bind'](this));}['eval'](_0x35df54,_0x41342e=!(0x1f70+0x465*-0x1+-0x1b0b),_0x53c263){return this['_mvmImpl']?this['_mvmImpl']['eval'](_0x35df54,_0x41342e,_0x53c263):Promise['reject']();}['feval'](_0x58d3d7,_0x1f09b8,_0x475430,_0x3bb570=!(0x1c7f+0x1ce1+-0x1*0x395f),_0x27fcc1){return this['_mvmImpl']?this['_mvmImpl']['feval'](_0x58d3d7,_0x1f09b8,_0x475430,_0x3bb570,_0x27fcc1):Promise['reject']();}['setBreakpo'+'int'](_0x86c6f1,_0xead7c6,_0x5f53ba,_0x1571c1){return this['_mvmImpl']?this['_mvmImpl']['setBreakpo'+'int'](_0x86c6f1,_0xead7c6,_0x5f53ba,_0x1571c1):Promise['reject']();}['clearBreak'+'point'](_0x2a17c2,_0x5dcd8f,_0x454e55,_0x312f0e){return this['_mvmImpl']?this['_mvmImpl']['clearBreak'+'point'](_0x2a17c2,_0x5dcd8f,_0x454e55,_0x312f0e):Promise['reject']();}['unpause'](){var _0x43bcd4;null===(_0x43bcd4=this['_mvmImpl'])||void(-0x2*0x98c+-0x1b03+0x25*0x13f)===_0x43bcd4||_0x43bcd4['unpause']();}['interrupt'](){var _0x5ca221;null===(_0x5ca221=this['_mvmImpl'])||void(0x49*-0x1+-0x23da+0x349*0xb)===_0x5ca221||_0x5ca221['interrupt']();}['pauseInDeb'+'ugger'](){var _0xf33d40;null===(_0xf33d40=this['_mvmImpl'])||void(-0xa57+-0x18*0x99+0x18af)===_0xf33d40||_0xf33d40['pauseInDeb'+'ugger']();}['getMatlabR'+'elease'](){var _0x481621;return null!==(_0x481621=this['_lifecycle'+'Manager']['getMatlabR'+'elease']())&&void(-0x1*0x150c+-0x18*-0x9a+0x69c)!==_0x481621?_0x481621:null;}['isReady'](){return this['_isReady'];}['waitUntilR'+'eady'](){return _0x55a0ab(this,void(-0x26*0x55+0x181*-0x3+0x1121),void(0x1c3a+0x8e5*-0x4+0x2*0x3ad),function*(){return this['isReady']()?Promise['resolve']():null==this['_readyProm'+'ise']?Promise['reject']():this['_readyProm'+'ise'];});}['_handleMat'+'labDisconn'+'ected'](){this['_mvmImpl']&&this['_mvmImpl']['detach'](),this['_mvmImpl']=void(-0x103c+-0xd8d*0x2+0x2b56),this['_isReady']=!(-0x65*0x43+-0x15f1*-0x1+0x1*0x47f),this['emit'](_0x27cff0['IMVM']['Events']['stateChang'+'e'],_0x5ba231['DISCONNECT'+'ED'],void(-0x1540+0x508+-0x568*-0x3));}['_handleMat'+'labConnect'+'ed'](){this['_tryAttach']();}['_tryAttach'](){this['_readyProm'+'ise']=this['_detectImp'+'l'](),this['_readyProm'+'ise']['then'](this['_handleRea'+'dy']['bind'](this),this['_handleRea'+'dyError']['bind'](this));}['_handleRea'+'dy'](){if(!this['_mvmImpl'])throw'MVMImpl\x20no'+'t\x20set';this['_mvmImpl']['on'](_0x27cff0['IMVM']['Events']['output'],this['emit']['bind'](this,_0x27cff0['IMVM']['Events']['output'])),this['_mvmImpl']['on'](_0x27cff0['IMVM']['Events']['clc'],this['emit']['bind'](this,_0x27cff0['IMVM']['Events']['clc'])),this['_mvmImpl']['on'](_0x27cff0['IMVM']['Events']['promptChan'+'ge'],this['emit']['bind'](this,_0x27cff0['IMVM']['Events']['promptChan'+'ge'])),this['_isReady']=!(0x104f+0xf0a+-0x5*0x645),this['emit'](_0x27cff0['IMVM']['Events']['stateChang'+'e'],_0x5ba231['READY'],this['_lifecycle'+'Manager']['getMatlabR'+'elease']()),this['_setupDebu'+'ggerListen'+'ers']();}['_handleRea'+'dyError'](){}['_detectImp'+'l'](){return _0x55a0ab(this,void(-0xa57+0x3dd*0x7+-0x10b4),void(-0x2027+0x1*0x156a+0xabd*0x1),function*(){const _0x5205b4=this['_lifecycle'+'Manager']['getMatlabR'+'elease']();if(null===_0x5205b4)throw new Error('No\x20valid\x20M'+'ATLAB\x20rele'+'ase\x20detect'+'ed\x20when\x20tr'+'ying\x20to\x20at'+'tach');const _0x2b8f1f=_0x5205b4['match'](/^R20([0-9]{2}[ab])$/);if(null==_0x2b8f1f)throw new Error('No\x20valid\x20M'+'ATLAB\x20rele'+'ase\x20match\x20'+'detected\x20w'+'hen\x20trying'+'\x20to\x20attach');const _0x4c3fd1=_0x2b8f1f[0x129b+-0x268+0x6*-0x2b3];switch(_0x4c3fd1){case'21b':{const _0x11a2d6=new _0x1061d5['default'](this['_lifecycle'+'Manager'],this['_logger']);if(yield _0x11a2d6['tryAttach'](_0x4c3fd1))return void(this['_mvmImpl']=_0x11a2d6);}break;case'22a':{const _0x893e33=new _0x4175c5['default'](this['_lifecycle'+'Manager'],this['_logger']);if(yield _0x893e33['tryAttach'](_0x4c3fd1))return void(this['_mvmImpl']=_0x893e33);}break;case'22b':{const _0x15e2c7=new _0x380187['default'](this['_lifecycle'+'Manager'],this['_logger']);if(yield _0x15e2c7['tryAttach'](_0x4c3fd1))return void(this['_mvmImpl']=_0x15e2c7);}break;default:{const _0x3c5e2a=new _0x526706['default'](this['_lifecycle'+'Manager'],this['_logger']);if(yield _0x3c5e2a['tryAttach'](_0x4c3fd1))return void(this['_mvmImpl']=_0x3c5e2a);}}throw new Error('Unable\x20to\x20'+'attach\x20to\x20'+'MATLAB\x20MVM');});}['_setupDebu'+'ggerListen'+'ers'](){return _0x55a0ab(this,void(0x2345+-0x238c+0x47),void(-0x1*-0x16fb+0x1*-0x1dde+-0x2b*-0x29),function*(){const _0x245224=yield this['_lifecycle'+'Manager']['getMatlabC'+'onnection']();_0x245224&&(this['_setupDebu'+'gListener'](_0x245224,'EnterDebug'+'gerEvent'),this['_setupDebu'+'gListener'](_0x245224,'EnterDebug'+'gerWithWar'+'ningEvent'),this['_setupDebu'+'gListener'](_0x245224,'ContinueEx'+'ecutionEve'+'nt'),this['_setupDebu'+'gListener'](_0x245224,'ExitDebugg'+'erEvent'),this['_setupDebu'+'gListener'](_0x245224,'ChangeCurr'+'entWorkspa'+'ceEvent'),this['_setupDebu'+'gListener'](_0x245224,'AddLineNum'+'berBreakpo'+'intEvent'),this['_setupDebu'+'gListener'](_0x245224,'DeleteLine'+'NumberBrea'+'kpointEven'+'t'),this['_setupDebu'+'gListener'](_0x245224,'DeleteAllB'+'reakpoints'+'Event'),this['_setupDebu'+'gListener'](_0x245224,'AddProgram'+'WideBreakp'+'ointEvent'),this['_setupDebu'+'gListener'](_0x245224,'DeleteProg'+'ramWideBre'+'akpointEve'+'nt'));});}['_setupDebu'+'gListener'](_0x13e409,_0x542bf0){_0x13e409['subscribe']('/eventmgr/'+'1/::MathWo'+'rks::Execu'+'tionEvents'+'::'+_0x542bf0,_0x21a5c0=>{this['emit'](_0x542bf0,_0x21a5c0);});}}_0x2b03ff['default']=_0x3ef973;},0x27:function(_0x4d9f5b,_0x56ad2b,_0x109270){var _0x5dffee=this&&this['__createBi'+'nding']||(Object['create']?function(_0x5e7385,_0x39e415,_0x43427b,_0x5750af){void(-0x100c*0x1+-0x1559+0x2565)===_0x5750af&&(_0x5750af=_0x43427b);var _0x4e014e=Object['getOwnProp'+'ertyDescri'+'ptor'](_0x39e415,_0x43427b);_0x4e014e&&!('get'in _0x4e014e?!_0x39e415['__esModule']:_0x4e014e['writable']||_0x4e014e['configurab'+'le'])||(_0x4e014e={'enumerable':!(0x1*-0x78d+0x7e+0x70f),'get':function(){return _0x39e415[_0x43427b];}}),Object['defineProp'+'erty'](_0x5e7385,_0x5750af,_0x4e014e);}:function(_0x254aac,_0xf55657,_0x506540,_0x1da1f2){void(-0xbf8+0x19f9+-0x1*0xe01)===_0x1da1f2&&(_0x1da1f2=_0x506540),_0x254aac[_0x1da1f2]=_0xf55657[_0x506540];}),_0x52973f=this&&this['__setModul'+'eDefault']||(Object['create']?function(_0x5096c0,_0x4ca620){Object['defineProp'+'erty'](_0x5096c0,'default',{'enumerable':!(0xd7e*0x1+0x63*0x61+-0x3301),'value':_0x4ca620});}:function(_0x184df1,_0x2f5008){_0x184df1['default']=_0x2f5008;}),_0x426cfe=this&&this['__importSt'+'ar']||function(_0x10471e){if(_0x10471e&&_0x10471e['__esModule'])return _0x10471e;var _0x52a9de={};if(null!=_0x10471e){for(var _0x33c5a4 in _0x10471e)'default'!==_0x33c5a4&&Object['prototype']['hasOwnProp'+'erty']['call'](_0x10471e,_0x33c5a4)&&_0x5dffee(_0x52a9de,_0x10471e,_0x33c5a4);}return _0x52973f(_0x52a9de,_0x10471e),_0x52a9de;},_0x210649=this&&this['__awaiter']||function(_0x4c680d,_0xaedd0c,_0xe2f75b,_0x37ca05){return new(_0xe2f75b||(_0xe2f75b=Promise))(function(_0x1ab09f,_0x327f39){function _0x4936ae(_0x223148){try{_0x254a37(_0x37ca05['next'](_0x223148));}catch(_0x5ef3b6){_0x327f39(_0x5ef3b6);}}function _0x1a3c11(_0x4a89ba){try{_0x254a37(_0x37ca05['throw'](_0x4a89ba));}catch(_0x41d32d){_0x327f39(_0x41d32d);}}function _0x254a37(_0x40a2a2){var _0x5e9e79;_0x40a2a2['done']?_0x1ab09f(_0x40a2a2['value']):(_0x5e9e79=_0x40a2a2['value'],_0x5e9e79 instanceof _0xe2f75b?_0x5e9e79:new _0xe2f75b(function(_0x3a5529){_0x3a5529(_0x5e9e79);}))['then'](_0x4936ae,_0x1a3c11);}_0x254a37((_0x37ca05=_0x37ca05['apply'](_0x4c680d,_0xaedd0c||[]))['next']());});};Object['defineProp'+'erty'](_0x56ad2b,'__esModule',{'value':!(-0xf92+0x81c+0x776)});const _0x46dfad=_0x426cfe(_0x109270(0x2*0x667+-0x2208+-0x4f*-0x49)),_0x5eea51=_0x109270(0x1eb6+-0x1235*-0x2+-0x4320),_0x26199e=_0x109270(0x1*0x15dd+-0x1ee7*-0x1+-0x335d);class _0x4ae788 extends _0x46dfad['default']{constructor(_0x58a653,_0x2f7765){super(_0x2f7765),this['_currentRe'+'questId']=-0x1335+0x2c*-0x46+-0x2d7*-0xb,this['_eventSubs'+'criptions']={},this['_lifecycle'+'Manager']=_0x58a653;}['_getChanne'+'l'](_0x5762c1,..._0x270659){switch(_0x5762c1){case _0x46dfad['MessageTyp'+'e']['ATTACH']:return'/mvm/attac'+'h';case _0x46dfad['MessageTyp'+'e']['ATTACH_RES'+'PONSE']:return'/mvm/attac'+'h/response'+'/'+_0x270659[0xae1+0x1030+-0x1*0x1b11];case _0x46dfad['MessageTyp'+'e']['EVAL_REQUE'+'ST']:return'/mvm/reque'+'st/eval';case _0x46dfad['MessageTyp'+'e']['FEVAL_REQU'+'EST']:return'/mvm/reque'+'st/feval';case _0x46dfad['MessageTyp'+'e']['CANCEL']:return'/mvm/cance'+'l';case _0x46dfad['MessageTyp'+'e']['PAUSE_IN_D'+'EBUGGER']:return'/mvm/debug'+'ger/breakI'+'nDebugger';case _0x46dfad['MessageTyp'+'e']['EVAL_FEVAL'+'_RESPONSE']:return'/mvm/respo'+'nse/'+this['_attachId'];case _0x46dfad['MessageTyp'+'e']['OUTPUT']:return'/mvm/outpu'+'t/'+this['_attachId'];case _0x46dfad['MessageTyp'+'e']['ERROR_OUTP'+'UT']:return'/mvm/error'+'/'+this['_attachId'];case _0x46dfad['MessageTyp'+'e']['CLC']:return'/matlabls/'+'events/clc';case _0x46dfad['MessageTyp'+'e']['EVENT_FIRE'+'D']:return'/mvm/event'+'Mgr/event/'+this['_attachId'];case _0x46dfad['MessageTyp'+'e']['EVENT_SUBS'+'CRIBE']:return'/mvm/event'+'Mgr/reques'+'t';case _0x46dfad['MessageTyp'+'e']['EVENT_SUBS'+'CRIBED']:return'/mvm/event'+'Mgr/respon'+'se/'+this['_attachId'];case _0x46dfad['MessageTyp'+'e']['SET_BREAKP'+'OINT_REQUE'+'ST']:case _0x46dfad['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_REQ'+'UEST']:case _0x46dfad['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_RES'+'PONSE']:case _0x46dfad['MessageTyp'+'e']['SET_BREAKP'+'OINT_RESPO'+'NSE']:case _0x46dfad['MessageTyp'+'e']['EVAL_RESPO'+'NSE']:case _0x46dfad['MessageTyp'+'e']['FEVAL_RESP'+'ONSE']:case _0x46dfad['MessageTyp'+'e']['STILL_ALIV'+'E']:case _0x46dfad['MessageTyp'+'e']['INTERRUPT']:throw'Message\x20un'+'used';}}['_getMessag'+'eData'](_0x69893f,..._0x49fb34){switch(_0x69893f){case _0x46dfad['MessageTyp'+'e']['ATTACH']:return{'attachID':_0x49fb34[0xff+0x18ad+0x1f*-0xd4],'mvmID':'user-mvm'};case _0x46dfad['MessageTyp'+'e']['EVAL_REQUE'+'ST']:return{'attachID':this['_attachId'],'requestID':_0x49fb34[-0x1*-0xb13+-0x1e1f+0x130c],'command':_0x49fb34[0x8*-0x219+-0x887*0x1+-0x48*-0x5a],'isUserEval':!(0x59*-0x25+0x1d2c*0x1+-0x104f),'runOptions':_0x49fb34[-0x369+0x5f5+0x32*-0xd]};case _0x46dfad['MessageTyp'+'e']['FEVAL_REQU'+'EST']:return{'attachID':this['_attachId'],'requestID':_0x49fb34[-0x8f4+0x8de+0xb*0x2],'function':_0x49fb34[-0x41*-0x5+0x645*0x4+-0x1a58],'numOutputsExpected':_0x49fb34[0x24d7*-0x1+0xca1+0x26c*0xa],'rhsArgs':_0x49fb34[0x1da*0x11+0x4c3*0x3+-0x2dc0],'runOptions':_0x49fb34[-0x160d*0x1+0xa7*0x25+-0x212]};case _0x46dfad['MessageTyp'+'e']['CANCEL']:return{'attachID':this['_attachId'],'requestID':_0x49fb34[-0x24*0xb0+-0x1*-0x213a+-0x87a],'interrupt':!(0x1*-0x210a+0x11*-0x23+-0x235d*-0x1)};case _0x46dfad['MessageTyp'+'e']['SET_BREAKP'+'OINT_REQUE'+'ST']:return{'attachID':this['_attachId'],'requestID':_0x49fb34[0x1117+-0x1f3a*0x1+0xe23],'breakpoint':_0x49fb34[-0x715*-0x1+-0xf44+0x20c*0x4]};case _0x46dfad['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_REQ'+'UEST']:return{'attachID':this['_attachId'],'requestID':_0x49fb34[0x2017+-0x662*0x6+0x635],'interrupt':_0x49fb34[-0x10f0+0x1*-0x168d+-0x1e*-0x151]};case _0x46dfad['MessageTyp'+'e']['PAUSE_IN_D'+'EBUGGER']:return{};}throw'Unknown\x20me'+'ssage\x20type'+'\x20to\x20get\x20da'+'ta\x20from';}['tryAttach'](_0x41a291){return _0x210649(this,void(0x21a4+-0x1acd+-0x6d7),void(0x1*-0x7c9+-0x1cca+-0x1*-0x2493),function*(){if(this['_matlabCon'+'nection']=yield this['_lifecycle'+'Manager']['getMatlabC'+'onnection'](),null==this['_matlabCon'+'nection'])return!(-0x708+-0x182b+0x1f34);const _0x56d554=(-0x1028+0x6eb+0x1*0x93d,_0x5eea51['createReso'+'lvableProm'+'ise'])(),_0x30f539=this['_getNewAtt'+'achId']();let _0x5d415c=0x1cb*0x9+0x12*0x99+-0x1ae5,_0xbd4d11=!(-0x1*-0xbb+-0xd73+0xcb9);const _0x4bf89a=()=>{var _0x450757;null===(_0x450757=this['_matlabCon'+'nection'])||void(0x1*0x2451+-0x1*-0x23ea+0x483b*-0x1)===_0x450757||_0x450757['publish'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['ATTACH']),this['_getMessag'+'eData'](_0x46dfad['MessageTyp'+'e']['ATTACH'],_0x30f539));},_0x233136=setInterval(()=>{this['_logger']['error']('Timeout\x20wh'+'en\x20attachi'+'ng\x20to\x20rele'+'ase:\x20'+_0x41a291),_0x5d415c++,_0x5d415c<0x1*-0x115a+-0x4a2*-0x2+0x1*0x819?(this['_logger']['log']('Retrying\x20a'+'ttach'),_0x4bf89a()):(this['_logger']['log']('Unable\x20to\x20'+'attach\x20aft'+'er\x20retries'),_0xbd4d11=!(-0x1*-0x24ee+0x25be*0x1+-0x4aac),clearInterval(_0x233136),_0x56d554['resolve'](!(0x1*0x9c1+0x182*0x4+-0xfc8)));},0x8*-0x49c+0x370+-0xb4a*-0x4);return this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['ATTACH_RES'+'PONSE'],_0x30f539),_0x54cd37=>{clearInterval(_0x233136),_0xbd4d11||(this['_logger']['log']('MVM\x20attach'+'\x20success'),_0x54cd37['error']?_0x56d554['resolve'](!(-0x566+0x1389+-0xe22)):this['_matlabCon'+'nection']?(this['_attachId']=_0x30f539,this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['EVAL_FEVAL'+'_RESPONSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['OUTPUT']),this['_handleOut'+'put']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['ERROR_OUTP'+'UT']),this['_handleOut'+'put']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['EVENT_FIRE'+'D']),this['_handleEve'+'ntFired']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['EVENT_SUBS'+'CRIBED']),this['_handleEve'+'ntSubscrip'+'tion']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['CLC']),this['_handleClc'+'Event']['bind'](this))),this['_listenToP'+'romptEvent'](),_0x56d554['resolve'](!(0x17*0x146+-0x7*-0x55f+-0x42e3))):_0x56d554['resolve'](!(0x269a+-0x6b4+-0x1fe5)));}),_0x4bf89a(),_0x56d554;});}['_listenToP'+'romptEvent'](){this['_subscribe'+'Event']('mlutil::pr'+'ompt::Prom'+'ptEvent',this['_handlePro'+'mptEvent']['bind'](this));}['_subscribe'+'Event'](_0x12b77e,_0x3a75cf){var _0x5a9989;return _0x210649(this,void(-0x3*0x8ad+-0x5c*0x12+-0xb1*-0x2f),void(-0x175d+-0x143+-0x1*-0x18a0),function*(){if(yield this['_attachPro'+'mise'],void(-0x251f+0x1db3+-0x4*-0x1db)===this['_eventSubs'+'criptions'][_0x12b77e]){const _0x53ca56=(0x1*-0xf71+0x32b*0x3+0xa*0x98,_0x5eea51['createReso'+'lvableProm'+'ise'])(),_0x1a6985=Math['random']()['toString'](0x1*-0x1631+0x187c+0x227*-0x1)['substr'](0x1*-0xdb7+0xd*0x173+-0x51e,-0x621+-0x1696+0x1cc0);this['_eventSubs'+'criptions'][_0x12b77e]={'subscriptionPromise':_0x53ca56,'eventSubscriptionRequestId':_0x1a6985,'callbacks':[]},null===(_0x5a9989=this['_matlabCon'+'nection'])||void(0x1c33*0x1+-0x1*0xf8b+0x32a*-0x4)===_0x5a9989||_0x5a9989['publish'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['EVENT_SUBS'+'CRIBE']),{'type':'subscribe','uId':_0x12b77e,'eventName':_0x12b77e,'requestId':_0x1a6985,'connectionId':this['_attachId']});}return this['_eventSubs'+'criptions'][_0x12b77e]['callbacks']['push'](_0x3a75cf),()=>{this['_eventSubs'+'criptions'][_0x12b77e]['callbacks']=this['_eventSubs'+'criptions'][_0x12b77e]['callbacks']['filter'](_0x18e4cc=>_0x18e4cc!==_0x3a75cf);};});}['_handleEve'+'ntSubscrip'+'tion'](_0x2bbf23){if(_0x2bbf23['requestId']){for(const _0x485a0d in this['_eventSubs'+'criptions'])if(this['_eventSubs'+'criptions'][_0x485a0d]['eventSubsc'+'riptionReq'+'uestId']===_0x2bbf23['requestId'])return this['_eventSubs'+'criptions'][_0x485a0d]['subscripti'+'onPromise']['resolve'](),void(this['_eventSubs'+'criptions'][_0x485a0d]['eventSubsc'+'riptionReq'+'uestId']='');}}['_handleEve'+'ntFired'](_0x4d5d5a){for(let _0x544690=-0x2406+-0x2f*0x53+0x3343*0x1;_0x544690<_0x4d5d5a['eventData']['filterTags']['length'];_0x544690++){const _0x125bd9=this['_eventSubs'+'criptions'][_0x4d5d5a['eventData']['filterTags'][_0x544690]];void(0x51a+-0x13f7*0x1+0xedd)===_0x125bd9||_0x125bd9['callbacks']['slice']()['forEach'](_0x43fe10=>{_0x43fe10(_0x4d5d5a['eventData']);});}}['_handlePro'+'mptEvent'](_0x294494){this['emit'](_0x26199e['IMVM']['Events']['promptChan'+'ge'],_0x26199e['STATE_REQU'+'ESTER_TO_S'+'TATE'][_0x294494['requester']],_0x294494['isIdle']);}['detach'](){super['detach']();}['setBreakpo'+'int'](_0x32bbab,_0x15641b,_0x51cbf8,_0x286bd8){return this['feval']('dbstop',0x4b1+-0x1f4e+0x1a9d,['in',_0x32bbab,'at',_0x15641b['toString']()]);}['clearBreak'+'point'](_0x47d213,_0xff02cd,_0x186f27,_0x4a4689){return this['feval']('dbclear',0x1*0x1ecb+0x172*0x17+0xa9*-0x61,['in',_0x47d213,'at',_0xff02cd['toString']()]);}['_cancel'](_0xf0ae96){var _0x23fde5;null===(_0x23fde5=this['_matlabCon'+'nection'])||void(0x1ca*0x4+-0x3d7+-0x351)===_0x23fde5||_0x23fde5['publish'](this['_getChanne'+'l'](_0x46dfad['MessageTyp'+'e']['CANCEL']),this['_getMessag'+'eData'](_0x46dfad['MessageTyp'+'e']['CANCEL'],_0xf0ae96));}['_getNewAtt'+'achId'](){return Math['random']()['toString'](0x1*0xee9+-0x20*0x6d+-0x125)['substr'](-0x557*0x2+0x19*0x41+-0x1*-0x457,-0x1be9+0x435*-0x1+0x2027);}['_getNewReq'+'uestId'](){return this['_currentRe'+'questId']++;}['getMatlabR'+'elease'](){return this['_lifecycle'+'Manager']['getMatlabR'+'elease']();}}_0x56ad2b['default']=_0x4ae788;},0x71:function(_0x15ddc5,_0x391147,_0x4473af){var _0x411b9d=this&&this['__createBi'+'nding']||(Object['create']?function(_0x32d1dd,_0xdcfcc0,_0x56cd25,_0x5a4988){void(-0xaf4+0x1513+-0xa1f)===_0x5a4988&&(_0x5a4988=_0x56cd25);var _0x37c3dd=Object['getOwnProp'+'ertyDescri'+'ptor'](_0xdcfcc0,_0x56cd25);_0x37c3dd&&!('get'in _0x37c3dd?!_0xdcfcc0['__esModule']:_0x37c3dd['writable']||_0x37c3dd['configurab'+'le'])||(_0x37c3dd={'enumerable':!(-0x15*-0xce+-0x146*0x16+0xb1e*0x1),'get':function(){return _0xdcfcc0[_0x56cd25];}}),Object['defineProp'+'erty'](_0x32d1dd,_0x5a4988,_0x37c3dd);}:function(_0x31e7fd,_0x554fec,_0x519e70,_0x3c49bc){void(-0x263a+0x4d4+-0x6ae*-0x5)===_0x3c49bc&&(_0x3c49bc=_0x519e70),_0x31e7fd[_0x3c49bc]=_0x554fec[_0x519e70];}),_0x47eeee=this&&this['__setModul'+'eDefault']||(Object['create']?function(_0x1f241a,_0x360908){Object['defineProp'+'erty'](_0x1f241a,'default',{'enumerable':!(-0xb57+-0x3c*0x91+0x2d53),'value':_0x360908});}:function(_0x56edba,_0x10b403){_0x56edba['default']=_0x10b403;}),_0x45875d=this&&this['__importSt'+'ar']||function(_0x4d418b){if(_0x4d418b&&_0x4d418b['__esModule'])return _0x4d418b;var _0x4f8cfd={};if(null!=_0x4d418b){for(var _0x30698a in _0x4d418b)'default'!==_0x30698a&&Object['prototype']['hasOwnProp'+'erty']['call'](_0x4d418b,_0x30698a)&&_0x411b9d(_0x4f8cfd,_0x4d418b,_0x30698a);}return _0x47eeee(_0x4f8cfd,_0x4d418b),_0x4f8cfd;},_0x194806=this&&this['__awaiter']||function(_0x30ec2f,_0x1cb1cb,_0x32c2ee,_0x58fadb){return new(_0x32c2ee||(_0x32c2ee=Promise))(function(_0x5dc3fb,_0xfa16cb){function _0x38913c(_0x4b84fb){try{_0x16dd58(_0x58fadb['next'](_0x4b84fb));}catch(_0x327452){_0xfa16cb(_0x327452);}}function _0x1a362a(_0xf91ed8){try{_0x16dd58(_0x58fadb['throw'](_0xf91ed8));}catch(_0x3fad49){_0xfa16cb(_0x3fad49);}}function _0x16dd58(_0x1d5b58){var _0x431e95;_0x1d5b58['done']?_0x5dc3fb(_0x1d5b58['value']):(_0x431e95=_0x1d5b58['value'],_0x431e95 instanceof _0x32c2ee?_0x431e95:new _0x32c2ee(function(_0x41be39){_0x41be39(_0x431e95);}))['then'](_0x38913c,_0x1a362a);}_0x16dd58((_0x58fadb=_0x58fadb['apply'](_0x30ec2f,_0x1cb1cb||[]))['next']());});};Object['defineProp'+'erty'](_0x391147,'__esModule',{'value':!(-0x70f+-0x20b+0x91a)});const _0x45a9ce=_0x45875d(_0x4473af(0xb35+-0xf1+0x55*-0x1b)),_0x430a52=_0x4473af(0xb65+0xba*0x2+-0x17*0x8f),_0x4aac76=_0x4473af(0xe9d*0x1+0x2*-0x15d+-0xa7c);var _0x4cd85c;!function(_0x541c6d){_0x541c6d[_0x541c6d['PreAttach']=0x477+-0x2*0x103f+0x1c07]='PreAttach',_0x541c6d[_0x541c6d['Attaching']=0x4*0x2a1+0x1a87*0x1+-0x250a]='Attaching',_0x541c6d[_0x541c6d['Attached']=-0x287*-0xd+-0x307*0x5+-0x11b6]='Attached',_0x541c6d[_0x541c6d['Invalid']=-0x1135*0x2+-0x2ef*-0x1+0x2*0xfbf]='Invalid';}(_0x4cd85c||(_0x4cd85c={}));class _0x454c59 extends _0x45a9ce['default']{constructor(_0x24236a,_0x4162f3){super(_0x4162f3),this['_channelPr'+'efix']=null,this['_eventSubs'+'criptions']={},this['_attachmen'+'tState']=_0x4cd85c['PreAttach'],this['_lifecycle'+'Manager']=_0x24236a,this['_attachPro'+'mise']=(0x657+-0x27c+-0x3db,_0x430a52['createReso'+'lvableProm'+'ise'])();}['_getChanne'+'l'](_0x5d71c3,..._0x47c8d0){switch(_0x5d71c3){case _0x45a9ce['MessageTyp'+'e']['ATTACH']:return'/mvm/attac'+'h/request';case _0x45a9ce['MessageTyp'+'e']['ATTACH_RES'+'PONSE']:return'/mvm/attac'+'h/response';case _0x45a9ce['MessageTyp'+'e']['EVAL_REQUE'+'ST']:return this['_channelPr'+'efix']+('/eval/requ'+'est');case _0x45a9ce['MessageTyp'+'e']['FEVAL_REQU'+'EST']:return this['_channelPr'+'efix']+('/feval/req'+'uest');case _0x45a9ce['MessageTyp'+'e']['SET_BREAKP'+'OINT_REQUE'+'ST']:return this['_channelPr'+'efix']+('/setLineBr'+'eakpoint/r'+'equest');case _0x45a9ce['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_REQ'+'UEST']:return this['_channelPr'+'efix']+('/clearLine'+'Breakpoint'+'/request');case _0x45a9ce['MessageTyp'+'e']['CANCEL']:return this['_channelPr'+'efix']+('/cancel/re'+'quest');case _0x45a9ce['MessageTyp'+'e']['PAUSE_IN_D'+'EBUGGER']:return this['_channelPr'+'efix']+('/breakInDe'+'bugger/req'+'uest');case _0x45a9ce['MessageTyp'+'e']['EVAL_RESPO'+'NSE']:return this['_channelPr'+'efix']+('/eval/resp'+'onse');case _0x45a9ce['MessageTyp'+'e']['FEVAL_RESP'+'ONSE']:return this['_channelPr'+'efix']+('/feval/res'+'ponse');case _0x45a9ce['MessageTyp'+'e']['SET_BREAKP'+'OINT_RESPO'+'NSE']:return this['_channelPr'+'efix']+('/setLineBr'+'eakpoint/r'+'esponse');case _0x45a9ce['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_RES'+'PONSE']:return this['_channelPr'+'efix']+('/clearLine'+'Breakpoint'+'/response');case _0x45a9ce['MessageTyp'+'e']['OUTPUT']:return this['_channelPr'+'efix']+'/output';case _0x45a9ce['MessageTyp'+'e']['ERROR_OUTP'+'UT']:return this['_channelPr'+'efix']+'/error';case _0x45a9ce['MessageTyp'+'e']['STILL_ALIV'+'E']:return this['_channelPr'+'efix']+('/connectio'+'n/stillAli'+'ve');case _0x45a9ce['MessageTyp'+'e']['EVENT_FIRE'+'D']:return this['_channelPr'+'efix']+('/event/fir'+'eEvent');case _0x45a9ce['MessageTyp'+'e']['EVENT_SUBS'+'CRIBE']:return this['_channelPr'+'efix']+('/subscribe'+'Event/requ'+'est');case _0x45a9ce['MessageTyp'+'e']['EVENT_SUBS'+'CRIBED']:return this['_channelPr'+'efix']+('/subscribe'+'Event/resp'+'onse');case _0x45a9ce['MessageTyp'+'e']['CLC']:return'/matlabls/'+'events/clc';case _0x45a9ce['MessageTyp'+'e']['EVAL_FEVAL'+'_RESPONSE']:case _0x45a9ce['MessageTyp'+'e']['INTERRUPT']:throw'Message\x20Ty'+'pe\x20unused';}throw'Unknown\x20me'+'ssage\x20type';}['_getMessag'+'eData'](_0x18db17,..._0x3dfcc3){switch(_0x18db17){case _0x45a9ce['MessageTyp'+'e']['ATTACH']:return{'requestID':_0x3dfcc3[0x811+0x1bc5+-0x23d6],'mvmID':'user-mvm','supportedApiVersions':['r22a0']};case _0x45a9ce['MessageTyp'+'e']['EVAL_REQUE'+'ST']:return{'requestID':_0x3dfcc3[0x5f4+-0x2ba+0x33a*-0x1],'command':_0x3dfcc3[0xe1*-0x1+0x120e*-0x2+0x1*0x24fe],'isUserEval':!(-0xb*0x324+0xe48+-0x4*-0x511),'runOptions':_0x3dfcc3[0x1272+0x18*0x7c+-0x1e10]};case _0x45a9ce['MessageTyp'+'e']['FEVAL_REQU'+'EST']:return{'requestID':_0x3dfcc3[-0x2*0x3ab+0x7*-0x10b+-0xea3*-0x1],'function':_0x3dfcc3[-0x24eb+-0x7*-0x41+0x2325],'numOutputsExpected':_0x3dfcc3[-0x15*-0xcb+0x13*0x9d+-0x1*0x1c4c],'rhsArgs':_0x3dfcc3[0x1*-0xf29+-0x58c+0x14b8],'runOptions':_0x3dfcc3[0x9d6+0x45+-0xa17]};case _0x45a9ce['MessageTyp'+'e']['SET_BREAKP'+'OINT_REQUE'+'ST']:case _0x45a9ce['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_REQ'+'UEST']:return{'requestID':_0x3dfcc3[0xe23+0x6dc*0x1+-0x14ff],'breakpoint':_0x3dfcc3[-0x24e9+-0x4d2*-0x1+-0x2*-0x100c]};case _0x45a9ce['MessageTyp'+'e']['CANCEL']:return{'requestID':_0x3dfcc3[-0xdf1+-0x8f*-0x37+0x10c8*-0x1],'interrupt':!(-0x157*0x4+0x559*-0x1+0xab5),'requestIDtoCancel':_0x3dfcc3[-0x242e+-0x681+0x2ab0]};case _0x45a9ce['MessageTyp'+'e']['PAUSE_IN_D'+'EBUGGER']:return{'requestID':_0x3dfcc3[-0x479+0x15a5+-0xe*0x13a]};}throw'Unknown\x20ch'+'annel\x20type'+'\x20to\x20get\x20da'+'ta\x20from';}['tryAttach'](_0x1adec2){return _0x194806(this,void(-0x75c+0xf41+-0x2b*0x2f),void(0x1eb*0xf+0xfa9+-0x2c6e),function*(){if(this['_attachmen'+'tState']!==_0x4cd85c['PreAttach'])throw new Error('Can\x27t\x20reus'+'e\x20impl\x20ins'+'tance');if(this['_attachmen'+'tState']=_0x4cd85c['Attaching'],this['_matlabCon'+'nection']=yield this['_lifecycle'+'Manager']['getMatlabC'+'onnection'](),null==this['_matlabCon'+'nection'])return this['_attachmen'+'tState']=_0x4cd85c['Invalid'],!(-0x866+-0x2251+-0x155c*-0x2);const _0x564810=this['_attachPro'+'mise'];let _0x5e89ed=-0x1*0x1861+-0x231d+0x3b7e;const _0x6db8d6=()=>{var _0x431871;null===(_0x431871=this['_matlabCon'+'nection'])||void(-0xe4*0xe+-0x383*0x2+-0x2*-0x9bf)===_0x431871||_0x431871['publish'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['ATTACH']),this['_getMessag'+'eData'](_0x45a9ce['MessageTyp'+'e']['ATTACH'],_0x46a75b));},_0x41cbce=setInterval(()=>{this['_logger']['error']('Timeout\x20wh'+'en\x20attachi'+'ng\x20to\x20rele'+'ase:\x20'+_0x1adec2),_0x5e89ed++,_0x5e89ed<-0x4*0x5db+0x427*0x1+-0x269*-0x8?(this['_logger']['log']('Retrying\x20a'+'ttach'),_0x6db8d6()):(this['_logger']['log']('Unable\x20to\x20'+'attach\x20aft'+'er\x20retries'),this['_attachmen'+'tState']=_0x4cd85c['Invalid'],clearInterval(_0x41cbce),_0x564810['resolve'](!(0x1296+-0x1d9*0x15+0x1438)));},0xf4f*-0x1+0x259a+0x1*-0xa93),_0x46a75b=this['_getNewReq'+'uestId']();return this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['ATTACH_RES'+'PONSE']),_0x5cc7e5=>{if(_0x5cc7e5['requestID']===_0x46a75b&&(clearInterval(_0x41cbce),this['_attachmen'+'tState']===_0x4cd85c['Attaching'])){if(this['_logger']['log']('MVM\x20attach'+'\x20success'),_0x5cc7e5['error'])return this['_logger']['error'](_0x5cc7e5['error']['msg']),void _0x564810['resolve'](!(-0xda*-0x2+-0x1*0x1e09+0x1c56));this['_matlabCon'+'nection']?(this['_channelPr'+'efix']=_0x5cc7e5['channelPre'+'fix'],this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['STILL_ALIV'+'E']),()=>{})),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['EVAL_RESPO'+'NSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['FEVAL_RESP'+'ONSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['SET_BREAKP'+'OINT_RESPO'+'NSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['CLEAR_BREA'+'KPOINT_RES'+'PONSE']),this['_handleGen'+'ericRespon'+'se']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['OUTPUT']),this['_handleOut'+'put']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['ERROR_OUTP'+'UT']),this['_handleOut'+'put']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['EVENT_FIRE'+'D']),this['_handleEve'+'ntFired']['bind'](this))),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['EVENT_SUBS'+'CRIBED']),this['_handleEve'+'ntSubscrip'+'tion']['bind'](this))),this['_listenToC'+'lcEvent'](),this['_listenToP'+'romptEvent'](),_0x564810['resolve'](!(-0x85f*0x1+-0x1c9a+0xf*0x277))):_0x564810['resolve'](!(-0x5*0xbf+-0x1b7*-0x5+-0xb1*0x7));}}),_0x6db8d6(),_0x564810;});}['detach'](){this['_attachmen'+'tState']!==_0x4cd85c['Attaching']&&this['_attachmen'+'tState']!==_0x4cd85c['PreAttach']||this['_attachPro'+'mise']['reject'](),this['_attachmen'+'tState']=_0x4cd85c['Invalid'],super['detach']();}['_listenToC'+'lcEvent'](){this['_subscribe'+'Event']('services::'+'io::CLCEve'+'nt',this['_handleClc'+'Event']['bind'](this)),this['_connectio'+'ns']['push'](this['_matlabCon'+'nection']['subscribe'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['CLC']),()=>{this['_handleClc'+'Event']();}));}['_listenToP'+'romptEvent'](){this['_subscribe'+'Event']('mlutil::pr'+'ompt::Prom'+'ptEvent',this['_handlePro'+'mptEvent']['bind'](this));}['_handlePro'+'mptEvent'](_0x59e8f5){this['emit'](_0x4aac76['IMVM']['Events']['promptChan'+'ge'],_0x4aac76['STATE_REQU'+'ESTER_TO_S'+'TATE'][_0x59e8f5['requester']],_0x59e8f5['isIdle']);}['_handleEve'+'ntSubscrip'+'tion'](_0x1427ba){if(_0x1427ba['requestID']){for(const _0x11dc78 in this['_eventSubs'+'criptions'])if(this['_eventSubs'+'criptions'][_0x11dc78]['subscripti'+'onRequestI'+'d']===_0x1427ba['requestID']){_0x1427ba['error']?delete this['_eventSubs'+'criptions'][_0x11dc78]:(this['_eventSubs'+'criptions'][_0x11dc78]['subscripti'+'onPromise']['resolve'](),this['_eventSubs'+'criptions'][_0x11dc78]['subscripti'+'onRequestI'+'d']='');break;}}}['_subscribe'+'Event'](_0x48c446,_0x4784c3){var _0x5c1788;return _0x194806(this,void(-0x11f8+0x4*0x3d+0x16*0xc6),void(-0x5*0x28f+-0x6*-0x213+0x59*0x1),function*(){if(yield this['_attachPro'+'mise'],void(-0x14a9+-0x1f6*-0x2+0x10bd)===this['_eventSubs'+'criptions'][_0x48c446]){const _0x3b675f=(-0x1037+0x1440+0x409*-0x1,_0x430a52['createReso'+'lvableProm'+'ise'])(),_0x2c2408=this['_getNewReq'+'uestId']();this['_eventSubs'+'criptions'][_0x48c446]={'subscriptionPromise':_0x3b675f,'subscriptionRequestId':_0x2c2408,'callbacks':[]},null===(_0x5c1788=this['_matlabCon'+'nection'])||void(0x126f+-0x1a2a+0x1*0x7bb)===_0x5c1788||_0x5c1788['publish'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['EVENT_SUBS'+'CRIBE']),{'requestID':_0x2c2408,'eventName':_0x48c446});}return this['_eventSubs'+'criptions'][_0x48c446]['callbacks']['push'](_0x4784c3),()=>{this['_eventSubs'+'criptions'][_0x48c446]['callbacks']=this['_eventSubs'+'criptions'][_0x48c446]['callbacks']['filter'](_0x45f39a=>_0x45f39a!==_0x4784c3);};});}['_handleEve'+'ntFired'](_0x1cdfd8){for(let _0x20f860=-0x2*-0x277+-0x17a+0x11*-0x34;_0x20f860<_0x1cdfd8['eventData']['filterTags']['length'];_0x20f860++){const _0x35e778=this['_eventSubs'+'criptions'][_0x1cdfd8['eventData']['filterTags'][_0x20f860]];void(-0x22e5*0x1+-0x1352*0x1+0x3637)===_0x35e778||_0x35e778['callbacks']['slice']()['forEach'](_0x11a842=>{_0x11a842(_0x1cdfd8['eventData']);});}}['_cancel'](_0x21670b){var _0x5afa85;const _0xb5b23e=this['_getNewReq'+'uestId']();null===(_0x5afa85=this['_matlabCon'+'nection'])||void(-0x94*0x3d+0x1*0xaca+0x187a)===_0x5afa85||_0x5afa85['publish'](this['_getChanne'+'l'](_0x45a9ce['MessageTyp'+'e']['CANCEL']),this['_getMessag'+'eData'](_0x45a9ce['MessageTyp'+'e']['CANCEL'],_0xb5b23e,_0x21670b));}['_getNewReq'+'uestId'](){return Math['random']()['toString'](0x1bfa+0x1ada+-0x36b0)['substr'](0x1*-0x2462+-0x1ea7+0x1659*0x3,0xd93+-0x3*0x7e5+0xa25);}['getMatlabR'+'elease'](){return this['_lifecycle'+'Manager']['getMatlabR'+'elease']();}}_0x391147['default']=_0x454c59;},0x138:function(_0x192b8d,_0xb15f7d,_0x14f6f5){var _0xc4b27a=this&&this['__awaiter']||function(_0x5e40b0,_0x4561b8,_0x2ebf57,_0x4d8955){return new(_0x2ebf57||(_0x2ebf57=Promise))(function(_0x4cb04d,_0x4cf454){function _0x248aa4(_0x1bcdd7){try{_0x1c0ab6(_0x4d8955['next'](_0x1bcdd7));}catch(_0x36b7ed){_0x4cf454(_0x36b7ed);}}function _0xe090d9(_0x2f5eec){try{_0x1c0ab6(_0x4d8955['throw'](_0x2f5eec));}catch(_0x51e89d){_0x4cf454(_0x51e89d);}}function _0x1c0ab6(_0x20cb1f){var _0x146a76;_0x20cb1f['done']?_0x4cb04d(_0x20cb1f['value']):(_0x146a76=_0x20cb1f['value'],_0x146a76 instanceof _0x2ebf57?_0x146a76:new _0x2ebf57(function(_0x9deb6d){_0x9deb6d(_0x146a76);}))['then'](_0x248aa4,_0xe090d9);}_0x1c0ab6((_0x4d8955=_0x4d8955['apply'](_0x5e40b0,_0x4561b8||[]))['next']());});},_0x2dd380=this&&this['__importDe'+'fault']||function(_0x2ad17a){return _0x2ad17a&&_0x2ad17a['__esModule']?_0x2ad17a:{'default':_0x2ad17a};};Object['defineProp'+'erty'](_0xb15f7d,'__esModule',{'value':!(0xb9e+0xc5*0x29+-0x2b2b*0x1)});const _0x146fc7=_0x14f6f5(-0x176e+-0x2*-0x543+-0x1*-0xe35),_0x11bf46=_0x2dd380(_0x14f6f5(-0x22f7+0x3bb*-0x3+0x2e99));class _0x1602ff extends _0x11bf46['default']{constructor(_0x5eed54,_0x593910){super(_0x5eed54,_0x593910);}['_getChanne'+'l'](_0x49f199,..._0x6b3ba0){return _0x49f199===_0x146fc7['MessageTyp'+'e']['OUTPUT']?this['_channelPr'+'efix']+('/text/outp'+'ut'):_0x49f199===_0x146fc7['MessageTyp'+'e']['ERROR_OUTP'+'UT']?this['_channelPr'+'efix']+('/text/erro'+'r'):_0x49f199===_0x146fc7['MessageTyp'+'e']['INTERRUPT']?this['_channelPr'+'efix']+('/interrupt'+'/request'):super['_getChanne'+'l'](_0x49f199,..._0x6b3ba0);}['_getAPIVer'+'sion'](){return'r22b0';}['_listenToP'+'romptEvent'](){this['_subscribe'+'Event']('mlutil::pr'+'ompt::Prom'+'ptEvent',this['_handlePro'+'mptEvent']['bind'](this));}['_getMessag'+'eData'](_0x70b78c,..._0x59b263){return _0x70b78c===_0x146fc7['MessageTyp'+'e']['ATTACH']?{'requestID':_0x59b263[0x2178+0x1*0x1649+0x7*-0x7f7],'mvmID':'user-mvm','supportedApiVersions':[this['_getAPIVer'+'sion']()]}:_0x70b78c===_0x146fc7['MessageTyp'+'e']['INTERRUPT']?{'requestID':this['_getNewReq'+'uestId']()}:_0x70b78c===_0x146fc7['MessageTyp'+'e']['FEVAL_REQU'+'EST']?{'requestID':_0x59b263[-0x380*-0x8+0xa43+-0x2643],'function':_0x59b263[-0x79*-0x26+-0x1ecd+0xcd8],'numOutputsExpected':_0x59b263[-0x69d+0x1801+-0x32*0x59],'rhsArgs':_0x59b263[0x1*0x54a+-0x3*-0xd9+-0x7d2]['map'](JSON['stringify']),'runOptions':_0x59b263[0x25a6+0x45*-0x36+-0x1714]}:super['_getMessag'+'eData'](_0x70b78c,..._0x59b263);}['tryAttach'](_0x1092c0){const _0x2fe6d1=Object['create'](null,{'tryAttach':{'get':()=>super['tryAttach']}});return _0xc4b27a(this,void(-0x2521+0x179b*0x1+0xd86),void(-0x1*-0x2271+0x6a3+-0x2914),function*(){return this['_release']=_0x1092c0,_0x2fe6d1['tryAttach']['call'](this,_0x1092c0);});}['interrupt'](){var _0x26c00f;null===(_0x26c00f=this['_matlabCon'+'nection'])||void(0xa54+-0x1*0x55d+-0x4f7)===_0x26c00f||_0x26c00f['publish'](this['_getChanne'+'l'](_0x146fc7['MessageTyp'+'e']['INTERRUPT']),this['_getMessag'+'eData'](_0x146fc7['MessageTyp'+'e']['INTERRUPT']));}}_0xb15f7d['default']=_0x1602ff;},0x14d:(_0x380bfe,_0x2ee7a2,_0x584ca7)=>{Object['defineProp'+'erty'](_0x2ee7a2,'__esModule',{'value':!(-0x10f8+-0x6*0x5c+0x1320)}),_0x2ee7a2['RequestTyp'+'e']=_0x2ee7a2['MessageTyp'+'e']=void(0xcf5+0x7db*-0x2+0x2c1);const _0x5011c6=_0x584ca7(0x1838+-0x1*0x14b9+-0x8*0x58),_0x26b507=_0x584ca7(-0x9e0*0x3+-0x1*0x49+-0x1de9*-0x1),_0xabcc4e=_0x584ca7(0x32d+-0x1d08+0x1*0x1b42),_0x294b8f=_0x584ca7(-0x473*0x5+0x8d8*0x3+-0x297*0x1);var _0xb52bf6,_0x218de0;!function(_0x13d201){_0x13d201[_0x13d201['ATTACH']=-0x11cb+-0x2d1+0x1*0x149c]='ATTACH',_0x13d201[_0x13d201['ATTACH_RES'+'PONSE']=-0x1522+-0x25ab+0x3ace]='ATTACH_RES'+'PONSE',_0x13d201[_0x13d201['EVAL_REQUE'+'ST']=-0x1*-0xef+-0x81b+-0x397*-0x2]='EVAL_REQUE'+'ST',_0x13d201[_0x13d201['FEVAL_REQU'+'EST']=-0x731*0x4+0xa*0x22b+-0x719*-0x1]='FEVAL_REQU'+'EST',_0x13d201[_0x13d201['SET_BREAKP'+'OINT_REQUE'+'ST']=0x17*-0x166+0x13*0x15b+0x66d]='SET_BREAKP'+'OINT_REQUE'+'ST',_0x13d201[_0x13d201['CLEAR_BREA'+'KPOINT_REQ'+'UEST']=0x5*-0x1d5+0x169*0x17+-0x1741]='CLEAR_BREA'+'KPOINT_REQ'+'UEST',_0x13d201[_0x13d201['CANCEL']=-0xb*0x2a+0x11*0x85+-0x701]='CANCEL',_0x13d201[_0x13d201['INTERRUPT']=0x7*0x562+0x317*-0x8+-0xcef]='INTERRUPT',_0x13d201[_0x13d201['PAUSE_IN_D'+'EBUGGER']=0x228*-0x9+0x1e91+-0xb21]='PAUSE_IN_D'+'EBUGGER',_0x13d201[_0x13d201['EVAL_RESPO'+'NSE']=-0x1107+0x1*-0x155a+0x266a]='EVAL_RESPO'+'NSE',_0x13d201[_0x13d201['FEVAL_RESP'+'ONSE']=0x4c+0x16b0+-0x16f2]='FEVAL_RESP'+'ONSE',_0x13d201[_0x13d201['EVAL_FEVAL'+'_RESPONSE']=-0x1*-0xb5+0xb*-0x2e3+0x1f17]='EVAL_FEVAL'+'_RESPONSE',_0x13d201[_0x13d201['SET_BREAKP'+'OINT_RESPO'+'NSE']=-0x7*0x275+0x1272+-0x133]='SET_BREAKP'+'OINT_RESPO'+'NSE',_0x13d201[_0x13d201['CLEAR_BREA'+'KPOINT_RES'+'PONSE']=0x5d9*0x1+0x8df*0x3+-0x2069]='CLEAR_BREA'+'KPOINT_RES'+'PONSE',_0x13d201[_0x13d201['OUTPUT']=0x265c+0x1b3f+0x61*-0xad]='OUTPUT',_0x13d201[_0x13d201['ERROR_OUTP'+'UT']=-0xeb8+0x1*-0xdfb+0x1cc2]='ERROR_OUTP'+'UT',_0x13d201[_0x13d201['STILL_ALIV'+'E']=-0x3*-0x8e4+0x164b+-0x30e7]='STILL_ALIV'+'E',_0x13d201[_0x13d201['EVENT_SUBS'+'CRIBE']=-0x1a9*-0xe+0x1454*0x1+-0x7*0x637]='EVENT_SUBS'+'CRIBE',_0x13d201[_0x13d201['EVENT_SUBS'+'CRIBED']=0x8ec*-0x1+-0x1636+-0x4*-0x7cd]='EVENT_SUBS'+'CRIBED',_0x13d201[_0x13d201['EVENT_FIRE'+'D']=0x91*0x1+0x6f1+-0x76f]='EVENT_FIRE'+'D',_0x13d201[_0x13d201['CLC']=0x2*-0x715+0x73f+0x6ff*0x1]='CLC';}(_0xb52bf6=_0x2ee7a2['MessageTyp'+'e']||(_0x2ee7a2['MessageTyp'+'e']={})),function(_0x1ef8c1){_0x1ef8c1[_0x1ef8c1['EVAL']=0x1*0x10fd+-0x3*0x277+-0x998]='EVAL',_0x1ef8c1[_0x1ef8c1['FEVAL']=-0x3*-0xca6+0x4*0x796+0x1*-0x4449]='FEVAL',_0x1ef8c1[_0x1ef8c1['BREAKPOINT']=-0x1878+0x606+0x1274]='BREAKPOINT';}(_0x218de0=_0x2ee7a2['RequestTyp'+'e']||(_0x2ee7a2['RequestTyp'+'e']={}));class _0x305e76{constructor(_0x2206ea,_0x146384,_0x55903c,_0x520097){this['fileName']=_0x2206ea,this['location']={'lineNumber':_0x146384},void(0xb62+-0xeff+-0x39d*-0x1)!==_0x55903c&&(this['expression']=_0x55903c),void(0x1e48+0x1f9c+-0x3de4)!==_0x520097&&(this['location']['anonymousI'+'ndex']=_0x520097);}}class _0x23db5e extends _0x294b8f['EventEmitt'+'er']{constructor(_0x1163d4){super(),this['_matlabCon'+'nection']=null,this['_requestMa'+'p']={},this['_connectio'+'ns']=[],this['_logger']=_0x1163d4;}['_getChanne'+'l'](_0x1b29f6,..._0x129947){throw'Unimplemen'+'ted';}['_getMessag'+'eData'](_0x3ee6a8,..._0x47943d){throw'Unimplemen'+'ted';}['_handleClc'+'Event'](){this['emit'](_0xabcc4e['IMVM']['Events']['clc']);}['_cancel'](_0x8ace42){throw'Unimplemen'+'ted';}['_getNewReq'+'uestId'](){throw'Unimplemen'+'ted';}['detach'](){this['_requestMa'+'p']=[],this['_matlabCon'+'nection']=null,this['_connectio'+'ns']=[];}['eval'](_0x586a77,_0x13002b=!(-0x2419+-0x2573+0x4*0x1263),_0x3e15f7){const _0x540d33=(0x88b*-0x2+-0x126b+0x95*0x3d,_0x26b507['createReso'+'lvableProm'+'ise'])();if(!this['_matlabCon'+'nection'])return _0x540d33['reject'](),_0x540d33;const _0x3ce033=this['_getNewReq'+'uestId'](),_0x4ec9a5={'useNullOutSink':!(-0x1a4e+0x7*0x33d+-0x1d2*-0x2),'useNullErrSink':!(0xeb+-0x15a7+-0x14bd*-0x1),'suppressDebugControlOutput':!(-0x3*-0x10f+-0x2568+0x223c),'eventConnections':{}};return _0x13002b&&(_0x4ec9a5['groupNames']=['UserGroup']),_0x3e15f7&&(_0x4ec9a5['capabiliti'+'esList']=_0x5011c6['FullCapabi'+'litiesList']['filter'](_0x23eec7=>!_0x3e15f7['includes'](_0x23eec7))),this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0xb52bf6['EVAL_REQUE'+'ST']),this['_getMessag'+'eData'](_0xb52bf6['EVAL_REQUE'+'ST'],_0x3ce033,_0x586a77,_0x4ec9a5)),this['_requestMa'+'p'][_0x3ce033]={'promise':_0x540d33,'requestType':_0x218de0['EVAL'],'cancel':this['_cancel']['bind'](this,_0x3ce033)},_0x540d33;}['feval'](_0x2909fb,_0x1da2a3,_0x2d356d,_0x8e129c=!(0x57*0x5d+-0x55a*0x2+-0xa*0x217),_0x5f2fdf){const _0x36c440=(-0x2*-0x575+0x1008+-0x1af2,_0x26b507['createReso'+'lvableProm'+'ise'])();if(!this['_matlabCon'+'nection'])return this['_logger']['error']('Eval\x20with\x20'+'no\x20connect'+'ion!'),_0x36c440['reject'](),_0x36c440;const _0xf066c=this['_getNewReq'+'uestId']();let _0x59d3bd={};return _0x59d3bd['useNullOut'+'Sink']=!_0x8e129c,_0x59d3bd['useNullErr'+'Sink']=!_0x8e129c,_0x8e129c&&(_0x59d3bd['groupNames']=['UserGroup']),_0x59d3bd['suppressDe'+'bugControl'+'Output']=!(0x5d5+-0x2433*-0x1+-0x2a07),_0x5f2fdf&&(_0x59d3bd['capabiliti'+'esList']=_0x5011c6['FullCapabi'+'litiesList']['filter'](_0x46939a=>!_0x5f2fdf['includes'](_0x46939a))),this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0xb52bf6['FEVAL_REQU'+'EST']),this['_getMessag'+'eData'](_0xb52bf6['FEVAL_REQU'+'EST'],_0xf066c,_0x2909fb,_0x1da2a3,_0x2d356d,_0x59d3bd)),this['_requestMa'+'p'][_0xf066c]={'promise':_0x36c440,'requestType':_0x218de0['FEVAL'],'cancel':this['_cancel']['bind'](this,_0xf066c)},_0x36c440;}['_handleGen'+'ericRespon'+'se'](_0xa17a88){const _0x38e449=this['_requestMa'+'p'][_0xa17a88['requestID']];if(!_0x38e449)return;delete this['_requestMa'+'p'][_0xa17a88['requestID']];const _0x2229b0=_0x38e449['promise'];_0xa17a88['error'],_0x2229b0['resolve'](_0xa17a88);}['interrupt'](){if(this['_matlabCon'+'nection'])for(const _0x3b9399 in this['_requestMa'+'p']){const _0x5af4a0=this['_requestMa'+'p'][_0x3b9399]['requestTyp'+'e'];_0x5af4a0!==_0x218de0['EVAL']&&_0x5af4a0!=_0x218de0['FEVAL']||this['_requestMa'+'p'][_0x3b9399]['cancel']();}}['_handleOut'+'put'](_0x1f8933){this['emit'](_0xabcc4e['IMVM']['Events']['output'],_0x1f8933);}['setBreakpo'+'int'](_0x191d6e,_0x336a05,_0x3ccbfd,_0x1bb226){const _0x5872e1=(-0x79e+-0x10f7+0xd9*0x1d,_0x26b507['createReso'+'lvableProm'+'ise'])();if(!this['_matlabCon'+'nection'])return _0x5872e1['reject'](),_0x5872e1;const _0x26ea5f=this['_getNewReq'+'uestId'](),_0xb1126=new _0x305e76(_0x191d6e,_0x336a05,_0x3ccbfd,_0x1bb226);return this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0xb52bf6['SET_BREAKP'+'OINT_REQUE'+'ST']),this['_getMessag'+'eData'](_0xb52bf6['SET_BREAKP'+'OINT_REQUE'+'ST'],_0x26ea5f,_0xb1126)),this['_requestMa'+'p'][_0x26ea5f]={'promise':_0x5872e1,'requestType':_0x218de0['BREAKPOINT'],'cancel':()=>{}},_0x5872e1;}['clearBreak'+'point'](_0x4aa6dd,_0x474b18,_0x12506f,_0xbd50a7){const _0x555998=(0x10e4+0x1ebe+-0x2fa2,_0x26b507['createReso'+'lvableProm'+'ise'])();if(!this['_matlabCon'+'nection'])return _0x555998['reject'](),_0x555998;const _0x27cb75=this['_getNewReq'+'uestId'](),_0x2e5023=new _0x305e76(_0x4aa6dd,_0x474b18,_0x12506f,_0xbd50a7);return this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0xb52bf6['CLEAR_BREA'+'KPOINT_REQ'+'UEST']),this['_getMessag'+'eData'](_0xb52bf6['CLEAR_BREA'+'KPOINT_REQ'+'UEST'],_0x27cb75,_0x2e5023)),this['_requestMa'+'p'][_0x27cb75]={'promise':_0x555998,'requestType':_0x218de0['BREAKPOINT'],'cancel':()=>{}},_0x555998;}['unpause'](){if(!this['_matlabCon'+'nection'])return void this['_logger']['error']('Unpause\x20wi'+'th\x20no\x20conn'+'ection!');const _0x2f6c7d=this['_getNewReq'+'uestId']();this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0xb52bf6['FEVAL_REQU'+'EST']),this['_getMessag'+'eData'](_0xb52bf6['FEVAL_REQU'+'EST'],_0x2f6c7d,'matlab.int'+'ernal.sing'+'lekeypress'+'.pause.res'+'ume',-0x236d+-0x1f0e+0x427b,[],{'useNullOutSink':!(-0xab*-0x1b+-0x6a4+-0xb65*0x1),'useNullErrSink':!(-0x256e*0x1+0x1*-0x122b+0x3799),'queueName':'SingleKeyP'+'ress'}));const _0x4067af=(-0x1*0x445+-0x17*-0xd3+-0x178*0xa,_0x26b507['createReso'+'lvableProm'+'ise'])();this['_requestMa'+'p'][_0x2f6c7d]={'promise':_0x4067af,'requestType':_0x218de0['FEVAL'],'cancel':this['_cancel']['bind'](this,_0x2f6c7d)};}['pauseInDeb'+'ugger'](){if(!this['_matlabCon'+'nection'])return void this['_logger']['error']('Pause\x20in\x20d'+'ebugger\x20at'+'tempt\x20with'+'\x20no\x20connec'+'tion!');const _0x20d561=this['_getNewReq'+'uestId']();this['_matlabCon'+'nection']['publish'](this['_getChanne'+'l'](_0xb52bf6['PAUSE_IN_D'+'EBUGGER']),this['_getMessag'+'eData'](_0xb52bf6['PAUSE_IN_D'+'EBUGGER'],_0x20d561));}}_0x2ee7a2['default']=_0x23db5e;},0x373:function(_0x10cb6f,_0x52a50d,_0x4f2fdb){var _0x48d8aa=this&&this['__importDe'+'fault']||function(_0x181736){return _0x181736&&_0x181736['__esModule']?_0x181736:{'default':_0x181736};};Object['defineProp'+'erty'](_0x52a50d,'__esModule',{'value':!(-0x824+0x21c7+-0x19a3)});const _0x52cd97=_0x48d8aa(_0x4f2fdb(0x1438+-0x45*0x83+0x104f));class _0x48c45c extends _0x52cd97['default']{['_getAPIVer'+'sion'](){return'22b'===this['_release']?'r22b0':'23a'===this['_release']?'r23a0':'23b'===this['_release']?'r23b0':(this['_release'],'r24a0');}['_listenToP'+'romptEvent'](){this['_subscribe'+'Event']('mlutil::pr'+'ompt::Prom'+'ptEvent||U'+'serGroup',this['_handlePro'+'mptEvent']['bind'](this));}}_0x52a50d['default']=_0x48c45c;},0x167:(_0x12e59b,_0x4afab2)=>{var _0x2d574e;Object['defineProp'+'erty'](_0x4afab2,'__esModule',{'value':!(0x7b5*0x5+-0x8a1+-0x1de8)}),_0x4afab2['IMVM']=_0x4afab2['STATE_REQU'+'ESTER_TO_S'+'TATE']=_0x4afab2['STATE_REQU'+'ESTER']=_0x4afab2['PromptStat'+'e']=void(-0xccf*-0x1+-0x2*0x3a+0xc5b*-0x1),function(_0x3f7b92){_0x3f7b92['INITIALIZI'+'NG']='INITIALIZI'+'NG',_0x3f7b92['READY']='READY',_0x3f7b92['BUSY']='BUSY',_0x3f7b92['DEBUG']='DEBUG',_0x3f7b92['INPUT']='INPUT',_0x3f7b92['PAUSE']='PAUSE',_0x3f7b92['MORE']='MORE',_0x3f7b92['COMPLETING'+'_BLOCK']='COMPLETING'+'_BLOCK';}(_0x2d574e=_0x4afab2['PromptStat'+'e']||(_0x4afab2['PromptStat'+'e']={})),_0x4afab2['STATE_REQU'+'ESTER']={'INITIALIZING':'','READY':'BASE_PROMP'+'T','BUSY':'NO_PROMPT','DEBUG':'DEBUG_PROM'+'PT','INPUT':'INPUT_PROM'+'PT','KEYBOARD':'KEYBOARD_P'+'ROMPT','PAUSE':'PAUSE_PROM'+'PT','MORE':'MORE_PROMP'+'T','COMPLETING_BLOCK':'INCOMPLETE'+'_BLOCK_PRO'+'MPT','BANG':'BANG_PROMP'+'T'},_0x4afab2['STATE_REQU'+'ESTER_TO_S'+'TATE']={[_0x4afab2['STATE_REQU'+'ESTER']['INITIALIZI'+'NG']]:_0x2d574e['INITIALIZI'+'NG'],[_0x4afab2['STATE_REQU'+'ESTER']['READY']]:_0x2d574e['READY'],[_0x4afab2['STATE_REQU'+'ESTER']['BUSY']]:_0x2d574e['BUSY'],[_0x4afab2['STATE_REQU'+'ESTER']['BANG']]:_0x2d574e['BUSY'],[_0x4afab2['STATE_REQU'+'ESTER']['DEBUG']]:_0x2d574e['DEBUG'],[_0x4afab2['STATE_REQU'+'ESTER']['INPUT']]:_0x2d574e['INPUT'],[_0x4afab2['STATE_REQU'+'ESTER']['KEYBOARD']]:_0x2d574e['DEBUG'],[_0x4afab2['STATE_REQU'+'ESTER']['PAUSE']]:_0x2d574e['PAUSE'],[_0x4afab2['STATE_REQU'+'ESTER']['MORE']]:_0x2d574e['MORE'],[_0x4afab2['STATE_REQU'+'ESTER']['COMPLETING'+'_BLOCK']]:_0x2d574e['COMPLETING'+'_BLOCK']},function(_0x19c5a8){let _0x5db0e2;!function(_0x3669a6){_0x3669a6['clc']='clc',_0x3669a6['output']='output',_0x3669a6['promptChan'+'ge']='promptChan'+'ge',_0x3669a6['stateChang'+'e']='stateChang'+'e';}(_0x5db0e2=_0x19c5a8['Events']||(_0x19c5a8['Events']={}));}(_0x4afab2['IMVM']||(_0x4afab2['IMVM']={}));},0xbf:(_0x44a98e,_0x34b000)=>{var _0x54461a;Object['defineProp'+'erty'](_0x34b000,'__esModule',{'value':!(0x129*0x1+0x989*0x1+-0xab2)}),_0x34b000['FullCapabi'+'litiesList']=_0x34b000['Capability']=void(-0x1f64+-0x6d3*0x3+0x47*0xbb),function(_0x5bcb5e){_0x5bcb5e['Interactiv'+'eCommandLi'+'ne']='Interactiv'+'eCommandLi'+'ne',_0x5bcb5e['Swing']='Swing',_0x5bcb5e['ComplexSwi'+'ng']='ComplexSwi'+'ng',_0x5bcb5e['LocalClien'+'t']='LocalClien'+'t',_0x5bcb5e['WebWindow']='WebWindow',_0x5bcb5e['ModalDialo'+'gs']='ModalDialo'+'gs',_0x5bcb5e['Debugging']='Debugging';}(_0x54461a=_0x34b000['Capability']||(_0x34b000['Capability']={})),_0x34b000['FullCapabi'+'litiesList']=[_0x54461a['Interactiv'+'eCommandLi'+'ne'],_0x54461a['Swing'],_0x54461a['ComplexSwi'+'ng'],_0x54461a['LocalClien'+'t'],_0x54461a['WebWindow'],_0x54461a['ModalDialo'+'gs'],_0x54461a['Debugging']];},0x0:(_0xc6b6cf,_0x2d32bd)=>{Object['defineProp'+'erty'](_0x2d32bd,'__esModule',{'value':!(0xa08*-0x1+-0x22bb+-0x2cc3*-0x1)}),_0x2d32bd['createReso'+'lvableProm'+'ise']=void(0x1e2*0x11+-0x20e4+0xe2),_0x2d32bd['createReso'+'lvableProm'+'ise']=function(){let _0x1a4a15,_0xb12da9;const _0x487af0=new Promise((_0x2d7823,_0x112769)=>{_0x1a4a15=_0x2d7823,_0xb12da9=_0x112769;});return _0x487af0['resolve']=_0x1a4a15,_0x487af0['reject']=_0xb12da9,_0x487af0;};},0x1b2:_0x4e83fc=>{_0x4e83fc['exports']=require('events');}},_0x2a310e={},_0xa968b0=function _0x59f77a(_0x148840){var _0x526efc=_0x2a310e[_0x148840];if(void(0x1*-0x1bd+0x2*0x5bc+0x1*-0x9bb)!==_0x526efc)return _0x526efc['exports'];var _0x24d7f9=_0x2a310e[_0x148840]={'exports':{}};return _0x1055e8[_0x148840]['call'](_0x24d7f9['exports'],_0x24d7f9,_0x24d7f9['exports'],_0x59f77a),_0x24d7f9['exports'];}(-0x50d+-0x1e5d+0x2400);module['exports']=_0xa968b0;})()); \ No newline at end of file diff --git a/src/mvm/impl/MVMInterface.d.ts b/src/mvm/impl/MVMInterface.d.ts index 88c2de3..da589b1 100644 --- a/src/mvm/impl/MVMInterface.d.ts +++ b/src/mvm/impl/MVMInterface.d.ts @@ -108,6 +108,7 @@ export interface IMVM extends EventEmitter { setBreakpoint(fileName: string, lineNumber: number, condition?: string, anonymousIndex?: number): Promise; clearBreakpoint(fileName: string, lineNumber: number, condition?: string, anonymousIndex?: number): Promise; unpause(): void; + pauseInDebugger(): void; interrupt: () => void; } export declare namespace IMVM { diff --git a/src/providers/highlighting/HighlightSymbolProvider.ts b/src/providers/highlighting/HighlightSymbolProvider.ts index f3ff2d5..ec68f00 100644 --- a/src/providers/highlighting/HighlightSymbolProvider.ts +++ b/src/providers/highlighting/HighlightSymbolProvider.ts @@ -1,14 +1,14 @@ // Copyright 2025 The MathWorks, Inc. -import { DocumentHighlight, DocumentHighlightKind, DocumentHighlightParams, Location, TextDocuments } from 'vscode-languageserver' +import { DocumentHighlight, DocumentHighlightKind, DocumentHighlightParams, Range, TextDocuments } from 'vscode-languageserver' import MatlabLifecycleManager from '../../lifecycle/MatlabLifecycleManager' -import SymbolSearchService, { reportTelemetry, RequestType } from '../../indexing/SymbolSearchService' -import { getExpressionAtPosition } from '../../utils/ExpressionUtils' +import { reportTelemetry, RequestType } from '../../indexing/SymbolSearchService' import { TextDocument } from 'vscode-languageserver-textdocument' import DocumentIndexer from '../../indexing/DocumentIndexer' -import PathResolver from '../navigation/PathResolver' import Indexer from '../../indexing/Indexer' -import { rangeContains } from '../../utils/RangeUtils' +import { areRangesEqual } from '../../utils/RangeUtils' +import * as SymbolSearchService from '../../indexing/SymbolSearchService' +import FileInfoIndex from '../../indexing/FileInfoIndex' /** * Handles requests for document highlights, given a position in a file. @@ -20,8 +20,8 @@ class HighlightSymbolProvider { constructor ( protected readonly matlabLifecycleManager: MatlabLifecycleManager, protected readonly documentIndexer: DocumentIndexer, - protected readonly pathResolver: PathResolver, - protected readonly indexer: Indexer + protected readonly indexer: Indexer, + protected readonly fileInfoIndex: FileInfoIndex ) {} /** @@ -58,49 +58,25 @@ class HighlightSymbolProvider { return [] } - // Determine the expression the user's cursor is on - const expression = getExpressionAtPosition(textDocument, params.position) - if (expression == null) { - // There may still be an expression at the cursor position in this case, - // but not one for which finding references is supported (e.g., it may - // be a numeric literal) - return [] - } - await this.documentIndexer.ensureDocumentIndexIsUpdated(textDocument) - // Find all references to the selected expression in the current file; - // these will be highlighted - const references: Location[] = SymbolSearchService - .findReferences( - currentDocumentUri, params.position, expression, documentManager, RequestType.DocumentHighlight - ) - .filter(ref => ref.uri === currentDocumentUri) - - /* This helps to determine which references are "write references" - e.g., - * variable assignments, function definitions - and which are "read - * references" - e.g., variable accesses, function calls. - * - * If the selected identifier refers to a variable, we find the locations - * where it is used in an assignment statement (in the current file). If - * it refers to a function, we find the location of the function definition - * (if it is in the current file). + /* All references to the selected identifier component that are in the current + * file will be highlighted. If a reference coincides with a definition - e.g., + * a variable assignment or function declaration - we highlight it as a write + * reference; other references are highlighted as read references. */ - const definitions: Location[] = await SymbolSearchService - .findDefinitions( - currentDocumentUri, params.position, expression, this.pathResolver, this.indexer, RequestType.DocumentHighlight - ) - return references.map(ref => { - /* Since for function definitions, the location of the entire definition - * header is reported (not just the name of the function in the definition), - * we determine that a reference to a variable/function/etc. is a write - * reference if it is contained within the location of a definition of that - * variable/function/etc. - */ - const isWriteReference = definitions.some(def => rangeContains(def.range, ref.range)) + const { references, definitions } = SymbolSearchService.findReferencesAndDefinitions( + currentDocumentUri, params.position, this.fileInfoIndex, documentManager, RequestType.DocumentHighlight + ) + + const currentFileRefRanges: Range[] = references.filter(ref => ref.uri === currentDocumentUri).map(ref => ref.range) + const currentFileDefRanges: Range[] = definitions.filter(def => def.uri === currentDocumentUri).map(def => def.range) + + return currentFileRefRanges.map(refRange => { + const isWriteReference = currentFileDefRanges.some(defRange => areRangesEqual(defRange, refRange)) return DocumentHighlight.create( - ref.range, + refRange, isWriteReference ? DocumentHighlightKind.Write : DocumentHighlightKind.Read ) }) diff --git a/src/providers/navigation/NavigationSupportProvider.ts b/src/providers/navigation/NavigationSupportProvider.ts index 17458b6..4ed3179 100644 --- a/src/providers/navigation/NavigationSupportProvider.ts +++ b/src/providers/navigation/NavigationSupportProvider.ts @@ -2,22 +2,26 @@ import { DefinitionParams, DocumentSymbolParams, Location, Range, ReferenceParams, SymbolInformation, SymbolKind, TextDocuments } from 'vscode-languageserver' import { TextDocument } from 'vscode-languageserver-textdocument' -import FileInfoIndex, { MatlabCodeData } from '../../indexing/FileInfoIndex' +import FileInfoIndex, { + FunctionContainer, MatlabClassdefInfo, MatlabClassInfo, MatlabCodeInfo, MatlabFunctionScopeInfo, + MatlabGlobalScopeInfo +} from '../../indexing/FileInfoIndex' import { MatlabConnection } from '../../lifecycle/MatlabCommunicationManager' import LifecycleNotificationHelper from '../../lifecycle/LifecycleNotificationHelper' import { ActionErrorConditions } from '../../logging/TelemetryUtils' -import { getExpressionAtPosition } from '../../utils/ExpressionUtils' -import SymbolSearchService, { RequestType, reportTelemetry } from '../../indexing/SymbolSearchService' +import { RequestType, reportTelemetry } from '../../indexing/SymbolSearchService' import MatlabLifecycleManager from '../../lifecycle/MatlabLifecycleManager' import Indexer from '../../indexing/Indexer' import DocumentIndexer from '../../indexing/DocumentIndexer' import PathResolver from './PathResolver' import NotificationService, { Notification } from '../../notifications/NotificationService' +import * as SymbolSearchService from '../../indexing/SymbolSearchService' import { DocumentUri } from 'vscode-languageserver-types' class NavigationSupportProvider { constructor ( protected matlabLifecycleManager: MatlabLifecycleManager, + protected fileInfoIndex: FileInfoIndex, protected indexer: Indexer, protected documentIndexer: DocumentIndexer, protected pathResolver: PathResolver @@ -47,32 +51,17 @@ class NavigationSupportProvider { return [] } - // Find ID for which to find the definition or references - const expression = getExpressionAtPosition(textDocument, params.position) - - if (expression == null) { - // No target found - reportTelemetry(requestType, 'No navigation target') - return [] - } + await this.documentIndexer.ensureDocumentIndexIsUpdated(textDocument) if (requestType === RequestType.Definition) { return await SymbolSearchService.findDefinitions( - uri, params.position, expression, this.pathResolver, this.indexer, requestType + uri, params.position, this.fileInfoIndex, documentManager, this.pathResolver, this.indexer, requestType ) } else { - return SymbolSearchService.findReferences(uri, params.position, expression, documentManager, requestType) + return SymbolSearchService.findReferences(uri, params.position, this.fileInfoIndex, documentManager, requestType) } } - /** - * Caches document symbols for URIs to deal with the case when indexing - * temporarily fails while the user is in the middle of an edit. We might - * consider moving logic like this into the indexer logic later as clearing - * out index data in the middle of an edit will have other ill effects. - */ - private readonly _documentSymbolCache = new Map() - /** * * @param params Parameters for the document symbol request @@ -109,62 +98,81 @@ class NavigationSupportProvider { reportTelemetry(requestType, 'No document') return [] } - // Ensure document index is up to date + await this.documentIndexer.ensureDocumentIndexIsUpdated(textDocument) - const codeData = FileInfoIndex.codeDataCache.get(uri) - if (codeData == null) { + + const codeInfo = this.fileInfoIndex.codeInfoCache.get(uri) + if (codeInfo == null) { reportTelemetry(requestType, 'No code data') return [] } - // Result symbols in documented + + // Result symbols in document const result: SymbolInformation[] = [] - // Avoid duplicates coming from different data sources - const visitedRanges: Set = new Set() + /** * Push symbol info to result set */ function pushSymbol (name: string, kind: SymbolKind, symbolRange: Range): void { - if (!visitedRanges.has(symbolRange)) { - result.push(SymbolInformation.create(name, kind, symbolRange, uri)) - visitedRanges.add(symbolRange) - } + result.push(SymbolInformation.create(name, kind, symbolRange, uri)) } - if (codeData.isMainClassDefDocument && codeData.classInfo != null) { - const classInfo = codeData.classInfo - if (codeData.classInfo.range != null) { - pushSymbol(classInfo.name, SymbolKind.Class, codeData.classInfo.range) - } - classInfo.enumerations.forEach((info, name) => pushSymbol(name, SymbolKind.EnumMember, info.range)) - classInfo.properties.forEach((info, name) => pushSymbol(name, SymbolKind.Property, info.range)) - classInfo.methodsBlocks.forEach((info) => pushSymbol(info.name, SymbolKind.Method, info.range)) - classInfo.enumerationsBlocks.forEach((info) => pushSymbol(info.name, SymbolKind.EnumMember, info.range)) - classInfo.propertiesBlocks.forEach((info) => pushSymbol(info.name, SymbolKind.Property, info.range)) + + const classdef: MatlabClassdefInfo | undefined = codeInfo.globalScopeInfo.classScope?.classdefInfo + if (classdef) { + pushSymbol(classdef.declarationNameId.name, SymbolKind.Class, classdef.range) + + const classInfo = classdef.classInfo + + classInfo.enumerations.forEach(enumInfo => pushSymbol(enumInfo.name, SymbolKind.EnumMember, enumInfo.range)) + classInfo.properties.forEach(propInfo => pushSymbol(propInfo.name, SymbolKind.Property, propInfo.range)) + classdef.methodsBlocks.forEach(blockInfo => pushSymbol(blockInfo.name, SymbolKind.Method, blockInfo.range)) + classdef.enumerationsBlocks.forEach(blockInfo => pushSymbol(blockInfo.name, SymbolKind.EnumMember, blockInfo.range)) + classdef.propertiesBlocks.forEach(blockInfo => pushSymbol(blockInfo.name, SymbolKind.Property, blockInfo.range)) } - codeData.functions.forEach((info, name) => pushSymbol(name, info.isClassMethod ? SymbolKind.Method : SymbolKind.Function, info.range)) - codeData.sections.forEach((sectionData) => { - if (sectionData.isExplicit) { - pushSymbol(sectionData.title, SymbolKind.Module, sectionData.range) + + this._getAllFunctionScopesInFile(codeInfo).forEach(functionScopeInfo => pushSymbol( + functionScopeInfo.declarationNameId.name, + functionScopeInfo.functionInfo.isMethod ? SymbolKind.Method : SymbolKind.Function, + functionScopeInfo.range + )) + + codeInfo.sections.forEach(sectionInfo => { + if (sectionInfo.isExplicit) { + pushSymbol(sectionInfo.name, SymbolKind.Module, sectionInfo.range) } }) - /** - * Handle a case when the indexer fails due to the user being in the middle of an edit. - * Here the documentSymbol cache has some symbols but the codeData cache has none. So we - * assume that the user will soon fix their code and just fall back to what we knew for now. - */ - if (result.length === 0 && codeData.errorMessage !== undefined) { - const cached = this._documentSymbolCache.get(uri) ?? result - if (cached.length > 0) { - return cached + this._sendSectionRangesForHighlighting(codeInfo, uri) + + return result + } + + private _getAllFunctionScopesInFile (codeInfo: MatlabCodeInfo): MatlabFunctionScopeInfo[] { + const functionScopes: MatlabFunctionScopeInfo[] = [] + this._getAllFunctionScopesInFileAcc(codeInfo.globalScopeInfo, functionScopes) + return functionScopes + } + + private _getAllFunctionScopesInFileAcc (scope: FunctionContainer, functionScopes: MatlabFunctionScopeInfo[]): void { + if (scope instanceof MatlabGlobalScopeInfo && scope.classScope) { + this._getAllFunctionScopesInFileAcc(scope.classScope, functionScopes) + } + + for (const functionInfo of scope.functionScopes.values()) { + const functionScopeInfo = functionInfo.functionScopeInfo + if (functionScopeInfo && (!(scope instanceof MatlabClassInfo) + || functionScopeInfo.parentScope instanceof MatlabClassdefInfo)) + { + functionScopes.push(functionScopeInfo) + this._getAllFunctionScopesInFileAcc(functionScopeInfo, functionScopes) } } - this._documentSymbolCache.set(uri, result) - this._sendSectionRangesForHighlighting(codeData, uri) - return result } - private _sendSectionRangesForHighlighting (result: MatlabCodeData, uri: string): void { - const sectionRanges = result.sections.map((sectionData) => ({ range: sectionData.range, isExplicit: sectionData.isExplicit })); + private _sendSectionRangesForHighlighting (codeInfo: MatlabCodeInfo, uri: string): void { + const sectionRanges = codeInfo.sections.map(sectionData => ( + { range: sectionData.range, isExplicit: sectionData.isExplicit } + )) NotificationService.sendNotification(Notification.MatlabSections, { uri, sectionRanges }) } } diff --git a/src/providers/rename/RenameSymbolProvider.ts b/src/providers/rename/RenameSymbolProvider.ts index 7fab249..3c47c6c 100644 --- a/src/providers/rename/RenameSymbolProvider.ts +++ b/src/providers/rename/RenameSymbolProvider.ts @@ -1,20 +1,20 @@ -// Copyright 2024 The MathWorks, Inc. +// Copyright 2025 The MathWorks, Inc. -import { WorkspaceEdit, PrepareRenameParams, RenameParams, Range, TextDocuments, TextEdit } from 'vscode-languageserver' +import { WorkspaceEdit, PrepareRenameParams, RenameParams, Range, TextDocuments, TextEdit, Location } from 'vscode-languageserver' import { TextDocument } from 'vscode-languageserver-textdocument' import LifecycleNotificationHelper from '../../lifecycle/LifecycleNotificationHelper' -import { getTextOnLine } from '../../utils/TextDocumentUtils' -import FileInfoIndex from '../../indexing/FileInfoIndex' +import FileInfoIndex, { NamedRange } from '../../indexing/FileInfoIndex' import { ActionErrorConditions } from '../../logging/TelemetryUtils' -import { getExpressionAtPosition } from '../../utils/ExpressionUtils' -import SymbolSearchService, { RequestType, reportTelemetry } from '../../indexing/SymbolSearchService' +import { RequestType, findSelectedIdentifierComponent, reportTelemetry } from '../../indexing/SymbolSearchService' import MatlabLifecycleManager from '../../lifecycle/MatlabLifecycleManager' import DocumentIndexer from '../../indexing/DocumentIndexer' +import * as SymbolSearchService from '../../indexing/SymbolSearchService' class RenameSymbolProvider { constructor ( protected matlabLifecycleManager: MatlabLifecycleManager, - protected documentIndexer: DocumentIndexer + protected documentIndexer: DocumentIndexer, + protected fileInfoIndex: FileInfoIndex ) {} /** @@ -33,55 +33,23 @@ class RenameSymbolProvider { } const uri = params.textDocument.uri - const textDocument = documentManager.get(uri) + const textDocument = documentManager.get(uri) if (textDocument == null) { reportTelemetry(RequestType.RenameSymbol, 'No document') return null } - const text = textDocument.getText() - const offset = textDocument.offsetAt(params.position) - - // Find the start of the expression - let startOffset = offset; - while (startOffset > 0 && /\w/.test(text.charAt(startOffset - 1))) { - startOffset-- - } - - // Find the end of the expression - let endOffset = offset; - while (endOffset < text.length && /\w/.test(text.charAt(endOffset))) { - endOffset++ - } - - // Check if an expression exists at the given position - if (startOffset === endOffset) { - return null - } - - const startPosition = textDocument.positionAt(startOffset) - const endPosition = textDocument.positionAt(endOffset) - const range = Range.create(startPosition, endPosition) - - // Find ID for which to find the definition or references - const expression = getExpressionAtPosition(textDocument, params.position) - if (expression == null) { - reportTelemetry(RequestType.RenameSymbol, 'No rename target') - return null - } - - // Check if expression contains only whitespace - if (expression.fullExpression.trim().length === 0) { - return null - } + await this.documentIndexer.ensureDocumentIndexIsUpdated(textDocument) - // Check if references exist - if (SymbolSearchService.findReferences(uri, params.position, expression, documentManager, RequestType.RenameSymbol).length === 0) { + const selectedIdentifierComponent: NamedRange | null = findSelectedIdentifierComponent( + uri, params.position, this.fileInfoIndex, documentManager, RequestType.RenameSymbol + ) + if (selectedIdentifierComponent == null) { return null } - return { range, placeholder: expression.unqualifiedTarget } + return { range: selectedIdentifierComponent.range, placeholder: selectedIdentifierComponent.name } } /** @@ -100,106 +68,34 @@ class RenameSymbolProvider { } const uri = params.textDocument.uri - const textDocument = documentManager.get(uri) + const textDocument = documentManager.get(uri) if (textDocument == null) { reportTelemetry(RequestType.RenameSymbol, 'No document') return null } - // Find ID for which to find the definition or references - const expression = getExpressionAtPosition(textDocument, params.position) - if (expression == null) { - reportTelemetry(RequestType.RenameSymbol, 'No rename target') - return null - } - - // Ensure document index is up to date await this.documentIndexer.ensureDocumentIndexIsUpdated(textDocument) - const codeData = FileInfoIndex.codeDataCache.get(uri) - if (codeData == null) { - reportTelemetry(RequestType.RenameSymbol, 'No code data') - return null - } - const refs = SymbolSearchService.findReferences(uri, params.position, expression, documentManager, RequestType.RenameSymbol) - const workspaceEdit: WorkspaceEdit = { - changes: { - [uri]: [] - } - } + const refs: Location[] = SymbolSearchService.findReferences( + uri, params.position, this.fileInfoIndex, documentManager, RequestType.RenameSymbol + ) + + // uri -> edits + const changes = new Map() refs.forEach(location => { - const range: Range = { - start: { - line: location.range.start.line, - character: location.range.start.character - }, - end: { - line: location.range.end.line, - character: location.range.end.character - } - } + const newEdit = TextEdit.replace(location.range, params.newName) - if (expression.components.length > 1 && expression.selectedComponent !== 0) { - const newName = expression.components.slice() - newName[expression.selectedComponent] = params.newName - const newEdit: TextEdit = { - range, - newText: newName.join('.') - } - if (location.uri === uri && (workspaceEdit.changes != null)) { - workspaceEdit.changes[uri].push(newEdit) - } + const changesForLocationUri: TextEdit[] | undefined = changes.get(location.uri) + if (changesForLocationUri) { + changesForLocationUri.push(newEdit) } else { - const newEdit: TextEdit = { - range, - newText: params.newName - } - if (location.uri === uri && (workspaceEdit.changes != null)) { - workspaceEdit.changes[uri].push(newEdit) - } + changes.set(location.uri, [newEdit]) } }) - // Check if there is a class definition and rename as necessary - if (codeData.isClassDef && (codeData.classInfo != null) && (codeData.classInfo.declaration != null)) { - const lineNumber = codeData.classInfo.declaration.start.line - const declaration = getTextOnLine(textDocument, lineNumber) - if (declaration.split(/\s+/).includes(expression.unqualifiedTarget)) { - const range: Range = { - start: { - line: lineNumber, - character: 9 // Offset by 9 to get past classdef_ - }, - end: { - line: lineNumber, - character: 9 + expression.unqualifiedTarget.length - } - } - const newEdit: TextEdit = { - range, - newText: params.newName - } - if (workspaceEdit.changes != null) { - workspaceEdit.changes[uri].push(newEdit) - } - } - } - - // Checks if properties need to be renamed - const propertyInfo = SymbolSearchService.getPropertyDeclaration(codeData, expression.unqualifiedTarget) - if (propertyInfo != null && expression.components.length > 1) { - const newEdit: TextEdit = { - range: propertyInfo.range, - newText: params.newName - } - if (workspaceEdit.changes != null) { - workspaceEdit.changes[uri].push(newEdit) - } - } - - return workspaceEdit + return { changes: Object.fromEntries(changes) } } } diff --git a/src/server.ts b/src/server.ts index 827b126..4536549 100644 --- a/src/server.ts +++ b/src/server.ts @@ -36,6 +36,7 @@ import { URI } from 'vscode-uri' import GraphicsPrewarmService from './lifecycle/GraphicsPrewarmService' import { handleDefaultEditorConfigChange, setDefaultEditorVsCode } from './utils/DefaultEditorUtils' +import FileInfoIndex from './indexing/FileInfoIndex' export async function startServer (): Promise { cacheAndClearProxyEnvironmentVariables() @@ -56,9 +57,10 @@ export async function startServer (): Promise { const matlabDebugAdaptor = new MatlabDebugAdaptorServer(mvm, new DebugServices(mvm)); const pathResolver = new PathResolver(mvm) - const indexer = new Indexer(matlabLifecycleManager, mvm, pathResolver) + const fileInfoIndex = new FileInfoIndex() + const indexer = new Indexer(matlabLifecycleManager, mvm, fileInfoIndex) const workspaceIndexer = new WorkspaceIndexer(indexer) - const documentIndexer = new DocumentIndexer(indexer) + const documentIndexer = new DocumentIndexer(indexer, fileInfoIndex) // eslint-disable-next-line @typescript-eslint/no-unused-vars const graphicsPrewarmService = new GraphicsPrewarmService(mvm, ConfigurationManager) @@ -68,9 +70,9 @@ export async function startServer (): Promise { const lintingSupportProvider = new LintingSupportProvider(matlabLifecycleManager, mvm) const executeCommandProvider = new ExecuteCommandProvider(lintingSupportProvider) const completionSupportProvider = new CompletionSupportProvider(matlabLifecycleManager, mvm) - const navigationSupportProvider = new NavigationSupportProvider(matlabLifecycleManager, indexer, documentIndexer, pathResolver) - const renameSymbolProvider = new RenameSymbolProvider(matlabLifecycleManager, documentIndexer) - const highlightSymbolProvider = new HighlightSymbolProvider(matlabLifecycleManager, documentIndexer, pathResolver, indexer) + const navigationSupportProvider = new NavigationSupportProvider(matlabLifecycleManager, fileInfoIndex, indexer, documentIndexer, pathResolver) + const renameSymbolProvider = new RenameSymbolProvider(matlabLifecycleManager, documentIndexer, fileInfoIndex) + const highlightSymbolProvider = new HighlightSymbolProvider(matlabLifecycleManager, documentIndexer, indexer, fileInfoIndex) let pathSynchronizer: PathSynchronizer | null diff --git a/src/utils/PositionUtils.ts b/src/utils/PositionUtils.ts index d37374f..49181e1 100644 --- a/src/utils/PositionUtils.ts +++ b/src/utils/PositionUtils.ts @@ -1,6 +1,17 @@ -// Copyright 2022 - 2023 The MathWorks, Inc. +// Copyright 2022 - 2025 The MathWorks, Inc. -import { Position } from 'vscode-languageserver' +import { Position, Range } from 'vscode-languageserver' + +/** + * Determines whether two positions are equivalent. + * + * @param a The first position + * @param b The second position + * @returns true if position A and position B represent the same position + */ +export function arePositionsEqual (a: Position, b: Position): boolean { + return a.line === b.line && a.character === b.character +} /** * Determines whether a position is less than another position. @@ -46,6 +57,17 @@ export function isPositionGreaterThanOrEqualTo (a: Position, b: Position): boole return checkGreaterThan(a, b, true) } +/** + * Determines whether a position is within a given range. + * + * @param position The position + * @param range The range + * @returns True if the position is within the given range; false otherwise + */ +export function isPositionWithinRange (position: Position, range: Range): boolean { + return isPositionGreaterThanOrEqualTo(position, range.start) && isPositionLessThanOrEqualTo(position, range.end) +} + /** * Performs a "less than (or equal to)" check on two positions. * diff --git a/src/utils/RangeUtils.ts b/src/utils/RangeUtils.ts index a96605e..8f7b0a1 100644 --- a/src/utils/RangeUtils.ts +++ b/src/utils/RangeUtils.ts @@ -1,7 +1,7 @@ // Copyright 2025 The MathWorks, Inc. import { Range } from 'vscode-languageserver' -import { isPositionGreaterThanOrEqualTo, isPositionLessThanOrEqualTo } from './PositionUtils' +import { arePositionsEqual, isPositionGreaterThanOrEqualTo, isPositionLessThanOrEqualTo } from './PositionUtils' /** * Determines whether a range completely contains another range. @@ -15,3 +15,14 @@ export function rangeContains (a: Range, b: Range): boolean { return isPositionGreaterThanOrEqualTo(b.start, a.start) && isPositionLessThanOrEqualTo(b.end, a.end) } + +/** + * Determines whether two ranges are equivalent. + * + * @param a The first range + * @param b The second range + * @returns true if range A and range B represent the same range + */ +export function areRangesEqual (a: Range, b: Range): boolean { + return arePositionsEqual(a.start, b.start) && arePositionsEqual(a.end, b.end) +} diff --git a/tests/@types/quibble.d.ts b/tests/@types/quibble.d.ts new file mode 100644 index 0000000..d2590c4 --- /dev/null +++ b/tests/@types/quibble.d.ts @@ -0,0 +1,3 @@ +// Copyright 2025 The MathWorks, Inc. + +declare module 'quibble' diff --git a/tests/TestUtils.ts b/tests/TestUtils.ts index f5b8efd..f1cc241 100644 --- a/tests/TestUtils.ts +++ b/tests/TestUtils.ts @@ -1,7 +1,27 @@ // Copyright 2025 The MathWorks, Inc. +import assert from 'assert' import quibble from 'quibble' +/** + * Uses Node's {@link assert} to assert that two arrays are deepStrictEqual, ignoring order. + * + * The expected array must not have any duplicate entries. + * + * @param actual The actual result array to be compared against the expected result + * @param expectedNoDuplicates The expected result array, which should not have any duplicates + * @param message An error message to be passed to Node's {@link assert} if the comparison fails + */ +export function assertDeepStrictEqualIgnoringOrder (actual: T[], expectedNoDuplicates: T[], message?: string | Error): void { + const expectedSet: Set = new Set(expectedNoDuplicates) + assert.ok(expectedNoDuplicates.length === expectedSet.size, 'expectedNoDuplicates cannot have duplicates') + + assert.ok(actual.length === expectedSet.size, message) + assert.deepStrictEqual(new Set(actual), expectedSet, message) +} + +/* Mocking Utilities */ + // Make sure the path to be quibbled is taken relative to the actual test // file, not to this utils file quibble.ignoreCallsFromThisFile() @@ -35,24 +55,27 @@ type SameSignatureAs = (...args: Parameters) => Return * default stub with the function given to it. * * The module dependent on the function being stubbed must be dynamically - * imported after the call to this function (see `dynamicImport`). + * imported after the call to this function (see {@link dynamicImport}). * * The first type parameter must be provided; the correct type can be * obtained via `typeof import('relative/path/to/module/being/stubbed')`. - * This path should be the same as `path`, but due to TypeScript + * This path should be the same as {@link path}, but due to TypeScript * limitations, must be provided as a string literal here. * * The second type parameter can be inferred, but providing it enables * stronger type checking. The recommended way to provide this type * parameter is `typeof functionToStub`, where `functionToStub` holds - * the value that will be passed to the `propertyToReplace` parameter. + * the value that will be passed to {@link exportToReplace}. * + * @param moduleContext The module to which the provided {@link path} + * should be relative (`module` is typically the correct argument + * here) * @param path The relative path, from the test file calling this * function, to the module being stubbed - * @param propertyToReplace The name of the property in the module - * given by `path` that corresponds to the function to be stubbed - - * `default` if the function is the module's default export, or - * the name of the function otherwise + * @param exportToReplace The name of the export in the module + * given by {@link path} that corresponds to the function to be + * stubbed - `default` if the function is the module's default + * export, or the name of the function otherwise * @param defaultStub The default implementation of the stub * @returns A function that, when called with a new stub implementation * as an argument, replaces the existing stub implementation with @@ -60,7 +83,7 @@ type SameSignatureAs = (...args: Parameters) => Return * imported by the module dependent on it) */ export function stubDependency ( - path: string, propertyToReplace: StubKey, defaultStub: FunctionOfType + moduleContext: NodeJS.Module, path: string, exportToReplace: StubKey, defaultStub: FunctionOfType ): (newStub: FunctionOfType) => void { // We want our stub to have the same signature as the function being stubbed // (which is of type DependencyExports[StubKey]) @@ -72,13 +95,14 @@ export function stubDependency stub(...args)) - // Replace the exports of the module at path with an object mapping the - // property being replaced to the stub wrapper. Whenever the function - // being replaced is called, the currently assigned stub function will - // be called in turn. - quibble(path, { - [propertyToReplace]: stubWrapper - }) + // Replace the exportToReplace in the module at path with the stub + // wrapper. Whenever the function being replaced is called, the + // currently assigned stub function will be called in turn. + const mockedModule: DependencyExports = { + ...dynamicImport(moduleContext, path), + [exportToReplace]: stubWrapper + } + quibble(path, mockedModule) // Return a function that can be called to update the stub function // (i.e., change the behavior of the function being stubbed) @@ -88,11 +112,11 @@ export function stubDependency { + let fileInfoIndex: FileInfoIndex + + const resourceFilePathPrefix = './rawCodeDataResourceFiles' + const specCasesResourceFilePathPrefix = `${resourceFilePathPrefix}/improvedCodeAnalysisSpecCases` + const generalCasesResourceFilePathPrefix = `${specCasesResourceFilePathPrefix}/generalCases` + const functionCasesResourceFilePathPrefix = `${specCasesResourceFilePathPrefix}/functionCases` + const classCasesResourceFilePathPrefix = `${specCasesResourceFilePathPrefix}/classCases` + + // General cases + let G_1_rawCodeData: CodeInfo + let G_2_rawCodeData: CodeInfo + + // Function cases + let F_1_rawCodeData: CodeInfo + let F_2_rawCodeData: CodeInfo + let F_3_rawCodeData: CodeInfo + let F_9_rawCodeData: CodeInfo + + // Class cases + let C_1_rawCodeData: CodeInfo + let C_2_rawCodeData: CodeInfo + let C_3_rawCodeData: CodeInfo + + // Additional test files + let MyClass_rawCodeData: CodeInfo + + before(() => { + // General cases + G_1_rawCodeData = require(`${generalCasesResourceFilePathPrefix}/G_1.json`) + G_2_rawCodeData = require(`${generalCasesResourceFilePathPrefix}/G_2.json`) + + // Function cases + F_1_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_1.json`) + F_2_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_2.json`) + F_3_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_3.json`) + F_9_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_9.json`) + + // Class cases + C_1_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_1.json`) + C_2_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_2.json`) + C_3_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_3.json`) + + // Additional test files + MyClass_rawCodeData = require(`${resourceFilePathPrefix}/@MyClass/MyClass.json`) + }) + + const setup = () => { + fileInfoIndex = new FileInfoIndex() + } + + describe('#parseAndStoreCodeInfo', () => { + beforeEach(() => setup()) + + it('stores the parsed code info in the code info cache', () => { + const parsedCodeData = fileInfoIndex.parseAndStoreCodeInfo('G_1.m', G_1_rawCodeData) + + assert.strictEqual( + fileInfoIndex.codeInfoCache.get('G_1.m'), + parsedCodeData + ) + }) + + it('overwrites old code info for a file with new code info for the same file', () => { + fileInfoIndex.parseAndStoreCodeInfo('G_1.m', G_1_rawCodeData) + // as if the contents of G_1.m were updated to match G_2.m + const updatedParsedCodeData = fileInfoIndex.parseAndStoreCodeInfo('G_1.m', G_2_rawCodeData) + + assert.strictEqual( + fileInfoIndex.codeInfoCache.get('G_1.m'), + updatedParsedCodeData + ) + }) + + it('does not overwrite code info for a file with code info for a different file', () => { + const G_1_pcd = fileInfoIndex.parseAndStoreCodeInfo('G_1.m', G_1_rawCodeData) + const G_2_pcd = fileInfoIndex.parseAndStoreCodeInfo('G_2.m', G_2_rawCodeData) + + assert.strictEqual( + fileInfoIndex.codeInfoCache.get('G_1.m'), + G_1_pcd + ) + assert.strictEqual( + fileInfoIndex.codeInfoCache.get('G_2.m'), + G_2_pcd + ) + }) + + it('correctly transfers basic info from the top-level CodeInfo object', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('G_1.m', G_1_rawCodeData) + + assert.strictEqual(pcd.package, '') + assert.strictEqual(pcd.classDefFolder, undefined) + assert.strictEqual(pcd.uri, 'G_1.m') + assert.strictEqual(pcd.associatedClassInfo, undefined) + + assert.deepStrictEqual( + pcd.sections, + [ + { + name: 'Section1', + range: Range.create(0, 0, 3, 0), + isExplicit: false + } + ] satisfies SectionInfo[] + ) + + assert.deepStrictEqual(pcd.classReferences, new Map()) + }) + + it('correctly parses class references', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('C_2.m', C_2_rawCodeData) + + const C_2_references = new MatlabClassReferenceInfo() + C_2_references.addReference({ + name: 'C_2', + range: Range.create(0, 9, 0, 12) + }) + + const OtherClass_references = new MatlabClassReferenceInfo() + OtherClass_references.addReference({ + name: 'OtherClass', + range: Range.create(0, 15, 0, 25) + }) + OtherClass_references.addReference({ + name: 'OtherClass', + range: Range.create(3, 21, 3, 31) + }) + OtherClass_references.addReference({ + name: 'OtherClass', + range: Range.create(9, 4, 9, 14) + }) + OtherClass_references.addReference({ + name: 'OtherClass', + range: Range.create(10, 4, 10, 14) + }) + + assert.deepStrictEqual( + pcd.classReferences, + new Map([ + ['C_2', C_2_references], + ['OtherClass', OtherClass_references] + ]) + ) + }) + + it('correctly parses variable references and definitions in the global scope', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('G_1.m', G_1_rawCodeData) + + const x_variableInfo = new MatlabVariableInfo() + + x_variableInfo.addReference({ + name: 'x', + range: Range.create(0, 0, 0, 1), + components: [ + { + name: 'x', + range: Range.create(0, 0, 0, 1) + } + ] + }) + x_variableInfo.addReference({ + name: 'x', + range: Range.create(1, 0, 1, 1), + components: [ + { + name: 'x', + range: Range.create(1, 0, 1, 1) + } + ] + }) + x_variableInfo.addReference({ + name: 'x', + range: Range.create(2, 4, 2, 5), + components: [ + { + name: 'x', + range: Range.create(2, 4, 2, 5) + } + ] + }) + + x_variableInfo.addDefinition({ + name: 'x', + range: Range.create(0, 0, 0, 1), + components: [ + { + name: 'x', + range: Range.create(0, 0, 0, 1) + } + ] + }) + x_variableInfo.addDefinition({ + name: 'x', + range: Range.create(1, 0, 1, 1), + components: [ + { + name: 'x', + range: Range.create(1, 0, 1, 1) + } + ] + }) + + const y_variableInfo = new MatlabVariableInfo() + + y_variableInfo.addReference({ + name: 'y', + range: Range.create(2, 0, 2, 1), + components: [ + { + name: 'y', + range: Range.create(2, 0, 2, 1) + } + ] + }) + + y_variableInfo.addDefinition({ + name: 'y', + range: Range.create(2, 0, 2, 1), + components: [ + { + name: 'y', + range: Range.create(2, 0, 2, 1) + } + ] + }) + + assert.deepStrictEqual( + pcd.globalScopeInfo.variables, + new Map([ + ['x', x_variableInfo], + ['y', y_variableInfo] + ]) + ) + }) + + it('correctly parses function or unbound references in the global scope', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('G_2.m', G_2_rawCodeData) + + const fun_references = new MatlabFunctionOrUnboundReferenceInfo() + fun_references.addReference({ + name: 'fun', + range: Range.create(0, 0, 0, 3), + components: [ + { + name: 'fun', + range: Range.create(0, 0, 0, 3) + } + ], + firstArgIdName: undefined + }) + fun_references.addReference({ + name: 'fun', + range: Range.create(5, 0, 5, 3), + components: [ + { + name: 'fun', + range: Range.create(5, 0, 5, 3) + } + ], + firstArgIdName: undefined + }) + + assert.deepStrictEqual( + pcd.globalScopeInfo.functionOrUnboundReferences, + new Map([ + ['fun', fun_references] + ]) + ) + }) + + it('correctly constructs the function scopes map in the global scope', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('F_3.m', F_3_rawCodeData) + + // Check that there is function info for f1 and f2 (but not f3) + assert.deepStrictEqual([...pcd.globalScopeInfo.functionScopes.keys()].sort(), ['f1', 'f2']) + }) + + it('correctly creates the parent link from a global scope to its code info', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('G_1.m', G_1_rawCodeData) + + assert.strictEqual(pcd.globalScopeInfo.codeInfo, pcd) + }) + + it('creates the correct structure and transfers basic info for a function with only an implementation', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('F_1.m', F_1_rawCodeData) + + const functionInfo = pcd.globalScopeInfo.functionScopes.get('fun') + + assert.ok(functionInfo) + // (raw code data has false, since the function name + // does not match the file name) + assert.strictEqual(functionInfo.isPublic, false) + assert.strictEqual(functionInfo.hasPrototypeInfo, false) + assert.strictEqual(functionInfo.isStaticMethod, false) + assert.strictEqual(functionInfo.isConstructor, false) + + const functionScopeInfo = functionInfo.functionScopeInfo + + assert.ok(functionScopeInfo) + assert.deepStrictEqual( + functionScopeInfo.declarationNameId, + { + name: 'fun', + range: Range.create(0, 9, 0, 12) + } + ) + assert.deepStrictEqual( + functionScopeInfo.range, + Range.create(0, 0, 1, 3) + ) + }) + + it('correctly parses variable references and definitions in a function scope', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('F_2.m', F_2_rawCodeData) + + // Variable info for f1 + + const x_variableInfo = new MatlabVariableInfo() + + x_variableInfo.addReference({ + name: 'x', + range: Range.create(1, 4, 1, 5), + components: [ + { + name: 'x', + range: Range.create(1, 4, 1, 5) + } + ] + }) + x_variableInfo.addReference({ + name: 'x', + range: Range.create(2, 4, 2, 5), + components: [ + { + name: 'x', + range: Range.create(2, 4, 2, 5) + } + ] + }) + x_variableInfo.addReference({ + name: 'x', + range: Range.create(3, 8, 3, 9), + components: [ + { + name: 'x', + range: Range.create(3, 8, 3, 9) + } + ] + }) + + x_variableInfo.addDefinition({ + name: 'x', + range: Range.create(1, 4, 1, 5), + components: [ + { + name: 'x', + range: Range.create(1, 4, 1, 5) + } + ] + }) + x_variableInfo.addDefinition({ + name: 'x', + range: Range.create(2, 4, 2, 5), + components: [ + { + name: 'x', + range: Range.create(2, 4, 2, 5) + } + ] + }) + + const y_variableInfo = new MatlabVariableInfo() + + y_variableInfo.addReference({ + name: 'y', + range: Range.create(3, 4, 3, 5), + components: [ + { + name: 'y', + range: Range.create(3, 4, 3, 5) + } + ] + }) + + y_variableInfo.addDefinition({ + name: 'y', + range: Range.create(3, 4, 3, 5), + components: [ + { + name: 'y', + range: Range.create(3, 4, 3, 5) + } + ] + }) + + const f1FunctionScopeInfo = pcd.globalScopeInfo.functionScopes.get('f1')?.functionScopeInfo + + assert.ok(f1FunctionScopeInfo) + assert.deepStrictEqual( + f1FunctionScopeInfo.variables, + new Map([ + ['x', x_variableInfo], + ['y', y_variableInfo] + ]) + ) + }) + + it('correctly parses function or unbound references in a function scope', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('F_9.m', F_9_rawCodeData) + + // Function or unbound reference info for parent + + const disp_references = new MatlabFunctionOrUnboundReferenceInfo() + disp_references.addReference({ + name: 'disp', + range: Range.create(2, 4, 2, 8), + components: [ + { + name: 'disp', + range: Range.create(2, 4, 2, 8) + } + ], + firstArgIdName: 'x' + }) + + const parentFunctionScopeInfo = pcd.globalScopeInfo.functionScopes.get('parent')?.functionScopeInfo + + assert.ok(parentFunctionScopeInfo) + assert.deepStrictEqual( + parentFunctionScopeInfo.functionOrUnboundReferences, + new Map([ + ['disp', disp_references] + ]) + ) + }) + + it('correctly constructs the function scopes map in a function scope', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('F_3.m', F_3_rawCodeData) + const f2FunctionScopeInfo = pcd.globalScopeInfo.functionScopes.get('f2')?.functionScopeInfo + + assert.ok(f2FunctionScopeInfo) + // Check that there is function info for f3 (but not f1 or f2) + assert.deepStrictEqual([...f2FunctionScopeInfo.functionScopes.keys()], ['f3']) + }) + + it('correctly parses input and output args in a function scope', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('C_3.m', C_3_rawCodeData) + const setMyPropertyFunctionScopeInfo = + pcd.globalScopeInfo.classScope?.functionScopes.get('set.MyProperty')?.functionScopeInfo + + assert.ok(setMyPropertyFunctionScopeInfo) + // Order is important (for determining presumed class instances) + assert.deepStrictEqual( + [...setMyPropertyFunctionScopeInfo.inputArgs], + ['obj', 'val'] + ) + assert.deepStrictEqual( + [...setMyPropertyFunctionScopeInfo.outputArgs], + ['obj'] + ) + }) + + it('correctly creates the parent link from a function scope to its global scope', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('F_1.m', F_1_rawCodeData) + const funFunctionScopeInfo = pcd.globalScopeInfo.functionScopes.get('fun')?.functionScopeInfo + + assert.ok(funFunctionScopeInfo) + assert.strictEqual(funFunctionScopeInfo.parentScope, pcd.globalScopeInfo) + }) + + it('correctly creates the sibling link from a function scope to its function info', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('F_1.m', F_1_rawCodeData) + + const funFunctionInfo = pcd.globalScopeInfo.functionScopes.get('fun') + + assert.ok(funFunctionInfo) + + const funFunctionScopeInfo = funFunctionInfo.functionScopeInfo + + assert.ok(funFunctionScopeInfo) + assert.strictEqual(funFunctionScopeInfo.functionInfo, funFunctionInfo) + }) + + it('creates associated class info and class scope links for a classdef file', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('C_1.m', C_1_rawCodeData) + + assert.ok(pcd.associatedClassInfo) + assert.ok(pcd.globalScopeInfo.classScope) + assert.strictEqual(pcd.associatedClassInfo, pcd.globalScopeInfo.classScope) + }) + + it('correctly parses property declarations for a class', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('C_3.m', C_3_rawCodeData) + + const propertiesMap = new Map([ + [ + 'MyProperty', + { + name: 'MyProperty', + range: Range.create(2, 8, 2, 18), + isPublic: true + } + ], + [ + 'ConstantProperty', + { + name: 'ConstantProperty', + range: Range.create(5, 8, 5, 24), + isPublic: true + } + ] + ]) + + const classInfo = pcd.globalScopeInfo.classScope + + assert.ok(classInfo) + assert.deepStrictEqual(classInfo.properties, propertiesMap) + }) + + it('correctly constructs the function scopes map for a class with no supplementary method files', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('C_1.m', C_1_rawCodeData) + const classInfo = pcd.globalScopeInfo.classScope + + assert.ok(classInfo) + // Check that there is function info for C_1 and staticMethod (but not for local) + assert.deepStrictEqual([...classInfo.functionScopes.keys()], ['C_1', 'staticMethod']) + }) + + it('creates a link to the classdef info for a classdef file', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('C_1.m', C_1_rawCodeData) + const classInfo = pcd.globalScopeInfo.classScope + + assert.ok(classInfo) + assert.ok(classInfo.classdefInfo) + }) + + it('correctly transfers basic info into the classdef info for a classdef file', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('MyClass.m', MyClass_rawCodeData) + const classdefInfo = pcd.globalScopeInfo.classScope?.classdefInfo + + assert.ok(classdefInfo) + assert.deepStrictEqual( + classdefInfo.declarationNameId, + { + name: 'MyClass', + range: Range.create(0, 9, 0, 16) + } + ) + assert.deepStrictEqual( + classdefInfo.range, + Range.create(0, 0, 26, 3) + ) + assert.strictEqual(classdefInfo.isPublic, true) + assert.deepStrictEqual( + classdefInfo.baseClasses, + [ + { + name: 'Base1', + range: Range.create(0, 19, 0, 24) + }, + { + name: 'Base2', + range: Range.create(0, 27, 0, 32) + }, + { + name: 'Base3', + range: Range.create(0, 35, 0, 40) + } + ] + ) + assert.deepStrictEqual( + classdefInfo.propertiesBlocks, + [ + { + name: 'properties', + range: Range.create(1, 4, 3, 7) + }, + { + name: 'properties (Constant)', + range: Range.create(5, 4, 7, 7) + } + ] + ) + assert.deepStrictEqual( + classdefInfo.enumerationsBlocks, + [ + { + name: 'enumeration', + range: Range.create(9, 4, 11, 7) + }, + { + name: 'enumeration', + range: Range.create(13, 4, 15, 7) + } + ] + ) + assert.deepStrictEqual( + classdefInfo.methodsBlocks, + [ + { + name: 'methods', + range: Range.create(17, 4, 21, 7) + }, + { + name: 'methods (Static)', + range: Range.create(23, 4, 25, 7) + } + ] + ) + }) + + it('correctly creates the parent link from classdef info to its global scope', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('C_1.m', C_1_rawCodeData) + const classdefInfo = pcd.globalScopeInfo.classScope?.classdefInfo + + assert.ok(classdefInfo) + assert.strictEqual(classdefInfo.parentScope, pcd.globalScopeInfo) + }) + + it('correctly creates the sibling link from classdef info to its class info', () => { + const pcd = fileInfoIndex.parseAndStoreCodeInfo('C_1.m', C_1_rawCodeData) + + const classInfo = pcd.globalScopeInfo.classScope + assert.ok(classInfo) + + const classdefInfo = classInfo.classdefInfo + + assert.ok(classdefInfo) + assert.strictEqual(classdefInfo.classInfo, classInfo) + }) + }) +}) diff --git a/tests/indexing/SymbolSearchService.test.ts b/tests/indexing/SymbolSearchService.test.ts new file mode 100644 index 0000000..48c6b49 --- /dev/null +++ b/tests/indexing/SymbolSearchService.test.ts @@ -0,0 +1,755 @@ +// Copyright 2025 The MathWorks, Inc. + +import assert from 'assert' +import sinon from 'sinon' + +import ClientConnection from '../../src/ClientConnection' +import getMockConnection from '../mocks/Connection.mock' +import FileInfoIndex, { CodeInfo } from '../../src/indexing/FileInfoIndex' +import { findDefinitions, findReferences, findReferencesAndDefinitions, RequestType } from '../../src/indexing/SymbolSearchService' +import { assertDeepStrictEqualIgnoringOrder } from '../TestUtils' +import PathResolver from '../../src/providers/navigation/PathResolver' +import Indexer from '../../src/indexing/Indexer' +import getMockMvm from '../mocks/Mvm.mock' +import MatlabLifecycleManager from '../../src/lifecycle/MatlabLifecycleManager' + +import { Location, Position, Range, TextDocuments, uinteger } from 'vscode-languageserver' +import { TextDocument } from 'vscode-languageserver-textdocument' + +interface RefsAndDefsTestCaseInfo { + caseName: string + position: Position + expectedRefs: RangeTuple[] + expectedDefs: RangeTuple[] +} + +describe('SymbolSearchService', () => { + let mockMvm: any + + let fileInfoIndex: FileInfoIndex + let documentManager: TextDocuments + let pathResolver: PathResolver + let matlabLifecycleManager: MatlabLifecycleManager + let indexer: Indexer + + const resourceFilePathPrefix = './rawCodeDataResourceFiles' + const specCasesResourceFilePathPrefix = `${resourceFilePathPrefix}/improvedCodeAnalysisSpecCases` + const generalCasesResourceFilePathPrefix = `${specCasesResourceFilePathPrefix}/generalCases` + const functionCasesResourceFilePathPrefix = `${specCasesResourceFilePathPrefix}/functionCases` + const classCasesResourceFilePathPrefix = `${specCasesResourceFilePathPrefix}/classCases` + const shadowingCasesResourceFilePathPrefix = `${specCasesResourceFilePathPrefix}/shadowingCases` + const dottedIdentifierCasesResourceFilePathPrefix = `${specCasesResourceFilePathPrefix}/dottedIdentifierCases` + + // General cases + let G_1_rawCodeData: CodeInfo + let G_2_rawCodeData: CodeInfo + let G_3_rawCodeData: CodeInfo + let G_4_rawCodeData: CodeInfo + let G_5_rawCodeData: CodeInfo + let G_6_rawCodeData: CodeInfo + let G_12_rawCodeData: CodeInfo + + // Function cases + let F_1_rawCodeData: CodeInfo + let F_2_rawCodeData: CodeInfo + let F_3_rawCodeData: CodeInfo + let F_4_rawCodeData: CodeInfo + let F_5_rawCodeData: CodeInfo + let F_6_rawCodeData: CodeInfo + let F_7_rawCodeData: CodeInfo + let F_8_rawCodeData: CodeInfo + let F_9_rawCodeData: CodeInfo + let F_10_rawCodeData: CodeInfo + let F_11_rawCodeData: CodeInfo + let F_12_rawCodeData: CodeInfo + let F_21_rawCodeData: CodeInfo + + // Class cases + let C_1_rawCodeData: CodeInfo + let C_2_rawCodeData: CodeInfo + let C_3_rawCodeData: CodeInfo + let C_6_rawCodeData: CodeInfo + let C_7_rawCodeData: CodeInfo + let C_8_rawCodeData: CodeInfo + let C_9_rawCodeData: CodeInfo + + // Shadowing cases + let S_1_rawCodeData: CodeInfo + let S_8_rawCodeData: CodeInfo + + // Dotted identifier cases + let D_1_rawCodeData: CodeInfo + let D_3_rawCodeData: CodeInfo + let D_4_rawCodeData: CodeInfo + let D_10_rawCodeData: CodeInfo + let D_11_rawCodeData: CodeInfo + + before(() => { + // General cases + G_1_rawCodeData = require(`${generalCasesResourceFilePathPrefix}/G_1.json`) + G_2_rawCodeData = require(`${generalCasesResourceFilePathPrefix}/G_2.json`) + G_3_rawCodeData = require(`${generalCasesResourceFilePathPrefix}/G_3.json`) + G_4_rawCodeData = require(`${generalCasesResourceFilePathPrefix}/G_4.json`) + G_5_rawCodeData = require(`${generalCasesResourceFilePathPrefix}/G_5.json`) + G_6_rawCodeData = require(`${generalCasesResourceFilePathPrefix}/G_6.json`) + G_12_rawCodeData = require(`${generalCasesResourceFilePathPrefix}/G_12.json`) + + // Function cases + F_1_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_1.json`) + F_2_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_2.json`) + F_3_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_3.json`) + F_4_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_4.json`) + F_5_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_5.json`) + F_6_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_6.json`) + F_7_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_7.json`) + F_8_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_8.json`) + F_9_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_9.json`) + F_10_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_10.json`) + F_11_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_11.json`) + F_12_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_12.json`) + F_21_rawCodeData = require(`${functionCasesResourceFilePathPrefix}/F_21.json`) + + // Class cases + C_1_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_1.json`) + C_2_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_2.json`) + C_3_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_3.json`) + C_6_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_6.json`) + C_7_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_7.json`) + C_8_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_8.json`) + C_9_rawCodeData = require(`${classCasesResourceFilePathPrefix}/C_9.json`) + + // Shadowing cases + S_1_rawCodeData = require(`${shadowingCasesResourceFilePathPrefix}/S_1.json`) + S_8_rawCodeData = require(`${shadowingCasesResourceFilePathPrefix}/S_8.json`) + + // Dotted identifier cases + D_1_rawCodeData = require(`${dottedIdentifierCasesResourceFilePathPrefix}/D_1.json`) + D_3_rawCodeData = require(`${dottedIdentifierCasesResourceFilePathPrefix}/D_3.json`) + D_4_rawCodeData = require(`${dottedIdentifierCasesResourceFilePathPrefix}/D_4.json`) + D_10_rawCodeData = require(`${dottedIdentifierCasesResourceFilePathPrefix}/D_10.json`) + D_11_rawCodeData = require(`${dottedIdentifierCasesResourceFilePathPrefix}/D_11.json`) + + ClientConnection._setConnection(getMockConnection()) + }) + + after(() => { + ClientConnection._clearConnection() + }) + + const setup = () => { + fileInfoIndex = new FileInfoIndex() + + // General cases + fileInfoIndex.parseAndStoreCodeInfo('G_1.m', G_1_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('G_2.m', G_2_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('G_3.m', G_3_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('G_4.m', G_4_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('G_5.m', G_5_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('G_6.m', G_6_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('G_12.m', G_12_rawCodeData) + + // Function cases + fileInfoIndex.parseAndStoreCodeInfo('F_1.m', F_1_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_2.m', F_2_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_3.m', F_3_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_4.m', F_4_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_5.m', F_5_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_6.m', F_6_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_7.m', F_7_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_8.m', F_8_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_9.m', F_9_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_10.m', F_10_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_11.m', F_11_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_12.m', F_12_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('F_21.m', F_21_rawCodeData) + + // Class cases + fileInfoIndex.parseAndStoreCodeInfo('C_1.m', C_1_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('C_2.m', C_2_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('C_3.m', C_3_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('C_6.m', C_6_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('C_7.m', C_7_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('C_8.m', C_8_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('C_9.m', C_9_rawCodeData) + + // Shadowing cases + fileInfoIndex.parseAndStoreCodeInfo('S_1.m', S_1_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('S_8.m', S_8_rawCodeData) + + // Dotted identifier cases + fileInfoIndex.parseAndStoreCodeInfo('D_1.m', D_1_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('D_3.m', D_3_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('D_4.m', D_4_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('D_10.m', D_10_rawCodeData) + fileInfoIndex.parseAndStoreCodeInfo('D_11.m', D_11_rawCodeData) + + mockMvm = getMockMvm() + + documentManager = new TextDocuments(TextDocument) + pathResolver = new PathResolver(mockMvm) + matlabLifecycleManager = new MatlabLifecycleManager() + indexer = new Indexer(matlabLifecycleManager, mockMvm, fileInfoIndex) + + const mockTextDocument = TextDocument.create( + 'some_uri', 'matlab', 1, 'abc' + ) + sinon.stub(documentManager, 'get').returns(mockTextDocument) + } + + const teardown = () => { + sinon.restore() + } + + const refsAndDefsTestCases: RefsAndDefsTestCaseInfo[] = [ + { + caseName: 'G_1', + position: Position.create(1, 1), + expectedRefs: [ + [0, 0, 0, 1], + [1, 0, 1, 1], + [2, 4, 2, 5] + ], + expectedDefs: [ + [0, 0, 0, 1], + [1, 0, 1, 1] + ] + }, + { + caseName: 'G_2', + position: Position.create(0, 2), + expectedRefs: [ + [0, 0, 0, 3], + [2, 9, 2, 12], + [5, 0, 5, 3] + ], + expectedDefs: [ + [2, 9, 2, 12] + ] + }, + { + caseName: 'G_3', + position: Position.create(1, 8), + expectedRefs: [], + expectedDefs: [] + }, + { + caseName: 'G_4', + position: Position.create(1, 3), + expectedRefs: [], + expectedDefs: [] + }, + { + caseName: 'G_5', + position: Position.create(2, 1), + expectedRefs: [], + expectedDefs: [] + }, + { + caseName: 'G_6', + position: Position.create(0, 4), + expectedRefs: [ + [0, 4, 0, 5], + [1, 4, 1, 5], + [1, 8, 1, 9] + ], + expectedDefs: [ + [0, 4, 0, 5], + [1, 4, 1, 5] + ] + }, + { + caseName: 'G_12', + position: Position.create(1, 6), + expectedRefs: [ + [0, 5, 0, 6], + [1, 5, 1, 6] + ], + expectedDefs: [] + }, + { + caseName: 'F_1', + position: Position.create(0, 11), + expectedRefs: [ + [0, 9, 0, 12], + [3, 0, 3, 3] + ], + expectedDefs: [ + [0, 9, 0, 12] + ] + }, + { + caseName: 'F_2', + position: Position.create(3, 8), + expectedRefs: [ + [1, 4, 1, 5], + [2, 4, 2, 5], + [3, 8, 3, 9] + ], + expectedDefs: [ + [1, 4, 1, 5], + [2, 4, 2, 5] + ] + }, + { + caseName: 'F_3', + position: Position.create(7, 6), + expectedRefs: [ + [0, 9, 0, 11], + [4, 0, 4, 2], + [7, 4, 7, 6] + ], + expectedDefs: [ + [0, 9, 0, 11] + ] + }, + { + caseName: 'F_4', + position: Position.create(4, 5), + expectedRefs: [ + [4, 4, 4, 5], + [5, 4, 5, 5], + [6, 8, 6, 9] + ], + expectedDefs: [ + [4, 4, 4, 5], + [5, 4, 5, 5] + ] + }, + { + caseName: 'F_5', + position: Position.create(1, 5), + expectedRefs: [ + [0, 0, 0, 1], + [1, 4, 1, 5] + ], + expectedDefs: [ + [0, 0, 0, 1] + ] + }, + { + caseName: 'F_6', + position: Position.create(4, 5), + expectedRefs: [ + [4, 4, 4, 5], + [6, 13, 6, 14] + ], + expectedDefs: [ + [6, 13, 6, 14] + ] + }, + { + caseName: 'F_7', + position: Position.create(7, 5), + expectedRefs: [ + [2, 4, 2, 12], + [7, 4, 7, 12] + ], + expectedDefs: [] + }, + { + caseName: 'F_8', + position: Position.create(1, 5), + expectedRefs: [ + [1, 4, 1, 5], + [2, 9, 2, 10], + [4, 8, 4, 9], + [5, 13, 5, 14] + ], + expectedDefs: [ + [1, 4, 1, 5], + [4, 8, 4, 9] + ] + }, + { + caseName: 'F_9', + position: Position.create(5, 14), + expectedRefs: [ + [1, 4, 1, 5], + [2, 9, 2, 10], + [4, 8, 4, 9], + [5, 13, 5, 14] + ], + expectedDefs: [ + [1, 4, 1, 5], + [4, 8, 4, 9] + ] + }, + { + caseName: 'F_10', + position: Position.create(0, 10), + expectedRefs: [ + [0, 9, 0, 12], + [1, 4, 1, 7] + ], + expectedDefs: [ + [0, 9, 0, 12], + [1, 4, 1, 7] + ] + }, + { + caseName: 'F_11', + position: Position.create(3, 16), + expectedRefs: [ + [2, 26, 2, 28], + [3, 14, 3, 16] + ], + expectedDefs: [ + [2, 26, 2, 28] + ] + }, + { + caseName: 'F_12', + position: Position.create(0, 21), + expectedRefs: [ + [0, 9, 0, 12], + [0, 19, 0, 22], + [1, 4, 1, 7], + [1, 10, 1, 13] + ], + expectedDefs: [ + [0, 9, 0, 12], + [0, 19, 0, 22], + [1, 4, 1, 7] + ] + }, + { + caseName: 'F_21', + position: Position.create(1, 5), + expectedRefs: [ + [0, 9, 0, 12], + [1, 4, 1, 7] + ], + expectedDefs: [ + [0, 9, 0, 12], + [1, 4, 1, 7] + ] + }, + { + caseName: 'C_1', + position: Position.create(0, 9), + expectedRefs: [ + [0, 9, 0, 12], + [6, 23, 6, 26], + [17, 4, 17, 7], + [18, 4, 18, 7], + [19, 4, 19, 7] + ], + expectedDefs: [ + [0, 9, 0, 12], + [6, 23, 6, 26] + ] + }, + { + caseName: 'C_2', + position: Position.create(0, 20), + expectedRefs: [ + [0, 15, 0, 25], + [3, 21, 3, 31], + [9, 4, 9, 14], + [10, 4, 10, 14] + ], + expectedDefs: [] + }, + { + caseName: 'C_3', + position: Position.create(2, 18), + expectedRefs: [ + [2, 8, 2, 18], + [10, 21, 10, 31], + [11, 16, 11, 26] + // Property access methods not currently supported + ], + expectedDefs: [ + [2, 8, 2, 18], + [11, 16, 11, 26] + ] + }, + { + caseName: 'C_6', + position: Position.create(6, 24), + expectedRefs: [ + [0, 9, 0, 12], + [6, 23, 6, 26], + [17, 4, 17, 7], + [18, 4, 18, 7], + [19, 4, 19, 7] + ], + expectedDefs: [ + [0, 9, 0, 12], + [6, 23, 6, 26] + ] + }, + { + caseName: 'C_7', + position: Position.create(17, 7), + expectedRefs: [ + [0, 9, 0, 12], + [6, 23, 6, 26], + [17, 4, 17, 7], + [18, 4, 18, 7], + [19, 4, 19, 7], + [20, 4, 20, 7] + ], + expectedDefs: [ + [0, 9, 0, 12], + [6, 23, 6, 26] + ] + }, + { + caseName: 'C_8', + position: Position.create(3, 14), + expectedRefs: [ + [3, 12, 3, 15], + [4, 16, 4, 19], + [9, 17, 9, 20], + [10, 12, 10, 15] + ], + expectedDefs: [ + [9, 17, 9, 20] + ] + }, + { + caseName: 'C_9', + position: Position.create(4, 14), + expectedRefs: [ + [3, 12, 3, 17], + [4, 12, 4, 17], + [9, 9, 9, 14], + [10, 4, 10, 9] + ], + expectedDefs: [ + [9, 9, 9, 14] + ] + }, + { + caseName: 'S_1', + position: Position.create(6, 10), + expectedRefs: [ + [6, 9, 6, 10], + [7, 4, 7, 5], + [8, 9, 8, 10] + ], + expectedDefs: [ + [7, 4, 7, 5] + ] + }, + { + caseName: 'S_8', + position: Position.create(0, 9), + expectedRefs: [ + [0, 9, 0, 10], + [7, 0, 7, 1] + ], + expectedDefs: [ + [0, 9, 0, 10] + ] + }, + { + caseName: 'D_1', + position: Position.create(15, 10), + expectedRefs: [ + [0, 9, 0, 12], + [6, 17, 6, 20], + [15, 9, 15, 12], + [16, 9, 16, 12], + [17, 9, 17, 12], + [18, 9, 18, 12] + ], + expectedDefs: [ + [0, 9, 0, 12] + ] + }, + { + caseName: 'D_3', + position: Position.create(8, 25), + expectedRefs: [ + [3, 21, 3, 29], + [7, 23, 7, 31], + [8, 21, 8, 29], + [9, 17, 9, 25] + ], + expectedDefs: [ + [7, 23, 7, 31] + ] + }, + { + caseName: 'D_4', + position: Position.create(3, 27), + expectedRefs: [ + [3, 21, 3, 33], + [14, 17, 14, 29] + ], + expectedDefs: [ + [14, 17, 14, 29] + ] + }, + { + caseName: 'D_10', + position: Position.create(0, 0), + expectedRefs: [ + [0, 0, 0, 4], + [1, 0, 1, 4] + ], + expectedDefs: [] + }, + { + caseName: 'D_11', + position: Position.create(3, 7), + expectedRefs: [ + [1, 2, 1, 7], + [3, 7, 3, 12], + [3, 17, 3, 22], + [4, 2, 4, 7] + ], + expectedDefs: [ + [1, 2, 1, 7], + [4, 2, 4, 7] + ] + } + ] + + describe('#findReferences', () => { + beforeEach(() => setup()) + afterEach(() => teardown()) + + it('returns no references for a non-indexed file', () => { + const refs = findReferences( + 'fake.m', Position.create(0, 0), fileInfoIndex, documentManager, RequestType.References + ) + + assert.deepStrictEqual(refs, []) + }) + + it('returns no references for a URI without a document', () => { + (documentManager.get as sinon.SinonStub).returns(undefined) + + const refs = findReferences( + 'G_1.m', Position.create(1, 1), fileInfoIndex, documentManager, RequestType.References + ) + + assert.deepStrictEqual(refs, []) + }) + + function runFindReferencesTestCase (testCaseInfo: RefsAndDefsTestCaseInfo): void { + it(`finds correct references for ${testCaseInfo.caseName}`, () => { + const refs = findReferences( + `${testCaseInfo.caseName}.m`, testCaseInfo.position, fileInfoIndex, documentManager, + RequestType.References + ) + + assertDeepStrictEqualIgnoringOrder( + refs, + createLocations(`${testCaseInfo.caseName}.m`, testCaseInfo.expectedRefs) + ) + }) + } + + refsAndDefsTestCases.forEach(runFindReferencesTestCase) + }) + + describe('#findDefinitions', () => { + beforeEach(() => setup()) + afterEach(() => teardown()) + + it('returns no definitions for a non-indexed file', async () => { + const defs = await findDefinitions( + 'fake.m', Position.create(0, 0), fileInfoIndex, documentManager, pathResolver, indexer, + RequestType.Definition + ) + + assert.deepStrictEqual(defs, []) + }) + + it('returns no definitions for a URI without a document', async () => { + (documentManager.get as sinon.SinonStub).returns(undefined) + + const defs = await findDefinitions( + 'G_1.m', Position.create(1, 1), fileInfoIndex, documentManager, pathResolver, indexer, + RequestType.Definition + ) + + assert.deepStrictEqual(defs, []) + }) + + function runFindDefinitionsTestCase (testCaseInfo: RefsAndDefsTestCaseInfo): void { + it(`finds correct definitions for ${testCaseInfo.caseName}`, async () => { + // These test cases will not test for definitions found + // via the PathResolver (this causes the PathResolver + // to be unable to find the path for a definition) + (mockMvm.isReady as sinon.SinonStub).returns(false) + + const defs = await findDefinitions( + `${testCaseInfo.caseName}.m`, testCaseInfo.position, fileInfoIndex, documentManager, + pathResolver, indexer, RequestType.Definition + ) + + assertDeepStrictEqualIgnoringOrder( + defs, + createLocations(`${testCaseInfo.caseName}.m`, testCaseInfo.expectedDefs) + ) + }) + } + + refsAndDefsTestCases.forEach(runFindDefinitionsTestCase) + }) + + describe('#findReferencesAndDefinitions', () => { + beforeEach(() => setup()) + afterEach(() => teardown()) + + it('returns no references or definitions for a non-indexed file', () => { + const refsAndDefs = findReferencesAndDefinitions( + 'fake.m', Position.create(0, 0), fileInfoIndex, documentManager, + RequestType.DocumentHighlight + ) + + assert.deepStrictEqual(refsAndDefs, { + references: [], + definitions: [] + }) + }) + + it('returns no references or definitions for a URI without a document', () => { + (documentManager.get as sinon.SinonStub).returns(undefined) + + const refsAndDefs = findReferencesAndDefinitions( + 'G_1.m', Position.create(1, 1), fileInfoIndex, documentManager, + RequestType.DocumentHighlight + ) + + assert.deepStrictEqual(refsAndDefs, { + references: [], + definitions: [] + }) + }) + + function runFindReferencesAndDefinitionsTestCase (testCaseInfo: RefsAndDefsTestCaseInfo): void { + it(`finds correct references and definitions for ${testCaseInfo.caseName}`, () => { + const refsAndDefs = findReferencesAndDefinitions( + `${testCaseInfo.caseName}.m`, testCaseInfo.position, fileInfoIndex, documentManager, + RequestType.DocumentHighlight + ) + + assertDeepStrictEqualIgnoringOrder( + refsAndDefs.references, + createLocations(`${testCaseInfo.caseName}.m`, testCaseInfo.expectedRefs) + ) + assertDeepStrictEqualIgnoringOrder( + refsAndDefs.definitions, + createLocations(`${testCaseInfo.caseName}.m`, testCaseInfo.expectedDefs) + ) + }) + } + + refsAndDefsTestCases.forEach(runFindReferencesAndDefinitionsTestCase) + }) +}) + +type RangeTuple = [uinteger, uinteger, uinteger, uinteger] + +function createLocations (uri: string, rangeTuples: RangeTuple[]): Location[] { + return rangeTuples.map(rangeTuple => Location.create( + uri, + Range.create(rangeTuple[0], rangeTuple[1], rangeTuple[2], rangeTuple[3]) + )) +} diff --git a/tests/indexing/rawCodeDataResourceFiles/@MyClass/MyClass.json b/tests/indexing/rawCodeDataResourceFiles/@MyClass/MyClass.json new file mode 100644 index 0000000..ab69e76 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/@MyClass/MyClass.json @@ -0,0 +1,464 @@ +{ + "package": "", + "hasClassInfo": true, + "classDefFolder": "C:\\Users\\sschumac\\OneDrive - MathWorks\\Documents\\Code Analysis Improvements\\Generate Raw Code Data Resource Files\\testData\\@MyClass", + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 27, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "MyClass", + "range": [ + 0, + 9, + 0, + 16 + ] + }, + { + "name": "Base1", + "range": [ + 0, + 19, + 0, + 24 + ] + }, + { + "name": "Base2", + "range": [ + 0, + 27, + 0, + 32 + ] + }, + { + "name": "Base3", + "range": [ + 0, + 35, + 0, + 40 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [ + { + "name": "Base1", + "range": [ + 0, + 19, + 0, + 24 + ] + }, + { + "name": "Base2", + "range": [ + 0, + 27, + 0, + 32 + ] + }, + { + "name": "Base3", + "range": [ + 0, + 35, + 0, + 40 + ] + } + ], + "declarationNameId": { + "name": "MyClass", + "range": [ + 0, + 9, + 0, + 16 + ] + }, + "range": [ + 0, + 0, + 26, + 3 + ], + "isPublic": true, + "propertiesBlocks": [ + { + "name": "properties", + "range": [ + 1, + 4, + 3, + 7 + ] + }, + { + "name": "properties (Constant)", + "range": [ + 5, + 4, + 7, + 7 + ] + } + ], + "enumerationsBlocks": [ + { + "name": "enumeration", + "range": [ + 9, + 4, + 11, + 7 + ] + }, + { + "name": "enumeration", + "range": [ + 13, + 4, + 15, + 7 + ] + } + ], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 17, + 4, + 21, + 7 + ] + }, + { + "name": "methods (Static)", + "range": [ + 23, + 4, + 25, + 7 + ] + } + ], + "properties": [ + { + "name": "Prop", + "range": [ + 2, + 8, + 2, + 12 + ], + "isPublic": true + }, + { + "name": "ConstantProperty", + "range": [ + 6, + 8, + 6, + 24 + ], + "isPublic": true + } + ], + "enumerations": [ + { + "name": "A", + "range": [ + 10, + 8, + 10, + 9 + ], + "isPublic": true + }, + { + "name": "B", + "range": [ + 10, + 11, + 10, + 12 + ], + "isPublic": true + }, + { + "name": "C", + "range": [ + 14, + 8, + 14, + 9 + ], + "isPublic": true + }, + { + "name": "D", + "range": [ + 14, + 11, + 14, + 12 + ], + "isPublic": true + } + ], + "nestedScopes": [ + { + "declarationNameId": { + "name": "myMethod", + "range": [ + 18, + 17, + 18, + 25 + ] + }, + "range": [ + 18, + 8, + 20, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "obj" + ], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 18, + 26, + 18, + 29 + ] + } + ], + "range": [ + 18, + 26, + 18, + 29 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 18, + 26, + 18, + 29 + ] + } + ], + "range": [ + 18, + 26, + 18, + 29 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 19, + 17, + 19, + 20 + ] + } + ], + "range": [ + 19, + 17, + 19, + 20 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "obj", + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 19, + 12, + 19, + 16 + ] + } + ], + "range": [ + 19, + 12, + 19, + 16 + ] + } + ], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "staticMethod", + "range": [ + 24, + 19, + 24, + 31 + ] + }, + "range": [ + 24, + 8, + 24, + 40 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": true, + "isPrototype": true, + "inputArgs": [ + "protoIn" + ], + "outputArgs": [ + "protoOut" + ], + "variableDefinitions": [ + { + "name": "protoIn", + "components": [ + { + "name": "protoIn", + "range": [ + 24, + 32, + 24, + 39 + ] + } + ], + "range": [ + 24, + 32, + 24, + 39 + ] + }, + { + "name": "protoOut", + "components": [ + { + "name": "protoOut", + "range": [ + 24, + 8, + 24, + 16 + ] + } + ], + "range": [ + 24, + 8, + 24, + 16 + ] + } + ], + "variableReferences": [ + { + "name": "protoOut", + "components": [ + { + "name": "protoOut", + "range": [ + 24, + 8, + 24, + 16 + ] + } + ], + "range": [ + 24, + 8, + 24, + 16 + ] + }, + { + "name": "protoIn", + "components": [ + { + "name": "protoIn", + "range": [ + 24, + 32, + 24, + 39 + ] + } + ], + "range": [ + 24, + 32, + 24, + 39 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [] + }, + "timeToIndex": 1.1155165 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/@MyClass/staticMethod.json b/tests/indexing/rawCodeDataResourceFiles/@MyClass/staticMethod.json new file mode 100644 index 0000000..8aaba97 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/@MyClass/staticMethod.json @@ -0,0 +1,201 @@ +{ + "package": "", + "hasClassInfo": true, + "classDefFolder": "C:\\Users\\sschumac\\OneDrive - MathWorks\\Documents\\Code Analysis Improvements\\Generate Raw Code Data Resource Files\\testData\\@MyClass", + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 3, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "staticMethod", + "range": [ + 0, + 19, + 0, + 31 + ] + }, + "range": [ + 0, + 0, + 2, + 3 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "implIn" + ], + "outputArgs": [ + "implOut" + ], + "variableDefinitions": [ + { + "name": "implIn", + "components": [ + { + "name": "implIn", + "range": [ + 0, + 32, + 0, + 38 + ] + } + ], + "range": [ + 0, + 32, + 0, + 38 + ] + }, + { + "name": "implOut", + "components": [ + { + "name": "implOut", + "range": [ + 0, + 9, + 0, + 16 + ] + } + ], + "range": [ + 0, + 9, + 0, + 16 + ] + }, + { + "name": "implOut", + "components": [ + { + "name": "implOut", + "range": [ + 1, + 4, + 1, + 11 + ] + } + ], + "range": [ + 1, + 4, + 1, + 11 + ] + } + ], + "variableReferences": [ + { + "name": "implOut", + "components": [ + { + "name": "implOut", + "range": [ + 0, + 9, + 0, + 16 + ] + } + ], + "range": [ + 0, + 9, + 0, + 16 + ] + }, + { + "name": "implIn", + "components": [ + { + "name": "implIn", + "range": [ + 0, + 32, + 0, + 38 + ] + } + ], + "range": [ + 0, + 32, + 0, + 38 + ] + }, + { + "name": "implOut", + "components": [ + { + "name": "implOut", + "range": [ + 1, + 4, + 1, + 11 + ] + } + ], + "range": [ + 1, + 4, + 1, + 11 + ] + }, + { + "name": "implIn", + "components": [ + { + "name": "implIn", + "range": [ + 1, + 14, + 1, + 20 + ] + } + ], + "range": [ + 1, + 14, + 1, + 20 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.1252256 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_1.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_1.json new file mode 100644 index 0000000..0be5072 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_1.json @@ -0,0 +1,257 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 21, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "C_1", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "C_1", + "range": [ + 17, + 4, + 17, + 7 + ] + }, + { + "name": "C_1", + "range": [ + 18, + 4, + 18, + 7 + ] + }, + { + "name": "C_1", + "range": [ + 19, + 4, + 19, + 7 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [], + "declarationNameId": { + "name": "C_1", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 14, + 3 + ], + "isPublic": true, + "propertiesBlocks": [ + { + "name": "properties (Constant)", + "range": [ + 1, + 4, + 3, + 7 + ] + } + ], + "enumerationsBlocks": [], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 5, + 4, + 8, + 7 + ] + }, + { + "name": "methods (Static)", + "range": [ + 10, + 4, + 13, + 7 + ] + } + ], + "properties": [ + { + "name": "ConstantProperty", + "range": [ + 2, + 8, + 2, + 24 + ], + "isPublic": true + } + ], + "enumerations": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "C_1", + "range": [ + 6, + 23, + 6, + 26 + ] + }, + "range": [ + 6, + 8, + 7, + 11 + ], + "isPublic": true, + "isConstructor": true, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [ + "obj" + ], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "staticMethod", + "range": [ + 11, + 17, + 11, + 29 + ] + }, + "range": [ + 11, + 8, + 12, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": true, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [ + { + "declarationNameId": { + "name": "local", + "range": [ + 16, + 9, + 16, + 14 + ] + }, + "range": [ + 16, + 0, + 20, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.119016 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_2.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_2.json new file mode 100644 index 0000000..01d6d45 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_2.json @@ -0,0 +1,300 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 12, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "C_2", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "OtherClass", + "range": [ + 0, + 15, + 0, + 25 + ] + }, + { + "name": "OtherClass", + "range": [ + 3, + 21, + 3, + 31 + ] + }, + { + "name": "OtherClass", + "range": [ + 9, + 4, + 9, + 14 + ] + }, + { + "name": "OtherClass", + "range": [ + 10, + 4, + 10, + 14 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [ + { + "name": "OtherClass", + "range": [ + 0, + 15, + 0, + 25 + ] + } + ], + "declarationNameId": { + "name": "C_2", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 6, + 3 + ], + "isPublic": true, + "propertiesBlocks": [], + "enumerationsBlocks": [], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 1, + 4, + 5, + 7 + ] + } + ], + "properties": [], + "enumerations": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "OtherClass", + "range": [ + 2, + 26, + 2, + 36 + ] + }, + "range": [ + 2, + 8, + 4, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "obj" + ], + "outputArgs": [ + "newObj" + ], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 37, + 2, + 40 + ] + } + ], + "range": [ + 2, + 37, + 2, + 40 + ] + }, + { + "name": "newObj", + "components": [ + { + "name": "newObj", + "range": [ + 2, + 17, + 2, + 23 + ] + } + ], + "range": [ + 2, + 17, + 2, + 23 + ] + }, + { + "name": "newObj", + "components": [ + { + "name": "newObj", + "range": [ + 3, + 12, + 3, + 18 + ] + } + ], + "range": [ + 3, + 12, + 3, + 18 + ] + } + ], + "variableReferences": [ + { + "name": "newObj", + "components": [ + { + "name": "newObj", + "range": [ + 2, + 17, + 2, + 23 + ] + } + ], + "range": [ + 2, + 17, + 2, + 23 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 37, + 2, + 40 + ] + } + ], + "range": [ + 2, + 37, + 2, + 40 + ] + }, + { + "name": "newObj", + "components": [ + { + "name": "newObj", + "range": [ + 3, + 12, + 3, + 18 + ] + } + ], + "range": [ + 3, + 12, + 3, + 18 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [ + { + "declarationNameId": { + "name": "local", + "range": [ + 8, + 9, + 8, + 14 + ] + }, + "range": [ + 8, + 0, + 11, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0427382 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_3.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_3.json new file mode 100644 index 0000000..687a017 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_3.json @@ -0,0 +1,697 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 26, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "C_3", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "C_3", + "range": [ + 13, + 17, + 13, + 20 + ] + }, + { + "name": "C_3", + "range": [ + 24, + 9, + 24, + 12 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [], + "declarationNameId": { + "name": "C_3", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 21, + 3 + ], + "isPublic": true, + "propertiesBlocks": [ + { + "name": "properties", + "range": [ + 1, + 4, + 3, + 7 + ] + }, + { + "name": "properties (Constant)", + "range": [ + 4, + 4, + 6, + 7 + ] + } + ], + "enumerationsBlocks": [], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 8, + 4, + 20, + 7 + ] + } + ], + "properties": [ + { + "name": "MyProperty", + "range": [ + 2, + 8, + 2, + 18 + ], + "isPublic": true + }, + { + "name": "ConstantProperty", + "range": [ + 5, + 8, + 5, + 24 + ], + "isPublic": true + } + ], + "enumerations": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "C_3", + "range": [ + 9, + 23, + 9, + 26 + ] + }, + "range": [ + 9, + 8, + 14, + 11 + ], + "isPublic": true, + "isConstructor": true, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [ + "obj" + ], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 9, + 17, + 9, + 20 + ] + } + ], + "range": [ + 9, + 17, + 9, + 20 + ] + }, + { + "name": "obj.MyProperty", + "components": [ + { + "name": "obj", + "range": [ + 11, + 12, + 11, + 15 + ] + }, + { + "name": "MyProperty", + "range": [ + 11, + 16, + 11, + 26 + ] + } + ], + "range": [ + 11, + 12, + 11, + 26 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 9, + 17, + 9, + 20 + ] + } + ], + "range": [ + 9, + 17, + 9, + 20 + ] + }, + { + "name": "obj.MyProperty", + "components": [ + { + "name": "obj", + "range": [ + 10, + 17, + 10, + 20 + ] + }, + { + "name": "MyProperty", + "range": [ + 10, + 21, + 10, + 31 + ] + } + ], + "range": [ + 10, + 17, + 10, + 31 + ] + }, + { + "name": "obj.MyProperty", + "components": [ + { + "name": "obj", + "range": [ + 11, + 12, + 11, + 15 + ] + }, + { + "name": "MyProperty", + "range": [ + 11, + 16, + 11, + 26 + ] + } + ], + "range": [ + 11, + 12, + 11, + 26 + ] + }, + { + "name": "obj.ConstantProperty", + "components": [ + { + "name": "obj", + "range": [ + 12, + 17, + 12, + 20 + ] + }, + { + "name": "ConstantProperty", + "range": [ + 12, + 21, + 12, + 37 + ] + } + ], + "range": [ + 12, + 17, + 12, + 37 + ] + } + ], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 10, + 12, + 10, + 16 + ] + } + ], + "range": [ + 10, + 12, + 10, + 16 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 12, + 12, + 12, + 16 + ] + } + ], + "range": [ + 12, + 12, + 12, + 16 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 13, + 12, + 13, + 16 + ] + } + ], + "range": [ + 13, + 12, + 13, + 16 + ] + } + ], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "get.MyProperty", + "range": [ + 16, + 23, + 16, + 37 + ] + }, + "range": [ + 16, + 8, + 17, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "obj" + ], + "outputArgs": [ + "val" + ], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 16, + 38, + 16, + 41 + ] + } + ], + "range": [ + 16, + 38, + 16, + 41 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 16, + 17, + 16, + 20 + ] + } + ], + "range": [ + 16, + 17, + 16, + 20 + ] + } + ], + "variableReferences": [ + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 16, + 17, + 16, + 20 + ] + } + ], + "range": [ + 16, + 17, + 16, + 20 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 16, + 38, + 16, + 41 + ] + } + ], + "range": [ + 16, + 38, + 16, + 41 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "set.MyProperty", + "range": [ + 18, + 23, + 18, + 37 + ] + }, + "range": [ + 18, + 8, + 19, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "obj", + "val" + ], + "outputArgs": [ + "obj" + ], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 18, + 38, + 18, + 41 + ] + } + ], + "range": [ + 18, + 38, + 18, + 41 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 18, + 43, + 18, + 46 + ] + } + ], + "range": [ + 18, + 43, + 18, + 46 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 18, + 17, + 18, + 20 + ] + } + ], + "range": [ + 18, + 17, + 18, + 20 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 18, + 17, + 18, + 20 + ] + } + ], + "range": [ + 18, + 17, + 18, + 20 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 18, + 38, + 18, + 41 + ] + } + ], + "range": [ + 18, + 38, + 18, + 41 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 18, + 43, + 18, + 46 + ] + } + ], + "range": [ + 18, + 43, + 18, + 46 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [ + { + "declarationNameId": { + "name": "local", + "range": [ + 23, + 9, + 23, + 14 + ] + }, + "range": [ + 23, + 0, + 25, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 24, + 4, + 24, + 8 + ] + } + ], + "range": [ + 24, + 4, + 24, + 8 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.1187228 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_6.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_6.json new file mode 100644 index 0000000..798ff52 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_6.json @@ -0,0 +1,257 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 21, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "C_6", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "C_6", + "range": [ + 17, + 4, + 17, + 7 + ] + }, + { + "name": "C_6", + "range": [ + 18, + 4, + 18, + 7 + ] + }, + { + "name": "C_6", + "range": [ + 19, + 4, + 19, + 7 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [], + "declarationNameId": { + "name": "C_6", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 14, + 3 + ], + "isPublic": true, + "propertiesBlocks": [ + { + "name": "properties (Constant)", + "range": [ + 1, + 4, + 3, + 7 + ] + } + ], + "enumerationsBlocks": [], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 5, + 4, + 8, + 7 + ] + }, + { + "name": "methods (Static)", + "range": [ + 10, + 4, + 13, + 7 + ] + } + ], + "properties": [ + { + "name": "ConstantProperty", + "range": [ + 2, + 8, + 2, + 24 + ], + "isPublic": true + } + ], + "enumerations": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "C_6", + "range": [ + 6, + 23, + 6, + 26 + ] + }, + "range": [ + 6, + 8, + 7, + 11 + ], + "isPublic": true, + "isConstructor": true, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [ + "obj" + ], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "staticMethod", + "range": [ + 11, + 17, + 11, + 29 + ] + }, + "range": [ + 11, + 8, + 12, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": true, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [ + { + "declarationNameId": { + "name": "local", + "range": [ + 16, + 9, + 16, + 14 + ] + }, + "range": [ + 16, + 0, + 20, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0251549 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_7.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_7.json new file mode 100644 index 0000000..3fae760 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_7.json @@ -0,0 +1,266 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 22, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "C_7", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "C_7", + "range": [ + 17, + 4, + 17, + 7 + ] + }, + { + "name": "C_7", + "range": [ + 18, + 4, + 18, + 7 + ] + }, + { + "name": "C_7", + "range": [ + 19, + 4, + 19, + 7 + ] + }, + { + "name": "C_7", + "range": [ + 20, + 4, + 20, + 7 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [], + "declarationNameId": { + "name": "C_7", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 14, + 3 + ], + "isPublic": true, + "propertiesBlocks": [ + { + "name": "properties (Constant)", + "range": [ + 1, + 4, + 3, + 7 + ] + } + ], + "enumerationsBlocks": [], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 5, + 4, + 8, + 7 + ] + }, + { + "name": "methods (Static)", + "range": [ + 10, + 4, + 13, + 7 + ] + } + ], + "properties": [ + { + "name": "ConstantProperty", + "range": [ + 2, + 8, + 2, + 24 + ], + "isPublic": true + } + ], + "enumerations": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "C_7", + "range": [ + 6, + 23, + 6, + 26 + ] + }, + "range": [ + 6, + 8, + 7, + 11 + ], + "isPublic": true, + "isConstructor": true, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [ + "obj" + ], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "range": [ + 6, + 17, + 6, + 20 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "staticMethod", + "range": [ + 11, + 17, + 11, + 29 + ] + }, + "range": [ + 11, + 8, + 12, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": true, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [ + { + "declarationNameId": { + "name": "local", + "range": [ + 16, + 9, + 16, + 14 + ] + }, + "range": [ + 16, + 0, + 21, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0201831 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_8.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_8.json new file mode 100644 index 0000000..ec91130 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_8.json @@ -0,0 +1,674 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 25, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "C_8", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [], + "declarationNameId": { + "name": "C_8", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 24, + 3 + ], + "isPublic": true, + "propertiesBlocks": [], + "enumerationsBlocks": [], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 1, + 4, + 17, + 7 + ] + }, + { + "name": "methods (Static)", + "range": [ + 19, + 4, + 23, + 7 + ] + } + ], + "properties": [], + "enumerations": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "C_8", + "range": [ + 2, + 23, + 2, + 26 + ] + }, + "range": [ + 2, + 8, + 7, + 11 + ], + "isPublic": true, + "isConstructor": true, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "val" + ], + "outputArgs": [ + "obj" + ], + "variableDefinitions": [ + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 2, + 27, + 2, + 30 + ] + } + ], + "range": [ + 2, + 27, + 2, + 30 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 17, + 2, + 20 + ] + } + ], + "range": [ + 2, + 17, + 2, + 20 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 17, + 2, + 20 + ] + } + ], + "range": [ + 2, + 17, + 2, + 20 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 2, + 27, + 2, + 30 + ] + } + ], + "range": [ + 2, + 27, + 2, + 30 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 3, + 16, + 3, + 19 + ] + } + ], + "range": [ + 3, + 16, + 3, + 19 + ] + }, + { + "name": "obj.fun", + "components": [ + { + "name": "obj", + "range": [ + 4, + 12, + 4, + 15 + ] + }, + { + "name": "fun", + "range": [ + 4, + 16, + 4, + 19 + ] + } + ], + "range": [ + 4, + 12, + 4, + 19 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 6, + 16, + 6, + 19 + ] + } + ], + "range": [ + 6, + 16, + 6, + 19 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "obj", + "name": "fun", + "components": [ + { + "name": "fun", + "range": [ + 3, + 12, + 3, + 15 + ] + } + ], + "range": [ + 3, + 12, + 3, + 15 + ] + }, + { + "firstArgIdName": "val", + "name": "fun", + "components": [ + { + "name": "fun", + "range": [ + 6, + 12, + 6, + 15 + ] + } + ], + "range": [ + 6, + 12, + 6, + 15 + ] + } + ], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "fun", + "range": [ + 9, + 17, + 9, + 20 + ] + }, + "range": [ + 9, + 8, + 16, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "obj", + "otherVal" + ], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 9, + 21, + 9, + 24 + ] + } + ], + "range": [ + 9, + 21, + 9, + 24 + ] + }, + { + "name": "otherVal", + "components": [ + { + "name": "otherVal", + "range": [ + 9, + 26, + 9, + 34 + ] + } + ], + "range": [ + 9, + 26, + 9, + 34 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 9, + 21, + 9, + 24 + ] + } + ], + "range": [ + 9, + 21, + 9, + 24 + ] + }, + { + "name": "otherVal", + "components": [ + { + "name": "otherVal", + "range": [ + 9, + 26, + 9, + 34 + ] + } + ], + "range": [ + 9, + 26, + 9, + 34 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 10, + 16, + 10, + 19 + ] + } + ], + "range": [ + 10, + 16, + 10, + 19 + ] + }, + { + "name": "obj.staticMethod", + "components": [ + { + "name": "obj", + "range": [ + 11, + 12, + 11, + 15 + ] + }, + { + "name": "staticMethod", + "range": [ + 11, + 16, + 11, + 28 + ] + } + ], + "range": [ + 11, + 12, + 11, + 28 + ] + }, + { + "name": "otherVal.fun", + "components": [ + { + "name": "otherVal", + "range": [ + 14, + 12, + 14, + 20 + ] + }, + { + "name": "fun", + "range": [ + 14, + 21, + 14, + 24 + ] + } + ], + "range": [ + 14, + 12, + 14, + 24 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 15, + 25, + 15, + 28 + ] + } + ], + "range": [ + 15, + 25, + 15, + 28 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "obj", + "name": "fun", + "components": [ + { + "name": "fun", + "range": [ + 10, + 12, + 10, + 15 + ] + } + ], + "range": [ + 10, + 12, + 10, + 15 + ] + }, + { + "firstArgIdName": "obj", + "name": "staticMethod", + "components": [ + { + "name": "staticMethod", + "range": [ + 15, + 12, + 15, + 24 + ] + } + ], + "range": [ + 15, + 12, + 15, + 24 + ] + } + ], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "staticMethod", + "range": [ + 20, + 17, + 20, + 29 + ] + }, + "range": [ + 20, + 8, + 22, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": true, + "isPrototype": false, + "inputArgs": [ + "val" + ], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 20, + 30, + 20, + 33 + ] + } + ], + "range": [ + 20, + 30, + 20, + 33 + ] + } + ], + "variableReferences": [ + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 20, + 30, + 20, + 33 + ] + } + ], + "range": [ + 20, + 30, + 20, + 33 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 21, + 16, + 21, + 19 + ] + } + ], + "range": [ + 21, + 16, + 21, + 19 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "val", + "name": "fun", + "components": [ + { + "name": "fun", + "range": [ + 21, + 12, + 21, + 15 + ] + } + ], + "range": [ + 21, + 12, + 21, + 15 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [] + }, + "timeToIndex": 0.0346818 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_9.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_9.json new file mode 100644 index 0000000..d02c803 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/classCases/C_9.json @@ -0,0 +1,234 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 12, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "C_9", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [], + "declarationNameId": { + "name": "C_9", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 7, + 3 + ], + "isPublic": true, + "propertiesBlocks": [], + "enumerationsBlocks": [], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 1, + 4, + 6, + 7 + ] + } + ], + "properties": [], + "enumerations": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "fun", + "range": [ + 2, + 17, + 2, + 20 + ] + }, + "range": [ + 2, + 8, + 5, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "obj" + ], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 21, + 2, + 24 + ] + } + ], + "range": [ + 2, + 21, + 2, + 24 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 21, + 2, + 24 + ] + } + ], + "range": [ + 2, + 21, + 2, + 24 + ] + } + ], + "functionOrUnboundReferences": [ + { + "name": "local", + "components": [ + { + "name": "local", + "range": [ + 3, + 12, + 3, + 17 + ] + } + ], + "range": [ + 3, + 12, + 3, + 17 + ] + }, + { + "name": "local", + "components": [ + { + "name": "local", + "range": [ + 4, + 12, + 4, + 17 + ] + } + ], + "range": [ + 4, + 12, + 4, + 17 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [ + { + "declarationNameId": { + "name": "local", + "range": [ + 9, + 9, + 9, + 14 + ] + }, + "range": [ + 9, + 0, + 11, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "local", + "components": [ + { + "name": "local", + "range": [ + 10, + 4, + 10, + 9 + ] + } + ], + "range": [ + 10, + 4, + 10, + 9 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0164199 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_1.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_1.json new file mode 100644 index 0000000..f4b3542 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_1.json @@ -0,0 +1,338 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 20, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "D_1", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "D_1", + "range": [ + 6, + 17, + 6, + 20 + ] + }, + { + "name": "D_1", + "range": [ + 15, + 9, + 15, + 12 + ] + }, + { + "name": "D_1", + "range": [ + 16, + 9, + 16, + 12 + ] + }, + { + "name": "D_1", + "range": [ + 17, + 9, + 17, + 12 + ] + }, + { + "name": "D_1", + "range": [ + 18, + 9, + 18, + 12 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [], + "declarationNameId": { + "name": "D_1", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 12, + 3 + ], + "isPublic": true, + "propertiesBlocks": [ + { + "name": "properties (Constant)", + "range": [ + 1, + 4, + 3, + 7 + ] + } + ], + "enumerationsBlocks": [ + { + "name": "enumeration", + "range": [ + 9, + 4, + 11, + 7 + ] + } + ], + "methodsBlocks": [ + { + "name": "methods (Static)", + "range": [ + 4, + 4, + 8, + 7 + ] + } + ], + "properties": [ + { + "name": "ConstantProperty", + "range": [ + 2, + 8, + 2, + 24 + ], + "isPublic": true + } + ], + "enumerations": [ + { + "name": "A", + "range": [ + 10, + 8, + 10, + 9 + ], + "isPublic": true + }, + { + "name": "B", + "range": [ + 10, + 11, + 10, + 12 + ], + "isPublic": true + }, + { + "name": "C", + "range": [ + 10, + 14, + 10, + 15 + ], + "isPublic": true + } + ], + "nestedScopes": [ + { + "declarationNameId": { + "name": "staticMethod", + "range": [ + 5, + 17, + 5, + 29 + ] + }, + "range": [ + 5, + 8, + 7, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": true, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 6, + 12, + 6, + 16 + ] + } + ], + "range": [ + 6, + 12, + 6, + 16 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [ + { + "declarationNameId": { + "name": "local", + "range": [ + 14, + 9, + 14, + 14 + ] + }, + "range": [ + 14, + 0, + 19, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 15, + 4, + 15, + 8 + ] + } + ], + "range": [ + 15, + 4, + 15, + 8 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 16, + 4, + 16, + 8 + ] + } + ], + "range": [ + 16, + 4, + 16, + 8 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 17, + 4, + 17, + 8 + ] + } + ], + "range": [ + 17, + 4, + 17, + 8 + ] + }, + { + "firstArgIdName": "D_1", + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 18, + 4, + 18, + 8 + ] + } + ], + "range": [ + 18, + 4, + 18, + 8 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0197946 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_10.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_10.json new file mode 100644 index 0000000..711da03 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_10.json @@ -0,0 +1,149 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 3, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [ + { + "name": "pkg1.mypkg.pkg2.a", + "components": [ + { + "name": "pkg1", + "range": [ + 0, + 0, + 0, + 4 + ] + }, + { + "name": "mypkg", + "range": [ + 0, + 5, + 0, + 10 + ] + }, + { + "name": "pkg2", + "range": [ + 0, + 11, + 0, + 15 + ] + }, + { + "name": "a", + "range": [ + 0, + 16, + 0, + 17 + ] + } + ], + "range": [ + 0, + 0, + 0, + 17 + ] + }, + { + "name": "pkg1.mypkg.b", + "components": [ + { + "name": "pkg1", + "range": [ + 1, + 0, + 1, + 4 + ] + }, + { + "name": "mypkg", + "range": [ + 1, + 5, + 1, + 10 + ] + }, + { + "name": "b", + "range": [ + 1, + 11, + 1, + 12 + ] + } + ], + "range": [ + 1, + 0, + 1, + 12 + ] + }, + { + "name": "pkg3.mypkg.c", + "components": [ + { + "name": "pkg3", + "range": [ + 2, + 0, + 2, + 4 + ] + }, + { + "name": "mypkg", + "range": [ + 2, + 5, + 2, + 10 + ] + }, + { + "name": "c", + "range": [ + 2, + 11, + 2, + 12 + ] + } + ], + "range": [ + 2, + 0, + 2, + 12 + ] + } + ], + "functionScopes": [] + }, + "timeToIndex": 0.0204163 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_11.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_11.json new file mode 100644 index 0000000..aea6c27 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_11.json @@ -0,0 +1,338 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 5, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [ + { + "name": "a", + "components": [ + { + "name": "a", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "a.field", + "components": [ + { + "name": "a", + "range": [ + 1, + 0, + 1, + 1 + ] + }, + { + "name": "field", + "range": [ + 1, + 2, + 1, + 7 + ] + } + ], + "range": [ + 1, + 0, + 1, + 7 + ] + }, + { + "name": "b.field", + "components": [ + { + "name": "b", + "range": [ + 2, + 0, + 2, + 1 + ] + }, + { + "name": "field", + "range": [ + 2, + 2, + 2, + 7 + ] + } + ], + "range": [ + 2, + 0, + 2, + 7 + ] + }, + { + "name": "a.field.subfield", + "components": [ + { + "name": "a", + "range": [ + 4, + 0, + 4, + 1 + ] + }, + { + "name": "field", + "range": [ + 4, + 2, + 4, + 7 + ] + }, + { + "name": "subfield", + "range": [ + 4, + 8, + 4, + 16 + ] + } + ], + "range": [ + 4, + 0, + 4, + 16 + ] + } + ], + "variableReferences": [ + { + "name": "a", + "components": [ + { + "name": "a", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "a.field", + "components": [ + { + "name": "a", + "range": [ + 1, + 0, + 1, + 1 + ] + }, + { + "name": "field", + "range": [ + 1, + 2, + 1, + 7 + ] + } + ], + "range": [ + 1, + 0, + 1, + 7 + ] + }, + { + "name": "b.field", + "components": [ + { + "name": "b", + "range": [ + 2, + 0, + 2, + 1 + ] + }, + { + "name": "field", + "range": [ + 2, + 2, + 2, + 7 + ] + } + ], + "range": [ + 2, + 0, + 2, + 7 + ] + }, + { + "name": "a.field", + "components": [ + { + "name": "a", + "range": [ + 3, + 5, + 3, + 6 + ] + }, + { + "name": "field", + "range": [ + 3, + 7, + 3, + 12 + ] + } + ], + "range": [ + 3, + 5, + 3, + 12 + ] + }, + { + "name": "a.field", + "components": [ + { + "name": "a", + "range": [ + 3, + 15, + 3, + 16 + ] + }, + { + "name": "field", + "range": [ + 3, + 17, + 3, + 22 + ] + } + ], + "range": [ + 3, + 15, + 3, + 22 + ] + }, + { + "name": "a.field.subfield", + "components": [ + { + "name": "a", + "range": [ + 4, + 0, + 4, + 1 + ] + }, + { + "name": "field", + "range": [ + 4, + 2, + 4, + 7 + ] + }, + { + "name": "subfield", + "range": [ + 4, + 8, + 4, + 16 + ] + } + ], + "range": [ + 4, + 0, + 4, + 16 + ] + } + ], + "globals": [], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 3, + 0, + 3, + 4 + ] + } + ], + "range": [ + 3, + 0, + 3, + 4 + ] + } + ], + "functionScopes": [] + }, + "timeToIndex": 0.0231952 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_3.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_3.json new file mode 100644 index 0000000..3b0a95e --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_3.json @@ -0,0 +1,999 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 28, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "D_3", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "D_3", + "range": [ + 14, + 17, + 14, + 20 + ] + }, + { + "name": "D_3", + "range": [ + 25, + 10, + 25, + 13 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [], + "declarationNameId": { + "name": "D_3", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 22, + 3 + ], + "isPublic": true, + "propertiesBlocks": [], + "enumerationsBlocks": [], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 1, + 4, + 16, + 7 + ] + }, + { + "name": "methods (Static)", + "range": [ + 17, + 4, + 21, + 7 + ] + } + ], + "properties": [], + "enumerations": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "D_3", + "range": [ + 2, + 23, + 2, + 26 + ] + }, + "range": [ + 2, + 8, + 6, + 11 + ], + "isPublic": true, + "isConstructor": true, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "val" + ], + "outputArgs": [ + "obj" + ], + "variableDefinitions": [ + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 2, + 27, + 2, + 30 + ] + } + ], + "range": [ + 2, + 27, + 2, + 30 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 17, + 2, + 20 + ] + } + ], + "range": [ + 2, + 17, + 2, + 20 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 17, + 2, + 20 + ] + } + ], + "range": [ + 2, + 17, + 2, + 20 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 2, + 27, + 2, + 30 + ] + } + ], + "range": [ + 2, + 27, + 2, + 30 + ] + }, + { + "name": "obj.myMethod", + "components": [ + { + "name": "obj", + "range": [ + 3, + 17, + 3, + 20 + ] + }, + { + "name": "myMethod", + "range": [ + 3, + 21, + 3, + 29 + ] + } + ], + "range": [ + 3, + 17, + 3, + 29 + ] + }, + { + "name": "val.myMethod", + "components": [ + { + "name": "val", + "range": [ + 5, + 17, + 5, + 20 + ] + }, + { + "name": "myMethod", + "range": [ + 5, + 21, + 5, + 29 + ] + } + ], + "range": [ + 5, + 17, + 5, + 29 + ] + } + ], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 3, + 12, + 3, + 16 + ] + } + ], + "range": [ + 3, + 12, + 3, + 16 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 5, + 12, + 5, + 16 + ] + } + ], + "range": [ + 5, + 12, + 5, + 16 + ] + } + ], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "myMethod", + "range": [ + 7, + 23, + 7, + 31 + ] + }, + "range": [ + 7, + 8, + 15, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "obj", + "val" + ], + "outputArgs": [ + "out" + ], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 7, + 32, + 7, + 35 + ] + } + ], + "range": [ + 7, + 32, + 7, + 35 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 7, + 37, + 7, + 40 + ] + } + ], + "range": [ + 7, + 37, + 7, + 40 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 7, + 17, + 7, + 20 + ] + } + ], + "range": [ + 7, + 17, + 7, + 20 + ] + } + ], + "variableReferences": [ + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 7, + 17, + 7, + 20 + ] + } + ], + "range": [ + 7, + 17, + 7, + 20 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 7, + 32, + 7, + 35 + ] + } + ], + "range": [ + 7, + 32, + 7, + 35 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 7, + 37, + 7, + 40 + ] + } + ], + "range": [ + 7, + 37, + 7, + 40 + ] + }, + { + "name": "obj.myMethod", + "components": [ + { + "name": "obj", + "range": [ + 8, + 17, + 8, + 20 + ] + }, + { + "name": "myMethod", + "range": [ + 8, + 21, + 8, + 29 + ] + } + ], + "range": [ + 8, + 17, + 8, + 29 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 9, + 26, + 9, + 29 + ] + } + ], + "range": [ + 9, + 26, + 9, + 29 + ] + }, + { + "name": "out.myMethod", + "components": [ + { + "name": "out", + "range": [ + 11, + 17, + 11, + 20 + ] + }, + { + "name": "myMethod", + "range": [ + 11, + 21, + 11, + 29 + ] + } + ], + "range": [ + 11, + 17, + 11, + 29 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 12, + 26, + 12, + 29 + ] + } + ], + "range": [ + 12, + 26, + 12, + 29 + ] + }, + { + "name": "val.myMethod", + "components": [ + { + "name": "val", + "range": [ + 13, + 17, + 13, + 20 + ] + }, + { + "name": "myMethod", + "range": [ + 13, + 21, + 13, + 29 + ] + } + ], + "range": [ + 13, + 17, + 13, + 29 + ] + } + ], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 8, + 12, + 8, + 16 + ] + } + ], + "range": [ + 8, + 12, + 8, + 16 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 9, + 12, + 9, + 16 + ] + } + ], + "range": [ + 9, + 12, + 9, + 16 + ] + }, + { + "firstArgIdName": "obj", + "name": "myMethod", + "components": [ + { + "name": "myMethod", + "range": [ + 9, + 17, + 9, + 25 + ] + } + ], + "range": [ + 9, + 17, + 9, + 25 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 11, + 12, + 11, + 16 + ] + } + ], + "range": [ + 11, + 12, + 11, + 16 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 12, + 12, + 12, + 16 + ] + } + ], + "range": [ + 12, + 12, + 12, + 16 + ] + }, + { + "firstArgIdName": "out", + "name": "myMethod", + "components": [ + { + "name": "myMethod", + "range": [ + 12, + 17, + 12, + 25 + ] + } + ], + "range": [ + 12, + 17, + 12, + 25 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 13, + 12, + 13, + 16 + ] + } + ], + "range": [ + 13, + 12, + 13, + 16 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 14, + 12, + 14, + 16 + ] + } + ], + "range": [ + 14, + 12, + 14, + 16 + ] + } + ], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "staticMethod", + "range": [ + 18, + 17, + 18, + 29 + ] + }, + "range": [ + 18, + 8, + 20, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": true, + "isPrototype": false, + "inputArgs": [ + "val" + ], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 18, + 30, + 18, + 33 + ] + } + ], + "range": [ + 18, + 30, + 18, + 33 + ] + } + ], + "variableReferences": [ + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 18, + 30, + 18, + 33 + ] + } + ], + "range": [ + 18, + 30, + 18, + 33 + ] + }, + { + "name": "val.myMethod", + "components": [ + { + "name": "val", + "range": [ + 19, + 17, + 19, + 20 + ] + }, + { + "name": "myMethod", + "range": [ + 19, + 21, + 19, + 29 + ] + } + ], + "range": [ + 19, + 17, + 19, + 29 + ] + } + ], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 19, + 12, + 19, + 16 + ] + } + ], + "range": [ + 19, + 12, + 19, + 16 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [ + { + "declarationNameId": { + "name": "local", + "range": [ + 24, + 9, + 24, + 14 + ] + }, + "range": [ + 24, + 0, + 27, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 25, + 4, + 25, + 7 + ] + } + ], + "range": [ + 25, + 4, + 25, + 7 + ] + } + ], + "variableReferences": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 25, + 4, + 25, + 7 + ] + } + ], + "range": [ + 25, + 4, + 25, + 7 + ] + }, + { + "name": "obj.myMethod", + "components": [ + { + "name": "obj", + "range": [ + 26, + 9, + 26, + 12 + ] + }, + { + "name": "myMethod", + "range": [ + 26, + 13, + 26, + 21 + ] + } + ], + "range": [ + 26, + 9, + 26, + 21 + ] + } + ], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 26, + 4, + 26, + 8 + ] + } + ], + "range": [ + 26, + 4, + 26, + 8 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0251284 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_4.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_4.json new file mode 100644 index 0000000..587f483 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_4.json @@ -0,0 +1,673 @@ +{ + "package": "", + "hasClassInfo": true, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 22, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [ + { + "name": "D_4", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "D_4", + "range": [ + 4, + 17, + 4, + 20 + ] + }, + { + "name": "D_4", + "range": [ + 8, + 30, + 8, + 33 + ] + }, + { + "name": "D_4", + "range": [ + 20, + 4, + 20, + 7 + ] + } + ], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "classScope": { + "baseClasses": [], + "declarationNameId": { + "name": "D_4", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 17, + 3 + ], + "isPublic": true, + "propertiesBlocks": [], + "enumerationsBlocks": [], + "methodsBlocks": [ + { + "name": "methods", + "range": [ + 1, + 4, + 12, + 7 + ] + }, + { + "name": "methods (Static)", + "range": [ + 13, + 4, + 16, + 7 + ] + } + ], + "properties": [], + "enumerations": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "myMethod", + "range": [ + 2, + 23, + 2, + 31 + ] + }, + "range": [ + 2, + 8, + 11, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "obj", + "val" + ], + "outputArgs": [ + "out" + ], + "variableDefinitions": [ + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 32, + 2, + 35 + ] + } + ], + "range": [ + 2, + 32, + 2, + 35 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 2, + 37, + 2, + 40 + ] + } + ], + "range": [ + 2, + 37, + 2, + 40 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 2, + 17, + 2, + 20 + ] + } + ], + "range": [ + 2, + 17, + 2, + 20 + ] + } + ], + "variableReferences": [ + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 2, + 17, + 2, + 20 + ] + } + ], + "range": [ + 2, + 17, + 2, + 20 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 2, + 32, + 2, + 35 + ] + } + ], + "range": [ + 2, + 32, + 2, + 35 + ] + }, + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 2, + 37, + 2, + 40 + ] + } + ], + "range": [ + 2, + 37, + 2, + 40 + ] + }, + { + "name": "obj.staticMethod", + "components": [ + { + "name": "obj", + "range": [ + 3, + 17, + 3, + 20 + ] + }, + { + "name": "staticMethod", + "range": [ + 3, + 21, + 3, + 33 + ] + } + ], + "range": [ + 3, + 17, + 3, + 33 + ] + }, + { + "name": "obj", + "components": [ + { + "name": "obj", + "range": [ + 7, + 30, + 7, + 33 + ] + } + ], + "range": [ + 7, + 30, + 7, + 33 + ] + }, + { + "name": "out.staticMethod", + "components": [ + { + "name": "out", + "range": [ + 9, + 17, + 9, + 20 + ] + }, + { + "name": "staticMethod", + "range": [ + 9, + 21, + 9, + 33 + ] + } + ], + "range": [ + 9, + 17, + 9, + 33 + ] + }, + { + "name": "val.myMethod", + "components": [ + { + "name": "val", + "range": [ + 10, + 17, + 10, + 20 + ] + }, + { + "name": "myMethod", + "range": [ + 10, + 21, + 10, + 29 + ] + } + ], + "range": [ + 10, + 17, + 10, + 29 + ] + } + ], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 3, + 12, + 3, + 16 + ] + } + ], + "range": [ + 3, + 12, + 3, + 16 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 4, + 12, + 4, + 16 + ] + } + ], + "range": [ + 4, + 12, + 4, + 16 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 6, + 12, + 6, + 16 + ] + } + ], + "range": [ + 6, + 12, + 6, + 16 + ] + }, + { + "name": "staticMethod", + "components": [ + { + "name": "staticMethod", + "range": [ + 6, + 17, + 6, + 29 + ] + } + ], + "range": [ + 6, + 17, + 6, + 29 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 7, + 12, + 7, + 16 + ] + } + ], + "range": [ + 7, + 12, + 7, + 16 + ] + }, + { + "firstArgIdName": "obj", + "name": "staticMethod", + "components": [ + { + "name": "staticMethod", + "range": [ + 7, + 17, + 7, + 29 + ] + } + ], + "range": [ + 7, + 17, + 7, + 29 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 8, + 12, + 8, + 16 + ] + } + ], + "range": [ + 8, + 12, + 8, + 16 + ] + }, + { + "firstArgIdName": "D_4", + "name": "staticMethod", + "components": [ + { + "name": "staticMethod", + "range": [ + 8, + 17, + 8, + 29 + ] + } + ], + "range": [ + 8, + 17, + 8, + 29 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 9, + 12, + 9, + 16 + ] + } + ], + "range": [ + 9, + 12, + 9, + 16 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 10, + 12, + 10, + 16 + ] + } + ], + "range": [ + 10, + 12, + 10, + 16 + ] + } + ], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "staticMethod", + "range": [ + 14, + 17, + 14, + 29 + ] + }, + "range": [ + 14, + 8, + 15, + 11 + ], + "isPublic": true, + "isConstructor": false, + "isStaticMethod": true, + "isPrototype": false, + "inputArgs": [ + "val" + ], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 14, + 30, + 14, + 33 + ] + } + ], + "range": [ + 14, + 30, + 14, + 33 + ] + } + ], + "variableReferences": [ + { + "name": "val", + "components": [ + { + "name": "val", + "range": [ + 14, + 30, + 14, + 33 + ] + } + ], + "range": [ + 14, + 30, + 14, + 33 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "functionScopes": [ + { + "declarationNameId": { + "name": "local", + "range": [ + 19, + 9, + 19, + 14 + ] + }, + "range": [ + 19, + 0, + 21, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0187955 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_1.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_1.json new file mode 100644 index 0000000..be8b961 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_1.json @@ -0,0 +1,75 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 4, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [ + { + "name": "fun", + "components": [ + { + "name": "fun", + "range": [ + 3, + 0, + 3, + 3 + ] + } + ], + "range": [ + 3, + 0, + 3, + 3 + ] + } + ], + "functionScopes": [ + { + "declarationNameId": { + "name": "fun", + "range": [ + 0, + 9, + 0, + 12 + ] + }, + "range": [ + 0, + 0, + 1, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0145689 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_10.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_10.json new file mode 100644 index 0000000..9b96ae0 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_10.json @@ -0,0 +1,375 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 6, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "parent", + "range": [ + 0, + 15, + 0, + 21 + ] + }, + "range": [ + 0, + 0, + 5, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "in" + ], + "outputArgs": [ + "out" + ], + "variableDefinitions": [ + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 0, + 22, + 0, + 24 + ] + } + ], + "range": [ + 0, + 22, + 0, + 24 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "variableReferences": [ + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 0, + 22, + 0, + 24 + ] + } + ], + "range": [ + 0, + 22, + 0, + 24 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "range": [ + 1, + 4, + 1, + 7 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 1, + 10, + 1, + 12 + ] + } + ], + "range": [ + 1, + 10, + 1, + 12 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "nested", + "range": [ + 2, + 19, + 2, + 25 + ] + }, + "range": [ + 2, + 4, + 4, + 7 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "in" + ], + "outputArgs": [ + "out" + ], + "variableDefinitions": [ + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 2, + 26, + 2, + 28 + ] + } + ], + "range": [ + 2, + 26, + 2, + 28 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 2, + 13, + 2, + 16 + ] + } + ], + "range": [ + 2, + 13, + 2, + 16 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 3, + 8, + 3, + 11 + ] + } + ], + "range": [ + 3, + 8, + 3, + 11 + ] + } + ], + "variableReferences": [ + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 2, + 13, + 2, + 16 + ] + } + ], + "range": [ + 2, + 13, + 2, + 16 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 2, + 26, + 2, + 28 + ] + } + ], + "range": [ + 2, + 26, + 2, + 28 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 3, + 8, + 3, + 11 + ] + } + ], + "range": [ + 3, + 8, + 3, + 11 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 3, + 14, + 3, + 16 + ] + } + ], + "range": [ + 3, + 14, + 3, + 16 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + } + ] + }, + "timeToIndex": 0.019375 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_11.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_11.json new file mode 100644 index 0000000..1a1acb5 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_11.json @@ -0,0 +1,375 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 6, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "parent", + "range": [ + 0, + 15, + 0, + 21 + ] + }, + "range": [ + 0, + 0, + 5, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "in" + ], + "outputArgs": [ + "out" + ], + "variableDefinitions": [ + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 0, + 22, + 0, + 24 + ] + } + ], + "range": [ + 0, + 22, + 0, + 24 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "variableReferences": [ + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 0, + 22, + 0, + 24 + ] + } + ], + "range": [ + 0, + 22, + 0, + 24 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "range": [ + 1, + 4, + 1, + 7 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 1, + 10, + 1, + 12 + ] + } + ], + "range": [ + 1, + 10, + 1, + 12 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "nested", + "range": [ + 2, + 19, + 2, + 25 + ] + }, + "range": [ + 2, + 4, + 4, + 7 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "in" + ], + "outputArgs": [ + "out" + ], + "variableDefinitions": [ + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 2, + 26, + 2, + 28 + ] + } + ], + "range": [ + 2, + 26, + 2, + 28 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 2, + 13, + 2, + 16 + ] + } + ], + "range": [ + 2, + 13, + 2, + 16 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 3, + 8, + 3, + 11 + ] + } + ], + "range": [ + 3, + 8, + 3, + 11 + ] + } + ], + "variableReferences": [ + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 2, + 13, + 2, + 16 + ] + } + ], + "range": [ + 2, + 13, + 2, + 16 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 2, + 26, + 2, + 28 + ] + } + ], + "range": [ + 2, + 26, + 2, + 28 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 3, + 8, + 3, + 11 + ] + } + ], + "range": [ + 3, + 8, + 3, + 11 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 3, + 14, + 3, + 16 + ] + } + ], + "range": [ + 3, + 14, + 3, + 16 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + } + ] + }, + "timeToIndex": 0.0163569 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_12.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_12.json new file mode 100644 index 0000000..f4205e2 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_12.json @@ -0,0 +1,200 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 3, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "fun", + "range": [ + 0, + 15, + 0, + 18 + ] + }, + "range": [ + 0, + 0, + 2, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "arg" + ], + "outputArgs": [ + "arg" + ], + "variableDefinitions": [ + { + "name": "arg", + "components": [ + { + "name": "arg", + "range": [ + 0, + 19, + 0, + 22 + ] + } + ], + "range": [ + 0, + 19, + 0, + 22 + ] + }, + { + "name": "arg", + "components": [ + { + "name": "arg", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "arg", + "components": [ + { + "name": "arg", + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "variableReferences": [ + { + "name": "arg", + "components": [ + { + "name": "arg", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "arg", + "components": [ + { + "name": "arg", + "range": [ + 0, + 19, + 0, + 22 + ] + } + ], + "range": [ + 0, + 19, + 0, + 22 + ] + }, + { + "name": "arg", + "components": [ + { + "name": "arg", + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "range": [ + 1, + 4, + 1, + 7 + ] + }, + { + "name": "arg", + "components": [ + { + "name": "arg", + "range": [ + 1, + 10, + 1, + 13 + ] + } + ], + "range": [ + 1, + 10, + 1, + 13 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0133434 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_2.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_2.json new file mode 100644 index 0000000..aca3af4 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_2.json @@ -0,0 +1,366 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 11, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "f1", + "range": [ + 0, + 9, + 0, + 11 + ] + }, + "range": [ + 0, + 0, + 4, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 2, + 4, + 2, + 5 + ] + } + ], + "range": [ + 2, + 4, + 2, + 5 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 3, + 4, + 3, + 5 + ] + } + ], + "range": [ + 3, + 4, + 3, + 5 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 2, + 4, + 2, + 5 + ] + } + ], + "range": [ + 2, + 4, + 2, + 5 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 3, + 4, + 3, + 5 + ] + } + ], + "range": [ + 3, + 4, + 3, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 3, + 8, + 3, + 9 + ] + } + ], + "range": [ + 3, + 8, + 3, + 9 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "f2", + "range": [ + 6, + 9, + 6, + 11 + ] + }, + "range": [ + 6, + 0, + 10, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 7, + 4, + 7, + 5 + ] + } + ], + "range": [ + 7, + 4, + 7, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 8, + 4, + 8, + 5 + ] + } + ], + "range": [ + 8, + 4, + 8, + 5 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 9, + 4, + 9, + 5 + ] + } + ], + "range": [ + 9, + 4, + 9, + 5 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 7, + 4, + 7, + 5 + ] + } + ], + "range": [ + 7, + 4, + 7, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 8, + 4, + 8, + 5 + ] + } + ], + "range": [ + 8, + 4, + 8, + 5 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 9, + 4, + 9, + 5 + ] + } + ], + "range": [ + 9, + 4, + 9, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 9, + 8, + 9, + 9 + ] + } + ], + "range": [ + 9, + 8, + 9, + 9 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0158939 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_21.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_21.json new file mode 100644 index 0000000..9649eea --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_21.json @@ -0,0 +1,200 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 3, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "fun", + "range": [ + 0, + 15, + 0, + 18 + ] + }, + "range": [ + 0, + 0, + 2, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "in" + ], + "outputArgs": [ + "out" + ], + "variableDefinitions": [ + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 0, + 19, + 0, + 21 + ] + } + ], + "range": [ + 0, + 19, + 0, + 21 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "variableReferences": [ + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 0, + 9, + 0, + 12 + ] + } + ], + "range": [ + 0, + 9, + 0, + 12 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 0, + 19, + 0, + 21 + ] + } + ], + "range": [ + 0, + 19, + 0, + 21 + ] + }, + { + "name": "out", + "components": [ + { + "name": "out", + "range": [ + 1, + 4, + 1, + 7 + ] + } + ], + "range": [ + 1, + 4, + 1, + 7 + ] + }, + { + "name": "in", + "components": [ + { + "name": "in", + "range": [ + 1, + 10, + 1, + 12 + ] + } + ], + "range": [ + 1, + 10, + 1, + 12 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0107171 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_3.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_3.json new file mode 100644 index 0000000..c1b25a6 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_3.json @@ -0,0 +1,235 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 15, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [ + { + "name": "f1", + "components": [ + { + "name": "f1", + "range": [ + 4, + 0, + 4, + 2 + ] + } + ], + "range": [ + 4, + 0, + 4, + 2 + ] + } + ], + "functionScopes": [ + { + "declarationNameId": { + "name": "f1", + "range": [ + 0, + 9, + 0, + 11 + ] + }, + "range": [ + 0, + 0, + 2, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "f2", + "components": [ + { + "name": "f2", + "range": [ + 1, + 4, + 1, + 6 + ] + } + ], + "range": [ + 1, + 4, + 1, + 6 + ] + } + ], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "f2", + "range": [ + 6, + 9, + 6, + 11 + ] + }, + "range": [ + 6, + 0, + 14, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "f1", + "components": [ + { + "name": "f1", + "range": [ + 7, + 4, + 7, + 6 + ] + } + ], + "range": [ + 7, + 4, + 7, + 6 + ] + }, + { + "name": "f2", + "components": [ + { + "name": "f2", + "range": [ + 8, + 4, + 8, + 6 + ] + } + ], + "range": [ + 8, + 4, + 8, + 6 + ] + }, + { + "name": "f3", + "components": [ + { + "name": "f3", + "range": [ + 9, + 4, + 9, + 6 + ] + } + ], + "range": [ + 9, + 4, + 9, + 6 + ] + } + ], + "globals": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "f3", + "range": [ + 11, + 13, + 11, + 15 + ] + }, + "range": [ + 11, + 4, + 13, + 7 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "f3", + "components": [ + { + "name": "f3", + "range": [ + 12, + 8, + 12, + 10 + ] + } + ], + "range": [ + 12, + 8, + 12, + 10 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + } + ] + }, + "timeToIndex": 0.0134318 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_4.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_4.json new file mode 100644 index 0000000..a0606f3 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_4.json @@ -0,0 +1,298 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 8, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "range": [ + 1, + 0, + 1, + 1 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "fun", + "range": [ + 3, + 9, + 3, + 12 + ] + }, + "range": [ + 3, + 0, + 7, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 4, + 4, + 4, + 5 + ] + } + ], + "range": [ + 4, + 4, + 4, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 5, + 4, + 5, + 5 + ] + } + ], + "range": [ + 5, + 4, + 5, + 5 + ] + }, + { + "name": "z", + "components": [ + { + "name": "z", + "range": [ + 6, + 4, + 6, + 5 + ] + } + ], + "range": [ + 6, + 4, + 6, + 5 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 4, + 4, + 4, + 5 + ] + } + ], + "range": [ + 4, + 4, + 4, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 5, + 4, + 5, + 5 + ] + } + ], + "range": [ + 5, + 4, + 5, + 5 + ] + }, + { + "name": "z", + "components": [ + { + "name": "z", + "range": [ + 6, + 4, + 6, + 5 + ] + } + ], + "range": [ + 6, + 4, + 6, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 6, + 8, + 6, + 9 + ] + } + ], + "range": [ + 6, + 8, + 6, + 9 + ] + } + ], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0093003 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_5.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_5.json new file mode 100644 index 0000000..feedd59 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_5.json @@ -0,0 +1,197 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 6, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "range": [ + 1, + 0, + 1, + 1 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "fun", + "range": [ + 3, + 9, + 3, + 12 + ] + }, + "range": [ + 3, + 0, + 5, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 4, + 4, + 4, + 8 + ] + } + ], + "range": [ + 4, + 4, + 4, + 8 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 4, + 9, + 4, + 10 + ] + } + ], + "range": [ + 4, + 9, + 4, + 10 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0108758 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_6.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_6.json new file mode 100644 index 0000000..835fe1d --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_6.json @@ -0,0 +1,206 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 9, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "range": [ + 1, + 0, + 1, + 1 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "fun", + "range": [ + 3, + 9, + 3, + 12 + ] + }, + "range": [ + 3, + 0, + 8, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 4, + 4, + 4, + 5 + ] + } + ], + "range": [ + 4, + 4, + 4, + 5 + ] + } + ], + "globals": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "x", + "range": [ + 6, + 13, + 6, + 14 + ] + }, + "range": [ + 6, + 4, + 7, + 7 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + } + ] + }, + "timeToIndex": 0.0120442 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_7.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_7.json new file mode 100644 index 0000000..e4fac14 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_7.json @@ -0,0 +1,164 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 9, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "f1", + "range": [ + 0, + 9, + 0, + 11 + ] + }, + "range": [ + 0, + 0, + 3, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "unknown1", + "components": [ + { + "name": "unknown1", + "range": [ + 1, + 4, + 1, + 12 + ] + } + ], + "range": [ + 1, + 4, + 1, + 12 + ] + }, + { + "name": "unknown2", + "components": [ + { + "name": "unknown2", + "range": [ + 2, + 4, + 2, + 12 + ] + } + ], + "range": [ + 2, + 4, + 2, + 12 + ] + } + ], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "f2", + "range": [ + 5, + 9, + 5, + 11 + ] + }, + "range": [ + 5, + 0, + 8, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [ + { + "name": "unknown1", + "components": [ + { + "name": "unknown1", + "range": [ + 6, + 4, + 6, + 12 + ] + } + ], + "range": [ + 6, + 4, + 6, + 12 + ] + }, + { + "name": "unknown2", + "components": [ + { + "name": "unknown2", + "range": [ + 7, + 4, + 7, + 12 + ] + } + ], + "range": [ + 7, + 4, + 7, + 12 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.011053 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_8.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_8.json new file mode 100644 index 0000000..1ddcee0 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_8.json @@ -0,0 +1,251 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 8, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "parent", + "range": [ + 0, + 9, + 0, + 15 + ] + }, + "range": [ + 0, + 0, + 7, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 2, + 9, + 2, + 10 + ] + } + ], + "range": [ + 2, + 9, + 2, + 10 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "x", + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 2, + 4, + 2, + 8 + ] + } + ], + "range": [ + 2, + 4, + 2, + 8 + ] + } + ], + "globals": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "nested", + "range": [ + 3, + 13, + 3, + 19 + ] + }, + "range": [ + 3, + 4, + 6, + 7 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 4, + 8, + 4, + 9 + ] + } + ], + "range": [ + 4, + 8, + 4, + 9 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 4, + 8, + 4, + 9 + ] + } + ], + "range": [ + 4, + 8, + 4, + 9 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 5, + 13, + 5, + 14 + ] + } + ], + "range": [ + 5, + 13, + 5, + 14 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "x", + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 5, + 8, + 5, + 12 + ] + } + ], + "range": [ + 5, + 8, + 5, + 12 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + } + ] + }, + "timeToIndex": 0.0114399 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_9.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_9.json new file mode 100644 index 0000000..f8a9d58 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/functionCases/F_9.json @@ -0,0 +1,251 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 8, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [ + { + "declarationNameId": { + "name": "parent", + "range": [ + 0, + 9, + 0, + 15 + ] + }, + "range": [ + 0, + 0, + 7, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 2, + 9, + 2, + 10 + ] + } + ], + "range": [ + 2, + 9, + 2, + 10 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "x", + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 2, + 4, + 2, + 8 + ] + } + ], + "range": [ + 2, + 4, + 2, + 8 + ] + } + ], + "globals": [], + "nestedScopes": [ + { + "declarationNameId": { + "name": "nested", + "range": [ + 3, + 13, + 3, + 19 + ] + }, + "range": [ + 3, + 4, + 6, + 7 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 4, + 8, + 4, + 9 + ] + } + ], + "range": [ + 4, + 8, + 4, + 9 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 4, + 8, + 4, + 9 + ] + } + ], + "range": [ + 4, + 8, + 4, + 9 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 5, + 13, + 5, + 14 + ] + } + ], + "range": [ + 5, + 13, + 5, + 14 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "x", + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 5, + 8, + 5, + 12 + ] + } + ], + "range": [ + 5, + 8, + 5, + 12 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + } + ] + }, + "timeToIndex": 0.0094496 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_1.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_1.json new file mode 100644 index 0000000..88df7ee --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_1.json @@ -0,0 +1,167 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 3, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "range": [ + 1, + 0, + 1, + 1 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 2, + 0, + 2, + 1 + ] + } + ], + "range": [ + 2, + 0, + 2, + 1 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 0, + 1, + 1 + ] + } + ], + "range": [ + 1, + 0, + 1, + 1 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 2, + 0, + 2, + 1 + ] + } + ], + "range": [ + 2, + 0, + 2, + 1 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 2, + 4, + 2, + 5 + ] + } + ], + "range": [ + 2, + 4, + 2, + 5 + ] + } + ], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [] + }, + "timeToIndex": 0.006726 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_12.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_12.json new file mode 100644 index 0000000..c97b7d8 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_12.json @@ -0,0 +1,146 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 3, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [ + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 0, + 0, + 0, + 4 + ] + } + ], + "range": [ + 0, + 0, + 0, + 4 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 5, + 0, + 6 + ] + } + ], + "range": [ + 0, + 5, + 0, + 6 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 1, + 0, + 1, + 4 + ] + } + ], + "range": [ + 1, + 0, + 1, + 4 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 1, + 5, + 1, + 6 + ] + } + ], + "range": [ + 1, + 5, + 1, + 6 + ] + }, + { + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 2, + 0, + 2, + 4 + ] + } + ], + "range": [ + 2, + 0, + 2, + 4 + ] + }, + { + "name": "y", + "components": [ + { + "name": "y", + "range": [ + 2, + 5, + 2, + 6 + ] + } + ], + "range": [ + 2, + 5, + 2, + 6 + ] + } + ], + "functionScopes": [] + }, + "timeToIndex": 0.0076803 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_2.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_2.json new file mode 100644 index 0000000..73f7f77 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_2.json @@ -0,0 +1,95 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 6, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [ + { + "name": "fun", + "components": [ + { + "name": "fun", + "range": [ + 0, + 0, + 0, + 3 + ] + } + ], + "range": [ + 0, + 0, + 0, + 3 + ] + }, + { + "name": "fun", + "components": [ + { + "name": "fun", + "range": [ + 5, + 0, + 5, + 3 + ] + } + ], + "range": [ + 5, + 0, + 5, + 3 + ] + } + ], + "functionScopes": [ + { + "declarationNameId": { + "name": "fun", + "range": [ + 2, + 9, + 2, + 12 + ] + }, + "range": [ + 2, + 0, + 3, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0083835 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_3.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_3.json new file mode 100644 index 0000000..f27e045 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_3.json @@ -0,0 +1,147 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 3, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "str", + "components": [ + { + "name": "str", + "range": [ + 1, + 0, + 1, + 3 + ] + } + ], + "range": [ + 1, + 0, + 1, + 3 + ] + }, + { + "name": "chr", + "components": [ + { + "name": "chr", + "range": [ + 2, + 0, + 2, + 3 + ] + } + ], + "range": [ + 2, + 0, + 2, + 3 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + }, + { + "name": "str", + "components": [ + { + "name": "str", + "range": [ + 1, + 0, + 1, + 3 + ] + } + ], + "range": [ + 1, + 0, + 1, + 3 + ] + }, + { + "name": "chr", + "components": [ + { + "name": "chr", + "range": [ + 2, + 0, + 2, + 3 + ] + } + ], + "range": [ + 2, + 0, + 2, + 3 + ] + } + ], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [] + }, + "timeToIndex": 0.006578 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_4.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_4.json new file mode 100644 index 0000000..36c9055 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_4.json @@ -0,0 +1,67 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 2, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [] + }, + "timeToIndex": 0.0091239 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_5.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_5.json new file mode 100644 index 0000000..f5b3720 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_5.json @@ -0,0 +1,67 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 4, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [] + }, + "timeToIndex": 0.0067074 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_6.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_6.json new file mode 100644 index 0000000..4b2ee29 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/generalCases/G_6.json @@ -0,0 +1,127 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 3, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [ + { + "name": "i", + "components": [ + { + "name": "i", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + }, + { + "name": "i", + "components": [ + { + "name": "i", + "range": [ + 0, + 4, + 0, + 5 + ] + } + ], + "range": [ + 0, + 4, + 0, + 5 + ] + } + ], + "variableReferences": [ + { + "name": "i", + "components": [ + { + "name": "i", + "range": [ + 0, + 4, + 0, + 5 + ] + } + ], + "range": [ + 0, + 4, + 0, + 5 + ] + }, + { + "name": "i", + "components": [ + { + "name": "i", + "range": [ + 1, + 4, + 1, + 5 + ] + } + ], + "range": [ + 1, + 4, + 1, + 5 + ] + }, + { + "name": "i", + "components": [ + { + "name": "i", + "range": [ + 1, + 8, + 1, + 9 + ] + } + ], + "range": [ + 1, + 8, + 1, + 9 + ] + } + ], + "globals": [], + "functionOrUnboundReferences": [], + "functionScopes": [] + }, + "timeToIndex": 0.0085066 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/shadowingCases/S_1.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/shadowingCases/S_1.json new file mode 100644 index 0000000..d3a888d --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/shadowingCases/S_1.json @@ -0,0 +1,228 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 10, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [ + { + "name": "A", + "components": [ + { + "name": "A", + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "range": [ + 0, + 0, + 0, + 1 + ] + } + ], + "functionScopes": [ + { + "declarationNameId": { + "name": "A", + "range": [ + 2, + 9, + 2, + 10 + ] + }, + "range": [ + 2, + 0, + 3, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "func", + "range": [ + 5, + 9, + 5, + 13 + ] + }, + "range": [ + 5, + 0, + 9, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "A", + "components": [ + { + "name": "A", + "range": [ + 7, + 4, + 7, + 5 + ] + } + ], + "range": [ + 7, + 4, + 7, + 5 + ] + } + ], + "variableReferences": [ + { + "name": "A", + "components": [ + { + "name": "A", + "range": [ + 6, + 9, + 6, + 10 + ] + } + ], + "range": [ + 6, + 9, + 6, + 10 + ] + }, + { + "name": "A", + "components": [ + { + "name": "A", + "range": [ + 7, + 4, + 7, + 5 + ] + } + ], + "range": [ + 7, + 4, + 7, + 5 + ] + }, + { + "name": "A", + "components": [ + { + "name": "A", + "range": [ + 8, + 9, + 8, + 10 + ] + } + ], + "range": [ + 8, + 9, + 8, + 10 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "A", + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 6, + 4, + 6, + 8 + ] + } + ], + "range": [ + 6, + 4, + 6, + 8 + ] + }, + { + "firstArgIdName": "A", + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 8, + 4, + 8, + 8 + ] + } + ], + "range": [ + 8, + 4, + 8, + 8 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0119257 +} \ No newline at end of file diff --git a/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/shadowingCases/S_8.json b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/shadowingCases/S_8.json new file mode 100644 index 0000000..a1cfe11 --- /dev/null +++ b/tests/indexing/rawCodeDataResourceFiles/improvedCodeAnalysisSpecCases/shadowingCases/S_8.json @@ -0,0 +1,189 @@ +{ + "package": "", + "hasClassInfo": false, + "sections": [ + { + "name": "Section1", + "range": [ + 0, + 0, + 8, + 0 + ], + "isExplicit": false + } + ], + "classReferences": [], + "globalScope": { + "variableDefinitions": [], + "variableReferences": [], + "globals": [], + "functionOrUnboundReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 7, + 0, + 7, + 1 + ] + } + ], + "range": [ + 7, + 0, + 7, + 1 + ] + } + ], + "functionScopes": [ + { + "declarationNameId": { + "name": "x", + "range": [ + 0, + 9, + 0, + 10 + ] + }, + "range": [ + 0, + 0, + 1, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [], + "outputArgs": [], + "variableDefinitions": [], + "variableReferences": [], + "functionOrUnboundReferences": [], + "globals": [], + "nestedScopes": [] + }, + { + "declarationNameId": { + "name": "fun", + "range": [ + 3, + 9, + 3, + 12 + ] + }, + "range": [ + 3, + 0, + 5, + 3 + ], + "isPublic": false, + "isConstructor": false, + "isStaticMethod": false, + "isPrototype": false, + "inputArgs": [ + "x" + ], + "outputArgs": [], + "variableDefinitions": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 3, + 13, + 3, + 14 + ] + } + ], + "range": [ + 3, + 13, + 3, + 14 + ] + } + ], + "variableReferences": [ + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 3, + 13, + 3, + 14 + ] + } + ], + "range": [ + 3, + 13, + 3, + 14 + ] + }, + { + "name": "x", + "components": [ + { + "name": "x", + "range": [ + 4, + 9, + 4, + 10 + ] + } + ], + "range": [ + 4, + 9, + 4, + 10 + ] + } + ], + "functionOrUnboundReferences": [ + { + "firstArgIdName": "x", + "name": "disp", + "components": [ + { + "name": "disp", + "range": [ + 4, + 4, + 4, + 8 + ] + } + ], + "range": [ + 4, + 4, + 4, + 8 + ] + } + ], + "globals": [], + "nestedScopes": [] + } + ] + }, + "timeToIndex": 0.0125905 +} \ No newline at end of file diff --git a/tests/indexing/testData/@MyClass/MyClass.m b/tests/indexing/testData/@MyClass/MyClass.m new file mode 100644 index 0000000..c53aa0b --- /dev/null +++ b/tests/indexing/testData/@MyClass/MyClass.m @@ -0,0 +1,27 @@ +classdef MyClass < Base1 & Base2 & Base3 + properties + Prop + end + + properties (Constant) + ConstantProperty = 5 + end + + enumeration + A, B + end + + enumeration + C, D + end + + methods + function myMethod(obj) + disp(obj); + end + end + + methods (Static) + protoOut = staticMethod(protoIn) + end +end diff --git a/tests/indexing/testData/@MyClass/staticMethod.m b/tests/indexing/testData/@MyClass/staticMethod.m new file mode 100644 index 0000000..1ff43f1 --- /dev/null +++ b/tests/indexing/testData/@MyClass/staticMethod.m @@ -0,0 +1,3 @@ +function implOut = staticMethod(implIn) + implOut = implIn; +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_1.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_1.m new file mode 100644 index 0000000..56771ca --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_1.m @@ -0,0 +1,21 @@ +classdef C_1 + properties (Constant) + ConstantProperty = 5 + end + + methods + function obj = C_1() + end + end + + methods (Static) + function staticMethod() + end + end +end + +function local() + C_1(); + C_1.ConstantProperty; + C_1.staticMethod(); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_2.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_2.m new file mode 100644 index 0000000..5443239 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_2.m @@ -0,0 +1,12 @@ +classdef C_2 < OtherClass + methods + function newObj = OtherClass(obj) + newObj = OtherClass(); + end + end +end + +function local() + OtherClass.ConstantProperty; + OtherClass.staticMethod(); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_3.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_3.m new file mode 100644 index 0000000..c90c586 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_3.m @@ -0,0 +1,26 @@ +classdef C_3 + properties + MyProperty = 4 + end + properties (Constant) + ConstantProperty = 5 + end + + methods + function obj = C_3() + disp(obj.MyProperty) + obj.MyProperty = 5; + disp(obj.ConstantProperty) + disp(C_3.ConstantProperty) + end + + function val = get.MyProperty(obj) + end + function obj = set.MyProperty(obj, val) + end + end +end + +function local() + disp(C_3.ConstantProperty) +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_6.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_6.m new file mode 100644 index 0000000..db30b48 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_6.m @@ -0,0 +1,21 @@ +classdef C_6 + properties (Constant) + ConstantProperty = 5 + end + + methods + function obj = C_6() + end + end + + methods (Static) + function staticMethod() + end + end +end + +function local() + C_6(); + C_6.ConstantProperty; + C_6.staticMethod(); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_7.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_7.m new file mode 100644 index 0000000..d6c5fa9 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_7.m @@ -0,0 +1,22 @@ +classdef C_7 + properties (Constant) + ConstantProperty = 5 + end + + methods + function obj = C_7() + end + end + + methods (Static) + function staticMethod() + end + end +end + +function local() + C_7(); + C_7(); + C_7.ConstantProperty; + C_7.staticMethod(); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_8.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_8.m new file mode 100644 index 0000000..ad20a5d --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_8.m @@ -0,0 +1,25 @@ +classdef C_8 + methods + function obj = C_8(val) + fun(obj); + obj.fun(); + + fun(val); % not a reference + end + + function fun(obj, otherVal) + fun(obj); + obj.staticMethod(); + + % not references + otherVal.fun(); + staticMethod(obj); + end + end + + methods (Static) + function staticMethod(val) + fun(val); % not a reference + end + end +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_9.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_9.m new file mode 100644 index 0000000..45299b4 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/classCases/C_9.m @@ -0,0 +1,12 @@ +classdef C_9 + methods + function fun(obj) + local(); + local(); + end + end +end + +function local() + local(); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_1.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_1.m new file mode 100644 index 0000000..bb76d31 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_1.m @@ -0,0 +1,20 @@ +classdef D_1 + properties (Constant) + ConstantProperty + end + methods (Static) + function staticMethod() + disp(D_1.ConstantProperty); + end + end + enumeration + A, B, C + end +end + +function local() + disp(D_1.ConstantProperty); + disp(D_1.staticMethod()); + disp(D_1.A); + disp(D_1); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_10.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_10.m new file mode 100644 index 0000000..072c09b --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_10.m @@ -0,0 +1,3 @@ +pkg1.mypkg.pkg2.a; +pkg1.mypkg.b; +pkg3.mypkg.c; diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_11.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_11.m new file mode 100644 index 0000000..25ba4e0 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_11.m @@ -0,0 +1,5 @@ +a = 5; +a.field = 5; +b.field = 5; +disp(a.field + a.field); +a.field.subfield = 6; diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_3.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_3.m new file mode 100644 index 0000000..b91b766 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_3.m @@ -0,0 +1,28 @@ +classdef D_3 + methods + function obj = D_3(val) + disp(obj.myMethod(1)); + + disp(val.myMethod(1)); + end + function out = myMethod(obj, val) + disp(obj.myMethod(1)); + disp(myMethod(obj, 1)); + + disp(out.myMethod(1)); + disp(myMethod(out, 1)); + disp(val.myMethod(1)); + disp(D_3.myMethod(1)); + end + end + methods (Static) + function staticMethod(val) + disp(val.myMethod(1)); + end + end +end + +function local() + obj = D_3(); + disp(obj.myMethod(1)); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_4.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_4.m new file mode 100644 index 0000000..8d1b236 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/dottedIdentifierCases/D_4.m @@ -0,0 +1,22 @@ +classdef D_4 + methods + function out = myMethod(obj, val) + disp(obj.staticMethod(1)); + disp(D_4.staticMethod(1)); + + disp(staticMethod(1)); + disp(staticMethod(obj, 1)); + disp(staticMethod(D_4, 1)); + disp(out.staticMethod(1)); + disp(val.myMethod(1)); + end + end + methods (Static) + function staticMethod(val) + end + end +end + +function local() + D_4.staticMethod(1); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_1.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_1.m new file mode 100644 index 0000000..a879ace --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_1.m @@ -0,0 +1,4 @@ +function fun() +end + +fun(); diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_10.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_10.m new file mode 100644 index 0000000..aa26a12 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_10.m @@ -0,0 +1,6 @@ +function out = parent(in) + out = in; + function out = nested(in) + out = in; + end +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_11.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_11.m new file mode 100644 index 0000000..aa26a12 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_11.m @@ -0,0 +1,6 @@ +function out = parent(in) + out = in; + function out = nested(in) + out = in; + end +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_12.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_12.m new file mode 100644 index 0000000..182d8b2 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_12.m @@ -0,0 +1,3 @@ +function arg = fun(arg) + arg = arg + 1; +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_2.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_2.m new file mode 100644 index 0000000..662c283 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_2.m @@ -0,0 +1,11 @@ +function f1() + x = 5; + x = 6; + y = x; +end + +function f2() + x = 5; + x = 6; + y = x; +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_21.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_21.m new file mode 100644 index 0000000..e1162b1 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_21.m @@ -0,0 +1,3 @@ +function out = fun(in) + out = in; +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_3.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_3.m new file mode 100644 index 0000000..c553e1f --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_3.m @@ -0,0 +1,15 @@ +function f1() + f2(); +end + +f1(); + +function f2() + f1(); + f2(); + f3(); + + function f3() + f3(); + end +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_4.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_4.m new file mode 100644 index 0000000..c131381 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_4.m @@ -0,0 +1,8 @@ +x = 5; +y = x; + +function fun() + x = 5; + x = 6; + z = x; +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_5.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_5.m new file mode 100644 index 0000000..4262be6 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_5.m @@ -0,0 +1,6 @@ +x = 5; +y = x; + +function fun() + disp(x); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_6.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_6.m new file mode 100644 index 0000000..c53d356 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_6.m @@ -0,0 +1,9 @@ +x = 5; +y = x; + +function fun() + x(); + + function x() + end +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_7.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_7.m new file mode 100644 index 0000000..082af26 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_7.m @@ -0,0 +1,9 @@ +function f1() + unknown1(1); + unknown2; +end + +function f2() + unknown1(1); + unknown2; +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_8.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_8.m new file mode 100644 index 0000000..d519e54 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_8.m @@ -0,0 +1,8 @@ +function parent() + x = 5; + disp(x); + function nested() + x = 6; + disp(x); + end +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_9.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_9.m new file mode 100644 index 0000000..d519e54 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/functionCases/F_9.m @@ -0,0 +1,8 @@ +function parent() + x = 5; + disp(x); + function nested() + x = 6; + disp(x); + end +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_1.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_1.m new file mode 100644 index 0000000..0ced334 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_1.m @@ -0,0 +1,3 @@ +x = 5; +x = 6; +y = x; diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_12.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_12.m new file mode 100644 index 0000000..39736ea --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_12.m @@ -0,0 +1,3 @@ +disp(x); +disp(x); +disp(y); diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_2.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_2.m new file mode 100644 index 0000000..d261b7b --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_2.m @@ -0,0 +1,6 @@ +fun(); + +function fun() +end + +fun(); diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_3.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_3.m new file mode 100644 index 0000000..86cc4a5 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_3.m @@ -0,0 +1,3 @@ +x = 5; +str = "x is a variable"; +chr = 'x is a variable'; diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_4.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_4.m new file mode 100644 index 0000000..37ff0e5 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_4.m @@ -0,0 +1,2 @@ +x = 5; +% x is a variable diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_5.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_5.m new file mode 100644 index 0000000..a3948e0 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_5.m @@ -0,0 +1,4 @@ +x = 5; +%{ +x is a variable +%} diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_6.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_6.m new file mode 100644 index 0000000..97fa462 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/generalCases/G_6.m @@ -0,0 +1,3 @@ +for i = 1:5 + i = i + 1; +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/shadowingCases/S_1.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/shadowingCases/S_1.m new file mode 100644 index 0000000..b5cfe45 --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/shadowingCases/S_1.m @@ -0,0 +1,10 @@ +A(); + +function A() +end + +function func() + disp(A); % refers to variable + A = 5; + disp(A); +end diff --git a/tests/indexing/testData/improvedCodeAnalysisSpecCases/shadowingCases/S_8.m b/tests/indexing/testData/improvedCodeAnalysisSpecCases/shadowingCases/S_8.m new file mode 100644 index 0000000..a56a2df --- /dev/null +++ b/tests/indexing/testData/improvedCodeAnalysisSpecCases/shadowingCases/S_8.m @@ -0,0 +1,8 @@ +function x() +end + +function fun(x) + disp(x); +end + +x(); diff --git a/tests/matlab/matlabls/handlers/indexing/tParseInfoFromDocument.m b/tests/matlab/matlabls/handlers/indexing/tParseInfoFromDocument.m index 4f9dce2..5e30990 100644 --- a/tests/matlab/matlabls/handlers/indexing/tParseInfoFromDocument.m +++ b/tests/matlab/matlabls/handlers/indexing/tParseInfoFromDocument.m @@ -10,279 +10,400 @@ function setup (~) end methods (Test) - % Test parsing info from a script file function testParsingScriptFile (testCase) + import matlab.unittest.constraints.HasField + filePath = fullfile(pwd, 'testData', 'sampleScript.m'); code = fileread(filePath); result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 0); - testCase.assertEmpty(result.packageName); - testCase.assertFalse(result.classInfo.hasClassInfo); - testCase.assertEmpty(result.functionInfo); - - % Note: Function references appear first in the list - expectedReferences = { - {'disp', toRange(1, 1, 1, 5)},... - {'linspace', toRange(4, 5, 4, 13)},... - {'sin', toRange(5, 5, 5, 8)},... - {'plot', toRange(8, 1, 8, 5)},... - {'x', toRange(4, 1, 4, 2)},... - {'y', toRange(5, 1, 5, 2)},... - {'x', toRange(5, 9, 5, 10)},... - {'x', toRange(8, 6, 8, 7)},... - {'y', toRange(8, 9, 8, 10)} + testCase.assertEmpty(result.package); + testCase.assertEmpty(result.classReferences); + testCase.assertFalse(result.hasClassInfo); + testCase.assertThat(result, ~HasField("classDefFolder")); + testCase.assertThat(result, ~HasField("errorInfo")); + + expectedFunctionOrUnboundReferences = { + ... In order of appearance + createSingleComponentIdentifier('disp', [1, 1, 1, 5]),... + createSingleComponentIdentifier('linspace', [4, 5, 4, 13]),... + createSingleComponentIdentifier('sin', [5, 5, 5, 8], 'x'),... + createSingleComponentIdentifier('plot', [8, 1, 8, 5], 'x') }; - testCase.assertEqual(result.references, expectedReferences); + testCase.assertEqual(... + result.globalScope.functionOrUnboundReferences,... + expectedFunctionOrUnboundReferences... + ); - expectedSections = { - struct(title = "Section 1", range = toRange(1, 1, 2, 1), isExplicit = false),... - struct(title = "Create Data", range = toRange(3, 1, 6, 1), isExplicit = true),... - struct(title = "Plot", range = toRange(7, 1, 8, 11), isExplicit = true) + expectedVariableReferences = { + ... In order of appearance + createSingleComponentIdentifier('x', [4, 1, 4, 2]),... + createSingleComponentIdentifier('y', [5, 1, 5, 2]),... + createSingleComponentIdentifier('x', [5, 9, 5, 10]),... + createSingleComponentIdentifier('x', [8, 6, 8, 7]),... + createSingleComponentIdentifier('y', [8, 9, 8, 10]),... + createSingleComponentIdentifier('a', [11, 8, 11, 9]),... + createSingleComponentIdentifier('i', [13, 5, 13, 6]),... + createSingleComponentIdentifier('b', [14, 12, 14, 13]),... + createSingleComponentIdentifier('j', [16, 12, 16, 13]) + }; + testCase.assertEqual(... + result.globalScope.variableReferences,... + expectedVariableReferences... + ); + + expectedVariableDefinitions = { + ... Global variables + createSingleComponentIdentifier('a', [11, 8, 11, 9]),... + createSingleComponentIdentifier('b', [14, 12, 14, 13]),... + ... Variable assignments + createSingleComponentIdentifier('x', [4, 1, 4, 2]),... + createSingleComponentIdentifier('y', [5, 1, 5, 2]),... + ... For and parfor loop index variables + createSingleComponentIdentifier('i', [13, 5, 13, 6]),... + createSingleComponentIdentifier('j', [16, 12, 16, 13]) }; + testCase.assertEqual(... + result.globalScope.variableDefinitions,... + expectedVariableDefinitions... + ); + + testCase.assertEqual(result.globalScope.globals, {'a', 'b'}); + testCase.assertThat(result.globalScope, ~HasField("classScope")); + testCase.assertEmpty(result.globalScope.functionScopes); + expectedSections = { + createSection("Section 1", [1, 1, 2, 1], false),... + createSection("Create Data", [3, 1, 6, 1], true),... + createSection("Plot", [7, 1, 9, 1], true),... + createSection("Additional Variable Definitions", [10, 1, 18, 4], true) + }; testCase.assertEqual(result.sections, expectedSections); end - % Test parsing info from a function file function testParsingFunctionFile (testCase) + import matlab.unittest.constraints.HasField + filePath = fullfile(pwd, 'testData', '+package', 'sampleFunction.m'); code = fileread(filePath); result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 0); - testCase.assertEqual(result.packageName, "package"); - testCase.assertFalse(result.classInfo.hasClassInfo); - testCase.assertEqual(numel(result.functionInfo), 3); + testCase.assertEqual(result.package, "package"); + testCase.assertEmpty(result.classReferences); + testCase.assertFalse(result.hasClassInfo); + testCase.assertThat(result, ~HasField("classDefFolder")); + testCase.assertThat(result, ~HasField("errorInfo")); - % ---------- Local Function ---------- % - fcnInfo = result.functionInfo{1}; - testCase.assertEqual(fcnInfo.name, 'localFunction'); - testCase.assertEqual(fcnInfo.range, toRange(11, 1, 14, 4)); - testCase.assertEmpty(fcnInfo.parentClass); - testCase.assertFalse(fcnInfo.isPublic); + testCase.assertEqual(numel(result.globalScope.functionScopes), 2); + testCase.assertEqual(numel(result.globalScope.functionScopes{1}.nestedScopes), 1); + + % ---------- Main Function ---------- % + fcnInfo = result.globalScope.functionScopes{1}; + + testCase.assertEqual(fcnInfo.declarationNameId.name, 'sampleFunction'); + testCase.assertEqual(fcnInfo.declarationNameId.range, convertRange([1, 25, 1, 39])); + testCase.assertEqual(fcnInfo.range, convertRange([1, 1, 9, 4])); + testCase.assertTrue(fcnInfo.isPublic); expectedVarDefs = { ... Input variables - {'in1Local', toRange(12, 24, 12, 32)},... - {'in2Local', toRange(12, 34, 12, 42)},... + createSingleComponentIdentifier('in1', [1, 41, 1, 44]),... + createSingleComponentIdentifier('in2', [1, 46, 1, 49]),... + createSingleComponentIdentifier('in3', [1, 51, 1, 54]),... ... Output variables - {'outLocal', toRange(11, 10, 11, 18)},... - ... Definitions within function body - {'outLocal', toRange(13, 5, 13, 13)} + createSingleComponentIdentifier('out1', [1, 11, 1, 15]),... + createSingleComponentIdentifier('out2', [1, 17, 1, 21]),... + ... Assignments within function body + createSingleComponentIdentifier('out1', [2, 5, 2, 9]),... + createSingleComponentIdentifier('out2', [3, 5, 3, 9]) }; - testCase.assertEqual(fcnInfo.variableInfo.definitions, expectedVarDefs); + testCase.assertEqual(fcnInfo.variableDefinitions, expectedVarDefs); expectedVarRefs = { ... In order of appearance - {'outLocal', toRange(11, 10, 11, 18)},... - {'in1Local', toRange(12, 24, 12, 32)},... - {'in2Local', toRange(12, 34, 12, 42)},... - {'outLocal', toRange(13, 5, 13, 13)},... - {'in1Local', toRange(13, 20, 13, 28)},... - {'in2Local', toRange(13, 30, 13, 38)}, + createSingleComponentIdentifier('out1', [1, 11, 1, 15]),... + createSingleComponentIdentifier('out2', [1, 17, 1, 21]),... + createSingleComponentIdentifier('in1', [1, 41, 1, 44]),... + createSingleComponentIdentifier('in2', [1, 46, 1, 49]),... + createSingleComponentIdentifier('in3', [1, 51, 1, 54]),... + createSingleComponentIdentifier('out1', [2, 5, 2, 9]),... + createSingleComponentIdentifier('in1', [2, 26, 2, 29]),... + createSingleComponentIdentifier('in2', [2, 31, 2, 34]),... + createSingleComponentIdentifier('out2', [3, 5, 3, 9]),... + createSingleComponentIdentifier('in3', [3, 27, 3, 30]) }; - testCase.assertEqual(fcnInfo.variableInfo.references, expectedVarRefs); + testCase.assertEqual(fcnInfo.variableReferences, expectedVarRefs); + + expectedFunctionOrUnboundRefs = { + ... In order of appearance + createSingleComponentIdentifier('localFunction', [2, 12, 2, 25], 'in1'),... + createSingleComponentIdentifier('nestedFunction', [3, 12, 3, 26], 'in3') + }; + testCase.assertEqual(fcnInfo.functionOrUnboundReferences, expectedFunctionOrUnboundRefs); - testCase.assertEmpty(fcnInfo.globals); testCase.assertFalse(fcnInfo.isPrototype); - testCase.assertEqual(fcnInfo.declaration, toRange(11, 1, 12, 43)); + testCase.assertEmpty(fcnInfo.globals); + testCase.assertFalse(fcnInfo.isConstructor); + testCase.assertFalse(fcnInfo.isStaticMethod); + testCase.assertEqual(fcnInfo.inputArgs, {'in1', 'in2', 'in3'}); + testCase.assertEqual(fcnInfo.outputArgs, {'out1', 'out2'}); % ---------- Nested Function ---------- % - fcnInfo = result.functionInfo{2}; + fcnInfo = result.globalScope.functionScopes{1}.nestedScopes{1}; - testCase.assertEqual(fcnInfo.name, 'nestedFunction'); - testCase.assertEqual(fcnInfo.range, toRange(5, 5, 8, 8)); - testCase.assertEmpty(fcnInfo.parentClass); + testCase.assertEqual(fcnInfo.declarationNameId.name, 'nestedFunction'); + testCase.assertEqual(fcnInfo.declarationNameId.range, convertRange([5, 26, 5, 40])); + testCase.assertEqual(fcnInfo.range, convertRange([5, 5, 8, 8])); testCase.assertFalse(fcnInfo.isPublic); expectedVarDefs = { ... Global variables - {'globalVar', toRange(6, 16, 6, 25)},... + createSingleComponentIdentifier('globalVar', [6, 16, 6, 25]),... ... Input variables - {'inNested', toRange(5, 42, 5, 50)},... + createSingleComponentIdentifier('inNested', [5, 42, 5, 50]),... ... Output variables - {'outNested', toRange(5, 14, 5, 23)},... - ... Definitions within function body - {'outNested', toRange(7, 9, 7, 18)} + createSingleComponentIdentifier('outNested', [5, 14, 5, 23]),... + ... Assignments within function body + createSingleComponentIdentifier('outNested', [7, 9, 7, 18]) }; - testCase.assertEqual(fcnInfo.variableInfo.definitions, expectedVarDefs); + testCase.assertEqual(fcnInfo.variableDefinitions, expectedVarDefs); expectedVarRefs = { ... In order of appearance - {'outNested', toRange(5, 14, 5, 23)},... - {'inNested', toRange(5, 42, 5, 50)},... - {'globalVar', toRange(6, 16, 6, 25)},... - {'outNested', toRange(7, 9, 7, 18)},... - {'inNested', toRange(7, 25, 7, 33)} + createSingleComponentIdentifier('outNested', [5, 14, 5, 23]),... + createSingleComponentIdentifier('inNested', [5, 42, 5, 50]),... + createSingleComponentIdentifier('globalVar', [6, 16, 6, 25]),... + createSingleComponentIdentifier('outNested', [7, 9, 7, 18]),... + createSingleComponentIdentifier('inNested', [7, 25, 7, 33]) }; - testCase.assertEqual(fcnInfo.variableInfo.references, expectedVarRefs); + testCase.assertEqual(fcnInfo.variableReferences, expectedVarRefs); + + expectedFunctionOrUnboundRefs = { + createSingleComponentIdentifier('abs', [7, 21, 7, 24], 'inNested') + }; + testCase.assertEqual(fcnInfo.functionOrUnboundReferences, expectedFunctionOrUnboundRefs); - testCase.assertEqual(fcnInfo.globals, {'globalVar'}); testCase.assertFalse(fcnInfo.isPrototype); - testCase.assertEqual(fcnInfo.declaration, toRange(5, 5, 5, 51)); + testCase.assertEqual(fcnInfo.globals, {'globalVar'}); + testCase.assertFalse(fcnInfo.isConstructor); + testCase.assertFalse(fcnInfo.isStaticMethod); + testCase.assertEqual(fcnInfo.inputArgs, {'inNested'}); + testCase.assertEqual(fcnInfo.outputArgs, {'outNested'}); - % ---------- Main Function ---------- % - fcnInfo = result.functionInfo{3}; + % ---------- Local Function ---------- % + fcnInfo = result.globalScope.functionScopes{2}; - testCase.assertEqual(fcnInfo.name, 'sampleFunction'); - testCase.assertEqual(fcnInfo.range, toRange(1, 1, 9, 4)); - testCase.assertEmpty(fcnInfo.parentClass); - testCase.assertTrue(fcnInfo.isPublic); + testCase.assertEqual(fcnInfo.declarationNameId.name, 'localFunction'); + testCase.assertEqual(fcnInfo.declarationNameId.range, convertRange([12, 9, 12, 22])); + testCase.assertEqual(fcnInfo.range, convertRange([11, 1, 14, 4])); + testCase.assertFalse(fcnInfo.isPublic); expectedVarDefs = { - ... Global variables - {'globalVar', toRange(6, 16, 6, 25)},... ... Input variables - {'in1', toRange(1, 41, 1, 44)},... - {'in2', toRange(1, 46, 1, 49)},... - {'in3', toRange(1, 51, 1, 54)},... + createSingleComponentIdentifier('in1Local', [12, 24, 12, 32]),... + createSingleComponentIdentifier('in2Local', [12, 34, 12, 42]),... ... Output variables - {'out1', toRange(1, 11, 1, 15)},... - {'out2', toRange(1, 17, 1, 21)},... - ... Definitions within function body - {'out1', toRange(2, 5, 2, 9)},... - {'out2', toRange(3, 5, 3, 9)},... - {'outNested', toRange(7, 9, 7, 18)} + createSingleComponentIdentifier('outLocal', [11, 10, 11, 18]),... + ... Assignments within function body + createSingleComponentIdentifier('outLocal', [13, 5, 13, 13]),... }; - testCase.assertEqual(fcnInfo.variableInfo.definitions, expectedVarDefs); + testCase.assertEqual(fcnInfo.variableDefinitions, expectedVarDefs); expectedVarRefs = { ... In order of appearance - {'out1', toRange(1, 11, 1, 15)},... - {'out2', toRange(1, 17, 1, 21)},... - {'in1', toRange(1, 41, 1, 44)},... - {'in2', toRange(1, 46, 1, 49)},... - {'in3', toRange(1, 51, 1, 54)},... - {'out1', toRange(2, 5, 2, 9)},... - {'in1', toRange(2, 26, 2, 29)},... - {'in2', toRange(2, 31, 2, 34)},... - {'out2', toRange(3, 5, 3, 9)},... - {'in3', toRange(3, 27, 3, 30)},... - {'outNested', toRange(5, 14, 5, 23)},... - {'inNested', toRange(5, 42, 5, 50)},... - {'globalVar', toRange(6, 16, 6, 25)},... - {'outNested', toRange(7, 9, 7, 18)},... - {'inNested', toRange(7, 25, 7, 33)} + createSingleComponentIdentifier('outLocal', [11, 10, 11, 18]),... + createSingleComponentIdentifier('in1Local', [12, 24, 12, 32]),... + createSingleComponentIdentifier('in2Local', [12, 34, 12, 42]),... + createSingleComponentIdentifier('outLocal', [13, 5, 13, 13]),... + createSingleComponentIdentifier('in1Local', [13, 20, 13, 28]),... + createSingleComponentIdentifier('in2Local', [13, 30, 13, 38]) }; - testCase.assertEqual(fcnInfo.variableInfo.references, expectedVarRefs); + testCase.assertEqual(fcnInfo.variableReferences, expectedVarRefs); + + expectedFunctionOrUnboundRefs = { + createSingleComponentIdentifier('sum', [13, 16, 13, 19], 'in1Local') + }; + testCase.assertEqual(fcnInfo.functionOrUnboundReferences, expectedFunctionOrUnboundRefs); - testCase.assertEqual(fcnInfo.globals, {'globalVar'}); testCase.assertFalse(fcnInfo.isPrototype); - testCase.assertEqual(fcnInfo.declaration, toRange(1, 1, 1, 55)); + testCase.assertEmpty(fcnInfo.globals); + testCase.assertFalse(fcnInfo.isConstructor); + testCase.assertFalse(fcnInfo.isStaticMethod); + testCase.assertEqual(fcnInfo.inputArgs, {'in1Local', 'in2Local'}); + testCase.assertEqual(fcnInfo.outputArgs, {'outLocal'}); end - % Test parsing info from a class file function testParsingClassFile (testCase) + import matlab.unittest.constraints.HasField + filePath = fullfile(pwd, 'testData', 'SampleClass.m'); code = fileread(filePath); result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 0); - testCase.assertEmpty(result.packageName); - - % ---------- Class Info ---------- % - classInfo = result.classInfo; - testCase.assertTrue(classInfo.isClassDef); - testCase.assertTrue(classInfo.hasClassInfo); - testCase.assertEqual(classInfo.name, 'SampleClass'); - testCase.assertEqual(classInfo.range, toRange(1, 1, 34, 4)); - testCase.assertEqual(classInfo.declaration, toRange(1, 1, 2, 24)) - - expectedProperties = { - struct(name = 'PropA', range = toRange(10, 9, 10, 14), parentClass = 'SampleClass', isPublic = false),... - struct(name = 'PropB', range = toRange(11, 9, 11, 14), parentClass = 'SampleClass', isPublic = false) + testCase.assertEmpty(result.package); + testCase.assertTrue(result.hasClassInfo); + testCase.assertThat(result, ~HasField("classDefFolder")); + testCase.assertThat(result, ~HasField("errorInfo")); + + expectedClassRefs = { + ... In order of appearance + createNamedRange('SampleClass', [1, 10, 1, 21]),... + createNamedRange('SuperA', [2, 9, 2, 15]),... + createNamedRange('SuperB', [2, 18, 2, 24]),... + createNamedRange('SampleClass', [33, 13, 33, 24]),... + createNamedRange('SuperB', [34, 13, 34, 19]),... + createNamedRange('SampleClass', [45, 10, 45, 21]),... + createNamedRange('SampleClass', [46, 5, 46, 16]) }; - testCase.assertEqual(classInfo.properties, expectedProperties); + testCase.assertEqual(result.classReferences, expectedClassRefs); - expectedEnumerations = { - struct(name = 'A', range = toRange(4, 9, 4, 10), parentClass = 'SampleClass', isPublic = false),... - struct(name = 'B', range = toRange(5, 9, 5, 10), parentClass = 'SampleClass', isPublic = false),... - struct(name = 'C', range = toRange(6, 9, 6, 10), parentClass = 'SampleClass', isPublic = false) + % ---------- Class Info ---------- % + classInfo = result.globalScope.classScope; + testCase.assertEqual(classInfo.declarationNameId.name, 'SampleClass'); + testCase.assertEqual(classInfo.declarationNameId.range, convertRange([1, 10, 1, 21])); + testCase.assertEqual(classInfo.range, convertRange([1, 1, 42, 4])); + + expectedBaseClasses = { + createNamedRange('SuperA', [2, 9, 2, 15]),... + createNamedRange('SuperB', [2, 18, 2, 24]) }; - testCase.assertEqual(classInfo.enumerations, expectedEnumerations); + testCase.assertEqual(classInfo.baseClasses, expectedBaseClasses); - % Add tests for properties blocks expectedPropertiesBlocks = { - struct(name = 'properties', range = toRange(9, 5, 12, 8), parentClass = 'SampleClass', isPublic = true) + createNamedRange('properties', [9, 5, 12, 8]) }; testCase.assertEqual(classInfo.propertiesBlocks, expectedPropertiesBlocks); - % Add tests for methods blocks + expectedEnumerationsBlocks = { + createNamedRange('enumeration', [3, 5, 7, 8]) + }; + testCase.assertEqual(classInfo.enumerationsBlocks, expectedEnumerationsBlocks); + expectedMethodsBlocks = { - struct(name = 'methods', range = toRange(14, 5, 22, 8), parentClass = 'SampleClass', isPublic = true),... - struct(name = 'methods (Abstract)', range = toRange(24, 5, 26, 8), parentClass = 'SampleClass', isPublic = true),... - struct(name = 'methods (Hidden)', range = toRange(28, 5, 33, 8), parentClass = 'SampleClass', isPublic = true) + createNamedRange('methods', [14, 5, 22, 8]),... + createNamedRange('methods (Abstract)', [24, 5, 26, 8]),... + createNamedRange('methods (Access=private)', [28, 5, 36, 8]),... + createNamedRange('methods (Static)', [38, 5, 41, 8]) }; testCase.assertEqual(classInfo.methodsBlocks, expectedMethodsBlocks); - % Add tests for enumeration blocks - expectedEnumerationBlocks = { - struct(name = 'enumeration', range = toRange(3, 5, 7, 8), parentClass = 'SampleClass', isPublic = true) + expectedProperties = { + createScopedNamedRange('PropA', [10, 9, 10, 14], true),... + createScopedNamedRange('PropB', [11, 9, 11, 14], true) }; - testCase.assertEqual(classInfo.enumerationsBlocks, expectedEnumerationBlocks); + testCase.assertEqual(classInfo.properties, expectedProperties); - testCase.assertEmpty(classInfo.classDefFolder); - testCase.assertEqual(classInfo.baseClasses, {'SuperA', 'SuperB'}); + expectedEnumerations = { + createScopedNamedRange('A', [4, 9, 4, 10], true),... + createScopedNamedRange('B', [5, 9, 5, 10], true),... + createScopedNamedRange('C', [6, 9, 6, 10], true) + }; + testCase.assertEqual(classInfo.enumerations, expectedEnumerations); - testCase.assertEqual(numel(result.functionInfo), 4); + testCase.assertEqual(numel(classInfo.nestedScopes), 5); - % Note: Only checking certain attributes of functions, as the - % majority of other cases should be covered by the above test. + % Note: Only checking certain attributes of methods, as the + % majority of other cases should be covered by other tests. % ---------- Constructor ---------- % - fcnInfo = result.functionInfo{1}; - testCase.assertEqual(fcnInfo.name, 'SampleClass'); - testCase.assertEqual(fcnInfo.parentClass, 'SampleClass'); + fcnInfo = classInfo.nestedScopes{1}; + testCase.assertEqual(fcnInfo.declarationNameId.name, 'SampleClass'); testCase.assertTrue(fcnInfo.isPublic); testCase.assertFalse(fcnInfo.isPrototype); + testCase.assertTrue(fcnInfo.isConstructor); + testCase.assertFalse(fcnInfo.isStaticMethod); - % ---------- Abstract Function ---------- % - fcnInfo = result.functionInfo{2}; - testCase.assertEqual(fcnInfo.name, 'abstractFcn'); - testCase.assertEqual(fcnInfo.parentClass, 'SampleClass'); - testCase.assertTrue(fcnInfo.isPublic); - testCase.assertTrue(fcnInfo.isPrototype); + expectedVarDefs = { + ... Input variables + createSingleComponentIdentifier('a', [15, 37, 15, 38]),... + createSingleComponentIdentifier('b', [15, 40, 15, 41]),... + ... Output variables + createSingleComponentIdentifier('obj', [15, 18, 15, 21]),... + ... Assignments within function body + createIdentifier(... + 'obj.PropA',... + [16, 13, 16, 22],... + {{'obj', [16, 13, 16, 16]}, {'PropA', [16, 17, 16, 22]}}... + ),... + createIdentifier(... + 'obj.PropB',... + [17, 13, 17, 22],... + {{'obj', [17, 13, 17, 16]}, {'PropB', [17, 17, 17, 22]}}... + ) + }; + testCase.assertEqual(fcnInfo.variableDefinitions, expectedVarDefs); + expectedVarRefs = { + ... In order of appearance + createSingleComponentIdentifier('obj', [15, 18, 15, 21]),... + createSingleComponentIdentifier('a', [15, 37, 15, 38]),... + createSingleComponentIdentifier('b', [15, 40, 15, 41]),... + createIdentifier(... + 'obj.PropA',... + [16, 13, 16, 22],... + {{'obj', [16, 13, 16, 16]}, {'PropA', [16, 17, 16, 22]}}... + ),... + createSingleComponentIdentifier('a', [16, 25, 16, 26]),... + createIdentifier(... + 'obj.PropB',... + [17, 13, 17, 22],... + {{'obj', [17, 13, 17, 16]}, {'PropB', [17, 17, 17, 22]}}... + ),... + createSingleComponentIdentifier('b', [17, 25, 17, 26]) + }; + testCase.assertEqual(fcnInfo.variableReferences, expectedVarRefs); - % ---------- Private Function ---------- % - fcnInfo = result.functionInfo{3}; - testCase.assertEqual(fcnInfo.name, 'privateFcn'); - testCase.assertEqual(fcnInfo.parentClass, 'SampleClass'); - testCase.assertTrue(fcnInfo.isPublic); % This is currently marked as public, despite being hidden + % ---------- Public Method ---------- % + fcnInfo = classInfo.nestedScopes{2}; + testCase.assertEqual(fcnInfo.declarationNameId.name, 'publicFcn'); + testCase.assertTrue(fcnInfo.isPublic); testCase.assertFalse(fcnInfo.isPrototype); + testCase.assertFalse(fcnInfo.isConstructor); + testCase.assertFalse(fcnInfo.isStaticMethod); + % ---------- Abstract Method ---------- % + fcnInfo = classInfo.nestedScopes{3}; + testCase.assertEqual(fcnInfo.declarationNameId.name, 'abstractFcn'); + testCase.assertTrue(fcnInfo.isPublic); + testCase.assertTrue(fcnInfo.isPrototype); + testCase.assertFalse(fcnInfo.isConstructor); + testCase.assertFalse(fcnInfo.isStaticMethod); + + % ---------- Private Method ---------- % + fcnInfo = classInfo.nestedScopes{4}; + testCase.assertEqual(fcnInfo.declarationNameId.name, 'privateFcn'); + testCase.assertFalse(fcnInfo.isPublic); + testCase.assertFalse(fcnInfo.isPrototype); + testCase.assertFalse(fcnInfo.isConstructor); + testCase.assertFalse(fcnInfo.isStaticMethod); - % ---------- Public Function ---------- % - fcnInfo = result.functionInfo{4}; - testCase.assertEqual(fcnInfo.name, 'publicFcn'); - testCase.assertEqual(fcnInfo.parentClass, 'SampleClass'); + % ---------- Static Method ---------- % + fcnInfo = classInfo.nestedScopes{5}; + testCase.assertEqual(fcnInfo.declarationNameId.name, 'staticFcn'); testCase.assertTrue(fcnInfo.isPublic); testCase.assertFalse(fcnInfo.isPrototype); + testCase.assertFalse(fcnInfo.isConstructor); + testCase.assertTrue(fcnInfo.isStaticMethod); - % ---------- References ---------- % - % Note: Property references appear first, then function references - expectedReferences = { - {'obj.PropA', toRange(16, 13, 16, 22)},... - {'obj.PropB', toRange(17, 13, 17, 22)},... - {'obj.PropA', toRange(30, 38, 30, 47)},... - {'obj.PropB', toRange(31, 30, 31, 39)},... - {'SampleClass', toRange(15, 24, 15, 35)},... - {'publicFcn', toRange(20, 18, 20, 27)},... - {'abstractFcn', toRange(25, 15, 25, 26)},... - {'privateFcn', toRange(29, 18, 29, 28)},... - {'disp', toRange(30, 13, 30, 17)},... - {'num2str', toRange(30, 30, 30, 37)},... - {'disp', toRange(31, 13, 31, 17)} - }; - testCase.assertEqual(result.references, expectedReferences); + % ---------- Local Function ---------- % + fcnInfo = result.globalScope.functionScopes{1}; + testCase.assertEqual(fcnInfo.declarationNameId.name, 'local'); + testCase.assertFalse(fcnInfo.isPublic); + testCase.assertFalse(fcnInfo.isPrototype); + testCase.assertFalse(fcnInfo.isConstructor); + testCase.assertFalse(fcnInfo.isStaticMethod); end - % Test parsing info from a @folder test + % Test parsing info from an @folder function testParsingFolderClass (testCase) % Note: Only checking certain attributes of functions and % classes, as the majority of other cases should be covered - % by the above tests. + % by other tests. + + import matlab.unittest.constraints.HasField classFolder = fullfile(pwd, 'testData', '@FolderClass'); @@ -291,28 +412,37 @@ function testParsingFolderClass (testCase) code = fileread(filePath); result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 0); - testCase.assertEmpty(result.packageName); - testCase.assertEqual(numel(result.functionInfo), 1); + testCase.assertEmpty(result.package); + testCase.assertTrue(result.hasClassInfo); + testCase.assertEqual(result.classDefFolder, classFolder); + testCase.assertThat(result, ~HasField("errorInfo")); - classInfo = result.classInfo; - testCase.assertTrue(classInfo.isClassDef); - testCase.assertTrue(classInfo.hasClassInfo); - testCase.assertEqual(classInfo.name, 'FolderClass'); - testCase.assertEqual(classInfo.classDefFolder, classFolder); + expectedClassRefs = { + createNamedRange('FolderClass', [1, 10, 1, 21]),... + createNamedRange('handle', [1, 24, 1, 30]) + }; + testCase.assertEqual(result.classReferences, expectedClassRefs); + + testCase.assertEmpty(result.globalScope.functionScopes); + + classInfo = result.globalScope.classScope; + testCase.assertEqual(classInfo.declarationNameId.name, 'FolderClass'); + testCase.assertEqual(classInfo.declarationNameId.range, convertRange([1, 10, 1, 21])); + testCase.assertEqual(classInfo.range, convertRange([1, 1, 13, 4])); % ---------- Function File ---------- % filePath = fullfile(classFolder, 'folderFunction.m'); code = fileread(filePath); result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 0); - testCase.assertEmpty(result.packageName); - testCase.assertEqual(numel(result.functionInfo), 1); + testCase.assertEmpty(result.package); + testCase.assertTrue(result.hasClassInfo); + testCase.assertEqual(result.classDefFolder, classFolder); + testCase.assertThat(result, ~HasField("errorInfo")); - classInfo = result.classInfo; - testCase.assertFalse(classInfo.isClassDef); - testCase.assertTrue(classInfo.hasClassInfo); - testCase.assertEqual(classInfo.name, 'FolderClass'); - testCase.assertEqual(classInfo.classDefFolder, classFolder); + testCase.assertEmpty(result.classReferences); + testCase.assertEqual(numel(result.globalScope.functionScopes), 1); + testCase.assertThat(result.globalScope, ~HasField("classScope")); end % Test parsing info with different analysis limits @@ -322,20 +452,109 @@ function testFileAnalysisLimit (testCase) % Case 1: Ensure data is returned with unlimited analysis limit result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 0); - testCase.assertNotEmpty(result.functionInfo); + testCase.assertNotEmpty(result.globalScope.functionScopes); % Case 2: Ensure no data is returned with small limit result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 10); - testCase.assertEmpty(result.functionInfo); + testCase.assertEmpty(result.globalScope.functionScopes); % Case 3: Ensure data is returned with large limit result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 100); - testCase.assertNotEmpty(result.functionInfo); + testCase.assertNotEmpty(result.globalScope.functionScopes); + end + + function testParsingEmptyFile (testCase) + import matlab.unittest.constraints.HasField + + code = ""; + filePath = "some/path/foo.m"; + + result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 0); + + % Important that parsing an empty file does not + % return an error, so that we know to still + % overwrite the file's code data in the Indexer + testCase.assertThat(result, ~HasField("errorInfo")); + + testCase.assertNotEmpty(result.sections); + + testCase.assertEmpty(result.package); + testCase.assertEmpty(result.classReferences); + testCase.assertFalse(result.hasClassInfo); + testCase.assertThat(result, ~HasField("classDefFolder")); + + testCase.assertEmpty(result.globalScope.variableDefinitions); + testCase.assertEmpty(result.globalScope.variableReferences); + testCase.assertEmpty(result.globalScope.functionOrUnboundReferences); + testCase.assertEmpty(result.globalScope.globals); + testCase.assertEmpty(result.globalScope.functionScopes); + testCase.assertThat(result.globalScope, ~HasField("classScope")); + end + + function testParsingSyntaxErrorFile (testCase) + code = "end"; + filePath = "some/path/foo.m"; + + result = matlabls.handlers.indexing.parseInfoFromDocument(code, filePath, 0); + + % Ensures we will not overwrite the file's code data + % in the Indexer + testCase.assertNotEmpty(result.errorInfo); end end end % Helper functions: -function range = toRange(lineStart, charStart, lineEnd, charEnd) - range = struct(lineStart = lineStart, charStart = charStart, lineEnd = lineEnd, charEnd = charEnd); + +function identifierStruct = createSingleComponentIdentifier(name, oneBasedRange, firstArgIdName) + identifierStruct = struct(... + name = name,... + range = convertRange(oneBasedRange),... + ... identifierStruct.components is a single-layer cell array; + ... the extra braces make sure it is still a cell array after + ... vectorization + components = {{ createNamedRange(name, oneBasedRange) }}... + ); + + if nargin >= 3 + identifierStruct.firstArgIdName = firstArgIdName; + end +end + +function identifierStruct = createIdentifier(name, range, components, firstArgIdName) + numComponents = numel(components); + + componentStructs = cell(1, numComponents); + for i = 1:numComponents + componentStructs{i} = createNamedRange(components{i}{1}, components{i}{2}); + end + + identifierStruct = struct(... + name = name,... + range = convertRange(range),... + ... identifierStruct.components is a single-layer cell array; + ... the extra braces make sure it is still a cell array after + ... vectorization + components = {componentStructs}... + ); + + if nargin >= 4 + identifierStruct.firstArgIdName = firstArgIdName; + end +end + +function namedRangeStruct = createNamedRange(name, oneBasedRange) + namedRangeStruct = struct(name = name, range = convertRange(oneBasedRange)); +end + +function scopedNamedRangeStruct = createScopedNamedRange(name, oneBasedRange, isPublic) + scopedNamedRangeStruct = struct(name = name, range = convertRange(oneBasedRange), isPublic = isPublic); +end + +function sectionStruct = createSection(name, oneBasedRange, isExplicit) + sectionStruct = struct(name = name, range = convertRange(oneBasedRange), isExplicit = isExplicit); +end + +function zeroBasedRange = convertRange(oneBasedRange) + zeroBasedRange = oneBasedRange - 1; end diff --git a/tests/matlab/matlabls/handlers/indexing/testData/SampleClass.m b/tests/matlab/matlabls/handlers/indexing/testData/SampleClass.m index 81c8290..f207a0a 100644 --- a/tests/matlab/matlabls/handlers/indexing/testData/SampleClass.m +++ b/tests/matlab/matlabls/handlers/indexing/testData/SampleClass.m @@ -25,10 +25,23 @@ function publicFcn (obj) out = abstractFcn (in) end - methods (Hidden) + methods (Access=private) function privateFcn (obj) disp(['PropA: ', num2str(obj.PropA)]); disp(['PropB: ', obj.PropB]); + + SampleClass.staticFcn(); + SuperB.staticMethod(); end end + + methods (Static) + function staticFcn () + end + end +end + +function local () + disp(SampleClass.A); + SampleClass.staticFcn(); end \ No newline at end of file diff --git a/tests/matlab/matlabls/handlers/indexing/testData/sampleScript.m b/tests/matlab/matlabls/handlers/indexing/testData/sampleScript.m index dc91208..3273bd6 100644 --- a/tests/matlab/matlabls/handlers/indexing/testData/sampleScript.m +++ b/tests/matlab/matlabls/handlers/indexing/testData/sampleScript.m @@ -5,4 +5,14 @@ y = sin(x); %% Plot -plot(x, y) \ No newline at end of file +plot(x, y) + +%% Additional Variable Definitions +global a; + +for i = 1:5 + global b; + + parfor j = 1:5 + end +end \ No newline at end of file diff --git a/tests/mocks/Mvm.mock.ts b/tests/mocks/Mvm.mock.ts index f3a0ddb..3cd81f6 100644 --- a/tests/mocks/Mvm.mock.ts +++ b/tests/mocks/Mvm.mock.ts @@ -3,6 +3,7 @@ import sinon from 'sinon' export default function getMockMvm (): any { const mockMvm = { + isReady: sinon.stub(), waitUntilReady: sinon.stub(), feval: sinon.stub(), getMatlabRelease: sinon.stub(), diff --git a/tests/providers/highlighting/HighlightSymbolProvider.test.ts b/tests/providers/highlighting/HighlightSymbolProvider.test.ts index 1a95afb..00986b0 100644 --- a/tests/providers/highlighting/HighlightSymbolProvider.test.ts +++ b/tests/providers/highlighting/HighlightSymbolProvider.test.ts @@ -8,17 +8,15 @@ import { DocumentHighlight, DocumentHighlightKind, DocumentHighlightParams, Docu import DocumentIndexer from '../../../src/indexing/DocumentIndexer' import Indexer from '../../../src/indexing/Indexer' import MatlabLifecycleManager from '../../../src/lifecycle/MatlabLifecycleManager' -import PathResolver from '../../../src/providers/navigation/PathResolver' import { TextDocument } from 'vscode-languageserver-textdocument' import getMockMvm from '../../mocks/Mvm.mock' import ClientConnection from '../../../src/ClientConnection' import getMockConnection from '../../mocks/Connection.mock' -import SymbolSearchService from '../../../src/indexing/SymbolSearchService' -import Expression from '../../../src/utils/ExpressionUtils' +import { findReferencesAndDefinitions } from '../../../src/indexing/SymbolSearchService' import type HighlightSymbolProvider from '../../../src/providers/highlighting/HighlightSymbolProvider' -import type { getExpressionAtPosition } from '../../../src/utils/ExpressionUtils' -import { dynamicImport, stubDependency } from '../../TestUtils' +import { assertDeepStrictEqualIgnoringOrder, dynamicImport, stubDependency } from '../../TestUtils' +import FileInfoIndex from '../../../src/indexing/FileInfoIndex' describe('HighlightSymbolProvider', () => { const CURRENT_FILE_URI: DocumentUri = 'currentFileUri' @@ -27,7 +25,7 @@ describe('HighlightSymbolProvider', () => { let mockMvm: any let matlabLifecycleManager: MatlabLifecycleManager - let pathResolver: PathResolver + let fileInfoIndex: FileInfoIndex let indexer: Indexer let documentIndexer: DocumentIndexer @@ -35,7 +33,7 @@ describe('HighlightSymbolProvider', () => { let documentManager: TextDocuments - let setGetExpressionAtPositionStub: (newStub: typeof getExpressionAtPosition) => void + let setFindReferencesAndDefinitionsStub: (newStub: typeof findReferencesAndDefinitions) => void const range1 = Range.create( Position.create(1, 2), @@ -45,6 +43,10 @@ describe('HighlightSymbolProvider', () => { Position.create(5, 6), Position.create(7, 8) ) + const range2Dup = Range.create( + Position.create(5, 6), + Position.create(7, 8) + ) const range3 = Range.create( Position.create(9, 10), Position.create(11, 12) @@ -53,10 +55,6 @@ describe('HighlightSymbolProvider', () => { Position.create(13, 14), Position.create(15, 16) ) - const range3To4 = Range.create( - Position.create(9, 10), - Position.create(15, 16) - ) const locationCurrentFileRange1 = Location.create( CURRENT_FILE_URI, @@ -66,13 +64,13 @@ describe('HighlightSymbolProvider', () => { CURRENT_FILE_URI, range2 ) - const locationCurrentFileRange3 = Location.create( + const locationCurrentFileRange2Dup = Location.create( CURRENT_FILE_URI, - range3 + range2Dup ) - const locationCurrentFileRange3To4 = Location.create( + const locationCurrentFileRange3 = Location.create( CURRENT_FILE_URI, - range3To4 + range3 ) const locationOtherFileRange3 = Location.create( @@ -87,21 +85,22 @@ describe('HighlightSymbolProvider', () => { const setup = () => { mockMvm = getMockMvm() matlabLifecycleManager = new MatlabLifecycleManager() - pathResolver = new PathResolver(mockMvm) - indexer = new Indexer(matlabLifecycleManager, mockMvm, pathResolver) - documentIndexer = new DocumentIndexer(indexer) + fileInfoIndex = new FileInfoIndex() + indexer = new Indexer(matlabLifecycleManager, mockMvm, fileInfoIndex) + documentIndexer = new DocumentIndexer(indexer, fileInfoIndex) documentManager = new TextDocuments(TextDocument) sinon.stub(matlabLifecycleManager, 'getMatlabConnection').resolves({} as any) sinon.stub(documentIndexer, 'ensureDocumentIndexIsUpdated').resolves() - type ExpressionUtilsExports = typeof import('../../../src/utils/ExpressionUtils') - const functionToStub: keyof ExpressionUtilsExports = 'getExpressionAtPosition' - setGetExpressionAtPositionStub = stubDependency( - '../../../src/utils/ExpressionUtils', + type SymbolSearchServiceExports = typeof import('../../../src/indexing/SymbolSearchService') + const functionToStub: keyof SymbolSearchServiceExports = 'findReferencesAndDefinitions' + setFindReferencesAndDefinitionsStub = stubDependency( + module, + '../../../src/indexing/SymbolSearchService', functionToStub, - () => new Expression(['test'], 0) + () => ({ references: [], definitions: [] }) ) type HighlightSymbolProviderExports = typeof import('../../../src/providers/highlighting/HighlightSymbolProvider') @@ -110,7 +109,7 @@ describe('HighlightSymbolProvider', () => { ) highlightSymbolProvider = new HighlightSymbolProvider( - matlabLifecycleManager, documentIndexer, pathResolver, indexer + matlabLifecycleManager, documentIndexer, indexer, fileInfoIndex ) const mockTextDocument = TextDocument.create( @@ -167,19 +166,8 @@ describe('HighlightSymbolProvider', () => { assert.deepStrictEqual(res, [], 'Result should be empty when there is no document at the given URI') }) - it('should return empty array of highlights if there is no supported expression at the given position', async () => { - setGetExpressionAtPositionStub(() => null) - - const res = await highlightSymbolProvider.handleDocumentHighlightRequest( - mockParams, documentManager - ) - - assert.deepStrictEqual(res, [], 'Result should be empty when there is no supported expression at the given position') - }) - it('should return empty array of highlights if there are no references', async () => { - sinon.stub(SymbolSearchService, 'findReferences').returns([]) - sinon.stub(SymbolSearchService, 'findDefinitions').resolves([]) + setFindReferencesAndDefinitionsStub(() => ({ references: [], definitions: [] })) const res = await highlightSymbolProvider.handleDocumentHighlightRequest( mockParams, documentManager @@ -189,11 +177,13 @@ describe('HighlightSymbolProvider', () => { }) it('should return highlights for references found (in the current file)', async () => { - sinon.stub(SymbolSearchService, 'findReferences').returns([ - locationCurrentFileRange1, - locationCurrentFileRange2 - ]) - sinon.stub(SymbolSearchService, 'findDefinitions').resolves([]) + setFindReferencesAndDefinitionsStub(() => ({ + references: [ + locationCurrentFileRange1, + locationCurrentFileRange2 + ], + definitions: [] + })) const res = await highlightSymbolProvider.handleDocumentHighlightRequest( mockParams, documentManager @@ -203,20 +193,22 @@ describe('HighlightSymbolProvider', () => { const highlightRanges: Range[] = res.map(highlight => highlight.range) - assertDeepStrictEqualToSet( - highlightRanges, new Set([range1, range2]), + assertDeepStrictEqualIgnoringOrder( + highlightRanges, [range1, range2], 'Highlight ranges in result should represent the two references found' ) }) it('should return highlights only for references in the current file', async () => { - sinon.stub(SymbolSearchService, 'findReferences').returns([ - locationOtherFileRange3, - locationCurrentFileRange1, - locationOtherFileRange4, - locationCurrentFileRange2 - ]) - sinon.stub(SymbolSearchService, 'findDefinitions').resolves([]) + setFindReferencesAndDefinitionsStub(() => ({ + references: [ + locationOtherFileRange3, + locationCurrentFileRange1, + locationOtherFileRange4, + locationCurrentFileRange2 + ], + definitions: [] + })) const res = await highlightSymbolProvider.handleDocumentHighlightRequest( mockParams, documentManager @@ -226,22 +218,25 @@ describe('HighlightSymbolProvider', () => { const highlightRanges: Range[] = res.map(highlight => highlight.range) - assertDeepStrictEqualToSet( - highlightRanges, new Set([range1, range2]), + assertDeepStrictEqualIgnoringOrder( + highlightRanges, [range1, range2], 'Highlight ranges in result should include those from current file, but not those from other file' ) }) it('should distinguish between write and read references', async () => { - sinon.stub(SymbolSearchService, 'findReferences').returns([ - locationCurrentFileRange1, - locationCurrentFileRange2, - locationCurrentFileRange3 - ]) - sinon.stub(SymbolSearchService, 'findDefinitions').resolves([ - locationCurrentFileRange1, - locationCurrentFileRange3To4, - ]) + setFindReferencesAndDefinitionsStub(() => ({ + references: [ + locationCurrentFileRange1, + locationCurrentFileRange2, + locationCurrentFileRange3 + ], + definitions: [ + locationCurrentFileRange1, + locationOtherFileRange3, + locationCurrentFileRange2Dup + ] + })) const res = await highlightSymbolProvider.handleDocumentHighlightRequest( mockParams, documentManager @@ -249,21 +244,15 @@ describe('HighlightSymbolProvider', () => { assert.ok(res instanceof Array, 'Result should be an array') - assertDeepStrictEqualToSet( + assertDeepStrictEqualIgnoringOrder( res, - new Set([ + [ DocumentHighlight.create(range1, DocumentHighlightKind.Write), - DocumentHighlight.create(range2, DocumentHighlightKind.Read), - DocumentHighlight.create(range3, DocumentHighlightKind.Write) - ]), + DocumentHighlight.create(range2, DocumentHighlightKind.Write), + DocumentHighlight.create(range3, DocumentHighlightKind.Read) + ], 'Document highlights should be classified as write vs. read based on the definitions found' ) }) }) }) - -// Used to check for deep strict equality, ignoring order -function assertDeepStrictEqualToSet (actual: T[], expected: Set, message?: string | Error) { - assert.ok(actual.length === expected.size, message) - assert.deepStrictEqual(new Set(actual), expected, message) -} diff --git a/tests/tsconfig.json b/tests/tsconfig.json new file mode 100644 index 0000000..b53821c --- /dev/null +++ b/tests/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "../", + "resolveJsonModule": true + }, + "include": [ + "**/*", + "indexing/rawCodeDataResourceFiles/**/*.json", + "../src/**/*" + ], + "exclude": [ + "matlab" + ] +} diff --git a/tests/utils/PositionUtils.test.ts b/tests/utils/PositionUtils.test.ts index e67e896..7b95f51 100644 --- a/tests/utils/PositionUtils.test.ts +++ b/tests/utils/PositionUtils.test.ts @@ -1,6 +1,8 @@ +// Copyright 2025 The MathWorks, Inc. + import assert from 'assert' -import { Position } from "vscode-languageserver" +import { Position, Range } from 'vscode-languageserver' import * as PositionUtils from '../../src/utils/PositionUtils' @@ -132,4 +134,62 @@ describe('PositionUtils', () => { assert.ok(!PositionUtils.isPositionGreaterThanOrEqualTo(posA, posB)) }) }) + + describe('#arePositionsEqual', () => { + it('should return true when both line and character are equal', () => { + const posA = Position.create(3, 5) + const posB = Position.create(3, 5) + assert.ok(PositionUtils.arePositionsEqual(posA, posB)) + }) + + it('should return false when lines are equal but characters are not', () => { + const posA = Position.create(3, 5) + const posB = Position.create(3, 8) + assert.ok(!PositionUtils.arePositionsEqual(posA, posB)) + }) + + it('should return false when characters are equal but lines are not', () => { + const posA = Position.create(2, 5) + const posB = Position.create(3, 5) + assert.ok(!PositionUtils.arePositionsEqual(posA, posB)) + }) + + it('should return false when both line and character are not equal', () => { + const posA = Position.create(2, 5) + const posB = Position.create(3, 8) + assert.ok(!PositionUtils.arePositionsEqual(posA, posB)) + }) + }) + + describe('#isPositionWithinRange', () => { + it('should return false when position is before the range', () => { + const position = Position.create(2, 6) + const range = Range.create(3, 5, 5, 10) + assert.ok(!PositionUtils.isPositionWithinRange(position, range)) + }) + + it('should return true when position is at the range start', () => { + const position = Position.create(1, 0) + const range = Range.create(1, 0, 4, 15) + assert.ok(PositionUtils.isPositionWithinRange(position, range)) + }) + + it('should return true when position is in the middle of the range', () => { + const position = Position.create(7, 1) + const range = Range.create(6, 8, 9, 20) + assert.ok(PositionUtils.isPositionWithinRange(position, range)) + }) + + it('should return true when position is at the range end', () => { + const position = Position.create(10, 25) + const range = Range.create(8, 3, 10, 25) + assert.ok(PositionUtils.isPositionWithinRange(position, range)) + }) + + it('should return false when position is after the range', () => { + const position = Position.create(14, 35) + const range = Range.create(12, 0, 14, 30) + assert.ok(!PositionUtils.isPositionWithinRange(position, range)) + }) + }) }) diff --git a/tests/utils/RangeUtils.test.ts b/tests/utils/RangeUtils.test.ts index 359e8b5..e72e975 100644 --- a/tests/utils/RangeUtils.test.ts +++ b/tests/utils/RangeUtils.test.ts @@ -3,7 +3,7 @@ import assert from 'assert' import { Position, Range } from 'vscode-languageserver' -import { rangeContains } from '../../src/utils/RangeUtils' +import { areRangesEqual, rangeContains } from '../../src/utils/RangeUtils' const posL1C7 = Position.create(1, 7) const posL3C3 = Position.create(3, 3) @@ -60,4 +60,22 @@ describe('RangeUtils', () => { assert.ok(!rangeContains(rangeL3C3ToL5C5, rangeL1C7ToL7C4)) }) }) + + describe('#areRangesEqual', () => { + it('should return true when A and B represent the same range', () => { + assert.ok(areRangesEqual(rangeL3C3ToL5C5, rangeL3C3ToL5C5Dup)) + }) + + it('should return false when ranges have the same start but different end', () => { + assert.ok(!areRangesEqual(rangeL3C3ToL5C5, rangeL3C3ToL5C6)) + }) + + it('should return false when ranges have the same end but different start', () => { + assert.ok(!areRangesEqual(rangeL3C3ToL3C6, rangeL3C4ToL3C6)) + }) + + it('should return false when ranges have different start and end', () => { + assert.ok(!areRangesEqual(rangeL3C3ToL5C5, rangeL5C5ToL5C6)) + }) + }) })