From 1352bd666b8fc1dc1e4bbe41b72a641479c9c541 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Thu, 6 Apr 2023 11:16:16 -0600 Subject: [PATCH 01/55] init --- package-lock.json | 6487 +-------------------------------------------- package.json | 3 +- prettierrc.json | 19 + src/client.ts | 588 ++-- src/endpoints.ts | 17 - src/entities.ts | 1874 ------------- src/index.ts | 100 +- src/params.ts | 219 -- src/parse.ts | 467 ---- src/stream.ts | 100 +- src/types.ts | 969 +++++++ 11 files changed, 1311 insertions(+), 9532 deletions(-) create mode 100644 prettierrc.json delete mode 100644 src/endpoints.ts delete mode 100644 src/entities.ts delete mode 100644 src/params.ts delete mode 100644 src/parse.ts create mode 100644 src/types.ts diff --git a/package-lock.json b/package-lock.json index 6249559..6ddd1d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6422 +1,8 @@ { "name": "@master-chief/alpaca", "version": "6.3.20", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "@master-chief/alpaca", - "version": "6.3.20", - "license": "ISC", - "dependencies": { - "@master-chief/map": "^0.0.6", - "abort-controller": "^3.0.0", - "bottleneck": "^2.19.5", - "bufferutil": "^4.0.3", - "eventemitter3": "^4.0.7", - "is-blob": "^2.1.0", - "isomorphic-unfetch": "^3.1.0", - "isomorphic-ws": "^4.0.1", - "qs": "^6.9.6", - "utf-8-validate": "^5.0.4", - "ws": "^7.5.0" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^17.1.0", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^11.2.0", - "@rollup/plugin-typescript": "^8.2.0", - "@types/jest": "^27.0.2", - "@types/node-fetch": "^2.5.8", - "@types/qs": "^6.9.5", - "@types/ws": "^7.4.0", - "jest": "^27.2.4", - "rimraf": "^3.0.2", - "rollup": "^2.39.0", - "rollup-plugin-terser": "^7.0.2", - "standard-version": "^9.1.1", - "ts-jest": "^27.0.5", - "tslib": "^2.0.3", - "typescript": "^4.4.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz", - "integrity": "sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz", - "integrity": "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.4.tgz", - "integrity": "sha512-94znCKynPZpDpYHQ6esRJSc11AmONrVkBOBZiD7S+bSubHhrUfbS95EY5HIOxhm4PQO7cnvZkL3oJcY0oMA+Wg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.2.4", - "jest-util": "^27.2.4", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.4.tgz", - "integrity": "sha512-UNQLyy+rXoojNm2MGlapgzWhZD1CT1zcHZQYeiD0xE7MtJfC19Q6J5D/Lm2l7i4V97T30usKDoEtjI8vKwWcLg==", - "dev": true, - "dependencies": { - "@jest/console": "^27.2.4", - "@jest/reporters": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.2.4", - "jest-config": "^27.2.4", - "jest-haste-map": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-resolve-dependencies": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "jest-watcher": "^27.2.4", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", - "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "jest-mock": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", - "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.2.4", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.4.tgz", - "integrity": "sha512-DRsRs5dh0i+fA9mGHylTU19+8fhzNJoEzrgsu+zgJoZth3x8/0juCQ8nVVdW1er4Cqifb/ET7/hACYVPD0dBEA==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.2.4", - "@jest/types": "^27.2.4", - "expect": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.4.tgz", - "integrity": "sha512-LHeSdDnDZkDnJ8kvnjcqV8P1Yv/32yL4d4XfR5gBiy3xGO0onwll1QEbvtW96fIwhx2nejug0GTaEdNDoyr3fQ==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.4.tgz", - "integrity": "sha512-eU+PRo0+lIS01b0dTmMdVZ0TtcRSxEaYquZTRFMQz6CvsehGhx9bRzi9Zdw6VROviJyv7rstU+qAMX5pNBmnfQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.4.tgz", - "integrity": "sha512-fpk5eknU3/DXE2QCCG1wv/a468+cfPo3Asu6d6yUtM9LOPh709ubZqrhuUOYfM8hXMrIpIdrv1CdCrWWabX0rQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.2.4", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-runtime": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.4.tgz", - "integrity": "sha512-n5FlX2TH0oQGwyVDKPxdJ5nI2sO7TJBFe3u3KaAtt7TOiV4yL+Y+rSFDl+Ic5MpbiA/eqXmLAQxjnBmWgS2rEA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.4", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.2.4", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/types": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", - "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@master-chief/map": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@master-chief/map/-/map-0.0.6.tgz", - "integrity": "sha512-QOLJmzRGkSbwFRgJ2y1Z8Jx1pIcrluWtHaxnpc14KJ6PbumJv/lM1g5Se+HtVbZSqZkQQ4l5Z2wG4uXuk520oQ==", - "bin": { - "map": "dist/main.js" - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", - "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^2.30.0" - } - }, - "node_modules/@rollup/plugin-json": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.0.8" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-typescript": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.5.tgz", - "integrity": "sha512-QL/LvDol/PAGB2O0S7/+q2HpSUNodpw7z6nGn9BfoVCPOZ0r4EALrojFU29Bkoi2Hr2jgTocTejJ5GGWZfOxbQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "resolve": "^1.17.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0", - "tslib": "*", - "typescript": ">=3.7.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", - "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", - "dev": true, - "dependencies": { - "jest-diff": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", - "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==", - "dev": true - }, - "node_modules/@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", - "dev": true - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", - "dev": true - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/babel-jest": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.4.tgz", - "integrity": "sha512-f24OmxyWymk5jfgLdlCMu4fTs4ldxFBIdn5sJdhvGC1m08rSkJ5hYbWkNmfBSvE/DjhCVNSHXepxsI6THGfGsg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.2.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.2.tgz", - "integrity": "sha512-jSDZyqJmkKMEMi7SZAgX5UltFdR5NAO43vY0AwTpu4X3sGH7GLLQ83KiUomgrnvZRCeW0yPPnKqnxPqQOER9zQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001261", - "electron-to-chromium": "^1.3.854", - "escalade": "^3.1.1", - "nanocolors": "^0.2.12", - "node-releases": "^1.1.76" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bufferutil": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.2.0" - } - }, - "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "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", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001263", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001263.tgz", - "integrity": "sha512-doiV5dft6yzWO1WwU19kt8Qz8R0/8DgEziz6/9n2FxUasteZNwNNYSmJO3GLBH8lCVE73AB1RPDPAeYbcO5Cvw==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/conventional-changelog": { - "version": "3.1.24", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.24.tgz", - "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==", - "dev": true, - "dependencies": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", - "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-atom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", - "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-codemirror": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", - "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-config-spec": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", - "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", - "dev": true - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.5.0.tgz", - "integrity": "sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.3.tgz", - "integrity": "sha512-MwnZjIoMRL3jtPH5GywVNqetGILC7g6RQFvdb8LRU/fA/338JbeWAku3PZ8yQ+mtVRViiISqJlb0sOz0htBZig==", - "dev": true, - "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", - "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/conventional-changelog-core/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-ember": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", - "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-eslint": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", - "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-express": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", - "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-jquery": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", - "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-jshint": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", - "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.0.tgz", - "integrity": "sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g==", - "dev": true, - "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.6", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "dev": true, - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", - "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", - "dev": true, - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0", - "trim-off-newlines": "^1.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-recommended-bump": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", - "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", - "dev": true, - "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.3.4", - "conventional-commits-filter": "^2.0.7", - "conventional-commits-parser": "^3.2.0", - "git-raw-commits": "^2.0.8", - "git-semver-tags": "^4.1.1", - "meow": "^8.0.0", - "q": "^1.5.1" - }, - "bin": { - "conventional-recommended-bump": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "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 - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotgitignore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", - "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.3.857", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.857.tgz", - "integrity": "sha512-a5kIr2lajm4bJ5E4D3fp8Y/BRB0Dx2VOcCRE5Gtb679mXIME/OFhWler8Gy2ksrf8gFX+EFCSIGA33FB3gqYpg==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.4.tgz", - "integrity": "sha512-gOtuonQ8TCnbNNCSw2fhVzRf8EFYDII4nB5NmG4IEV0rbUnW1I5zXvoTntU4iicB/Uh0oZr20NGlOLdJiwsOZA==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-regex-util": "^27.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-access": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", - "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", - "dev": true, - "dependencies": { - "null-check": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-pkg-repo": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.1.2.tgz", - "integrity": "sha512-/FjamZL9cBYllEbReZkxF2IMh80d8TJoC4e3bmLNif8ibHw95aj0N/tzqK0kZz9eU/3w3dL6lF4fnnX/sDdW3A==", - "dev": true, - "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "meow": "^7.0.0", - "through2": "^2.0.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-pkg-repo/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-pkg-repo/node_modules/meow": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", - "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/get-pkg-repo/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/get-pkg-repo/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/get-pkg-repo/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-pkg-repo/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/git-raw-commits": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", - "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", - "dev": true, - "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", - "dev": true, - "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", - "dev": true, - "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", - "dev": true, - "dependencies": { - "ini": "^1.3.2" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-blob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", - "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "dependencies": { - "ci-info": "^3.1.1" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "dev": true, - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", - "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" - } - }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.1.tgz", - "integrity": "sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", - "integrity": "sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==", - "dev": true, - "dependencies": { - "@jest/core": "^27.2.4", - "import-local": "^3.0.2", - "jest-cli": "^27.2.4" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.4.tgz", - "integrity": "sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.4.tgz", - "integrity": "sha512-TtheheTElrGjlsY9VxkzUU1qwIx05ItIusMVKnvNkMt4o/PeegLRcjq3Db2Jz0GGdBalJdbzLZBgeulZAJxJWA==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.2.4", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.4.tgz", - "integrity": "sha512-4kpQQkg74HYLaXo3nzwtg4PYxSLgL7puz1LXHj5Tu85KmlIpxQFjRkXlx4V47CYFFIDoyl3rHA/cXOxUWyMpNg==", - "dev": true, - "dependencies": { - "@jest/core": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "jest-config": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", - "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.2.4", - "@jest/types": "^27.2.4", - "babel-jest": "^27.2.4", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.2.4", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "micromatch": "^4.0.4", - "pretty-format": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.4.tgz", - "integrity": "sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.4.tgz", - "integrity": "sha512-w9XVc+0EDBUTJS4xBNJ7N2JCcWItFd006lFjz77OarAQcQ10eFDBMrfDv2GBJMKlXe9aq0HrIIF51AXcZrRJyg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.4.tgz", - "integrity": "sha512-X70pTXFSypD7AIzKT1mLnDi5hP9w9mdTRcOGOmoDoBrNyNEg4rYm6d4LQWFLc9ps1VnMuDOkFSG0wjSNYGjkng==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.4.tgz", - "integrity": "sha512-ZbVbFSnbzTvhLOIkqh5lcLuGCCFvtG4xTXIRPK99rV2KzQT3kNg16KZwfTnLNlIiWCE8do960eToeDfcqmpSAw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.4.tgz", - "integrity": "sha512-bkJ4bT00T2K+1NZXbRcyKnbJ42I6QBvoDNMTAQQDBhaGNnZreiQKUNqax0e6hLTx7E75pKDeltVu3V1HAdu+YA==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-haste-map/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.4.tgz", - "integrity": "sha512-fcffjO/xLWLVnW2ct3No4EksxM5RyPwHDYu9QU+90cC+/eSMLkFAxS55vkqsxexOO5zSsZ3foVpMQcg/amSeIQ==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.2.4", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.2.4", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.4.tgz", - "integrity": "sha512-SrcHWbe0EHg/bw2uBjVoHacTo5xosl068x2Q0aWsjr2yYuW2XwqrSkZV4lurUop0jhv1709ymG4or+8E4sH27Q==", - "dev": true, - "dependencies": { - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.4.tgz", - "integrity": "sha512-nQeLfFAIPPkyhkDfifAPfP/U5wm1x0fLtAzqXZSSKckXDNuk2aaOfQiDYv1Mgf5GY6yOsxfUnvNm3dDjXM+BXw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.2.4", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", - "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.4", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "pretty-format": "^27.2.4", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", - "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.4.tgz", - "integrity": "sha512-IsAO/3+3BZnKjI2I4f3835TBK/90dxR7Otgufn3mnrDFTByOSXclDi3G2XJsawGV4/18IMLARJ+V7Wm7t+J89Q==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "chalk": "^4.0.0", - "escalade": "^3.1.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "resolve": "^1.20.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.4.tgz", - "integrity": "sha512-i5s7Uh9B3Q6uwxLpMhNKlgBf6pcemvWaORxsW1zNF/YCY3jd5EftvnGBI+fxVwJ1CBxkVfxqCvm1lpZkbaoGmg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.4.tgz", - "integrity": "sha512-hIo5PPuNUyVDidZS8EetntuuJbQ+4IHWxmHgYZz9FIDbG2wcZjrP6b52uMDjAEQiHAn8yn8ynNe+TL8UuGFYKg==", - "dev": true, - "dependencies": { - "@jest/console": "^27.2.4", - "@jest/environment": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-haste-map": "^27.2.4", - "jest-leak-detector": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-runtime": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.4.tgz", - "integrity": "sha512-ICKzzYdjIi70P17MZsLLIgIQFCQmIjMFf+xYww3aUySiUA/QBPUTdUqo5B2eg4HOn9/KkUsV0z6GVgaqAPBJvg==", - "dev": true, - "dependencies": { - "@jest/console": "^27.2.4", - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/globals": "^27.2.4", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-mock": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.4.tgz", - "integrity": "sha512-5DFxK31rYS8X8C6WXsFx8XxrxW3PGa6+9IrUcZdTLg1aEyXDGIeiBh4jbwvh655bg/9vTETbEj/njfZicHTZZw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.2.4", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-util": "^27.2.4", - "natural-compare": "^1.4.0", - "pretty-format": "^27.2.4", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", - "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.4.tgz", - "integrity": "sha512-VMtbxbkd7LHnIH7PChdDtrluCFRJ4b1YV2YJzNwwsASMWftq/HgqiqjvptBOWyWOtevgO3f14wPxkPcLlVBRog==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "leven": "^3.1.0", - "pretty-format": "^27.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.4.tgz", - "integrity": "sha512-LXC/0+dKxhK7cfF7reflRYlzDIaQE+fL4ynhKhzg8IMILNMuI4xcjXXfUJady7OR4/TZeMg7X8eHx8uan9vqaQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.2.4", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "dependencies": { - "tmpl": "1.0.x" - } - }, - "node_modules/map-obj": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", - "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", - "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", - "dev": true, - "dependencies": { - "mime-db": "1.49.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanocolors": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", - "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", - "dev": true - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pretty-format": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", - "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.56.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.2.tgz", - "integrity": "sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", - "dev": true - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/standard-version": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.1.tgz", - "integrity": "sha512-5qMxXw/FxLouC5nANyx/5RY1kiorJx9BppUso8gN07MG64q2uLRmrPb4KfXp3Ql4s/gxjZwZ89e0FwxeLubGww==", - "deprecated": "standard-version is deprecated. If you're a GitHub user, I recommend https://github.com/googleapis/release-please as an alternative.", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "conventional-changelog": "3.1.24", - "conventional-changelog-config-spec": "2.1.0", - "conventional-changelog-conventionalcommits": "4.5.0", - "conventional-recommended-bump": "6.1.0", - "detect-indent": "^6.0.0", - "detect-newline": "^3.1.0", - "dotgitignore": "^2.1.0", - "figures": "^3.1.0", - "find-up": "^5.0.0", - "fs-access": "^1.0.1", - "git-semver-tags": "^4.0.0", - "semver": "^7.1.1", - "stringify-package": "^1.0.1", - "yargs": "^16.0.0" - }, - "bin": { - "standard-version": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/standard-version/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-version/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-version/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/standard-version/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/standard-version/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/standard-version/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/standard-version/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-version/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/standard-version/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/standard-version/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/standard-version/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/standard-version/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stringify-package": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", - "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", - "dev": true - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/trim-off-newlines": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz", - "integrity": "sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", - "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unfetch": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", - "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.2.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "dependencies": { - "makeerror": "1.0.x" - } - }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", - "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, "dependencies": { "@babel/code-frame": { "version": "7.14.5", @@ -7413,6 +999,16 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -8143,8 +1739,8 @@ "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", "dev": true, "requires": { - "is-text-path": "^1.0.1", "JSONStream": "^1.0.4", + "is-text-path": "^1.0.1", "lodash": "^4.17.15", "meow": "^8.0.0", "split2": "^3.0.0", @@ -9077,8 +2673,7 @@ "isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "requires": {} + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==" }, "istanbul-lib-coverage": { "version": "3.0.1", @@ -9419,8 +3014,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} + "dev": true }, "jest-regex-util": { "version": "27.0.6", @@ -9746,16 +3340,6 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -10306,6 +3890,12 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "dev": true + }, "pretty-format": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", @@ -10803,23 +4393,6 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -10841,6 +4414,23 @@ "strip-ansi": "^6.0.0" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, "stringify-package": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", @@ -11263,8 +4853,7 @@ "ws": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", - "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", - "requires": {} + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==" }, "xml-name-validator": { "version": "3.0.0", diff --git a/package.json b/package.json index c0cf4df..c531c48 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "@types/qs": "^6.9.5", "@types/ws": "^7.4.0", "jest": "^27.2.4", + "prettier": "^2.8.7", "rimraf": "^3.0.2", "rollup": "^2.39.0", "rollup-plugin-terser": "^7.0.2", @@ -108,4 +109,4 @@ "tslib": "^2.0.3", "typescript": "^4.4.3" } -} \ No newline at end of file +} diff --git a/prettierrc.json b/prettierrc.json new file mode 100644 index 0000000..76821ea --- /dev/null +++ b/prettierrc.json @@ -0,0 +1,19 @@ +{ + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": false, + "quoteProps": "as-needed", + "jsxSingleQuote": false, + "trailingComma": "es5", + "bracketSpacing": true, + "bracketSameLine": false, + "arrowParens": "always", + "requirePragma": false, + "proseWrap": "preserve", + "htmlWhitespaceSensitivity": "css", + "endOfLine": "lf", + "embeddedLanguageFormatting": "auto", + "singleAttributePerLine": false +} \ No newline at end of file diff --git a/src/client.ts b/src/client.ts index 8eb411f..7e14008 100644 --- a/src/client.ts +++ b/src/client.ts @@ -1,75 +1,14 @@ -import qs from 'qs'; -import parse from './parse.js'; -import isofetch from 'isomorphic-unfetch'; -import endpoints from './endpoints.js'; -import Bottleneck from 'bottleneck'; - -import { - RawAccount, - Account, - Order, - Position, - Asset, - Watchlist, - Calendar, - Clock, - AccountConfigurations, - PortfolioHistory, - RawOrder, - RawPosition, - RawActivity, - Activity, - DefaultCredentials, - OAuthCredentials, - OrderCancelation, - RawOrderCancelation, - PageOfTrades, - PageOfQuotes, - PageOfBars, - Bar_v1, - LastQuote_v1, - LastTrade_v1, - Snapshot, - NewsPage, - LatestTrade, - Endpoints, -} from './entities.js'; - -import { - GetOrder, - GetOrders, - PlaceOrder, - ReplaceOrder, - CancelOrder, - GetPosition, - ClosePosition, - GetAsset, - GetAssets, - GetWatchList, - CreateWatchList, - UpdateWatchList, - AddToWatchList, - RemoveFromWatchList, - DeleteWatchList, - GetCalendar, - UpdateAccountConfigurations, - GetAccountActivities, - GetPortfolioHistory, - GetBars, - GetBars_v1, - GetTrades, - GetQuotes, - GetLastTrade_v1, - GetLastQuote_v1, - GetSnapshot, - GetSnapshots, - ClosePositions, - GetNews, - GetLatestTrade, -} from './params.js'; - -const unifetch = typeof fetch !== 'undefined' ? fetch : isofetch; -export class AlpacaClient { +import * as Types from "./types"; + +import qs from "qs"; +import isofetch from "isomorphic-unfetch"; +import Bottleneck from "bottleneck"; + +import { Endpoints, endpoints } from "./index"; + +const unifetch = typeof fetch !== "undefined" ? fetch : isofetch; + +export class Client { private baseURLs: Endpoints = endpoints; private limiter = new Bottleneck({ reservoir: 200, // initial value @@ -84,421 +23,298 @@ export class AlpacaClient { public params: { rate_limit?: boolean; endpoints?: Endpoints | Map; - credentials?: DefaultCredentials | OAuthCredentials; - }, + credentials?: Types.DefaultCredentials | Types.OAuthCredentials; + } ) { // override endpoints if custom provided - if ('endpoints' in params) { + if ("endpoints" in params) { this.baseURLs = Object.assign(endpoints, params.endpoints); } if ( // if not specified - !('paper' in params.credentials) && + !("paper" in params.credentials) && // and live key isn't already provided - !('key' in params.credentials && params.credentials.key.startsWith('A')) + !("key" in params.credentials && params.credentials.key.startsWith("A")) ) { - params.credentials['paper'] = true; + params.credentials["paper"] = true; } if ( - 'access_token' in params.credentials && - ('key' in params.credentials || 'secret' in params.credentials) + "access_token" in params.credentials && + ("key" in params.credentials || "secret" in params.credentials) ) { throw new Error( - "can't create client with both default and oauth credentials", + "can't create client with both default and oauth credentials" ); } } async isAuthenticated(): Promise { try { - await this.getAccount(); + await this.get.account(); return true; } catch { return false; } } - async getAccount(): Promise { - return parse.account( - await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account`, - }), - ); - } - - async getOrder(params: GetOrder): Promise { - return parse.order( - await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders/${ - params.order_id || params.client_order_id - }`, - data: { nested: params.nested }, - }), - ); - } - - async getOrders(params: GetOrders = {}): Promise { - return parse.orders( - await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders`, - data: { - ...params, - symbols: params.symbols ? params.symbols.join(',') : undefined, - }, - }), - ); - } - - async placeOrder(params: PlaceOrder): Promise { - return parse.order( - await this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/orders`, - data: params, - }), - ); + async placeOrder(params: Types.PlaceOrder): Promise { + return await this.request({ + method: "POST", + url: `${this.baseURLs.rest.account}/orders`, + data: params, + }); } - async replaceOrder(params: ReplaceOrder): Promise { - return parse.order( - await this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - data: params, - }), - ); + async replaceOrder(params: Types.ReplaceOrder): Promise { + return await this.request({ + method: "PATCH", + url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, + data: params, + }); } - cancelOrder(params: CancelOrder): Promise { + cancelOrder(params: Types.CancelOrder): Promise { return this.request({ - method: 'DELETE', + method: "DELETE", url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, isJSON: false, }); } - async cancelOrders(): Promise { - return parse.canceled_orders( - await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders`, - }), - ); - } - - async getPosition(params: GetPosition): Promise { - return parse.position( - await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - }), - ); - } - - async getPositions(): Promise { - return parse.positions( - await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions`, - }), - ); - } - - async closePosition(params: ClosePosition): Promise { - return parse.order( - await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - data: params, - }), - ); - } - - async closePositions(params: ClosePositions): Promise { - return parse.orders( - await this.request({ - method: 'DELETE', - url: `${ - this.baseURLs.rest.account - }/positions?cancel_orders=${JSON.stringify( - params.cancel_orders ?? false, - )}`, - }), - ); - } - - getAsset(params: GetAsset): Promise { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets/${params.asset_id_or_symbol}`, + async cancelOrders(): Promise { + return await this.request({ + method: "DELETE", + url: `${this.baseURLs.rest.account}/orders`, }); } - getAssets(params?: GetAssets): Promise { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets`, + async closePosition(params: Types.ClosePosition): Promise { + return await this.request({ + method: "DELETE", + url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, data: params, }); } - getWatchlist(params: GetWatchList): Promise { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - - getWatchlists(): Promise { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists`, + async closePositions(params: Types.ClosePositions): Promise { + return await this.request({ + method: "DELETE", + url: `${ + this.baseURLs.rest.account + }/positions?cancel_orders=${JSON.stringify( + params.cancel_orders ?? false + )}`, }); } - createWatchlist(params: CreateWatchList): Promise { + createWatchlist(params: Types.CreateWatchList): Promise { return this.request({ - method: 'POST', + method: "POST", url: `${this.baseURLs.rest.account}/watchlists`, data: params, }); } - updateWatchlist(params: UpdateWatchList): Promise { + updateWatchlist(params: Types.UpdateWatchList): Promise { return this.request({ - method: 'PUT', + method: "PUT", url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, data: params, }); } - addToWatchlist(params: AddToWatchList): Promise { + addToWatchlist(params: Types.AddToWatchList): Promise { return this.request({ - method: 'POST', + method: "POST", url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, data: params, }); } - removeFromWatchlist(params: RemoveFromWatchList): Promise { + removeFromWatchlist(params: Types.RemoveFromWatchList): Promise { return this.request({ - method: 'DELETE', + method: "DELETE", url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}/${params.symbol}`, }); } - deleteWatchlist(params: DeleteWatchList): Promise { + deleteWatchlist(params: Types.DeleteWatchList): Promise { return this.request({ - method: 'DELETE', + method: "DELETE", url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, }); } - getCalendar(params?: GetCalendar): Promise { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/calendar`, - data: params, - }); - } - - getNews(params?: GetNews): Promise { - // transform symbols if necessary - if ('symbols' in params && Array.isArray(params.symbols)) { - params.symbols = params.symbols.join(','); - } - - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.beta}/news`, - data: params, - }); - } - - async getClock(): Promise { - return parse.clock( - await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/clock`, - }), - ); - } - - getAccountConfigurations(): Promise { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/configurations`, - }); - } - updateAccountConfigurations( - params: UpdateAccountConfigurations, - ): Promise { + params: Types.UpdateAccountConfigurations + ): Promise { return this.request({ - method: 'PATCH', + method: "PATCH", url: `${this.baseURLs.rest.account}/account/configurations`, data: params, }); } - async getAccountActivities( - params: GetAccountActivities, - ): Promise { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params.activity_types.join(','); - } + get = { + account: async (): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/account`, + }); + }, + order: async (params: Types.GetOrder): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/orders/${ + params.order_id || params.client_order_id + }`, + data: { nested: params.nested }, + }); + }, + orders: async (params: Types.GetOrders = {}): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/orders`, + data: { + ...params, + symbols: params.symbols ? params.symbols.join(",") : undefined, + }, + }); + }, + positions: async (): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/positions`, + }); + }, + position: async (params: Types.GetPosition): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, + }); + }, + activities: async ( + params: Types.GetAccountActivities + ): Promise => { + if (params.activity_types && Array.isArray(params.activity_types)) { + params.activity_types = params.activity_types.join(","); + } - return parse.activities( - await this.request({ - method: 'GET', + return await this.request({ + method: "GET", url: `${this.baseURLs.rest.account}/account/activities${ - params.activity_type ? '/'.concat(params.activity_type) : '' + params.activity_type ? "/".concat(params.activity_type) : "" }`, data: { ...params, activity_type: undefined }, - }), - ); - } - - getPortfolioHistory(params?: GetPortfolioHistory): Promise { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/portfolio/history`, - data: params, - }); - } - - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - async getBars_v1( - params: GetBars_v1, - ): Promise<{ [symbol: string]: Bar_v1[] }> { - const transformed: Omit & { symbols: string } = { - ...params, - symbols: params.symbols.join(','), - }; - - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/bars/${params.timeframe}`, - data: transformed, - }); - } - - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - async getLastTrade_v1(params: GetLastTrade_v1): Promise { - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last/stocks/${params.symbol}`, - }); - } - - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - async getLastQuote_v1(params: GetLastQuote_v1): Promise { - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${params.symbol}`, - }); - } - - async getTrades(params: GetTrades): Promise { - return parse.pageOfTrades( - await this.request({ - method: 'GET', + }); + }, + calendar: async (params?: Types.GetCalendar): Promise => { + return this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/calendar`, + data: params, + }); + }, + clock: async (): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/clock`, + }); + }, + assets: async (params?: Types.GetAssets): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/assets`, + data: params, + }); + }, + asset: async (params: Types.GetAsset): Promise => { + return this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/assets/${params.asset_id_or_symbol}`, + }); + }, + watchlists: async (): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/watchlists`, + }); + }, + watchlist: async (params: Types.GetWatchList): Promise => { + return this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, + }); + }, + bars: async (params: Types.GetBars): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/bars`, + data: { ...params, symbol: undefined }, + }); + }, + trades: async (params: Types.GetTrades): Promise => { + return await this.request({ + method: "GET", url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/trades`, data: { ...params, symbol: undefined }, - }), - ); - } - - async getQuotes(params: GetQuotes): Promise { - return parse.pageOfQuotes( - await this.request({ - method: 'GET', + }); + }, + quotes: async (params: Types.GetQuotes): Promise => { + return await this.request({ + method: "GET", url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/quotes`, data: { ...params, symbol: undefined }, - }), - ); - } - - async getBars(params: GetBars): Promise { - return parse.pageOfBars( - await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/bars`, - data: { ...params, symbol: undefined }, - }), - ); - } - - async getLatestTrade({ - symbol, - feed, - limit, - }: GetLatestTrade): Promise { - let query = ''; - - if (feed || limit) { - query = '?'.concat(qs.stringify({ feed, limit })); - } - - return parse.latestTrade( - await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${symbol}/trades/latest`.concat( - query, - ), - }), - ); - } - - async getSnapshot(params: GetSnapshot): Promise { - return parse.snapshot( - await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/snapshot`, - }), - ); - } - - async getSnapshots( - params: GetSnapshots, - ): Promise<{ [key: string]: Snapshot }> { - return parse.snapshots( - await this.request({ - method: 'GET', - url: `${ - this.baseURLs.rest.market_data_v2 - }/stocks/snapshots?symbols=${params.symbols.join(',')}`, - }), - ); - } + }); + }, + portfolioHistory: async ( + params: Types.GetPortfolioHistory + ): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/account/portfolio/history`, + data: params, + }); + }, + accountConfigurations: async (): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/account/configurations`, + }); + }, + news: async (params: Types.GetNews): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.account}/account/news`, + data: params, + }); + }, + }; private async request(params: { - method: 'GET' | 'DELETE' | 'PUT' | 'PATCH' | 'POST'; + method: "GET" | "DELETE" | "PUT" | "PATCH" | "POST"; url: string; data?: { [key: string]: any }; isJSON?: boolean; }): Promise { let headers: any = {}; - if ('access_token' in this.params.credentials) { + if ("access_token" in this.params.credentials) { headers[ - 'Authorization' + "Authorization" ] = `Bearer ${this.params.credentials.access_token}`; } else { - headers['APCA-API-KEY-ID'] = this.params.credentials.key; - headers['APCA-API-SECRET-KEY'] = this.params.credentials.secret; + headers["APCA-API-KEY-ID"] = this.params.credentials.key; + headers["APCA-API-SECRET-KEY"] = this.params.credentials.secret; } if (this.params.credentials.paper) { - params.url = params.url.replace('api.', 'paper-api.'); + params.url = params.url.replace("api.", "paper-api."); } - let query = ''; + let query = ""; if (params.data) { // translate dates to ISO strings @@ -509,8 +325,8 @@ export class AlpacaClient { } // build query - if (!['POST', 'PATCH', 'PUT'].includes(params.method)) { - query = '?'.concat(qs.stringify(params.data)); + if (!["POST", "PATCH", "PUT"].includes(params.method)) { + query = "?".concat(qs.stringify(params.data)); params.data = undefined; } } @@ -541,10 +357,12 @@ export class AlpacaClient { throw result; } - if ('code' in result || 'message' in result) { + if ("code" in result || "message" in result) { throw result; } return result as any; } } + +export default Client; diff --git a/src/endpoints.ts b/src/endpoints.ts deleted file mode 100644 index be92d10..0000000 --- a/src/endpoints.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { DataSource, Endpoints } from './entities'; - -const endpoints: Endpoints = { - rest: { - beta: 'https://data.alpaca.markets/v1beta1', - account: 'https://api.alpaca.markets/v2', - market_data_v2: 'https://data.alpaca.markets/v2', - market_data_v1: 'https://data.alpaca.markets/v1', - }, - websocket: { - account: 'wss://api.alpaca.markets/stream', - market_data: (source: DataSource = 'iex') => - `wss://stream.data.alpaca.markets/v2/${source}`, - }, -}; - -export default endpoints; diff --git a/src/entities.ts b/src/entities.ts deleted file mode 100644 index c6fb854..0000000 --- a/src/entities.ts +++ /dev/null @@ -1,1874 +0,0 @@ -export interface Endpoints { - rest: { - beta: 'https://data.alpaca.markets/v1beta1'; - account: 'https://api.alpaca.markets/v2'; - market_data_v2: 'https://data.alpaca.markets/v2'; - market_data_v1: 'https://data.alpaca.markets/v1'; - }; - websocket: { - account: 'wss://api.alpaca.markets/stream'; - market_data: (source: DataSource) => string; - }; -} - -/** - * Your Alpaca key id and secret. - * Can be passed to the AlpacaClient and AlpacaStream. - */ -export interface DefaultCredentials { - key: string; - secret: string; - paper?: boolean; -} - -/** - * Client ID for Oauth requests on behalf of users. - * Can be passed to the AlpacaClient. - */ -export interface OAuthCredentials { - access_token: String; - paper?: boolean; -} - -/** - * The account information with unparsed types, exactly as Alpaca provides it. - * We encourage you to use the Account interface, which has many of these fields parsed. - */ -export interface RawAccount { - account_blocked: boolean; - account_number: string; - buying_power: string; - cash: string; - created_at: string; - currency: string; - daytrade_count: number; - daytrading_buying_power: string; - equity: string; - id: string; - initial_margin: string; - last_equity: string; - last_maintenance_margin: string; - long_market_value: string; - maintenance_margin: string; - multiplier: string; - pattern_day_trader: boolean; - portfolio_value: string; - regt_buying_power: string; - short_market_value: string; - shorting_enabled: boolean; - sma: string; - status: string; - trade_suspended_by_user: boolean; - trading_blocked: boolean; - transfers_blocked: boolean; -} - -/** - * The following are the possible account status values. Most likely, the account status - * is ACTIVE unless there is any problem. The account status may get in ACCOUNT_UPDATED - * when personal information is being updated from the dashboard, in which case you may - * not be allowed trading for a short period of time until the change is approved. - */ -export type AccountStatus = - /** - * The account is onboarding. - */ - | 'ONBOARDING' - /** - * The account application submission failed for some reason. - */ - | 'SUBMISSION_FAILED' - /** - * The account application has been submitted for review. - */ - | 'SUBMITTED' - /** - * The account information is being updated. - */ - | 'ACCOUNT_UPDATED' - /** - * The final account approval is pending. - */ - | 'APPROVAL_PENDING' - /** - * The account is active for trading. - */ - | 'ACTIVE' - /** - * The account application has been rejected. - */ - | 'REJECTED'; - -/** - * Information related to an Alpaca account, such as account status, funds, and various - * flags relevant to an account's ability to trade. - */ -export interface Account { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawAccount; - - /** - * If true, the account activity by user is prohibited. - */ - account_blocked: boolean; - - /** - * Account number. - */ - account_number: string; - - /** - * Current available $ buying power; If multiplier = 4, this is your daytrade buying - * power which is calculated as (last_equity - (last) maintenance_margin) * 4; If - * multiplier = 2, buying_power = max(equity – initial_margin,0) * 2; If multiplier = 1, - * buying_power = cash - */ - buying_power: number; - - /** - * Cash balance - */ - cash: number; - - /** - * Timestamp this account was created at - */ - created_at: Date; - - /** - * "USD" - */ - currency: string; - - /** - * The current number of daytrades that have been made in the last 5 trading days - * (inclusive of today) - */ - daytrade_count: number; - - /** - * Your buying power for day trades (continuously updated value) - */ - daytrading_buying_power: number; - - /** - * Cash + long_market_value + short_market_value - */ - equity: number; - - /** - * Account ID. - */ - id: string; - - /** - * Reg T initial margin requirement (continuously updated value) - */ - initial_margin: number; - - /** - * Equity as of previous trading day at 16:00:00 ET - */ - last_equity: number; - - /** - * Your maintenance margin requirement on the previous trading day - */ - last_maintenance_margin: number; - - /** - * Real-time MtM value of all long positions held in the account - */ - long_market_value: number; - - /** - * Maintenance margin requirement (continuously updated value) - */ - maintenance_margin: number; - - /** - * Buying power multiplier that represents account margin classification; valid values 1 - * (standard limited margin account with 1x buying power), 2 (reg T margin account with - * 2x intraday and overnight buying power; this is the default for all non-PDT accounts - * with $2,000 or more equity), 4 (PDT account with 4x intraday buying power and 2x reg - * T overnight buying power) - */ - multiplier: number; - - /** - * Whether or not the account has been flagged as a pattern day trader - */ - pattern_day_trader: boolean; - - /** - * Total value of cash + holding positions (This field is deprecated. It is equivalent - * to the equity field.) - */ - portfolio_value: number; - - /** - * Your buying power under Regulation T (your excess equity - equity minus margin - * value - times your margin multiplier) - */ - regt_buying_power: number; - - /** - * Real-time MtM value of all short positions held in the account - */ - short_market_value: number; - - /** - * Flag to denote whether or not the account is permitted to short - */ - shorting_enabled: boolean; - - /** - * Value of special memorandum account (will be used at a later date to provide - * additional buying_power) - */ - sma: number; - - /** - * The following are the possible account status values. Most likely, the account status - * is ACTIVE unless there is any problem. The account status may get in ACCOUNT_UPDATED - * when personal information is being updated from the dashboard, in which case you may - * not be allowed trading for a short period of time until the change is approved. - */ - status: AccountStatus; - - /** - * User setting. If true, the account is not allowed to place orders. - */ - trade_suspended_by_user: boolean; - - /** - * If true, the account is not allowed to place orders. - */ - trading_blocked: boolean; - - /** - * If true, the account is not allowed to request money transfers. - */ - transfers_blocked: boolean; -} - -export interface AccountConfigurations { - /** - * both, entry, or exit. Controls Day Trading Margin Call (DTMC) checks. - */ - dtbp_check: 'both' | 'entry' | 'exit'; - - /** - * If true, account becomes long-only mode. - */ - no_shorting: boolean; - - /** - * If true, new orders are blocked. - */ - suspend_trade: boolean; - - /** - * all or none. If none, emails for order fills are not sent. - */ - trade_confirm_email: 'all' | 'none'; -} - -export interface AccountUpdate { - id: string; - created_at: string; - updated_at: string; - deleted_at: any; - status: string; - currency: string; - cash: string; - cash_withdrawable: string; -} - -export interface AggregateMinute { - ev: string; - T: string; - v: number; - av: number; - op: number; - vw: number; - o: number; - c: number; - h: number; - l: number; - a: number; - s: number; - e: number; -} - -export type AssetExchange = - | 'AMEX' - | 'ARCA' - | 'BATS' - | 'NYSE' - | 'NASDAQ' - | 'NYSEARCA'; - -export type AssetStatus = 'active' | 'inactive'; - -/** - * The assets API serves as the master list of assets available for trade and data - * consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. Some - * assets are only available for data consumption via Polygon, and are not tradable with - * Alpaca. These assets will be marked with the flag tradable=false. - */ -export interface Asset { - /** - * Asset ID - */ - id: string; - - /** - * "us_equity" - */ - class: string; - - /** - * AMEX, ARCA, BATS, NYSE, NASDAQ or NYSEARCA - */ - exchange: AssetExchange; - - /** - * Asset symbol - */ - symbol: string; - - /** - * active or inactive - */ - status: AssetStatus; - - /** - * Asset is tradable on Alpaca or not - */ - tradable: boolean; - - /** - * Asset is marginable or not - */ - marginable: boolean; - - /** - * Asset is shortable or not - */ - shortable: boolean; - - /** - * Asset is easy-to-borrow or not (filtering for easy_to_borrow = True is the best way - * to check whether the name is currently available to short at Alpaca). - */ - easy_to_borrow: boolean; - - /** - * Asset is fractionable or not. - */ - fractionable: boolean; -} - -/** - * Contains the time of open and close for a market on a particular day from 1970 to 2029 - */ -export interface Calendar { - /** - * Date string in YYYY-MM-DD format - */ - date: string; - - /** - * The time the market opens at on this date in HH:MM format - */ - open: string; - - /** - * The time the market closes at on this date in HH:MM format - */ - close: string; -} - -export interface RawClock { - timestamp: string; - is_open: boolean; - next_open: string; - next_close: string; -} - -/** - * The clock API serves the current market timestamp, whether or not the market is - * currently open, as well as the times of the next market open and close. - */ -export interface Clock { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawClock; - - /** - * Current timestamp - */ - timestamp: Date; - - /** - * Whether or not the market is open - */ - is_open: boolean; - - /** - * Next market open timestamp - */ - next_open: Date; - - /** - * Next market close timestamp - */ - next_close: Date; -} - -/** A trade which occurred. */ -export interface RawTrade { - /** Trade symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: string; - /** Exchange where the trade happened. */ - x: string; - /** Trade price. */ - p: number; - /** Trade size. */ - s: number; - /** Trade conditions. */ - c: string[]; - /** Trade ID. */ - i: number; - /** Tape. */ - z: string; -} - -/** A page of one or many trades. */ -export interface RawPageOfTrades { - /** Array of trades. */ - trades: RawTrade[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} - -/** A trade which occurred. */ -export interface Trade { - /** Get the raw data as it came from Alpaca. */ - raw(): RawTrade; - /** Trade symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: Date; - /** Exchange where the trade happened. */ - x: string; - /** Trade price. */ - p: number; - /** Trade size. */ - s: number; - /** Trade conditions. */ - c: string[]; - /** Trade ID. */ - i: number; - /** Tape. */ - z: string; -} - -/** A page of one or many trades. */ -export interface PageOfTrades { - /** Get the raw data as it came from Alpaca. */ - raw(): RawPageOfTrades; - /** Array of trades. */ - trades: Trade[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} - -/** A quote for a symbol. */ -export interface RawQuote { - /** Quote symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: string; - /** Ask exchange. */ - ax: string; - /** Ask price. */ - ap: number; - /** Ask size. */ - as: number; - /** Bid exchange. */ - bx: string; - /** Bid price. */ - bp: number; - /** Bid size. */ - bs: number; - /** Quote conditions. */ - c: string[]; -} - -/** A page of one or many quotes. */ -export interface RawPageOfQuotes { - /** Array of quotes. */ - quotes: RawQuote[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} - -/** A quote for a symbol. */ -export interface Quote { - /** Get the raw data as it came from Alpaca. */ - raw(): RawQuote; - /** Quote symbol. */ - S: string; - /** Timestamp in Date format. */ - t: Date; - /** Ask exchange. */ - ax: string; - /** Ask price. */ - ap: number; - /** Ask size. */ - as: number; - /** Bid exchange. */ - bx: string; - /** Bid price. */ - bp: number; - /** Bid size. */ - bs: number; - /** Quote conditions. */ - c: string[]; -} - -/** A page of one or many quotes. */ -export interface PageOfQuotes { - /** Get the raw data as it came from Alpaca. */ - raw(): RawPageOfQuotes; - /** Array of quotes. */ - quotes: Quote[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} - -/** A bar for a symbol. */ -export interface RawBar { - /** Bar symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: string; - /** Open price. */ - o: number; - /** High price. */ - h: number; - /** Low price. */ - l: number; - /** Close price. */ - c: number; - /** Volume. */ - v: number; -} - -/** A page of one or many bars. */ -export interface RawPageOfBars { - /** Array of bars. */ - bars: RawBar[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} - -/** A bar for a symbol. */ -export interface Bar { - /** Get the raw data as it came from Alpaca. */ - raw(): RawBar; - /** Bar symbol. */ - S: string; - /** Timestamp in Date format. */ - t: Date; - /** Open price. */ - o: number; - /** High price. */ - h: number; - /** Low price. */ - l: number; - /** Close price. */ - c: number; - /** Volume. */ - v: number; -} - -/** A page of one or many bars. */ -export interface PageOfBars { - /** Get the raw data as it came from Alpaca. */ - raw(): RawPageOfBars; - /** Array of bars. */ - bars: Bar[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} - -/** - * The parsed result of an order cancelation request. - */ -export interface OrderCancelation { - id: string; - status: number; - order: Order; -} - -/** - * The id, http status code and order as part of the cancel all orders request. - */ -export interface RawOrderCancelation { - id: string; - status: number; - body: RawOrder; -} - -/** - * The order entity with unparsed fields, exactly as Alpaca provides it. - * We encourage you to use the Order interface, which has many of these fields parsed. - */ -export interface RawOrder { - id: string; - client_order_id: string; - created_at: string; - updated_at: string; - submitted_at: string; - filled_at: string; - expired_at: string; - canceled_at: string; - failed_at: string; - replaced_at: string; - replaced_by: string; - replaces: string; - asset_id: string; - symbol: string; - asset_class: string; - qty: string; - filled_qty: string; - type: string; - side: string; - time_in_force: string; - limit_price: string; - stop_price: string; - filled_avg_price: string; - status: string; - extended_hours: boolean; - legs: RawOrder[]; - trail_price: string; - trail_percent: string; - hwm: string; - order_class?: OrderClass; -} - -/** - * Price and volume data during a particular time interval - */ -export interface Bar_v1 { - /** - * the beginning time of this bar as a Unix epoch in seconds - */ - t: number; - - /** - * open price - */ - o: number; - - /** - * high price - */ - h: number; - - /** - * low price - */ - l: number; - - /** - * close price - */ - c: number; - - /** - * volume - */ - v: number; -} - -/** - * Last quote details for a symbol - */ -export interface LastQuote_v1 { - status: string; - symbol: string; - last: { - /** - * the current ask price - */ - askprice: number; - - /** - * the current ask size - */ - asksize: number; - - /** - * the exchange code of the ask quote - */ - askexchange: number; - - /** - * the current bid price - */ - bidprice: number; - - /** - * the current bid size - */ - bidsize: number; - - /** - * the exchange code of the bid quote - */ - bidexchange: number; - - /** - * epoch timestamp in nanoseconds - */ - timestamp: number; - }; -} - -/** - * Last trade details for a symbol - */ -export interface LastTrade_v1 { - status: string; - symbol: string; - last: { - /** - * last trade price - */ - price: number; - - /** - * last trade volume size - */ - size: number; - - /** - * exchange code where the last trade was made - */ - exchange: number; - - /** - * condition flag 1 - */ - cond1: number; - - /** - * condition flag 2 - */ - cond2: number; - - /** - * condition flag 3 - */ - cond3: number; - - /** - * condition flag 4 - */ - cond4: number; - - /** - * epoch timestamp in nanoseconds - */ - timestamp: number; - }; -} - -export interface RawSnapshot { - symbol: string; - latestTrade: { - t: string; - x: string; - p: number; - s: number; - c?: string[] | null; - i: number; - z: string; - }; - latestQuote: { - t: string; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c?: string[] | null; - }; - minuteBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - dailyBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - prevDailyBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; -} - -export interface Snapshot { - /** Get the raw data as it came from Alpaca. */ - raw(): RawSnapshot; - symbol: string; - latestTrade: { - t: Date; - x: string; - p: number; - s: number; - c?: string[] | null; - i: number; - z: string; - }; - latestQuote: { - t: Date; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c?: string[] | null; - }; - minuteBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - dailyBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - prevDailyBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; -} - -export type DataSource = 'iex' | 'sip'; - -export type OrderType = - | 'market' - | 'limit' - | 'stop' - | 'stop_limit' - | 'trailing_stop'; - -export type OrderClass = 'simple' | 'bracket' | 'oto' | 'oco'; - -export type OrderSide = 'buy' | 'sell'; - -export type OrderTimeInForce = - /** - * A day order is eligible for execution only on the day it is live. By default, the - * order is only valid during Regular Trading Hours (9:30am - 4:00pm ET). If unfilled - * after the closing auction, it is automatically canceled. If submitted after the - * close, it is queued and submitted the following trading day. However, if marked as - * eligible for extended hours, the order can also execute during supported extended - * hours. - */ - | 'day' - - /** - * The order is good until canceled. Non-marketable GTC limit orders are subject to - * price adjustments to offset corporate actions affecting the issue. We do not - * currently support Do Not Reduce(DNR) orders to opt out of such price adjustments. - */ - | 'gtc' - - /** - * Use this TIF with a market/limit order type to submit "market on open" (MOO) and - * "limit on open" (LOO) orders. This order is eligible to execute only in the market - * opening auction. Any unfilled orders after the open will be cancelled. OPG orders - * submitted after 9:28am but before 7:00pm ET will be rejected. OPG orders submitted - * after 7:00pm will be queued and routed to the following day's opening auction. On - * open/on close orders are routed to the primary exchange. Such orders do not - * necessarily execute exactly at 9:30am / 4:00pm ET but execute per the exchange's - * auction rules. - */ - | 'opg' - - /** - * Use this TIF with a market/limit order type to submit "market on close" (MOC) and - * "limit on close" (LOC) orders. This order is eligible to execute only in the market - * closing auction. Any unfilled orders after the close will be cancelled. CLS orders - * submitted after 3:50pm but before 7:00pm ET will be rejected. CLS orders submitted - * after 7:00pm will be queued and routed to the following day's closing auction. Only - * available with API v2. - */ - | 'cls' - - /** - * An Immediate Or Cancel (IOC) order requires all or part of the order to be executed - * immediately. Any unfilled portion of the order is canceled. Only available with API - * v2. - */ - | 'ioc' - - /** - * A Fill or Kill (FOK) order is only executed if the entire order quantity can be - * filled, otherwise the order is canceled. Only available with API v2. - */ - | 'fok'; - -export type OrderStatus = - /** - * The order has been received by Alpaca, and routed to exchanges for execution. This - * is the usual initial state of an order. - */ - | 'new' - - /** - * The order has been partially filled. - */ - | 'partially_filled' - - /** - * The order has been filled, and no further updates will occur for the order. - */ - | 'filled' - - /** - * The order is done executing for the day, and will not receive further updates until - * the next trading day. - */ - | 'done_for_day' - - /** - * The order has been canceled, and no further updates will occur for the order. This - * can be either due to a cancel request by the user, or the order has been canceled by - * the exchanges due to its time-in-force. - */ - | 'canceled' - - /** - * The order has expired, and no further updates will occur for the order. - */ - | 'expired' - - /** - * The order was replaced by another order, or was updated due to a market event such - * as corporate action. - */ - | 'replaced' - - /** - * The order is waiting to be canceled. - */ - | 'pending_cancel' - - /** - * The order is waiting to be replaced by another order. The order will reject cancel - * request while in this state. - */ - | 'pending_replace' - - /** - * (Uncommon) The order has been received by Alpaca, but hasn't yet been routed to the - * execution venue. This could be seen often out side of trading session hours. - */ - | 'accepted' - - /** - * (Uncommon) The order has been received by Alpaca, and routed to the exchanges, but - * has not yet been accepted for execution. This state only occurs on rare occasions. - */ - | 'pending_new' - - /** - * (Uncommon) The order has been received by exchanges, and is evaluated for pricing. - * This state only occurs on rare occasions. - */ - | 'accepted_for_bidding' - - /** - * (Uncommon) The order has been stopped, and a trade is guaranteed for the order, - * usually at a stated price or better, but has not yet occurred. This state only - * occurs on rare occasions. - */ - | 'stopped' - - /** - * (Uncommon) The order has been rejected, and no further updates will occur for the - * order. This state occurs on rare occasions and may occur based on various conditions - * decided by the exchanges. - */ - | 'rejected' - - /** - * (Uncommon) The order has been suspended, and is not eligible for trading. This state - * only occurs on rare occasions. - */ - | 'suspended' - - /** - * (Uncommon) The order has been completed for the day (either filled or done for day), - * but remaining settlement calculations are still pending. This state only occurs on - * rare occasions. - */ - | 'calculated'; - -export interface RawLatestTrade { - symbol: string; - trade: { - t: string; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; - }; -} - -export interface LatestTrade { - raw(): RawLatestTrade; - symbol: string; - trade: { - t: Date; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; - }; -} - -/** - * An Order in Alpaca - */ -export interface Order { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawOrder; - - /** - * Order id - */ - id: string; - - /** - * Client unique order id - */ - client_order_id: string; - - /** - * When the order was created - */ - created_at: Date; - - /** - * When the order was last updated - */ - updated_at: Date; - - /** - * When the order was submitted - */ - submitted_at: Date; - - /** - * When the order was filled - */ - filled_at: Date; - - /** - * When the order expired - */ - expired_at: Date; - - /** - * When the order was canceled - */ - canceled_at: Date; - - /** - * When the order failed - */ - failed_at: Date; - - /** - * When the order was last replaced - */ - replaced_at: Date; - - /** - * The order ID that this order was replaced by - */ - replaced_by: string; - - /** - * The order ID that this order replaces - */ - replaces: string; - - /** - * Asset ID - */ - asset_id: string; - - /** - * Asset symbol - */ - symbol: string; - - /** - * Asset class - */ - asset_class: string; - - /** - * Ordered quantity - */ - qty: number; - - /** - * Filled quantity - */ - filled_qty: number; - - /** - * Order type (market, limit, stop, stop_limit, trailing_stop) - */ - type: OrderType; - - /** - * Buy or sell - */ - side: OrderSide; - - /** - * Order Time in Force - */ - time_in_force: OrderTimeInForce; - - /** - * Limit price - */ - limit_price: number; - - /** - * Stop price - */ - stop_price: number; - - /** - * Filled average price - */ - filled_avg_price: number; - - /** - * The status of the order - */ - status: OrderStatus; - - /** - * If true, eligible for execution outside regular trading hours. - */ - extended_hours: boolean; - - /** - * When querying non-simple order_class orders in a nested style, an array of Order - * entities associated with this order. Otherwise, null. - */ - legs: Order[]; - - /** - * The dollar value away from the high water mark for trailing stop orders. - */ - trail_price: number; - - /** - * The percent value away from the high water mark for trailing stop orders. - */ - trail_percent: number; - - /** - * The highest (lowest) market price seen since the trailing stop order was submitted. - */ - hwm: number; - - /** - * Mostly used for non-simple orders such as bracket, one-triggers-other, or one-cancels-other. - */ - order_class: OrderClass; -} - -/** - * Timeseries data for equity and profit loss information of the account - */ -export interface PortfolioHistory { - /** - * time of each data element, left-labeled (the beginning of time window) - */ - timestamp: number[]; - - /** - * equity value of the account in dollar amount as of the end of each time window - */ - equity: number[]; - - /** - * profit/loss in dollar from the base value - */ - profit_loss: number[]; - - /** - * profit/loss in percentage from the base value - */ - profit_loss_pct: number[]; - - /** - * basis in dollar of the profit loss calculation - */ - base_value: number; - - /** - * time window size of each data element - */ - timeframe: '1Min' | '5Min' | '15Min' | '1H' | '1D'; -} - -/** - * A position with unparsed fields, exactly as Alpaca provides it. - * We encourage you to use the Position interface, which has many of these fields parsed. - */ -export interface RawPosition { - asset_id: string; - symbol: string; - exchange: string; - asset_class: string; - avg_entry_price: string; - qty: string; - side: string; - market_value: string | null; - cost_basis: string; - unrealized_pl: string | null; - unrealized_plpc: string | null; - unrealized_intraday_pl: string | null; - unrealized_intraday_plpc: string | null; - current_price: string | null; - lastday_price: string | null; - change_today: string | null; -} - -export type PositionSide = 'long' | 'short'; - -/** - * A position in Alpaca - */ -export interface Position { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawPosition; - - /** - * Asset ID - */ - asset_id: string; - - /** - * Symbol name of the asset - */ - symbol: string; - - /** - * Exchange name of the asset - */ - exchange: string; - - /** - * Asset class name - */ - asset_class: string; - - /** - * Average entry price of the position - */ - avg_entry_price: number; - - /** - * The number of shares - */ - qty: number; - - /** - * long or short - */ - side: PositionSide; - - /** - * Total dollar amount of the position - */ - market_value: number | null; - - /** - * Total cost basis in dollar - */ - cost_basis: number; - - /** - * Unrealized profit/loss in dollars - */ - unrealized_pl: number | null; - - /** - * Unrealized profit/loss percent (by a factor of 1) - */ - unrealized_plpc: number | null; - - /** - * Unrealized profit/loss in dollars for the day - */ - unrealized_intraday_pl: number | null; - - /** - * Unrealized profit/loss percent (by a factor of 1) - */ - unrealized_intraday_plpc: number | null; - - /** - * Current asset price per share - */ - current_price: number | null; - - /** - * Last day's asset price per share based on the closing value of the last trading day - */ - lastday_price: number | null; - - /** - * Percent change from last day price (by a factor of 1) - */ - change_today: number | null; -} - -export type ActivityType = - /** - * Order fills (both partial and full fills) - */ - | 'FILL' - - /** - * Cash transactions (both CSD and CSR) - */ - | 'TRANS' - - /** - * Miscellaneous or rarely used activity types (All types except those in TRANS, DIV, - * or FILL) - */ - | 'MISC' - - /** - * ACATS IN/OUT (Cash) - */ - | 'ACATC' - - /** - * ACATS IN/OUT (Securities) - */ - | 'ACATS' - - /** - * Cash disbursement(+) - */ - | 'CSD' - - /** - * Cash receipt(-) - */ - | 'CSR' - - /** - * Dividends - */ - | 'DIV' - - /** - * Dividend (capital gain long term) - */ - | 'DIVCGL' - - /** - * Dividend (capital gain short term) - */ - | 'DIVCGS' - - /** - * Dividend fee - */ - | 'DIVFEE' - - /** - * Dividend adjusted (Foreign Tax Withheld) - */ - | 'DIVFT' - - /** - * Dividend adjusted (NRA Withheld) - */ - | 'DIVNRA' - - /** - * Dividend return of capital - */ - | 'DIVROC' - - /** - * Dividend adjusted (Tefra Withheld) - */ - | 'DIVTW' - - /** - * Dividend (tax exempt) - */ - | 'DIVTXEX' - - /** - * Interest (credit/margin) - */ - | 'INT' - - /** - * Interest adjusted (NRA Withheld) - */ - | 'INTNRA' - - /** - * Interest adjusted (Tefra Withheld) - */ - | 'INTTW' - - /** - * Journal entry - */ - | 'JNL' - - /** - * Journal entry (cash) - */ - | 'JNLC' - - /** - * Journal entry (stock) - */ - | 'JNLS' - - /** - * Merger/Acquisition - */ - | 'MA' - - /** - * Name change - */ - | 'NC' - - /** - * Option assignment - */ - | 'OPASN' - - /** - * Option expiration - */ - | 'OPEXP' - - /** - * Option exercise - */ - | 'OPXRC' - - /** - * Pass Thru Charge - */ - | 'PTC' - - /** - * Pass Thru Rebate - */ - | 'PTR' - - /** - * Reorg CA - */ - | 'REORG' - - /** - * Symbol change - */ - | 'SC' - - /** - * Stock spinoff - */ - | 'SSO' - - /** - * Stock split - */ - | 'SSP'; - -export interface RawTradeActivity { - // Only FILL - activity_type: Extract; - cum_qty: string; - id: string; - leaves_qty: string; - price: string; - qty: string; - side: string; - symbol: string; - transaction_time: string; - order_id: string; - type: string; -} - -export interface RawNonTradeActivity { - // Everything except FILL - activity_type: Exclude; - id: string; - date: string; - net_amount: string; - symbol: string; - qty: string; - per_share_amount: string; -} - -export type TradeActivityType = 'fill' | 'partial_fill'; -export type TradeActivitySide = 'buy' | 'sell'; - -export interface TradeActivity { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawTradeActivity; - - /** - * FILL - */ - activity_type: Extract; - - /** - * The cumulative quantity of shares involved in the execution. - */ - cum_qty: number; - - /** - * An id for the activity. Always in "::" format. Can be sent as page_token in requests - * to facilitate the paging of results. - */ - id: string; - - /** - * For partially_filled orders, the quantity of shares that are left to be filled. - */ - leaves_qty: number; - - /** - * The per-share price that the trade was executed at. - */ - price: number; - - /** - * The number of shares involved in the trade execution. - */ - qty: number; - - /** - * buy or sell - */ - side: TradeActivitySide; - - /** - * The symbol of the security being traded. - */ - symbol: string; - - /** - * The time at which the execution occurred. - */ - transaction_time: string; - - /** - * The id for the order that filled. - */ - order_id: string; - - /** - * fill or partial_fill - */ - type: TradeActivityType; -} - -export interface NonTradeActivity { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawNonTradeActivity; - - /** - * Activity type - */ - activity_type: Exclude; - - /** - * An ID for the activity, always in "::" format. Can be sent as page_token in requests - * to facilitate the paging of results. - */ - id: string; - - /** - * The date on which the activity occurred or on which the transaction associated with - * the activity settled. - */ - date: string; - - /** - * The net amount of money (positive or negative) associated with the activity. - */ - net_amount: number; - - /** - * The symbol of the security involved with the activity. Not present for all activity - * types. - */ - symbol: string; - - /** - * For dividend activities, the number of shares that contributed to the payment. Not - * present for other activity types. - */ - qty: number; - - /** - * For dividend activities, the average amount paid per share. Not present for other - * activity types. - */ - per_share_amount: number; -} - -export type RawActivity = RawTradeActivity | RawNonTradeActivity; - -export type Activity = TradeActivity | NonTradeActivity; - -/** - * The following type mirrors OrderStatus almost exactly, - * but differs slightly in its wording for each event. - * See https://alpaca.markets/docs/api-references/broker-api/events/#trade-events - * for an updated list of these events and their detailed descriptions. - */ -export type TradeUpdateEvent = - | 'new' - | 'fill' - | 'partial_fill' - | 'canceled' - | 'expired' - | 'done_for_day' - | 'replaced' - | 'rejected' - | 'pending_new' - | 'stopped' - | 'pending_cancel' - | 'pending_replace' - | 'calculated' - | 'suspended' - | 'order_replace_rejected' - | 'order_cancel_rejected'; - -export interface RawTradeUpdate { - event: TradeUpdateEvent; - execution_id: string; - order: RawOrder; - event_id?: string; - at?: string; - timestamp?: string; - position_qty?: string; - price?: string; - qty?: string; -} - -export interface TradeUpdate { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw: () => RawTradeUpdate; - - /** - * Trade update event type - */ - event: TradeUpdateEvent; - - /** - * Corresponding execution of an order. - * If an order gets filled over two executions (a partial_fill for example), - * you will receive two events with different IDs. - */ - execution_id: string; - - /** - * Monotonically increasing 64-bit integer. - * Haven't yet observed this property in practice, but it is - * on Alpaca's docs here: https://alpaca.markets/docs/api-references/broker-api/events/#trade-events, - * including for completeness. - */ - event_id?: number; - - /** - * The associated order that a trade_update event comes with - */ - order: Order; - - /** - * The timestamp of the trade update event. - * Alpaca docs at https://alpaca.markets/docs/api-references/broker-api/events/#trade-events - * are confusing. They say the 'at' property will contain the timestamp of - * the event, but currently as of 3/10/22 this is in the 'timestamp' property - * instead. Including both for completeness. - */ - at?: Date; - - /** - * The timestamp of the trade update event. - * Alpaca docs at https://alpaca.markets/docs/api-references/broker-api/events/#trade-events - * are confusing. They say the 'at' property will contain the timestamp of - * the event, but currently as of 3/10/22 this is in the 'timestamp' property - * instead. Including both for completeness. - */ - timestamp?: Date; - - /** - * The size of your total position, after a fill or partial fill event, in shares. - */ - position_qty?: number; - - /** - * The average price per share at which the order was filled or partially filled - */ - price?: number; - - /** - * The amount of shares that were filled in a trade update of type fill or partial_fill. - * Equivalent to the order.filled_qty property, which is preferred. - */ - qty?: number; -} - -export interface Watchlist { - /** - * account ID - */ - account_id: string; - - /** - * the content of this watchlist, in the order as registered by the client - */ - assets: Asset[]; - - /** - * When the watchlist was created - */ - created_at: string; - - /** - * watchlist id - */ - id: string; - - /** - * user-defined watchlist name (up to 64 characters) - */ - name: string; - - /** - * When the watchlist was last updated - */ - updated_at: string; -} - -export interface News { - id: number; - headline: string; - author: string; - created_at: Date; - updated_at: Date; - summary: string; - url: string; - images: any[]; - symbols: string[]; - source: string; -} - -export interface NewsPage { - news: News[]; - next_page_token: string; -} - -export type Channel = 'trades' | 'quotes' | 'bars' | 'trade_updates'; - -export interface Message { - T: 'success' | 'error' | 'subscription'; - code?: number; - msg: string; - [key: string]: any; -} diff --git a/src/index.ts b/src/index.ts index 446c214..b183db7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,73 +1,33 @@ -export { AlpacaClient } from './client.js'; -export { AlpacaStream } from './stream.js'; +export * from "./client"; +export * from "./stream"; -import { AlpacaClient } from './client.js'; -import { AlpacaStream } from './stream.js'; +export type DataSource = "iex" | "sip"; -export default { - AlpacaClient: AlpacaClient, - AlpacaStream: AlpacaStream, -}; - -export { - Account, - Order, - OrderCancelation, - Position, - Asset, - Watchlist, - Calendar, - Clock, - DefaultCredentials, - OAuthCredentials, - AccountConfigurations, - NonTradeActivity, - TradeActivity, - Activity, - PortfolioHistory, - Bar, - Bar_v1, - Quote, - LastQuote_v1, - LastTrade_v1, - Trade, - PageOfBars, - PageOfQuotes, - PageOfTrades, - Snapshot, - DataSource, - Channel, - Message, -} from './entities'; +export interface Endpoints { + rest: { + beta: string; + account: string; + market_data_v2: string; + market_data_v1: string; + market_data_v1beta3_crypto: string; + }; + websocket: { + account: string; + market_data: (source: DataSource) => string; + }; +} -export { - GetOrder, - GetOrders, - PlaceOrder, - ReplaceOrder, - CancelOrder, - GetPosition, - ClosePosition, - GetAsset, - GetAssets, - GetWatchList, - CreateWatchList, - UpdateWatchList, - AddToWatchList, - RemoveFromWatchList, - DeleteWatchList, - GetCalendar, - UpdateAccountConfigurations, - GetAccountActivities, - GetPortfolioHistory, - GetBars, - GetBars_v1, - GetTrades, - GetQuotes, - GetSnapshot, - GetSnapshots, - GetLastTrade_v1, - GetLastQuote_v1, - BarsV1Timeframe, - BarsTimeframe, -} from './params'; +export const endpoints: Endpoints = { + rest: { + beta: "https://data.alpaca.markets/v1beta1", + account: "https://api.alpaca.markets/v2", + market_data_v2: "https://data.alpaca.markets/v2", + market_data_v1: "https://data.alpaca.markets/v1", + market_data_v1beta3_crypto: "https://data.alpaca.markets/v1beta3/crypto", + }, + websocket: { + account: "wss://api.alpaca.markets/stream", + market_data: (source: DataSource = "iex") => + `wss://stream.data.alpaca.markets/v2/${source}`, + }, +}; diff --git a/src/params.ts b/src/params.ts deleted file mode 100644 index c702842..0000000 --- a/src/params.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { - OrderSide, - OrderType, - OrderTimeInForce, - DataSource, -} from './entities.js'; - -export interface AddToWatchList { - uuid: string; - symbol: string; -} - -export interface CancelOrder { - order_id: string; -} - -export interface ClosePosition { - symbol: string; - qty?: number; - percentage?: number; -} - -export interface ClosePositions { - cancel_orders?: boolean; -} - -export interface CreateWatchList { - name: string; - symbols?: string[]; -} - -export interface DeleteWatchList { - uuid: string; -} - -export interface GetAccountActivities { - activity_type?: string; - activity_types?: string | string[]; - date?: string; - until?: string; - after?: string; - direction?: 'asc' | 'desc'; - page_size?: number; - page_token?: string; -} - -export interface GetAsset { - asset_id_or_symbol: string; -} - -export interface GetAssets { - status?: 'active' | 'inactive'; - asset_class?: string; // i don't know where to find all asset classes -} - -export interface GetCalendar { - start?: Date; - end?: Date; -} - -export interface GetTrades { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; -} - -export interface GetQuotes { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; -} - -export interface GetSnapshot { - symbol: string; -} - -export interface GetSnapshots { - symbols: string[]; -} - -export interface GetBars { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; - timeframe: BarsTimeframe; - adjustment?: 'all' | 'dividend' | 'raw' | 'split'; -} - -export interface GetBars_v1 { - timeframe: BarsV1Timeframe; - symbols: string[]; - limit?: number; - start?: Date; - end?: Date; - after?: Date; - until?: Date; -} - -export interface GetLastQuote_v1 { - symbol: string; -} - -export interface GetLastTrade_v1 { - symbol: string; -} - -export interface GetOrder { - order_id?: string; - client_order_id?: string; - nested?: boolean; -} - -export interface GetOrders { - status?: 'open' | 'closed' | 'all'; - limit?: number; - after?: Date; - until?: Date; - direction?: 'asc' | 'desc'; - nested?: boolean; - symbols?: string[]; -} - -export interface GetPortfolioHistory { - period?: string; - timeframe?: string; - date_end?: Date; - extended_hours?: boolean; -} - -export interface GetPosition { - symbol: string; -} - -export interface GetWatchList { - uuid: string; -} - -export interface PlaceOrder { - symbol: string; - side: OrderSide; - type: OrderType; - time_in_force: OrderTimeInForce; - qty?: number; - notional?: number; - limit_price?: number; - stop_price?: number; - extended_hours?: boolean; - client_order_id?: string; - trail_price?: number; - trail_percent?: number; - order_class?: 'simple' | 'bracket' | 'oco' | 'oto'; - take_profit?: { - limit_price: number; - }; - stop_loss?: { - stop_price: number; - limit_price?: number; - }; -} - -export interface RemoveFromWatchList { - uuid: string; - symbol: string; -} - -export interface ReplaceOrder { - order_id: string; - qty?: number; - time_in_force?: OrderTimeInForce; - limit_price?: number; - stop_price?: number; - client_order_id?: string; -} - -export type BarsV1Timeframe = '1Min' | '5Min' | '15Min' | '1Day'; - -/** Also supports arbitrary minute, hour, and day values. E.g., '37Min', '6Hour', '3Day' */ -export type BarsTimeframe = - | BarsV1Timeframe - | '30Min' - | '1Hour' - | '2Hour' - | '4Hour'; - -export interface UpdateAccountConfigurations { - dtbp_check?: string; - no_shorting?: boolean; - suspend_trade?: boolean; - trade_confirm_email?: string; -} - -export interface GetLatestTrade { - symbol: string; - feed?: DataSource; - limit?: number; -} - -export interface UpdateWatchList { - uuid: string; - name?: string; - symbols?: string[]; -} - -export interface GetNews { - symbols?: string[] | string; - start?: Date; - end?: Date; - limit?: number; - sort?: 'ASC' | 'DESC'; - include_content?: boolean; - exclude_contentless?: boolean; - page_token?: string; -} diff --git a/src/parse.ts b/src/parse.ts deleted file mode 100644 index 9d3be89..0000000 --- a/src/parse.ts +++ /dev/null @@ -1,467 +0,0 @@ -import { - Account, - RawAccount, - AccountStatus, - RawOrder, - OrderType, - OrderSide, - Order, - OrderTimeInForce, - OrderStatus, - RawPosition, - Position, - PositionSide, - RawTradeActivity, - TradeActivity, - TradeActivitySide, - TradeActivityType, - RawNonTradeActivity, - NonTradeActivity, - RawActivity, - Activity, - RawClock, - Clock, - RawOrderCancelation, - OrderCancelation, - PageOfTrades, - RawPageOfTrades, - PageOfQuotes, - RawPageOfQuotes, - RawPageOfBars, - PageOfBars, - Snapshot, - RawSnapshot, - TradeUpdate, - RawTradeUpdate, - RawLatestTrade, - LatestTrade, -} from './entities.js'; - -function account(rawAccount: RawAccount): Account { - if (!rawAccount) { - return undefined; - } - - try { - return { - ...rawAccount, - raw: () => rawAccount, - buying_power: number(rawAccount.buying_power), - regt_buying_power: number(rawAccount.regt_buying_power), - daytrading_buying_power: number(rawAccount.daytrading_buying_power), - cash: number(rawAccount.cash), - created_at: new Date(rawAccount.created_at), - portfolio_value: number(rawAccount.portfolio_value), - multiplier: number(rawAccount.multiplier), - equity: number(rawAccount.equity), - last_equity: number(rawAccount.last_equity), - long_market_value: number(rawAccount.long_market_value), - short_market_value: number(rawAccount.short_market_value), - initial_margin: number(rawAccount.initial_margin), - maintenance_margin: number(rawAccount.maintenance_margin), - last_maintenance_margin: number(rawAccount.last_maintenance_margin), - sma: number(rawAccount.sma), - status: rawAccount.status as AccountStatus, - }; - } catch (err) { - throw new Error(`Account parsing failed. ${err.message}`); - } -} - -function clock(rawClock: RawClock): Clock { - if (!rawClock) { - return undefined; - } - - try { - return { - raw: () => rawClock, - timestamp: new Date(rawClock.timestamp), - is_open: rawClock.is_open, - next_open: new Date(rawClock.next_open), - next_close: new Date(rawClock.next_close), - }; - } catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} - -function latestTrade(raw: RawLatestTrade): LatestTrade { - if (!raw) { - return undefined; - } - - try { - return { - ...raw, - raw: () => raw, - trade: { - ...raw.trade, - t: new Date(raw.trade.t), - }, - }; - } catch (err) { - throw new Error(`Latest trade parsing failed. ${err.message}`); - } -} - -function order(rawOrder: RawOrder): Order { - if (!rawOrder) { - return undefined; - } - - try { - return { - ...rawOrder, - raw: () => rawOrder, - created_at: new Date(rawOrder.created_at), - updated_at: new Date(rawOrder.updated_at), - submitted_at: new Date(rawOrder.submitted_at), - filled_at: new Date(rawOrder.filled_at), - expired_at: new Date(rawOrder.expired_at), - canceled_at: new Date(rawOrder.canceled_at), - failed_at: new Date(rawOrder.failed_at), - replaced_at: new Date(rawOrder.replaced_at), - qty: number(rawOrder.qty), - filled_qty: number(rawOrder.filled_qty), - type: rawOrder.type as OrderType, - side: rawOrder.side as OrderSide, - time_in_force: rawOrder.time_in_force as OrderTimeInForce, - limit_price: number(rawOrder.limit_price), - stop_price: number(rawOrder.stop_price), - filled_avg_price: number(rawOrder.filled_avg_price), - status: rawOrder.status as OrderStatus, - legs: orders(rawOrder.legs), - trail_price: number(rawOrder.trail_price), - trail_percent: number(rawOrder.trail_percent), - hwm: number(rawOrder.hwm), - order_class: rawOrder.order_class, - }; - } catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} - -function orders(rawOrders: RawOrder[]): Order[] { - return rawOrders ? rawOrders.map((value) => order(value)) : undefined; -} - -function canceled_order(input: RawOrderCancelation): OrderCancelation { - if (!input) { - return undefined; - } - - let order = input.body; - - // we don't want this field anymore - delete input.body; - - try { - return { - ...input, - order: { - ...order, - raw: () => order, - created_at: new Date(order.created_at), - updated_at: new Date(order.updated_at), - submitted_at: new Date(order.submitted_at), - filled_at: new Date(order.filled_at), - expired_at: new Date(order.expired_at), - canceled_at: new Date(order.canceled_at), - failed_at: new Date(order.failed_at), - replaced_at: new Date(order.replaced_at), - qty: number(order.qty), - filled_qty: number(order.filled_qty), - type: order.type as OrderType, - side: order.side as OrderSide, - time_in_force: order.time_in_force as OrderTimeInForce, - limit_price: number(order.limit_price), - stop_price: number(order.stop_price), - filled_avg_price: number(order.filled_avg_price), - status: order.status as OrderStatus, - legs: orders(order.legs), - trail_price: number(order.trail_price), - trail_percent: number(order.trail_percent), - hwm: number(order.hwm), - order_class: order.order_class, - }, - }; - } catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} - -function canceled_orders( - rawOrderCancelations: RawOrderCancelation[], -): OrderCancelation[] { - return rawOrderCancelations - ? rawOrderCancelations.map((value) => canceled_order(value)) - : undefined; -} - -function position(rawPosition: RawPosition): Position { - if (!rawPosition) { - return undefined; - } - - try { - return { - ...rawPosition, - raw: () => rawPosition, - avg_entry_price: number(rawPosition.avg_entry_price), - qty: number(rawPosition.qty), - side: rawPosition.side as PositionSide, - market_value: number(rawPosition.market_value), - cost_basis: number(rawPosition.cost_basis), - unrealized_pl: number(rawPosition.unrealized_pl), - unrealized_plpc: number(rawPosition.unrealized_plpc), - unrealized_intraday_pl: number(rawPosition.unrealized_intraday_pl), - unrealized_intraday_plpc: number(rawPosition.unrealized_intraday_plpc), - current_price: number(rawPosition.current_price), - lastday_price: number(rawPosition.lastday_price), - change_today: number(rawPosition.change_today), - }; - } catch (err) { - throw new Error(`Position parsing failed. ${err.message}`); - } -} - -function positions(rawPositions: RawPosition[]): Position[] { - return rawPositions ? rawPositions.map((pos) => position(pos)) : undefined; -} - -function tradeActivity(rawTradeActivity: RawTradeActivity): TradeActivity { - if (!rawTradeActivity) { - return undefined; - } - - try { - return { - ...rawTradeActivity, - raw: () => rawTradeActivity, - cum_qty: number(rawTradeActivity.cum_qty), - leaves_qty: number(rawTradeActivity.leaves_qty), - price: number(rawTradeActivity.price), - qty: number(rawTradeActivity.qty), - side: rawTradeActivity.side as TradeActivitySide, - type: rawTradeActivity.type as TradeActivityType, - }; - } catch (err) { - throw new Error(`TradeActivity parsing failed. ${err.message}`); - } -} - -function nonTradeActivity( - rawNonTradeActivity: RawNonTradeActivity, -): NonTradeActivity { - if (!rawNonTradeActivity) { - return undefined; - } - - try { - return { - ...rawNonTradeActivity, - raw: () => rawNonTradeActivity, - net_amount: number(rawNonTradeActivity.net_amount), - qty: number(rawNonTradeActivity.qty), - per_share_amount: number(rawNonTradeActivity.per_share_amount), - }; - } catch (err) { - throw new Error(`NonTradeActivity parsing failed. ${err.message}`); - } -} - -function activities(rawActivities: Array): Array { - if (!rawActivities) { - return undefined; - } - - try { - return rawActivities.map((rawActivity) => - rawActivity.activity_type === 'FILL' - ? tradeActivity(rawActivity) - : nonTradeActivity(rawActivity), - ); - } catch (err) { - throw new Error(`Activity parsing failed. ${err.message}`); - } -} - -function pageOfTrades(page: RawPageOfTrades): PageOfTrades { - if (!page) { - return undefined; - } - - try { - return { - raw: () => page, - trades: (page.trades == null ? [] : page.trades).map((trade) => ({ - raw: () => trade, - ...trade, - t: new Date(trade.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} - -function pageOfQuotes(page: RawPageOfQuotes): PageOfQuotes { - if (!page) { - return undefined; - } - - try { - return { - raw: () => page, - quotes: (page.quotes == null ? [] : page.quotes).map((quote) => ({ - raw: () => quote, - ...quote, - t: new Date(quote.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} - -function pageOfBars(page: RawPageOfBars): PageOfBars { - if (!page) { - return undefined; - } - - try { - return { - raw: () => page, - bars: (page.bars == null ? [] : page.bars).map((bar) => ({ - raw: () => bar, - ...bar, - t: new Date(bar.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} - -function snapshot(raw: RawSnapshot): Snapshot { - if (!raw) { - return undefined; - } - - try { - return { - ...raw, - raw: () => raw, - latestTrade: raw.latestTrade - ? { - ...raw.latestTrade, - t: new Date(raw.latestTrade.t), - } - : null, - latestQuote: raw.latestQuote - ? { - ...raw.latestQuote, - t: new Date(raw.latestQuote.t), - } - : null, - minuteBar: raw.minuteBar - ? { - ...raw.minuteBar, - t: new Date(raw.minuteBar.t), - } - : null, - dailyBar: raw.dailyBar - ? { - ...raw.dailyBar, - t: new Date(raw.dailyBar.t), - } - : null, - prevDailyBar: raw.prevDailyBar - ? { - ...raw.prevDailyBar, - t: new Date(raw.prevDailyBar.t), - } - : null, - } as any as Snapshot; - } catch (err) { - throw new Error(`Snapshot parsing failed "${err.message}"`); - } -} - -function snapshots(raw: { [key: string]: RawSnapshot }): { - [key: string]: Snapshot; -} { - let parsed: { [key: string]: Snapshot } = {}; - - for (let [key, value] of Object.entries(raw)) { - parsed[key] = snapshot(value); - } - - return parsed; -} - -function number(numStr: string | any): number { - if (typeof numStr === 'undefined' || numStr == null) { - return numStr; - } - - const value = parseFloat(numStr); - - if (Number.isNaN(value)) { - return null; - } - - return value; -} - -function trade_update(rawTradeUpdate: RawTradeUpdate): TradeUpdate { - if (!rawTradeUpdate) return undefined; - - return { - raw: () => rawTradeUpdate, - event: rawTradeUpdate.event, - execution_id: rawTradeUpdate.execution_id, - order: order(rawTradeUpdate.order), - - /* Only include the non-obligatory fields if they exist */ - ...(rawTradeUpdate.event_id && { - event_id: number(rawTradeUpdate.event_id), - }), - ...(rawTradeUpdate.at && { at: new Date(rawTradeUpdate.at) }), - ...(rawTradeUpdate.timestamp && { - timestamp: new Date(rawTradeUpdate.timestamp), - }), - ...(rawTradeUpdate.position_qty && { - position_qty: number(rawTradeUpdate.position_qty), - }), - ...(rawTradeUpdate.price && { price: number(rawTradeUpdate.price) }), - ...(rawTradeUpdate.qty && { qty: number(rawTradeUpdate.qty) }), - }; -} - -export default { - account, - activities, - clock, - nonTradeActivity, - order, - orders, - canceled_orders, - position, - positions, - tradeActivity, - pageOfTrades, - pageOfQuotes, - pageOfBars, - snapshot, - snapshots, - trade_update, - latestTrade, -}; diff --git a/src/stream.ts b/src/stream.ts index f34b4ce..826e2cd 100644 --- a/src/stream.ts +++ b/src/stream.ts @@ -1,8 +1,7 @@ -import isBlob from 'is-blob'; -import parse from './parse.js'; -import WebSocket from 'isomorphic-ws'; -import endpoints from './endpoints.js'; -import EventEmitter from 'eventemitter3'; +import isBlob from "is-blob"; +import WebSocket from "isomorphic-ws"; +import endpoints from "./endpoints.js"; +import EventEmitter from "eventemitter3"; import { Bar, @@ -14,7 +13,7 @@ import { TradeUpdate, Message, Endpoints, -} from './entities.js'; +} from "./entities.js"; export declare interface Events { open: (stream: AlpacaStream) => void; @@ -48,40 +47,40 @@ export class AlpacaStream extends EventEmitter { constructor( protected params: { credentials: DefaultCredentials; - type: 'account' | 'market_data'; + type: "account" | "market_data"; source?: DataSource; endpoints?: Endpoints | Map; - }, + } ) { // construct EventEmitter super(); // override endpoints if custom provided - if ('endpoints' in params) { + if ("endpoints" in params) { this.baseURLs = Object.assign(endpoints, params.endpoints); } if ( // if not specified - !('paper' in params.credentials) && + !("paper" in params.credentials) && // and live key isn't already provided - !('key' in params.credentials && params.credentials.key.startsWith('A')) + !("key" in params.credentials && params.credentials.key.startsWith("A")) ) { - params.credentials['paper'] = true; + params.credentials["paper"] = true; } // assign the host we will connect to switch (params.type) { - case 'account': + case "account": this.host = params.credentials.paper - ? this.baseURLs.websocket.account.replace('api.', 'paper-api.') + ? this.baseURLs.websocket.account.replace("api.", "paper-api.") : this.baseURLs.websocket.account; break; - case 'market_data': + case "market_data": this.host = this.baseURLs.websocket.market_data(this.params.source); break; default: - this.host = 'unknown'; + this.host = "unknown"; } this.connection = new WebSocket(this.host); @@ -89,29 +88,29 @@ export class AlpacaStream extends EventEmitter { let message = {}; switch (this.params.type) { - case 'account': + case "account": message = { - action: 'authenticate', + action: "authenticate", data: { key_id: params.credentials.key, secret_key: params.credentials.secret, }, }; break; - case 'market_data': + case "market_data": // {"action":"auth","key":"PK*****","secret":"*************"} - message = { action: 'auth', ...params.credentials }; + message = { action: "auth", ...params.credentials }; break; } this.connection.send(JSON.stringify(message)); // pass through - this.emit('open', this); + this.emit("open", this); }; // pass through - this.connection.onclose = () => this.emit('close', this); + this.connection.onclose = () => this.emit("close", this); this.connection.onmessage = async (event: any) => { let data = event.data; @@ -123,47 +122,48 @@ export class AlpacaStream extends EventEmitter { } let parsed = JSON.parse(data), - messages = this.params.type == 'account' ? [parsed] : parsed; + messages = this.params.type == "account" ? [parsed] : parsed; messages.forEach((message: any) => { // pass the message - this.emit('message', message); + this.emit("message", message); // pass authenticated event - if ('T' in message && message.msg == 'authenticated') { + if ("T" in message && message.msg == "authenticated") { this.authenticated = true; - this.emit('authenticated', this); - } else if ('stream' in message && message.stream == 'authorization') { - if (message.data.status == 'authorized') { + this.emit("authenticated", this); + } else if ("stream" in message && message.stream == "authorization") { + if (message.data.status == "authorized") { this.authenticated = true; - this.emit('authenticated', this); + this.emit("authenticated", this); } } // pass trade_updates event - if ('stream' in message && message.stream == 'trade_updates') { - this.emit('trade_updates', parse.trade_update(message.data)); + if ("stream" in message && message.stream == "trade_updates") { + // todo: parse message data + this.emit("trade_updates", message.data); } // pass trade, quote, bar event const x: { [index: string]: keyof Events } = { - success: 'success', - subscription: 'subscription', - error: 'error', - t: 'trade', - q: 'quote', - b: 'bar', + success: "success", + subscription: "subscription", + error: "error", + t: "trade", + q: "quote", + b: "bar", }; - if ('T' in message) { - this.emit(x[message.T.split('.')[0]], message); + if ("T" in message) { + this.emit(x[message.T.split(".")[0]], message); } }); }; // pass the error this.connection.onerror = (err: WebSocket.ErrorEvent) => { - this.emit('error', err); + this.emit("error", err); }; } @@ -184,15 +184,15 @@ export class AlpacaStream extends EventEmitter { */ subscribe(channel: Channel, symbols: string[] = []) { switch (this.params.type) { - case 'account': + case "account": // {"action":"listen","data":{"streams":["trade_updates"]}} this.send( - JSON.stringify({ action: 'listen', data: { streams: [channel] } }), + JSON.stringify({ action: "listen", data: { streams: [channel] } }) ); break; - case 'market_data': + case "market_data": // {"action":"subscribe","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["AAPL","VOO"]} - let message: any = { action: 'subscribe' }; + let message: any = { action: "subscribe" }; message[channel] = symbols; this.send(JSON.stringify(message)); break; @@ -208,15 +208,15 @@ export class AlpacaStream extends EventEmitter { */ unsubscribe(channel: Channel, symbols: string[] = []) { switch (this.params.type) { - case 'account': + case "account": // {"action":"unlisten","data":{"streams":["trade_updates"]}} this.send( - JSON.stringify({ action: 'unlisten', data: { streams: [channel] } }), + JSON.stringify({ action: "unlisten", data: { streams: [channel] } }) ); break; - case 'market_data': + case "market_data": // {"action":"unsubscribe","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["AAPL","VOO"]} - let message: any = { action: 'unsubscribe' }; + let message: any = { action: "unsubscribe" }; message[channel] = symbols; this.send(JSON.stringify(message)); break; @@ -228,11 +228,11 @@ export class AlpacaStream extends EventEmitter { private send(message: any) { // don't bother if we aren't authenticated if (!this.authenticated) { - throw new Error('not authenticated'); + throw new Error("not authenticated"); } // if the message is in object form, stringify it for the user - if (typeof message == 'object') { + if (typeof message == "object") { message = JSON.stringify(message); } diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..cbb8b13 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,969 @@ +import { DataSource } from "./index"; + +export interface CancelOrder { + order_id: string; +} + +export interface ClosePosition { + symbol: string; + qty?: number; + percentage?: number; +} + +export interface ClosePositions { + cancel_orders?: boolean; +} + +export interface CreateWatchList { + name: string; + symbols?: string[]; +} + +export interface DeleteWatchList { + uuid: string; +} + +export interface GetAccountActivities { + activity_type?: string; + activity_types?: string | string[]; + date?: string; + until?: string; + after?: string; + direction?: "asc" | "desc"; + page_size?: number; + page_token?: string; +} + +export interface GetAsset { + asset_id_or_symbol: string; +} + +export interface GetAssets { + status?: "active" | "inactive"; + asset_class?: string; // i don't know where to find all asset classes +} + +export interface GetCalendar { + start?: Date; + end?: Date; +} + +export interface GetTrades { + symbol: string; + start: Date; + end: Date; + limit?: number; + page_token?: string; +} + +export interface GetQuotes { + symbol: string; + start: Date; + end: Date; + limit?: number; + page_token?: string; +} + +export interface GetSnapshot { + symbol: string; +} + +export interface GetSnapshots { + symbols: string[]; +} + +export interface GetBars { + symbol: string; + start: Date; + end: Date; + limit?: number; + page_token?: string; + timeframe: BarsTimeframe; + adjustment?: "all" | "dividend" | "raw" | "split"; +} + +export interface GetBars_v1 { + timeframe: BarsV1Timeframe; + symbols: string[]; + limit?: number; + start?: Date; + end?: Date; + after?: Date; + until?: Date; +} + +export interface GetLastQuote_v1 { + symbol: string; +} + +export interface GetLastTrade_v1 { + symbol: string; +} + +export interface GetOrders { + status?: "open" | "closed" | "all"; + limit?: number; + after?: Date; + until?: Date; + direction?: "asc" | "desc"; + nested?: boolean; + symbols?: string[]; +} + +export interface GetPortfolioHistory { + period?: string; + timeframe?: string; + date_end?: Date; + extended_hours?: boolean; +} + +export interface GetPosition { + symbol: string; +} + +export interface GetWatchList { + uuid: string; +} + +export interface PlaceOrder { + symbol: string; + side: OrderSide; + type: OrderType; + time_in_force: OrderTimeInForce; + qty?: number; + notional?: number; + limit_price?: number; + stop_price?: number; + extended_hours?: boolean; + client_order_id?: string; + trail_price?: number; + trail_percent?: number; + order_class?: "simple" | "bracket" | "oco" | "oto"; + take_profit?: { + limit_price: number; + }; + stop_loss?: { + stop_price: number; + limit_price?: number; + }; +} + +export interface RemoveFromWatchList { + uuid: string; + symbol: string; +} + +export interface ReplaceOrder { + order_id: string; + qty?: number; + time_in_force?: OrderTimeInForce; + limit_price?: number; + stop_price?: number; + client_order_id?: string; +} + +export type BarsV1Timeframe = "1Min" | "5Min" | "15Min" | "1Day"; + +/** Also supports arbitrary minute, hour, and day values. E.g., '37Min', '6Hour', '3Day' */ +export type BarsTimeframe = + | BarsV1Timeframe + | "30Min" + | "1Hour" + | "2Hour" + | "4Hour"; + +export interface UpdateAccountConfigurations { + dtbp_check?: string; + no_shorting?: boolean; + suspend_trade?: boolean; + trade_confirm_email?: string; +} + +export interface GetLatestTrade { + symbol: string; + feed?: DataSource; + limit?: number; +} + +export interface UpdateWatchList { + uuid: string; + name?: string; + symbols?: string[]; +} + +export interface GetNews { + symbols?: string[] | string; + start?: Date; + end?: Date; + limit?: number; + sort?: "ASC" | "DESC"; + include_content?: boolean; + exclude_contentless?: boolean; + page_token?: string; +} + +export interface GetCryptoTrades { + symbols: string; + start: Date; + end: Date; + limit?: number; + page_token?: string; +} + +export interface DefaultCredentials { + key: string; + secret: string; + paper?: boolean; +} +export interface OAuthCredentials { + access_token: String; + paper?: boolean; +} +export interface RawAccount { + account_blocked: boolean; + account_number: string; + buying_power: string; + cash: string; + created_at: string; + currency: string; + daytrade_count: number; + daytrading_buying_power: string; + equity: string; + id: string; + initial_margin: string; + last_equity: string; + last_maintenance_margin: string; + long_market_value: string; + maintenance_margin: string; + multiplier: string; + pattern_day_trader: boolean; + portfolio_value: string; + regt_buying_power: string; + short_market_value: string; + shorting_enabled: boolean; + sma: string; + status: string; + trade_suspended_by_user: boolean; + trading_blocked: boolean; + transfers_blocked: boolean; +} +export type AccountStatus = + | "ONBOARDING" + | "SUBMISSION_FAILED" + | "SUBMITTED" + | "ACCOUNT_UPDATED" + | "APPROVAL_PENDING" + | "ACTIVE" + | "REJECTED"; +export interface Account { + account_blocked: boolean; + account_number: string; + buying_power: number; + cash: number; + created_at: Date; + currency: string; + daytrade_count: number; + daytrading_buying_power: number; + equity: number; + id: string; + initial_margin: number; + last_equity: number; + last_maintenance_margin: number; + long_market_value: number; + maintenance_margin: number; + multiplier: number; + pattern_day_trader: boolean; + portfolio_value: number; + regt_buying_power: number; + short_market_value: number; + shorting_enabled: boolean; + sma: number; + status: AccountStatus; + trade_suspended_by_user: boolean; + trading_blocked: boolean; + transfers_blocked: boolean; +} + +export interface AccountConfigurations { + dtbp_check: "both" | "entry" | "exit"; + no_shorting: boolean; + suspend_trade: boolean; + trade_confirm_email: "all" | "none"; +} + +export interface AccountUpdate { + id: string; + created_at: string; + updated_at: string; + deleted_at: any; + status: string; + currency: string; + cash: string; + cash_withdrawable: string; +} + +export interface AggregateMinute { + ev: string; + T: string; + v: number; + av: number; + op: number; + vw: number; + o: number; + c: number; + h: number; + l: number; + a: number; + s: number; + e: number; +} + +export type AssetExchange = + | "AMEX" + | "ARCA" + | "BATS" + | "NYSE" + | "NASDAQ" + | "NYSEARCA"; + +export type AssetStatus = "active" | "inactive"; +export interface Asset { + id: string; + class: string; + exchange: AssetExchange; + symbol: string; + status: AssetStatus; + tradable: boolean; + marginable: boolean; + shortable: boolean; + easy_to_borrow: boolean; + fractionable: boolean; +} +export interface Calendar { + date: string; + open: string; + close: string; +} + +export interface RawClock { + timestamp: string; + is_open: boolean; + next_open: string; + next_close: string; +} +export interface Clock { + raw(): RawClock; + timestamp: Date; + is_open: boolean; + next_open: Date; + next_close: Date; +} +export interface RawTrade { + S: string; + t: string; + x: string; + p: number; + s: number; + c: string[]; + i: number; + z: string; +} +export interface RawPageOfTrades { + trades: RawTrade[]; + symbol: string; + next_page_token: string; +} +export interface Trade { + raw(): RawTrade; + S: string; + t: Date; + x: string; + p: number; + s: number; + c: string[]; + i: number; + z: string; +} +export interface PageOfTrades { + raw(): RawPageOfTrades; + trades: Trade[]; + symbol: string; + next_page_token: string; +} +export interface CryptoTrade { + raw(): RawCryptoTrade; + t: Date; + p: number; + s: number; + tks: string; + i: number; +} + +export interface RawCryptoTrade { + t: string; + p: number; + s: number; + tks: string; + i: number; +} +export interface PageOfCryptoTrades { + raw(): RawPageOfTrades; + trades: Trade[]; + symbol: string; + next_page_token: string; +} +export interface RawQuote { + S: string; + t: string; + ax: string; + ap: number; + as: number; + bx: string; + bp: number; + bs: number; + c: string[]; +} +export interface RawPageOfQuotes { + quotes: RawQuote[]; + symbol: string; + next_page_token: string; +} +export interface Quote { + raw(): RawQuote; + S: string; + t: Date; + ax: string; + ap: number; + as: number; + bx: string; + bp: number; + bs: number; + c: string[]; +} +export interface PageOfQuotes { + raw(): RawPageOfQuotes; + quotes: Quote[]; + symbol: string; + next_page_token: string; +} +export interface RawBar { + S: string; + t: string; + o: number; + h: number; + l: number; + c: number; + v: number; +} +export interface RawPageOfBars { + bars: RawBar[]; + symbol: string; + next_page_token: string; +} +export interface Bar { + raw(): RawBar; + S: string; + t: Date; + o: number; + h: number; + l: number; + c: number; + v: number; +} +export interface PageOfBars { + raw(): RawPageOfBars; + bars: Bar[]; + symbol: string; + next_page_token: string; +} +export interface OrderCancelation { + id: string; + status: number; + order: Order; +} +export interface RawOrderCancelation { + id: string; + status: number; + body: RawOrder; +} +export interface RawOrder { + id: string; + client_order_id: string; + created_at: string; + updated_at: string; + submitted_at: string; + filled_at: string; + expired_at: string; + canceled_at: string; + failed_at: string; + replaced_at: string; + replaced_by: string; + replaces: string; + asset_id: string; + symbol: string; + asset_class: string; + qty: string; + filled_qty: string; + type: string; + side: string; + time_in_force: string; + limit_price: string; + stop_price: string; + filled_avg_price: string; + status: string; + extended_hours: boolean; + legs: RawOrder[]; + trail_price: string; + trail_percent: string; + hwm: string; + order_class?: OrderClass; +} +export interface Bar_v1 { + t: number; + o: number; + h: number; + l: number; + c: number; + v: number; +} +export interface LastQuote_v1 { + status: string; + symbol: string; + last: { + askprice: number; + asksize: number; + askexchange: number; + bidprice: number; + bidsize: number; + bidexchange: number; + timestamp: number; + }; +} +export interface LastTrade_v1 { + status: string; + symbol: string; + last: { + price: number; + size: number; + exchange: number; + cond1: number; + cond2: number; + cond3: number; + cond4: number; + timestamp: number; + }; +} + +export interface RawSnapshot { + symbol: string; + latestTrade: { + t: string; + x: string; + p: number; + s: number; + c?: string[] | null; + i: number; + z: string; + }; + latestQuote: { + t: string; + ax: string; + ap: number; + as: number; + bx: string; + bp: number; + bs: number; + c?: string[] | null; + }; + minuteBar: { + t: string; + o: number; + h: number; + l: number; + c: number; + v: number; + }; + dailyBar: { + t: string; + o: number; + h: number; + l: number; + c: number; + v: number; + }; + prevDailyBar: { + t: string; + o: number; + h: number; + l: number; + c: number; + v: number; + }; +} + +export interface Snapshot { + raw(): RawSnapshot; + symbol: string; + latestTrade: { + t: Date; + x: string; + p: number; + s: number; + c?: string[] | null; + i: number; + z: string; + }; + latestQuote: { + t: Date; + ax: string; + ap: number; + as: number; + bx: string; + bp: number; + bs: number; + c?: string[] | null; + }; + minuteBar: { + t: Date; + o: number; + h: number; + l: number; + c: number; + v: number; + }; + dailyBar: { + t: Date; + o: number; + h: number; + l: number; + c: number; + v: number; + }; + prevDailyBar: { + t: Date; + o: number; + h: number; + l: number; + c: number; + v: number; + }; +} + +export type OrderType = + | "market" + | "limit" + | "stop" + | "stop_limit" + | "trailing_stop"; + +export type OrderClass = "simple" | "bracket" | "oto" | "oco"; + +export type OrderSide = "buy" | "sell"; + +export type OrderTimeInForce = "day" | "gtc" | "opg" | "cls" | "ioc" | "fok"; + +export type OrderStatus = + | "new" + | "partially_filled" + | "filled" + | "done_for_day" + | "canceled" + | "expired" + | "replaced" + | "pending_cancel" + | "pending_replace" + | "accepted" + | "pending_new" + | "accepted_for_bidding" + | "stopped" + | "rejected" + | "suspended" + | "calculated"; + +export interface RawLatestTrade { + symbol: string; + trade: { + t: string; + x: string; + p: number; + s: number; + c: string[]; + i: number; + z: string; + }; +} + +export interface LatestTrade { + raw(): RawLatestTrade; + symbol: string; + trade: { + t: Date; + x: string; + p: number; + s: number; + c: string[]; + i: number; + z: string; + }; +} +export interface Order { + raw(): RawOrder; + id: string; + client_order_id: string; + created_at: Date; + updated_at: Date; + submitted_at: Date; + filled_at: Date; + expired_at: Date; + canceled_at: Date; + failed_at: Date; + replaced_at: Date; + replaced_by: string; + replaces: string; + asset_id: string; + symbol: string; + asset_class: string; + qty: number; + filled_qty: number; + type: OrderType; + side: OrderSide; + time_in_force: OrderTimeInForce; + limit_price: number; + stop_price: number; + filled_avg_price: number; + status: OrderStatus; + extended_hours: boolean; + legs: Order[]; + trail_price: number; + trail_percent: number; + hwm: number; + order_class: OrderClass; +} +export interface PortfolioHistory { + timestamp: number[]; + equity: number[]; + profit_loss: number[]; + profit_loss_pct: number[]; + base_value: number; + timeframe: "1Min" | "5Min" | "15Min" | "1H" | "1D"; +} +export interface RawPosition { + asset_id: string; + symbol: string; + exchange: string; + asset_class: string; + avg_entry_price: string; + qty: string; + side: string; + market_value: string | null; + cost_basis: string; + unrealized_pl: string | null; + unrealized_plpc: string | null; + unrealized_intraday_pl: string | null; + unrealized_intraday_plpc: string | null; + current_price: string | null; + lastday_price: string | null; + change_today: string | null; +} + +export type PositionSide = "long" | "short"; +export interface Position { + raw(): RawPosition; + asset_id: string; + symbol: string; + exchange: string; + asset_class: string; + avg_entry_price: number; + qty: number; + side: PositionSide; + market_value: number | null; + cost_basis: number; + unrealized_pl: number | null; + unrealized_plpc: number | null; + unrealized_intraday_pl: number | null; + unrealized_intraday_plpc: number | null; + current_price: number | null; + lastday_price: number | null; + change_today: number | null; +} + +export type ActivityType = + | "FILL" + | "TRANS" + | "MISC" + | "ACATC" + | "ACATS" + | "CSD" + | "CSR" + | "DIV" + | "DIVCGL" + | "DIVCGS" + | "DIVFEE" + | "DIVFT" + | "DIVNRA" + | "DIVROC" + | "DIVTW" + | "DIVTXEX" + | "INT" + | "INTNRA" + | "INTTW" + | "JNL" + | "JNLC" + | "JNLS" + | "MA" + | "NC" + | "OPASN" + | "OPEXP" + | "OPXRC" + | "PTC" + | "PTR" + | "REORG" + | "SC" + | "SSO" + | "SSP"; + +export interface RawTradeActivity { + activity_type: Extract; + cum_qty: string; + id: string; + leaves_qty: string; + price: string; + qty: string; + side: string; + symbol: string; + transaction_time: string; + order_id: string; + type: string; +} + +export interface RawNonTradeActivity { + activity_type: Exclude; + id: string; + date: string; + net_amount: string; + symbol: string; + qty: string; + per_share_amount: string; +} + +export type TradeActivityType = "fill" | "partial_fill"; +export type TradeActivitySide = "buy" | "sell"; + +export interface TradeActivity { + raw(): RawTradeActivity; + activity_type: Extract; + cum_qty: number; + id: string; + leaves_qty: number; + price: number; + qty: number; + side: TradeActivitySide; + symbol: string; + transaction_time: string; + order_id: string; + type: TradeActivityType; +} + +export interface NonTradeActivity { + raw(): RawNonTradeActivity; + activity_type: Exclude; + id: string; + date: string; + net_amount: number; + symbol: string; + qty: number; + per_share_amount: number; +} + +export type RawActivity = RawTradeActivity | RawNonTradeActivity; + +export type Activity = TradeActivity | NonTradeActivity; +export type TradeUpdateEvent = + | "new" + | "fill" + | "partial_fill" + | "canceled" + | "expired" + | "done_for_day" + | "replaced" + | "rejected" + | "pending_new" + | "stopped" + | "pending_cancel" + | "pending_replace" + | "calculated" + | "suspended" + | "order_replace_rejected" + | "order_cancel_rejected"; + +export interface RawTradeUpdate { + event: TradeUpdateEvent; + execution_id: string; + order: RawOrder; + event_id?: string; + at?: string; + timestamp?: string; + position_qty?: string; + price?: string; + qty?: string; +} + +export interface TradeUpdate { + raw: () => RawTradeUpdate; + event: TradeUpdateEvent; + execution_id: string; + event_id?: number; + order: Order; + at?: Date; + timestamp?: Date; + position_qty?: number; + price?: number; + qty?: number; +} + +export interface Watchlist { + account_id: string; + assets: Asset[]; + created_at: string; + id: string; + name: string; + updated_at: string; +} + +export interface News { + id: number; + headline: string; + author: string; + created_at: Date; + updated_at: Date; + summary: string; + url: string; + images: any[]; + symbols: string[]; + source: string; +} + +export interface NewsPage { + news: News[]; + next_page_token: string; +} + +export type Channel = "trades" | "quotes" | "bars" | "trade_updates"; + +export interface Message { + T: "success" | "error" | "subscription"; + code?: number; + msg: string; + [key: string]: any; +} + +export interface AddToWatchList { + uuid: string; + symbol: string; +} + +export interface GetOrder { + order_id?: string; + client_order_id?: string; + nested?: boolean; +} From 42a06664b3e3d84cae0fdaf95482340ff534f2fe Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Thu, 6 Apr 2023 12:15:25 -0600 Subject: [PATCH 02/55] checkpoint --- src/client.ts | 378 ++++++++++++++++++++++++++------------------------ src/index.ts | 28 ++-- 2 files changed, 209 insertions(+), 197 deletions(-) diff --git a/src/client.ts b/src/client.ts index 7e14008..9e517a8 100644 --- a/src/client.ts +++ b/src/client.ts @@ -50,35 +50,18 @@ export class Client { } } - async isAuthenticated(): Promise { - try { - await this.get.account(); - return true; - } catch { - return false; - } - } - - async placeOrder(params: Types.PlaceOrder): Promise { - return await this.request({ - method: "POST", - url: `${this.baseURLs.rest.account}/orders`, - data: params, - }); - } - - async replaceOrder(params: Types.ReplaceOrder): Promise { - return await this.request({ + /** + replaceOrder = (params: Types.ReplaceOrder): Promise => + this.request({ method: "PATCH", - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, + url: this.buildURL(this.baseURLs.rest.v2, "orders", params.order_id), data: params, }); - } cancelOrder(params: Types.CancelOrder): Promise { return this.request({ method: "DELETE", - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, + url: this.buildURL(this.baseURLs.rest.v2, "orders", params.order_id), isJSON: false, }); } @@ -86,14 +69,14 @@ export class Client { async cancelOrders(): Promise { return await this.request({ method: "DELETE", - url: `${this.baseURLs.rest.account}/orders`, + url: this.buildURL(this.baseURLs.rest.v2, "orders"), }); } async closePosition(params: Types.ClosePosition): Promise { return await this.request({ method: "DELETE", - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, + url: this.buildURL(this.baseURLs.rest.v2, "positions", params.symbol), data: params, }); } @@ -101,34 +84,19 @@ export class Client { async closePositions(params: Types.ClosePositions): Promise { return await this.request({ method: "DELETE", - url: `${ - this.baseURLs.rest.account - }/positions?cancel_orders=${JSON.stringify( - params.cancel_orders ?? false - )}`, - }); - } - - createWatchlist(params: Types.CreateWatchList): Promise { - return this.request({ - method: "POST", - url: `${this.baseURLs.rest.account}/watchlists`, - data: params, + url: this.buildURL( + this.baseURLs.rest.v2, + "positions", + "?cancel_orders=", + JSON.stringify(params.cancel_orders ?? false) + ), }); } updateWatchlist(params: Types.UpdateWatchList): Promise { return this.request({ method: "PUT", - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - - addToWatchlist(params: Types.AddToWatchList): Promise { - return this.request({ - method: "POST", - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, + url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), data: params, }); } @@ -136,14 +104,19 @@ export class Client { removeFromWatchlist(params: Types.RemoveFromWatchList): Promise { return this.request({ method: "DELETE", - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}/${params.symbol}`, + url: this.buildURL( + this.baseURLs.rest.v2, + "watchlists", + params.uuid, + params.symbol + ), }); } deleteWatchlist(params: Types.DeleteWatchList): Promise { return this.request({ method: "DELETE", - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, + url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), }); } @@ -152,147 +125,188 @@ export class Client { ): Promise { return this.request({ method: "PATCH", - url: `${this.baseURLs.rest.account}/account/configurations`, + url: this.baseURLs.rest.v2.concat("/account/configurations"), data: params, }); } - - get = { - account: async (): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/account`, - }); - }, - order: async (params: Types.GetOrder): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/orders/${ - params.order_id || params.client_order_id - }`, - data: { nested: params.nested }, - }); - }, - orders: async (params: Types.GetOrders = {}): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/orders`, - data: { - ...params, - symbols: params.symbols ? params.symbols.join(",") : undefined, + **/ + + v2 = { + account: { + activities: { + get: async ( + params: Types.GetAccountActivities + ): Promise => { + if (params.activity_types && Array.isArray(params.activity_types)) { + params.activity_types = params["activity_types"].join(","); + } + + return await this.request({ + method: "GET", + data: { ...params, activity_type: undefined }, + url: this.buildURL( + this.baseURLs.rest.v2, + "account/activities", + params.activity_type ? "/".concat(params.activity_type) : "" + ), + }); }, - }); - }, - positions: async (): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/positions`, - }); - }, - position: async (params: Types.GetPosition): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - }); + }, + authenticated: async (): Promise => + this.v2.account + .get() + .then(() => true) + .catch(() => false), + configurations: { + get: (): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "account/configurations"), + }), + }, + get: (): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "account"), + }), + orders: { + create: (params: Types.PlaceOrder): Promise => + this.request({ + method: "POST", + url: `${this.baseURLs.rest.v2}/orders`, + data: params, + }), + get: (params: Types.GetOrder): Promise => + this.request({ + method: "GET", + url: this.buildURL( + this.baseURLs.rest.v2, + "orders", + params.order_id || params.client_order_id + ), + data: { nested: params.nested }, + }), + list: async (params: Types.GetOrders = {}): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "orders"), + data: { + ...params, + symbols: params.symbols ? params.symbols.join(",") : undefined, + }, + }), + }, + portfolio: { + history: ( + params: Types.GetPortfolioHistory + ): Promise => + this.request({ + method: "GET", + data: params, + url: this.buildURL( + this.baseURLs.rest.v2, + "account/portfolio/history" + ), + }), + }, + positions: { + get: async (params: Types.GetPosition): Promise => + this.request({ + method: "GET", + url: this.buildURL( + this.baseURLs.rest.v2, + "positions", + params.symbol + ), + }), + list: async (): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "positions"), + }), + }, + watchlists: { + get: async (params: Types.GetWatchList): Promise => + this.request({ + method: "GET", + url: this.buildURL( + this.baseURLs.rest.v2, + "watchlists", + params.uuid + ), + }), + list: async (): Promise => + await this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "watchlists"), + }), + create: async ( + params: Types.CreateWatchList + ): Promise => + this.request({ + method: "POST", + url: `${this.baseURLs.rest.v2}/watchlists`, + data: params, + }), + }, }, - activities: async ( - params: Types.GetAccountActivities - ): Promise => { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params.activity_types.join(","); - } - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/account/activities${ - params.activity_type ? "/".concat(params.activity_type) : "" - }`, - data: { ...params, activity_type: undefined }, - }); - }, - calendar: async (params?: Types.GetCalendar): Promise => { - return this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/calendar`, - data: params, - }); - }, - clock: async (): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/clock`, - }); - }, - assets: async (params?: Types.GetAssets): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/assets`, - data: params, - }); - }, - asset: async (params: Types.GetAsset): Promise => { - return this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/assets/${params.asset_id_or_symbol}`, - }); - }, - watchlists: async (): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/watchlists`, - }); - }, - watchlist: async (params: Types.GetWatchList): Promise => { - return this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - }, - bars: async (params: Types.GetBars): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/bars`, - data: { ...params, symbol: undefined }, - }); - }, - trades: async (params: Types.GetTrades): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/trades`, - data: { ...params, symbol: undefined }, - }); - }, - quotes: async (params: Types.GetQuotes): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/quotes`, - data: { ...params, symbol: undefined }, - }); - }, - portfolioHistory: async ( - params: Types.GetPortfolioHistory - ): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/account/portfolio/history`, - data: params, - }); - }, - accountConfigurations: async (): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/account/configurations`, - }); + assets: { + get: (params: Types.GetAsset): Promise => + this.request({ + method: "GET", + url: this.buildURL( + this.baseURLs.rest.v2, + "assets", + params.asset_id_or_symbol + ), + }), + list: (params?: Types.GetAssets): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "assets"), + data: params, + }), }, - news: async (params: Types.GetNews): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.account}/account/news`, - data: params, - }); + market: { + news: (params: Types.GetNews): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "account/news"), + data: params, + }), + calendar: async ( + params?: Types.GetCalendar + ): Promise => { + return this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/calendar`, + data: params, + }); + }, + clock: async (): Promise => { + return await this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/clock`, + }); + }, }, }; + /** + addToWatchlist(params: Types.AddToWatchList): Promise { + return this.request({ + method: "POST", + url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, + data: params, + }); + } + **/ + + private buildURL = (base: string, ...parts: string[]): string => { + return [base, ...parts].join("/"); + }; + private async request(params: { method: "GET" | "DELETE" | "PUT" | "PATCH" | "POST"; url: string; @@ -331,15 +345,13 @@ export class Client { } } - const makeCall = () => + const call = () => unifetch(params.url.concat(query), { method: params.method, headers, body: JSON.stringify(params.data), }), - func = this.params.rate_limit - ? () => this.limiter.schedule(makeCall) - : makeCall; + func = this.params.rate_limit ? () => this.limiter.schedule(call) : call; let resp, result = {}; diff --git a/src/index.ts b/src/index.ts index b183db7..b317530 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,29 +5,29 @@ export type DataSource = "iex" | "sip"; export interface Endpoints { rest: { - beta: string; - account: string; - market_data_v2: string; - market_data_v1: string; - market_data_v1beta3_crypto: string; + v1beta1: string; + v2: string; + data_v2: string; + data_v1: string; + data_v1beta3_crypto: string; }; websocket: { - account: string; - market_data: (source: DataSource) => string; + api: string; + data: (source: DataSource) => string; }; } export const endpoints: Endpoints = { rest: { - beta: "https://data.alpaca.markets/v1beta1", - account: "https://api.alpaca.markets/v2", - market_data_v2: "https://data.alpaca.markets/v2", - market_data_v1: "https://data.alpaca.markets/v1", - market_data_v1beta3_crypto: "https://data.alpaca.markets/v1beta3/crypto", + v1beta1: "https://data.alpaca.markets/v1beta1", + v2: "https://api.alpaca.markets/v2", + data_v2: "https://data.alpaca.markets/v2", + data_v1: "https://data.alpaca.markets/v1", + data_v1beta3_crypto: "https://data.alpaca.markets/v1beta3/crypto", }, websocket: { - account: "wss://api.alpaca.markets/stream", - market_data: (source: DataSource = "iex") => + api: "wss://api.alpaca.markets/stream", + data: (source: DataSource = "iex") => `wss://stream.data.alpaca.markets/v2/${source}`, }, }; From 4b4df891bf854bed6efd6379b47edbdab5f02cd4 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Thu, 6 Apr 2023 12:23:41 -0600 Subject: [PATCH 03/55] checkpoint --- src/client.ts | 204 +++++++++++++++++++++++++------------------------- 1 file changed, 100 insertions(+), 104 deletions(-) diff --git a/src/client.ts b/src/client.ts index 9e517a8..7c6a337 100644 --- a/src/client.ts +++ b/src/client.ts @@ -50,91 +50,10 @@ export class Client { } } - /** - replaceOrder = (params: Types.ReplaceOrder): Promise => - this.request({ - method: "PATCH", - url: this.buildURL(this.baseURLs.rest.v2, "orders", params.order_id), - data: params, - }); - - cancelOrder(params: Types.CancelOrder): Promise { - return this.request({ - method: "DELETE", - url: this.buildURL(this.baseURLs.rest.v2, "orders", params.order_id), - isJSON: false, - }); - } - - async cancelOrders(): Promise { - return await this.request({ - method: "DELETE", - url: this.buildURL(this.baseURLs.rest.v2, "orders"), - }); - } - - async closePosition(params: Types.ClosePosition): Promise { - return await this.request({ - method: "DELETE", - url: this.buildURL(this.baseURLs.rest.v2, "positions", params.symbol), - data: params, - }); - } - - async closePositions(params: Types.ClosePositions): Promise { - return await this.request({ - method: "DELETE", - url: this.buildURL( - this.baseURLs.rest.v2, - "positions", - "?cancel_orders=", - JSON.stringify(params.cancel_orders ?? false) - ), - }); - } - - updateWatchlist(params: Types.UpdateWatchList): Promise { - return this.request({ - method: "PUT", - url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), - data: params, - }); - } - - removeFromWatchlist(params: Types.RemoveFromWatchList): Promise { - return this.request({ - method: "DELETE", - url: this.buildURL( - this.baseURLs.rest.v2, - "watchlists", - params.uuid, - params.symbol - ), - }); - } - - deleteWatchlist(params: Types.DeleteWatchList): Promise { - return this.request({ - method: "DELETE", - url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), - }); - } - - updateAccountConfigurations( - params: Types.UpdateAccountConfigurations - ): Promise { - return this.request({ - method: "PATCH", - url: this.baseURLs.rest.v2.concat("/account/configurations"), - data: params, - }); - } - **/ - v2 = { account: { - activities: { - get: async ( + activity: { + list: async ( params: Types.GetAccountActivities ): Promise => { if (params.activity_types && Array.isArray(params.activity_types)) { @@ -157,19 +76,27 @@ export class Client { .get() .then(() => true) .catch(() => false), - configurations: { + configuration: { get: (): Promise => this.request({ method: "GET", url: this.buildURL(this.baseURLs.rest.v2, "account/configurations"), }), + update: ( + params: Types.UpdateAccountConfigurations + ): Promise => + this.request({ + method: "PATCH", + url: this.baseURLs.rest.v2.concat("/account/configurations"), + data: params, + }), }, get: (): Promise => this.request({ method: "GET", url: this.buildURL(this.baseURLs.rest.v2, "account"), }), - orders: { + order: { create: (params: Types.PlaceOrder): Promise => this.request({ method: "POST", @@ -195,6 +122,31 @@ export class Client { symbols: params.symbols ? params.symbols.join(",") : undefined, }, }), + cancel: (params: Types.CancelOrder): Promise => + this.request({ + method: "DELETE", + url: this.buildURL( + this.baseURLs.rest.v2, + "orders", + params.order_id + ), + isJSON: false, + }), + cancel_all: (): Promise => + this.request({ + method: "DELETE", + url: this.buildURL(this.baseURLs.rest.v2, "orders"), + }), + replace: (params: Types.ReplaceOrder): Promise => + this.request({ + method: "PATCH", + url: this.buildURL( + this.baseURLs.rest.v2, + "orders", + params.order_id + ), + data: params, + }), }, portfolio: { history: ( @@ -209,7 +161,27 @@ export class Client { ), }), }, - positions: { + position: { + close: (params: Types.ClosePosition): Promise => + this.request({ + method: "DELETE", + url: this.buildURL( + this.baseURLs.rest.v2, + "positions", + params.symbol + ), + data: params, + }), + close_all: (params: Types.ClosePositions): Promise => + this.request({ + method: "DELETE", + url: this.buildURL( + this.baseURLs.rest.v2, + "positions", + "?cancel_orders=", + JSON.stringify(params.cancel_orders ?? false) + ), + }), get: async (params: Types.GetPosition): Promise => this.request({ method: "GET", @@ -225,7 +197,30 @@ export class Client { url: this.buildURL(this.baseURLs.rest.v2, "positions"), }), }, - watchlists: { + watchlist: { + add: (params: Types.AddToWatchList): Promise => + this.request({ + method: "POST", + url: `${this.baseURLs.rest.v2}/watchlists/${params.uuid}`, + data: params, + }), + create: async ( + params: Types.CreateWatchList + ): Promise => + this.request({ + method: "POST", + url: `${this.baseURLs.rest.v2}/watchlists`, + data: params, + }), + delete: (params: Types.DeleteWatchList): Promise => + this.request({ + method: "DELETE", + url: this.buildURL( + this.baseURLs.rest.v2, + "watchlists", + params.uuid + ), + }), get: async (params: Types.GetWatchList): Promise => this.request({ method: "GET", @@ -240,18 +235,29 @@ export class Client { method: "GET", url: this.buildURL(this.baseURLs.rest.v2, "watchlists"), }), - create: async ( - params: Types.CreateWatchList - ): Promise => + remove: (params: Types.RemoveFromWatchList): Promise => + this.request({ + method: "DELETE", + url: this.buildURL( + this.baseURLs.rest.v2, + "watchlists", + params.uuid, + params.symbol + ), + }), + update: (params: Types.UpdateWatchList): Promise => this.request({ - method: "POST", - url: `${this.baseURLs.rest.v2}/watchlists`, + method: "PUT", + url: this.buildURL( + this.baseURLs.rest.v2, + "watchlists", + params.uuid + ), data: params, }), }, }, - - assets: { + asset: { get: (params: Types.GetAsset): Promise => this.request({ method: "GET", @@ -293,16 +299,6 @@ export class Client { }, }; - /** - addToWatchlist(params: Types.AddToWatchList): Promise { - return this.request({ - method: "POST", - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - **/ - private buildURL = (base: string, ...parts: string[]): string => { return [base, ...parts].join("/"); }; From 2bb51b53ce1a1e21de4182ca56cc73ea293faa1c Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Sat, 6 May 2023 13:10:48 -0600 Subject: [PATCH 04/55] checkpoint --- conf/banner.js | 7 - conf/const.js | 2 - conf/rollup/dist/browser.js | 73 --------- conf/rollup/dist/esm.js | 36 ----- conf/rollup/dist/esm_bundle.js | 42 ------ example/classic.html | 29 ---- example/microtrader.html | 94 ------------ example/sample.js | 35 ----- index.js | 7 - package.json | 45 +----- src/client.ts | 182 ++++++++++++----------- test/parse.test.ts | 261 --------------------------------- tsconfig.json | 2 +- 13 files changed, 100 insertions(+), 715 deletions(-) delete mode 100644 conf/banner.js delete mode 100644 conf/const.js delete mode 100644 conf/rollup/dist/browser.js delete mode 100644 conf/rollup/dist/esm.js delete mode 100644 conf/rollup/dist/esm_bundle.js delete mode 100644 example/classic.html delete mode 100644 example/microtrader.html delete mode 100644 example/sample.js delete mode 100644 index.js delete mode 100644 test/parse.test.ts diff --git a/conf/banner.js b/conf/banner.js deleted file mode 100644 index 50fc10d..0000000 --- a/conf/banner.js +++ /dev/null @@ -1,7 +0,0 @@ -import pack from '../package.json' - -export default `/*! - * alpaca@${pack.version} - * released under the permissive ISC license - */ -` diff --git a/conf/const.js b/conf/const.js deleted file mode 100644 index 6c61e0f..0000000 --- a/conf/const.js +++ /dev/null @@ -1,2 +0,0 @@ -export const SRC = 'src' -export const DIST_UNIVERSAL = 'dist' diff --git a/conf/rollup/dist/browser.js b/conf/rollup/dist/browser.js deleted file mode 100644 index 93bf071..0000000 --- a/conf/rollup/dist/browser.js +++ /dev/null @@ -1,73 +0,0 @@ -import json from '@rollup/plugin-json' -import banner from '../../banner' -import commonjs from '@rollup/plugin-commonjs' -import typescript from '@rollup/plugin-typescript' - -import { terser } from 'rollup-plugin-terser' -import { nodeResolve } from '@rollup/plugin-node-resolve' -import { DIST_UNIVERSAL as outDir, SRC } from '../../const' - -// THIS SCRIPT BUILDS VARIOUS BUNDLES WITH ALL THE DEPENDENCIES -// UMD BUILDs for classic imports -// ESM BUILDs for type="module" imports - -export default { - input: `${SRC}/index.ts`, - plugins: [ - typescript({ - // declaration: true, - // declarationDir: `${outDir}`, - sourceMap: true, - removeComments: true, - module: 'ESNext', //"None", "CommonJS", "AMD", "System", "UMD", "ES6", "ES2015" or "ESNext" - target: 'ESNext', //"ES3" "ES5" "ES6"/"ES2015" "ES2016" "ES2017" "ES2018" "ES2019" "ES2020" "ESNext" - }), - json(), - commonjs(), - nodeResolve({ browser: true }), - ], - output: [ - { - file: `${outDir}/alpaca.browser.js`, - // dir: `${outDir}`, - format: 'umd', - name: 'alpaca', - sourcemap: true, - banner: banner, - }, - { - file: `${outDir}/alpaca.browser.min.js`, - // dir:`${outDir}`, - format: 'umd', - name: 'alpaca', - sourcemap: false, - banner: banner, - plugins: [terser({ output: { comments: false } })], - }, - // { - // file: `${outDir}/alpaca.common.js`, - // // dir: `${outDir}`, - // format: 'cjs', // amd,cjs,es,iife,umd,system - // name: 'alpaca', - // sourcemap: true, - // banner: banner, - // }, - { - file: `${outDir}/alpaca.browser.modern.js`, - // dir: outDir, - format: 'es', - name: 'alpaca', - sourcemap: true, - banner: banner, - }, - { - file: `${outDir}/alpaca.browser.modern.min.js`, - // dir: outDir, - format: 'es', - name: 'alpaca', - sourcemap: false, - banner: banner, - plugins: [terser({ output: { comments: false } })], - }, - ], -} diff --git a/conf/rollup/dist/esm.js b/conf/rollup/dist/esm.js deleted file mode 100644 index aa374de..0000000 --- a/conf/rollup/dist/esm.js +++ /dev/null @@ -1,36 +0,0 @@ -import banner from '../../banner' -import typescript from '@rollup/plugin-typescript' - -import { terser } from 'rollup-plugin-terser' -import { DIST_UNIVERSAL as outDir, SRC } from '../../const' - -export default { - input: `${SRC}/index.ts`, - plugins: [ - typescript({ - removeComments: true, - sourceMap: true, - // outDir: `./${outDir}`, - module: 'ES2015', //"None", "CommonJS", "AMD", "System", "UMD", "ES6", "ES2015" or "ESNext" - target: 'ES2015', //"ES3" "ES5" "ES6"/"ES2015" "ES2016" "ES2017" "ES2018" "ES2019" "ES2020" "ESNext" - }), - ], - output: [ - { - file: `${outDir}/alpaca.js`, - format: 'es', - name: 'alpaca', - sourcemap: true, - banner: banner, - // plugins: [nodeResolve({ browser: true })], - }, - { - file: `${outDir}/alpaca.min.js`, - format: 'es', - name: 'alpaca', - sourcemap: false, - banner: banner, - plugins: [terser({ output: { comments: false } })], - }, - ], -} diff --git a/conf/rollup/dist/esm_bundle.js b/conf/rollup/dist/esm_bundle.js deleted file mode 100644 index 48619d5..0000000 --- a/conf/rollup/dist/esm_bundle.js +++ /dev/null @@ -1,42 +0,0 @@ -import json from '@rollup/plugin-json' -import banner from '../../banner' -import commonjs from '@rollup/plugin-commonjs' -import typescript from '@rollup/plugin-typescript' - -import { terser } from 'rollup-plugin-terser' -import { nodeResolve } from '@rollup/plugin-node-resolve' -import { DIST_UNIVERSAL as outDir, SRC } from '../../const' - -export default { - input: `${SRC}/index.ts`, - plugins: [ - typescript({ - removeComments: true, - sourceMap: true, - rootDir: './src', - // outDir: `./${outDir}`, - module: 'ES6', //"None", "CommonJS", "AMD", "System", "UMD", "ES6", "ES2015" or "ESNext" - target: 'ES6', //"ES3" "ES5" "ES6"/"ES2015" "ES2016" "ES2017" "ES2018" "ES2019" "ES2020" "ESNext" - }), - json(), - commonjs(), - nodeResolve({ browser: false }), - ], - output: [ - { - file: `${outDir}/alpaca.bundle.js`, - format: 'es', - name: 'alpaca', - sourcemap: true, - banner: banner, - }, - { - file: `${outDir}/alpaca.bundle.min.js`, - format: 'es', - name: 'alpaca', - sourcemap: false, - banner: banner, - plugins: [terser({ output: { comments: false } })], - }, - ], -} diff --git a/example/classic.html b/example/classic.html deleted file mode 100644 index 3f8b8a8..0000000 --- a/example/classic.html +++ /dev/null @@ -1,29 +0,0 @@ - - -Once library is included global variable `alpaca` is exposed: - - - \ No newline at end of file diff --git a/example/microtrader.html b/example/microtrader.html deleted file mode 100644 index 7b32a09..0000000 --- a/example/microtrader.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/example/sample.js b/example/sample.js deleted file mode 100644 index d76c420..0000000 --- a/example/sample.js +++ /dev/null @@ -1,35 +0,0 @@ -// buys a random stock - -// To run: -// node sample.js - -// You can use any of the following - -// import { AlpacaClient } from '../dist/mjs/index.js' -// import { AlpacaClient } from '../dist/alpaca.js' -// import { AlpacaClient } from '../dist/alpaca.min.js' -// import { AlpacaClient } from '../dist/alpaca.bundle.js' -import { AlpacaClient } from '../dist/alpaca.bundle.min.js' - -const client = new AlpacaClient({ - credentials: { - key: 'xxxxxx', - secret: 'xxxxxxxxxxxx', - }, -}) - -client - .getAssets({ - status: 'active', - }) - .then((assets) => console.log(assets)) -// client -// .placeOrder({ -// symbol: assets[Math.floor(Math.random() * assets.length)].symbol, -// side: 'buy', -// type: 'market', -// time_in_force: 'day', -// qty: 1, -// }) -// .catch((error) => console.error(error)), -// ) diff --git a/index.js b/index.js deleted file mode 100644 index 4f30f24..0000000 --- a/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -if (process.env.NODE_ENV === 'production') { - module.exports = require('./dist/alpaca.min.js') -} else { - module.exports = require('./dist/alpaca.js') -} diff --git a/package.json b/package.json index c531c48..de5202a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca", - "version": "6.3.20", + "version": "7.0.0", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ @@ -32,16 +32,7 @@ "type": "module", "types": "./@types/index.d.ts", "typings": "./@types/index.d.ts", - "unpkg": "./dist/alpaca.js", - "jsdelivr": "./dist/alpaca.js", - "browser": "./dist/alpaca.browser.min.js", - "main": "./dist/mjs/index.js", - "module": "./dist/mjs/index.js", - "exports": { - "import": "./dist/mjs/index.js", - "require": "./dist/cjs/index.cjs", - "default": "./dist/alpaca.browser.min.js" - }, + "main": "./dist/index.js", "engines": { "node": ">=14" }, @@ -55,30 +46,11 @@ "url": "https://github.com/117/alpaca" }, "scripts": { - "build": "npm run clean && npm i && npm run build:mjs && npm run build:cjs && npm run build:esm && npm run build:browser && npm run build:esm_bundle", - "build:mjs": "tsc --outDir dist/mjs --allowSyntheticDefaultImports -d true --module esnext --target esnext", - "build:cjs": "tsc --outDir dist/cjs --esModuleInterop --moduleResolution node --module CommonJS --target ES2015 -d true && map dist/cjs js cjs && map dist/cjs ts cts", - "build:esm": "rollup -c conf/rollup/dist/esm.js", - "build:esm_bundle": "rollup -c conf/rollup/dist/esm_bundle.js", - "build:browser": "rollup -c conf/rollup/dist/browser.js", + "build": "", "clean": "rimraf dist @types", - "test": "npm run test:default", - "test:default": "jest", - "test:watch": "jest --watchAll", "release": "standard-version" }, - "jest": { - "preset": "ts-jest", - "testEnvironment": "node", - "roots": [ - "/test" - ], - "testMatch": [ - "**/*.test.ts" - ] - }, "dependencies": { - "@master-chief/map": "^0.0.6", "abort-controller": "^3.0.0", "bottleneck": "^2.19.5", "bufferutil": "^4.0.3", @@ -91,22 +63,11 @@ "ws": "^7.5.0" }, "devDependencies": { - "@rollup/plugin-commonjs": "^17.1.0", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^11.2.0", - "@rollup/plugin-typescript": "^8.2.0", - "@types/jest": "^27.0.2", - "@types/node-fetch": "^2.5.8", "@types/qs": "^6.9.5", "@types/ws": "^7.4.0", - "jest": "^27.2.4", "prettier": "^2.8.7", "rimraf": "^3.0.2", - "rollup": "^2.39.0", - "rollup-plugin-terser": "^7.0.2", "standard-version": "^9.1.1", - "ts-jest": "^27.0.5", - "tslib": "^2.0.3", "typescript": "^4.4.3" } } diff --git a/src/client.ts b/src/client.ts index 7c6a337..b99c2e7 100644 --- a/src/client.ts +++ b/src/client.ts @@ -51,51 +51,114 @@ export class Client { } v2 = { - account: { - activity: { - list: async ( - params: Types.GetAccountActivities - ): Promise => { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params["activity_types"].join(","); - } + trading: { + account: { + activity: { + list: async ( + params: Types.GetAccountActivities + ): Promise => { + if (params.activity_types && Array.isArray(params.activity_types)) { + params.activity_types = params["activity_types"].join(","); + } - return await this.request({ + return await this.request({ + method: "GET", + data: { ...params, activity_type: undefined }, + url: this.buildURL( + this.baseURLs.rest.v2, + "account/activities", + params.activity_type ? "/".concat(params.activity_type) : "" + ), + }); + }, + }, + authenticated: async (): Promise => + this.v2.trading.account + .get() + .then(() => true) + .catch(() => false), + configuration: { + get: (): Promise => + this.request({ + method: "GET", + url: this.buildURL( + this.baseURLs.rest.v2, + "account/configurations" + ), + }), + update: ( + params: Types.UpdateAccountConfigurations + ): Promise => + this.request({ + method: "PATCH", + url: this.baseURLs.rest.v2.concat("/account/configurations"), + data: params, + }), + }, + get: (): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "account"), + }), + portfolio: { + history: ( + params: Types.GetPortfolioHistory + ): Promise => + this.request({ + method: "GET", + data: params, + url: this.buildURL( + this.baseURLs.rest.v2, + "account/portfolio/history" + ), + }), + }, + }, + asset: { + get: (params: Types.GetAsset): Promise => + this.request({ method: "GET", - data: { ...params, activity_type: undefined }, url: this.buildURL( this.baseURLs.rest.v2, - "account/activities", - params.activity_type ? "/".concat(params.activity_type) : "" + "assets", + params.asset_id_or_symbol ), - }); - }, - }, - authenticated: async (): Promise => - this.v2.account - .get() - .then(() => true) - .catch(() => false), - configuration: { - get: (): Promise => + }), + list: (params?: Types.GetAssets): Promise => this.request({ method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "account/configurations"), + url: this.buildURL(this.baseURLs.rest.v2, "assets"), + data: params, }), - update: ( - params: Types.UpdateAccountConfigurations - ): Promise => + }, + market: { + news: (params: Types.GetNews): Promise => this.request({ - method: "PATCH", - url: this.baseURLs.rest.v2.concat("/account/configurations"), + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "account/news"), data: params, }), + /** + announcements: ( + params: Types.GetAnnouncements + ): Promise => null, + **/ + calendar: async ( + params?: Types.GetCalendar + ): Promise => { + return this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "/calendar"), + data: params, + }); + }, + clock: async (): Promise => { + return await this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "/clock"), + }); + }, }, - get: (): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "account"), - }), order: { create: (params: Types.PlaceOrder): Promise => this.request({ @@ -148,19 +211,6 @@ export class Client { data: params, }), }, - portfolio: { - history: ( - params: Types.GetPortfolioHistory - ): Promise => - this.request({ - method: "GET", - data: params, - url: this.buildURL( - this.baseURLs.rest.v2, - "account/portfolio/history" - ), - }), - }, position: { close: (params: Types.ClosePosition): Promise => this.request({ @@ -257,46 +307,6 @@ export class Client { }), }, }, - asset: { - get: (params: Types.GetAsset): Promise => - this.request({ - method: "GET", - url: this.buildURL( - this.baseURLs.rest.v2, - "assets", - params.asset_id_or_symbol - ), - }), - list: (params?: Types.GetAssets): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "assets"), - data: params, - }), - }, - market: { - news: (params: Types.GetNews): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "account/news"), - data: params, - }), - calendar: async ( - params?: Types.GetCalendar - ): Promise => { - return this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/calendar`, - data: params, - }); - }, - clock: async (): Promise => { - return await this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/clock`, - }); - }, - }, }; private buildURL = (base: string, ...parts: string[]): string => { diff --git a/test/parse.test.ts b/test/parse.test.ts deleted file mode 100644 index abadf75..0000000 --- a/test/parse.test.ts +++ /dev/null @@ -1,261 +0,0 @@ -import parse from '../src/parse' - -import { - RawAccount, - RawOrder, - RawPosition, - RawTradeActivity, - RawNonTradeActivity, - TradeActivity, - NonTradeActivity, - RawTradeUpdate -} from '../src/entities' - -describe('Parser', () => { - describe('parseAccount', () => { - it('should handle missing input', () => { - const result = parse.account(null) - - expect(result).toBeUndefined() - }) - - it('should make a raw function to return the raw input', () => { - const rawAccount = {} as RawAccount - const account = parse.account(rawAccount) - const result = account.raw() - - expect(result).toBe(rawAccount) - }) - - it('should parse buying power to a number', () => { - const rawAccount = { - buying_power: '123.456', - } as RawAccount - const account = parse.account(rawAccount) - - expect(account.buying_power).toBe(123.456) - }) - }) - - describe('parseOrder', () => { - it('should handle missing input', () => { - const result = parse.order(null) - - expect(result).toBeUndefined() - }) - - it('should make a raw function to return the raw input', () => { - const rawOrder = {} as RawOrder - const account = parse.order(rawOrder) - const result = account.raw() - - expect(result).toBe(rawOrder) - }) - - it('should parse qty to a number', () => { - const rawOrder = { - qty: '42', - } as RawOrder - const account = parse.order(rawOrder) - - expect(account.qty).toBe(42) - }) - - it('should parse legs if they exist', () => { - const rawOrder = { - legs: [ - { - qty: '7', - }, - ], - } as RawOrder - const order = parse.order(rawOrder) - - expect(order.legs[0].qty).toBe(7) - }) - - it(`should not parse legs if they don't exist`, () => { - const rawOrder = { - legs: null, - } as RawOrder - const order = parse.order(rawOrder) - - expect(order.legs).toBeUndefined() - }) - }) - - describe('parseOrders', () => { - it('should parse orders if they exist', () => { - const rawOrders = [ - { - qty: '42', - }, - ] as RawOrder[] - const orders = parse.orders(rawOrders) - - expect(orders[0].qty).toBe(42) - }) - - it(`should not parse orders if they don't exist`, () => { - const result = parse.orders(null) - - expect(result).toBeUndefined() - }) - }) - - describe('parsePosition', () => { - it('should handle missing input', () => { - const result = parse.position(null) - - expect(result).toBeUndefined() - }) - - it('should make a raw function that returns the raw input', () => { - const rawPosition = {} as RawPosition - const position = parse.position(rawPosition) - const result = position.raw() - - expect(result).toBe(rawPosition) - }) - - it('should parse qty to a number', () => { - const rawPosition = { - qty: '42', - } as RawPosition - const position = parse.position(rawPosition) - - expect(position.qty).toBe(42) - }) - }) - - describe('parsePositions', () => { - it('should parse positions if they exist', () => { - const result = parse.positions(null) - - expect(result).toBeUndefined() - }) - - it(`should not parse positions if they don't exist`, () => { - const rawPositions = [ - { - qty: '42', - }, - ] as RawPosition[] - const result = parse.positions(rawPositions) - - expect(result[0].qty).toBe(42) - }) - }) - - describe('parseTradeActivity', () => { - it('should handle missing input', () => { - const result = parse.tradeActivity(null) - - expect(result).toBeUndefined() - }) - - it('should make a raw function that returns the raw input', () => { - const rawTradeActivity = {} as RawTradeActivity - const position = parse.tradeActivity(rawTradeActivity) - const result = position.raw() - - expect(result).toBe(rawTradeActivity) - }) - - it('should parse qty to a number', () => { - const rawTradeActivity = { - qty: '42', - } as RawTradeActivity - const position = parse.tradeActivity(rawTradeActivity) - - expect(position.qty).toBe(42) - }) - }) - - describe('parseNonTradeActivity', () => { - it('should handle missing input', () => { - const result = parse.nonTradeActivity(null) - - expect(result).toBeUndefined() - }) - - it('should make a raw function that returns the raw input', () => { - const rawNonTradeActivity = {} as RawNonTradeActivity - const position = parse.nonTradeActivity(rawNonTradeActivity) - const result = position.raw() - - expect(result).toBe(rawNonTradeActivity) - }) - - it('should parse qty to a number', () => { - const rawNonTradeActivity = { - qty: '42', - } as RawNonTradeActivity - const position = parse.nonTradeActivity(rawNonTradeActivity) - - expect(position.qty).toBe(42) - }) - }) - - describe('parseActivities', () => { - it('should handle missing input', () => { - const result = parse.activities(null) - - expect(result).toBeUndefined() - }) - - it('should parse each activity type', () => { - const rawActivities = [ - { - activity_type: 'FILL', - price: '6.66', - } as RawTradeActivity, - { - activity_type: 'TRANS', - net_amount: '123.45', - } as RawNonTradeActivity, - ] - const activities = parse.activities(rawActivities) - - expect((activities[0] as TradeActivity).price).toBe(6.66) - expect((activities[1] as NonTradeActivity).net_amount).toBe(123.45) - }) - }) - - describe('parseTradeUpdate', () => { - it('should handle missing input', () => { - const result = parse.trade_update(null) - expect(result).toBeUndefined() - }) - - it('should parse each portion of a trade update, including inner order', () => { - - /* Setup */ - const dateIsoString = '2022-03-01T00:00:00.000000000Z' - const rawTradeUpdate = { - event: 'new', - execution_id: 'some-long-hex-string', - order: { qty: '1' } as RawOrder, - event_id: '123456', - at: dateIsoString, - timestamp: dateIsoString, - position_qty: '0', - price: '100.00', - qty: '1' - } as RawTradeUpdate; - - const result = parse.trade_update(rawTradeUpdate); - - /* Assertions */ - expect(result.raw()).toBe(rawTradeUpdate); - expect(result.execution_id).toBe('some-long-hex-string'); - expect(result.order.qty).toBe(1); - expect(result.event_id).toBe(123456); - expect(result.position_qty).toBe(0); - expect(result.at).toEqual(new Date(dateIsoString)); - expect(result.timestamp).toEqual(new Date(dateIsoString)) - expect(result.price).toBe(100.00); - expect(result.qty).toBe(1); - }); - }) -}) diff --git a/tsconfig.json b/tsconfig.json index 84da7e1..b470ba7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,6 @@ "typeRoots": ["./node_modules/@types/"] }, "include": ["src/*.ts"], - "exclude": ["node_modules", "dist", "test", "conf", "example"], + "exclude": ["node_modules", "dist"], "compileOnSave": false } From b842977d62a8b11a385965da2e9c384f78ad1c71 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Sat, 6 May 2023 13:24:15 -0600 Subject: [PATCH 05/55] checkpoint --- src/client.ts | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/src/client.ts b/src/client.ts index b99c2e7..dac3a38 100644 --- a/src/client.ts +++ b/src/client.ts @@ -307,6 +307,122 @@ export class Client { }), }, }, + market_data: { + stocks: { + trades: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/trades`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/trades`, + data: params, + }), + latest: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/trades/latest`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/trades/latest`, + data: params, + }), + }, + }, + quotes: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/quotes`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/quotes`, + data: params, + }), + latest: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/quotes/latest`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/quotes/latest`, + data: params, + }), + }, + }, + bars: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/bars`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/bars`, + data: params, + }), + latest: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/bars/latest`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/bars/latest`, + data: params, + }), + }, + }, + snapshot: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/snapshot`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/snapshots`, + data: params, + }), + }, + auctions: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/auctions`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/auctions`, + data: params, + }), + }, + }, + }, }; private buildURL = (base: string, ...parts: string[]): string => { From c3eb15f47bac32cdabd5adbfc7308129c0cc73fc Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Sat, 6 May 2023 13:28:18 -0600 Subject: [PATCH 06/55] checkpoint --- src/client.ts | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/index.ts | 4 ++-- 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/src/client.ts b/src/client.ts index dac3a38..15975c6 100644 --- a/src/client.ts +++ b/src/client.ts @@ -422,6 +422,68 @@ export class Client { }), }, }, + crypto: { + us: { + trades: { + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/trades`, + data: params, + }), + }, + latest: { + trades: { + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/trades`, + data: params, + }), + }, + quotes: { + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/quotes`, + data: params, + }), + }, + bars: { + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/bars`, + data: params, + }), + }, + }, + bars: { + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/bars`, + data: params, + }), + }, + snapshots: { + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/snapshots`, + data: params, + }), + }, + latest_orderbooks: { + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/orderbooks`, + data: params, + }), + }, + }, + }, }, }; diff --git a/src/index.ts b/src/index.ts index b317530..874952b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,7 +9,7 @@ export interface Endpoints { v2: string; data_v2: string; data_v1: string; - data_v1beta3_crypto: string; + data_v1beta3: string; }; websocket: { api: string; @@ -23,7 +23,7 @@ export const endpoints: Endpoints = { v2: "https://api.alpaca.markets/v2", data_v2: "https://data.alpaca.markets/v2", data_v1: "https://data.alpaca.markets/v1", - data_v1beta3_crypto: "https://data.alpaca.markets/v1beta3/crypto", + data_v1beta3: "https://data.alpaca.markets/v1beta3/crypto", }, websocket: { api: "wss://api.alpaca.markets/stream", From 19b10c4c127a6db6e3279970421df34897f108d0 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 24 Jul 2023 13:17:06 -0600 Subject: [PATCH 07/55] no commit message --- dist/alpaca.browser.js | 5980 -- dist/alpaca.browser.js.map | 1 - dist/alpaca.browser.min.js | 1 - dist/alpaca.browser.modern.js | 5966 -- dist/alpaca.browser.modern.js.map | 1 - dist/alpaca.browser.modern.min.js | 1 - dist/alpaca.bundle.js | 91980 ---------------------------- dist/alpaca.bundle.js.map | 1 - dist/alpaca.bundle.min.js | 1 - dist/alpaca.js | 792 - dist/alpaca.js.map | 1 - dist/alpaca.min.js | 1 - dist/cjs/client.cjs | 407 - dist/cjs/client.d.cts | 61 - dist/cjs/endpoints.cjs | 15 - dist/cjs/endpoints.d.cts | 3 - dist/cjs/entities.cjs | 2 - dist/cjs/entities.d.cts | 1585 - dist/cjs/index.cjs | 13 - dist/cjs/index.d.cts | 11 - dist/cjs/params.cjs | 2 - dist/cjs/params.d.cts | 177 - dist/cjs/parse.cjs | 234 - dist/cjs/parse.d.cts | 42 - dist/cjs/stream.cjs | 185 - dist/cjs/stream.d.cts | 60 - dist/mjs/client.d.ts | 61 - dist/mjs/client.js | 351 - dist/mjs/endpoints.d.ts | 3 - dist/mjs/endpoints.js | 13 - dist/mjs/entities.d.ts | 1585 - dist/mjs/entities.js | 1 - dist/mjs/index.d.ts | 11 - dist/mjs/index.js | 8 - dist/mjs/params.d.ts | 177 - dist/mjs/params.js | 1 - dist/mjs/parse.d.ts | 42 - dist/mjs/parse.js | 393 - dist/mjs/stream.d.ts | 60 - dist/mjs/stream.js | 173 - package-lock.json | 5700 +- package.json | 15 +- prettierrc.json | 3 +- src/client.ts | 31 +- src/index.ts | 3 +- src/stream.ts | 245 - tsconfig.json | 32 +- vite.config.ts | 19 + 48 files changed, 2090 insertions(+), 114360 deletions(-) delete mode 100644 dist/alpaca.browser.js delete mode 100644 dist/alpaca.browser.js.map delete mode 100644 dist/alpaca.browser.min.js delete mode 100644 dist/alpaca.browser.modern.js delete mode 100644 dist/alpaca.browser.modern.js.map delete mode 100644 dist/alpaca.browser.modern.min.js delete mode 100644 dist/alpaca.bundle.js delete mode 100644 dist/alpaca.bundle.js.map delete mode 100644 dist/alpaca.bundle.min.js delete mode 100644 dist/alpaca.js delete mode 100644 dist/alpaca.js.map delete mode 100644 dist/alpaca.min.js delete mode 100644 dist/cjs/client.cjs delete mode 100644 dist/cjs/client.d.cts delete mode 100644 dist/cjs/endpoints.cjs delete mode 100644 dist/cjs/endpoints.d.cts delete mode 100644 dist/cjs/entities.cjs delete mode 100644 dist/cjs/entities.d.cts delete mode 100644 dist/cjs/index.cjs delete mode 100644 dist/cjs/index.d.cts delete mode 100644 dist/cjs/params.cjs delete mode 100644 dist/cjs/params.d.cts delete mode 100644 dist/cjs/parse.cjs delete mode 100644 dist/cjs/parse.d.cts delete mode 100644 dist/cjs/stream.cjs delete mode 100644 dist/cjs/stream.d.cts delete mode 100644 dist/mjs/client.d.ts delete mode 100644 dist/mjs/client.js delete mode 100644 dist/mjs/endpoints.d.ts delete mode 100644 dist/mjs/endpoints.js delete mode 100644 dist/mjs/entities.d.ts delete mode 100644 dist/mjs/entities.js delete mode 100644 dist/mjs/index.d.ts delete mode 100644 dist/mjs/index.js delete mode 100644 dist/mjs/params.d.ts delete mode 100644 dist/mjs/params.js delete mode 100644 dist/mjs/parse.d.ts delete mode 100644 dist/mjs/parse.js delete mode 100644 dist/mjs/stream.d.ts delete mode 100644 dist/mjs/stream.js delete mode 100644 src/stream.ts create mode 100644 vite.config.ts diff --git a/dist/alpaca.browser.js b/dist/alpaca.browser.js deleted file mode 100644 index 3985a76..0000000 --- a/dist/alpaca.browser.js +++ /dev/null @@ -1,5980 +0,0 @@ -/*! - * alpaca@6.3.20 - * released under the permissive ISC license - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('util')) : - typeof define === 'function' && define.amd ? define(['exports', 'util'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.alpaca = {}, global.require$$0$3)); -}(this, (function (exports, require$$0$3) { 'use strict'; - - function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - - var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0$3); - - /* eslint complexity: [2, 18], max-statements: [2, 33] */ - var shams = function hasSymbols() { - if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } - if (typeof Symbol.iterator === 'symbol') { return true; } - - var obj = {}; - var sym = Symbol('test'); - var symObj = Object(sym); - if (typeof sym === 'string') { return false; } - - if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } - if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } - - // temp disabled per https://github.com/ljharb/object.assign/issues/17 - // if (sym instanceof Symbol) { return false; } - // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 - // if (!(symObj instanceof Symbol)) { return false; } - - // if (typeof Symbol.prototype.toString !== 'function') { return false; } - // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } - - var symVal = 42; - obj[sym] = symVal; - for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop - if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } - - if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } - - var syms = Object.getOwnPropertySymbols(obj); - if (syms.length !== 1 || syms[0] !== sym) { return false; } - - if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } - - if (typeof Object.getOwnPropertyDescriptor === 'function') { - var descriptor = Object.getOwnPropertyDescriptor(obj, sym); - if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } - } - - return true; - }; - - var origSymbol = typeof Symbol !== 'undefined' && Symbol; - - - var hasSymbols$1 = function hasNativeSymbols() { - if (typeof origSymbol !== 'function') { return false; } - if (typeof Symbol !== 'function') { return false; } - if (typeof origSymbol('foo') !== 'symbol') { return false; } - if (typeof Symbol('bar') !== 'symbol') { return false; } - - return shams(); - }; - - /* eslint no-invalid-this: 1 */ - - var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; - var slice = Array.prototype.slice; - var toStr$1 = Object.prototype.toString; - var funcType = '[object Function]'; - - var implementation = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr$1.call(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slice.call(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - } - }; - - var boundLength = Math.max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); - } - - bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; - }; - - var functionBind = Function.prototype.bind || implementation; - - var src = functionBind.call(Function.call, Object.prototype.hasOwnProperty); - - var undefined$1; - - var $SyntaxError = SyntaxError; - var $Function = Function; - var $TypeError$1 = TypeError; - - // eslint-disable-next-line consistent-return - var getEvalledConstructor = function (expressionSyntax) { - try { - return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); - } catch (e) {} - }; - - var $gOPD = Object.getOwnPropertyDescriptor; - if ($gOPD) { - try { - $gOPD({}, ''); - } catch (e) { - $gOPD = null; // this is IE 8, which has a broken gOPD - } - } - - var throwTypeError = function () { - throw new $TypeError$1(); - }; - var ThrowTypeError = $gOPD - ? (function () { - try { - // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties - arguments.callee; // IE 8 does not throw here - return throwTypeError; - } catch (calleeThrows) { - try { - // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') - return $gOPD(arguments, 'callee').get; - } catch (gOPDthrows) { - return throwTypeError; - } - } - }()) - : throwTypeError; - - var hasSymbols = hasSymbols$1(); - - var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto - - var needsEval = {}; - - var TypedArray = typeof Uint8Array === 'undefined' ? undefined$1 : getProto(Uint8Array); - - var INTRINSICS = { - '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError, - '%Array%': Array, - '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer, - '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined$1, - '%AsyncFromSyncIteratorPrototype%': undefined$1, - '%AsyncFunction%': needsEval, - '%AsyncGenerator%': needsEval, - '%AsyncGeneratorFunction%': needsEval, - '%AsyncIteratorPrototype%': needsEval, - '%Atomics%': typeof Atomics === 'undefined' ? undefined$1 : Atomics, - '%BigInt%': typeof BigInt === 'undefined' ? undefined$1 : BigInt, - '%Boolean%': Boolean, - '%DataView%': typeof DataView === 'undefined' ? undefined$1 : DataView, - '%Date%': Date, - '%decodeURI%': decodeURI, - '%decodeURIComponent%': decodeURIComponent, - '%encodeURI%': encodeURI, - '%encodeURIComponent%': encodeURIComponent, - '%Error%': Error, - '%eval%': eval, // eslint-disable-line no-eval - '%EvalError%': EvalError, - '%Float32Array%': typeof Float32Array === 'undefined' ? undefined$1 : Float32Array, - '%Float64Array%': typeof Float64Array === 'undefined' ? undefined$1 : Float64Array, - '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined$1 : FinalizationRegistry, - '%Function%': $Function, - '%GeneratorFunction%': needsEval, - '%Int8Array%': typeof Int8Array === 'undefined' ? undefined$1 : Int8Array, - '%Int16Array%': typeof Int16Array === 'undefined' ? undefined$1 : Int16Array, - '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array, - '%isFinite%': isFinite, - '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined$1, - '%JSON%': typeof JSON === 'object' ? JSON : undefined$1, - '%Map%': typeof Map === 'undefined' ? undefined$1 : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Map()[Symbol.iterator]()), - '%Math%': Math, - '%Number%': Number, - '%Object%': Object, - '%parseFloat%': parseFloat, - '%parseInt%': parseInt, - '%Promise%': typeof Promise === 'undefined' ? undefined$1 : Promise, - '%Proxy%': typeof Proxy === 'undefined' ? undefined$1 : Proxy, - '%RangeError%': RangeError, - '%ReferenceError%': ReferenceError, - '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect, - '%RegExp%': RegExp, - '%Set%': typeof Set === 'undefined' ? undefined$1 : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Set()[Symbol.iterator]()), - '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer, - '%String%': String, - '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined$1, - '%Symbol%': hasSymbols ? Symbol : undefined$1, - '%SyntaxError%': $SyntaxError, - '%ThrowTypeError%': ThrowTypeError, - '%TypedArray%': TypedArray, - '%TypeError%': $TypeError$1, - '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined$1 : Uint8Array, - '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined$1 : Uint8ClampedArray, - '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined$1 : Uint16Array, - '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined$1 : Uint32Array, - '%URIError%': URIError, - '%WeakMap%': typeof WeakMap === 'undefined' ? undefined$1 : WeakMap, - '%WeakRef%': typeof WeakRef === 'undefined' ? undefined$1 : WeakRef, - '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet - }; - - var doEval = function doEval(name) { - var value; - if (name === '%AsyncFunction%') { - value = getEvalledConstructor('async function () {}'); - } else if (name === '%GeneratorFunction%') { - value = getEvalledConstructor('function* () {}'); - } else if (name === '%AsyncGeneratorFunction%') { - value = getEvalledConstructor('async function* () {}'); - } else if (name === '%AsyncGenerator%') { - var fn = doEval('%AsyncGeneratorFunction%'); - if (fn) { - value = fn.prototype; - } - } else if (name === '%AsyncIteratorPrototype%') { - var gen = doEval('%AsyncGenerator%'); - if (gen) { - value = getProto(gen.prototype); - } - } - - INTRINSICS[name] = value; - - return value; - }; - - var LEGACY_ALIASES = { - '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], - '%ArrayPrototype%': ['Array', 'prototype'], - '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], - '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], - '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], - '%ArrayProto_values%': ['Array', 'prototype', 'values'], - '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], - '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], - '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], - '%BooleanPrototype%': ['Boolean', 'prototype'], - '%DataViewPrototype%': ['DataView', 'prototype'], - '%DatePrototype%': ['Date', 'prototype'], - '%ErrorPrototype%': ['Error', 'prototype'], - '%EvalErrorPrototype%': ['EvalError', 'prototype'], - '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], - '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], - '%FunctionPrototype%': ['Function', 'prototype'], - '%Generator%': ['GeneratorFunction', 'prototype'], - '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], - '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], - '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], - '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], - '%JSONParse%': ['JSON', 'parse'], - '%JSONStringify%': ['JSON', 'stringify'], - '%MapPrototype%': ['Map', 'prototype'], - '%NumberPrototype%': ['Number', 'prototype'], - '%ObjectPrototype%': ['Object', 'prototype'], - '%ObjProto_toString%': ['Object', 'prototype', 'toString'], - '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], - '%PromisePrototype%': ['Promise', 'prototype'], - '%PromiseProto_then%': ['Promise', 'prototype', 'then'], - '%Promise_all%': ['Promise', 'all'], - '%Promise_reject%': ['Promise', 'reject'], - '%Promise_resolve%': ['Promise', 'resolve'], - '%RangeErrorPrototype%': ['RangeError', 'prototype'], - '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], - '%RegExpPrototype%': ['RegExp', 'prototype'], - '%SetPrototype%': ['Set', 'prototype'], - '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], - '%StringPrototype%': ['String', 'prototype'], - '%SymbolPrototype%': ['Symbol', 'prototype'], - '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], - '%TypedArrayPrototype%': ['TypedArray', 'prototype'], - '%TypeErrorPrototype%': ['TypeError', 'prototype'], - '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], - '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], - '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], - '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], - '%URIErrorPrototype%': ['URIError', 'prototype'], - '%WeakMapPrototype%': ['WeakMap', 'prototype'], - '%WeakSetPrototype%': ['WeakSet', 'prototype'] - }; - - - - var $concat = functionBind.call(Function.call, Array.prototype.concat); - var $spliceApply = functionBind.call(Function.apply, Array.prototype.splice); - var $replace = functionBind.call(Function.call, String.prototype.replace); - var $strSlice = functionBind.call(Function.call, String.prototype.slice); - - /* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ - var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; - var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ - var stringToPath = function stringToPath(string) { - var first = $strSlice(string, 0, 1); - var last = $strSlice(string, -1); - if (first === '%' && last !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); - } else if (last === '%' && first !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); - } - var result = []; - $replace(string, rePropName, function (match, number, quote, subString) { - result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; - }); - return result; - }; - /* end adaptation */ - - var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { - var intrinsicName = name; - var alias; - if (src(LEGACY_ALIASES, intrinsicName)) { - alias = LEGACY_ALIASES[intrinsicName]; - intrinsicName = '%' + alias[0] + '%'; - } - - if (src(INTRINSICS, intrinsicName)) { - var value = INTRINSICS[intrinsicName]; - if (value === needsEval) { - value = doEval(intrinsicName); - } - if (typeof value === 'undefined' && !allowMissing) { - throw new $TypeError$1('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); - } - - return { - alias: alias, - name: intrinsicName, - value: value - }; - } - - throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); - }; - - var getIntrinsic = function GetIntrinsic(name, allowMissing) { - if (typeof name !== 'string' || name.length === 0) { - throw new $TypeError$1('intrinsic name must be a non-empty string'); - } - if (arguments.length > 1 && typeof allowMissing !== 'boolean') { - throw new $TypeError$1('"allowMissing" argument must be a boolean'); - } - - var parts = stringToPath(name); - var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; - - var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); - var intrinsicRealName = intrinsic.name; - var value = intrinsic.value; - var skipFurtherCaching = false; - - var alias = intrinsic.alias; - if (alias) { - intrinsicBaseName = alias[0]; - $spliceApply(parts, $concat([0, 1], alias)); - } - - for (var i = 1, isOwn = true; i < parts.length; i += 1) { - var part = parts[i]; - var first = $strSlice(part, 0, 1); - var last = $strSlice(part, -1); - if ( - ( - (first === '"' || first === "'" || first === '`') - || (last === '"' || last === "'" || last === '`') - ) - && first !== last - ) { - throw new $SyntaxError('property names with quotes must have matching quotes'); - } - if (part === 'constructor' || !isOwn) { - skipFurtherCaching = true; - } - - intrinsicBaseName += '.' + part; - intrinsicRealName = '%' + intrinsicBaseName + '%'; - - if (src(INTRINSICS, intrinsicRealName)) { - value = INTRINSICS[intrinsicRealName]; - } else if (value != null) { - if (!(part in value)) { - if (!allowMissing) { - throw new $TypeError$1('base intrinsic for ' + name + ' exists, but the property is not available.'); - } - return void undefined$1; - } - if ($gOPD && (i + 1) >= parts.length) { - var desc = $gOPD(value, part); - isOwn = !!desc; - - // By convention, when a data property is converted to an accessor - // property to emulate a data property that does not suffer from - // the override mistake, that accessor's getter is marked with - // an `originalValue` property. Here, when we detect this, we - // uphold the illusion by pretending to see that original data - // property, i.e., returning the value rather than the getter - // itself. - if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { - value = desc.get; - } else { - value = value[part]; - } - } else { - isOwn = src(value, part); - value = value[part]; - } - - if (isOwn && !skipFurtherCaching) { - INTRINSICS[intrinsicRealName] = value; - } - } - } - return value; - }; - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var a = Object.defineProperty({}, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; - } - - function createCommonjsModule(fn) { - var module = { exports: {} }; - return fn(module, module.exports), module.exports; - } - - var callBind = createCommonjsModule(function (module) { - - - - - var $apply = getIntrinsic('%Function.prototype.apply%'); - var $call = getIntrinsic('%Function.prototype.call%'); - var $reflectApply = getIntrinsic('%Reflect.apply%', true) || functionBind.call($call, $apply); - - var $gOPD = getIntrinsic('%Object.getOwnPropertyDescriptor%', true); - var $defineProperty = getIntrinsic('%Object.defineProperty%', true); - var $max = getIntrinsic('%Math.max%'); - - if ($defineProperty) { - try { - $defineProperty({}, 'a', { value: 1 }); - } catch (e) { - // IE 8 has a broken defineProperty - $defineProperty = null; - } - } - - module.exports = function callBind(originalFunction) { - var func = $reflectApply(functionBind, $call, arguments); - if ($gOPD && $defineProperty) { - var desc = $gOPD(func, 'length'); - if (desc.configurable) { - // original length, plus the receiver, minus any additional arguments (after the receiver) - $defineProperty( - func, - 'length', - { value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } - ); - } - } - return func; - }; - - var applyBind = function applyBind() { - return $reflectApply(functionBind, $apply, arguments); - }; - - if ($defineProperty) { - $defineProperty(module.exports, 'apply', { value: applyBind }); - } else { - module.exports.apply = applyBind; - } - }); - - var $indexOf = callBind(getIntrinsic('String.prototype.indexOf')); - - var callBound = function callBoundIntrinsic(name, allowMissing) { - var intrinsic = getIntrinsic(name, !!allowMissing); - if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { - return callBind(intrinsic); - } - return intrinsic; - }; - - var util_inspect = require$$0__default['default'].inspect; - - var hasMap = typeof Map === 'function' && Map.prototype; - var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; - var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; - var mapForEach = hasMap && Map.prototype.forEach; - var hasSet = typeof Set === 'function' && Set.prototype; - var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; - var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; - var setForEach = hasSet && Set.prototype.forEach; - var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; - var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; - var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; - var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; - var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; - var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; - var booleanValueOf = Boolean.prototype.valueOf; - var objectToString = Object.prototype.toString; - var functionToString = Function.prototype.toString; - var match = String.prototype.match; - var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; - var gOPS = Object.getOwnPropertySymbols; - var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; - var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; - var isEnumerable = Object.prototype.propertyIsEnumerable; - - var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( - [].__proto__ === Array.prototype // eslint-disable-line no-proto - ? function (O) { - return O.__proto__; // eslint-disable-line no-proto - } - : null - ); - - var inspectCustom = util_inspect.custom; - var inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null; - var toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null; - - var objectInspect = function inspect_(obj, options, depth, seen) { - var opts = options || {}; - - if (has$3(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) { - throw new TypeError('option "quoteStyle" must be "single" or "double"'); - } - if ( - has$3(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' - ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity - : opts.maxStringLength !== null - ) - ) { - throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); - } - var customInspect = has$3(opts, 'customInspect') ? opts.customInspect : true; - if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { - throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); - } - - if ( - has$3(opts, 'indent') - && opts.indent !== null - && opts.indent !== '\t' - && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) - ) { - throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`'); - } - - if (typeof obj === 'undefined') { - return 'undefined'; - } - if (obj === null) { - return 'null'; - } - if (typeof obj === 'boolean') { - return obj ? 'true' : 'false'; - } - - if (typeof obj === 'string') { - return inspectString(obj, opts); - } - if (typeof obj === 'number') { - if (obj === 0) { - return Infinity / obj > 0 ? '0' : '-0'; - } - return String(obj); - } - if (typeof obj === 'bigint') { - return String(obj) + 'n'; - } - - var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; - if (typeof depth === 'undefined') { depth = 0; } - if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { - return isArray$3(obj) ? '[Array]' : '[Object]'; - } - - var indent = getIndent(opts, depth); - - if (typeof seen === 'undefined') { - seen = []; - } else if (indexOf(seen, obj) >= 0) { - return '[Circular]'; - } - - function inspect(value, from, noIndent) { - if (from) { - seen = seen.slice(); - seen.push(from); - } - if (noIndent) { - var newOpts = { - depth: opts.depth - }; - if (has$3(opts, 'quoteStyle')) { - newOpts.quoteStyle = opts.quoteStyle; - } - return inspect_(value, newOpts, depth + 1, seen); - } - return inspect_(value, opts, depth + 1, seen); - } - - if (typeof obj === 'function') { - var name = nameOf(obj); - var keys = arrObjKeys(obj, inspect); - return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : ''); - } - if (isSymbol(obj)) { - var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); - return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; - } - if (isElement(obj)) { - var s = '<' + String(obj.nodeName).toLowerCase(); - var attrs = obj.attributes || []; - for (var i = 0; i < attrs.length; i++) { - s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); - } - s += '>'; - if (obj.childNodes && obj.childNodes.length) { s += '...'; } - s += ''; - return s; - } - if (isArray$3(obj)) { - if (obj.length === 0) { return '[]'; } - var xs = arrObjKeys(obj, inspect); - if (indent && !singleLineValues(xs)) { - return '[' + indentedJoin(xs, indent) + ']'; - } - return '[ ' + xs.join(', ') + ' ]'; - } - if (isError(obj)) { - var parts = arrObjKeys(obj, inspect); - if (parts.length === 0) { return '[' + String(obj) + ']'; } - return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }'; - } - if (typeof obj === 'object' && customInspect) { - if (inspectSymbol && typeof obj[inspectSymbol] === 'function') { - return obj[inspectSymbol](); - } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { - return obj.inspect(); - } - } - if (isMap(obj)) { - var mapParts = []; - mapForEach.call(obj, function (value, key) { - mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); - }); - return collectionOf('Map', mapSize.call(obj), mapParts, indent); - } - if (isSet(obj)) { - var setParts = []; - setForEach.call(obj, function (value) { - setParts.push(inspect(value, obj)); - }); - return collectionOf('Set', setSize.call(obj), setParts, indent); - } - if (isWeakMap(obj)) { - return weakCollectionOf('WeakMap'); - } - if (isWeakSet(obj)) { - return weakCollectionOf('WeakSet'); - } - if (isWeakRef(obj)) { - return weakCollectionOf('WeakRef'); - } - if (isNumber(obj)) { - return markBoxed(inspect(Number(obj))); - } - if (isBigInt(obj)) { - return markBoxed(inspect(bigIntValueOf.call(obj))); - } - if (isBoolean(obj)) { - return markBoxed(booleanValueOf.call(obj)); - } - if (isString(obj)) { - return markBoxed(inspect(String(obj))); - } - if (!isDate(obj) && !isRegExp$1(obj)) { - var ys = arrObjKeys(obj, inspect); - var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; - var protoTag = obj instanceof Object ? '' : 'null prototype'; - var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : ''; - var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; - var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : ''); - if (ys.length === 0) { return tag + '{}'; } - if (indent) { - return tag + '{' + indentedJoin(ys, indent) + '}'; - } - return tag + '{ ' + ys.join(', ') + ' }'; - } - return String(obj); - }; - - function wrapQuotes(s, defaultStyle, opts) { - var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'"; - return quoteChar + s + quoteChar; - } - - function quote(s) { - return String(s).replace(/"/g, '"'); - } - - function isArray$3(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } - function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } - function isRegExp$1(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } - function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } - function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } - function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } - function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } - - // Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives - function isSymbol(obj) { - if (hasShammedSymbols) { - return obj && typeof obj === 'object' && obj instanceof Symbol; - } - if (typeof obj === 'symbol') { - return true; - } - if (!obj || typeof obj !== 'object' || !symToString) { - return false; - } - try { - symToString.call(obj); - return true; - } catch (e) {} - return false; - } - - function isBigInt(obj) { - if (!obj || typeof obj !== 'object' || !bigIntValueOf) { - return false; - } - try { - bigIntValueOf.call(obj); - return true; - } catch (e) {} - return false; - } - - var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; - function has$3(obj, key) { - return hasOwn.call(obj, key); - } - - function toStr(obj) { - return objectToString.call(obj); - } - - function nameOf(f) { - if (f.name) { return f.name; } - var m = match.call(functionToString.call(f), /^function\s*([\w$]+)/); - if (m) { return m[1]; } - return null; - } - - function indexOf(xs, x) { - if (xs.indexOf) { return xs.indexOf(x); } - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) { return i; } - } - return -1; - } - - function isMap(x) { - if (!mapSize || !x || typeof x !== 'object') { - return false; - } - try { - mapSize.call(x); - try { - setSize.call(x); - } catch (s) { - return true; - } - return x instanceof Map; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; - } - - function isWeakMap(x) { - if (!weakMapHas || !x || typeof x !== 'object') { - return false; - } - try { - weakMapHas.call(x, weakMapHas); - try { - weakSetHas.call(x, weakSetHas); - } catch (s) { - return true; - } - return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; - } - - function isWeakRef(x) { - if (!weakRefDeref || !x || typeof x !== 'object') { - return false; - } - try { - weakRefDeref.call(x); - return true; - } catch (e) {} - return false; - } - - function isSet(x) { - if (!setSize || !x || typeof x !== 'object') { - return false; - } - try { - setSize.call(x); - try { - mapSize.call(x); - } catch (m) { - return true; - } - return x instanceof Set; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; - } - - function isWeakSet(x) { - if (!weakSetHas || !x || typeof x !== 'object') { - return false; - } - try { - weakSetHas.call(x, weakSetHas); - try { - weakMapHas.call(x, weakMapHas); - } catch (s) { - return true; - } - return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; - } - - function isElement(x) { - if (!x || typeof x !== 'object') { return false; } - if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { - return true; - } - return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; - } - - function inspectString(str, opts) { - if (str.length > opts.maxStringLength) { - var remaining = str.length - opts.maxStringLength; - var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); - return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer; - } - // eslint-disable-next-line no-control-regex - var s = str.replace(/(['\\])/g, '\\$1').replace(/[\x00-\x1f]/g, lowbyte); - return wrapQuotes(s, 'single', opts); - } - - function lowbyte(c) { - var n = c.charCodeAt(0); - var x = { - 8: 'b', - 9: 't', - 10: 'n', - 12: 'f', - 13: 'r' - }[n]; - if (x) { return '\\' + x; } - return '\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase(); - } - - function markBoxed(str) { - return 'Object(' + str + ')'; - } - - function weakCollectionOf(type) { - return type + ' { ? }'; - } - - function collectionOf(type, size, entries, indent) { - var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', '); - return type + ' (' + size + ') {' + joinedEntries + '}'; - } - - function singleLineValues(xs) { - for (var i = 0; i < xs.length; i++) { - if (indexOf(xs[i], '\n') >= 0) { - return false; - } - } - return true; - } - - function getIndent(opts, depth) { - var baseIndent; - if (opts.indent === '\t') { - baseIndent = '\t'; - } else if (typeof opts.indent === 'number' && opts.indent > 0) { - baseIndent = Array(opts.indent + 1).join(' '); - } else { - return null; - } - return { - base: baseIndent, - prev: Array(depth + 1).join(baseIndent) - }; - } - - function indentedJoin(xs, indent) { - if (xs.length === 0) { return ''; } - var lineJoiner = '\n' + indent.prev + indent.base; - return lineJoiner + xs.join(',' + lineJoiner) + '\n' + indent.prev; - } - - function arrObjKeys(obj, inspect) { - var isArr = isArray$3(obj); - var xs = []; - if (isArr) { - xs.length = obj.length; - for (var i = 0; i < obj.length; i++) { - xs[i] = has$3(obj, i) ? inspect(obj[i], obj) : ''; - } - } - var syms = typeof gOPS === 'function' ? gOPS(obj) : []; - var symMap; - if (hasShammedSymbols) { - symMap = {}; - for (var k = 0; k < syms.length; k++) { - symMap['$' + syms[k]] = syms[k]; - } - } - - for (var key in obj) { // eslint-disable-line no-restricted-syntax - if (!has$3(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { - // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section - continue; // eslint-disable-line no-restricted-syntax, no-continue - } else if ((/[^\w$]/).test(key)) { - xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); - } else { - xs.push(key + ': ' + inspect(obj[key], obj)); - } - } - if (typeof gOPS === 'function') { - for (var j = 0; j < syms.length; j++) { - if (isEnumerable.call(obj, syms[j])) { - xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); - } - } - } - return xs; - } - - var $TypeError = getIntrinsic('%TypeError%'); - var $WeakMap = getIntrinsic('%WeakMap%', true); - var $Map = getIntrinsic('%Map%', true); - - var $weakMapGet = callBound('WeakMap.prototype.get', true); - var $weakMapSet = callBound('WeakMap.prototype.set', true); - var $weakMapHas = callBound('WeakMap.prototype.has', true); - var $mapGet = callBound('Map.prototype.get', true); - var $mapSet = callBound('Map.prototype.set', true); - var $mapHas = callBound('Map.prototype.has', true); - - /* - * This function traverses the list returning the node corresponding to the - * given key. - * - * That node is also moved to the head of the list, so that if it's accessed - * again we don't need to traverse the whole list. By doing so, all the recently - * used nodes can be accessed relatively quickly. - */ - var listGetNode = function (list, key) { // eslint-disable-line consistent-return - for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { - if (curr.key === key) { - prev.next = curr.next; - curr.next = list.next; - list.next = curr; // eslint-disable-line no-param-reassign - return curr; - } - } - }; - - var listGet = function (objects, key) { - var node = listGetNode(objects, key); - return node && node.value; - }; - var listSet = function (objects, key, value) { - var node = listGetNode(objects, key); - if (node) { - node.value = value; - } else { - // Prepend the new node to the beginning of the list - objects.next = { // eslint-disable-line no-param-reassign - key: key, - next: objects.next, - value: value - }; - } - }; - var listHas = function (objects, key) { - return !!listGetNode(objects, key); - }; - - var sideChannel = function getSideChannel() { - var $wm; - var $m; - var $o; - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + objectInspect(key)); - } - }, - get: function (key) { // eslint-disable-line consistent-return - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapGet($wm, key); - } - } else if ($Map) { - if ($m) { - return $mapGet($m, key); - } - } else { - if ($o) { // eslint-disable-line no-lonely-if - return listGet($o, key); - } - } - }, - has: function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapHas($wm, key); - } - } else if ($Map) { - if ($m) { - return $mapHas($m, key); - } - } else { - if ($o) { // eslint-disable-line no-lonely-if - return listHas($o, key); - } - } - return false; - }, - set: function (key, value) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if (!$wm) { - $wm = new $WeakMap(); - } - $weakMapSet($wm, key, value); - } else if ($Map) { - if (!$m) { - $m = new $Map(); - } - $mapSet($m, key, value); - } else { - if (!$o) { - /* - * Initialize the linked list as an empty node, so that we don't have - * to special-case handling of the first node: we can always refer to - * it as (previous node).next, instead of something like (list).head - */ - $o = { key: {}, next: null }; - } - listSet($o, key, value); - } - } - }; - return channel; - }; - - var replace = String.prototype.replace; - var percentTwenties = /%20/g; - - var Format = { - RFC1738: 'RFC1738', - RFC3986: 'RFC3986' - }; - - var formats = { - 'default': Format.RFC3986, - formatters: { - RFC1738: function (value) { - return replace.call(value, percentTwenties, '+'); - }, - RFC3986: function (value) { - return String(value); - } - }, - RFC1738: Format.RFC1738, - RFC3986: Format.RFC3986 - }; - - var has$2 = Object.prototype.hasOwnProperty; - var isArray$2 = Array.isArray; - - var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; - }()); - - var compactQueue = function compactQueue(queue) { - while (queue.length > 1) { - var item = queue.pop(); - var obj = item.obj[item.prop]; - - if (isArray$2(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } - }; - - var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; - }; - - var merge = function merge(target, source, options) { - /* eslint no-param-reassign: 0 */ - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (isArray$2(target)) { - target.push(source); - } else if (target && typeof target === 'object') { - if ((options && (options.plainObjects || options.allowPrototypes)) || !has$2.call(Object.prototype, source)) { - target[source] = true; - } - } else { - return [target, source]; - } - - return target; - } - - if (!target || typeof target !== 'object') { - return [target].concat(source); - } - - var mergeTarget = target; - if (isArray$2(target) && !isArray$2(source)) { - mergeTarget = arrayToObject(target, options); - } - - if (isArray$2(target) && isArray$2(source)) { - source.forEach(function (item, i) { - if (has$2.call(target, i)) { - var targetItem = target[i]; - if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { - target[i] = merge(targetItem, item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } - - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; - - if (has$2.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); - }; - - var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); - }; - - var decode = function (str, decoder, charset) { - var strWithoutPlus = str.replace(/\+/g, ' '); - if (charset === 'iso-8859-1') { - // unescape never throws, no try...catch needed: - return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); - } - // utf-8 - try { - return decodeURIComponent(strWithoutPlus); - } catch (e) { - return strWithoutPlus; - } - }; - - var encode = function encode(str, defaultEncoder, charset, kind, format) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - var string = str; - if (typeof str === 'symbol') { - string = Symbol.prototype.toString.call(str); - } else if (typeof str !== 'string') { - string = String(str); - } - - if (charset === 'iso-8859-1') { - return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { - return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; - }); - } - - var out = ''; - for (var i = 0; i < string.length; ++i) { - var c = string.charCodeAt(i); - - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) - ) { - out += string.charAt(i); - continue; - } - - if (c < 0x80) { - out = out + hexTable[c]; - continue; - } - - if (c < 0x800) { - out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); - out += hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - return out; - }; - - var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - compactQueue(queue); - - return value; - }; - - var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; - }; - - var isBuffer = function isBuffer(obj) { - if (!obj || typeof obj !== 'object') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); - }; - - var combine = function combine(a, b) { - return [].concat(a, b); - }; - - var maybeMap = function maybeMap(val, fn) { - if (isArray$2(val)) { - var mapped = []; - for (var i = 0; i < val.length; i += 1) { - mapped.push(fn(val[i])); - } - return mapped; - } - return fn(val); - }; - - var utils = { - arrayToObject: arrayToObject, - assign: assign, - combine: combine, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - maybeMap: maybeMap, - merge: merge - }; - - var has$1 = Object.prototype.hasOwnProperty; - - var arrayPrefixGenerators = { - brackets: function brackets(prefix) { - return prefix + '[]'; - }, - comma: 'comma', - indices: function indices(prefix, key) { - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { - return prefix; - } - }; - - var isArray$1 = Array.isArray; - var push = Array.prototype.push; - var pushToArray = function (arr, valueOrArray) { - push.apply(arr, isArray$1(valueOrArray) ? valueOrArray : [valueOrArray]); - }; - - var toISO = Date.prototype.toISOString; - - var defaultFormat = formats['default']; - var defaults$1 = { - addQueryPrefix: false, - allowDots: false, - charset: 'utf-8', - charsetSentinel: false, - delimiter: '&', - encode: true, - encoder: utils.encode, - encodeValuesOnly: false, - format: defaultFormat, - formatter: formats.formatters[defaultFormat], - // deprecated - indices: false, - serializeDate: function serializeDate(date) { - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false - }; - - var isNonNullishPrimitive = function isNonNullishPrimitive(v) { - return typeof v === 'string' - || typeof v === 'number' - || typeof v === 'boolean' - || typeof v === 'symbol' - || typeof v === 'bigint'; - }; - - var stringify = function stringify( - object, - prefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - sideChannel$1 - ) { - var obj = object; - - if (sideChannel$1.has(object)) { - throw new RangeError('Cyclic object value'); - } - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (generateArrayPrefix === 'comma' && isArray$1(obj)) { - obj = utils.maybeMap(obj, function (value) { - if (value instanceof Date) { - return serializeDate(value); - } - return value; - }); - } - - if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults$1.encoder, charset, 'key', format) : prefix; - } - - obj = ''; - } - - if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults$1.encoder, charset, 'key', format); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults$1.encoder, charset, 'value', format))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (generateArrayPrefix === 'comma' && isArray$1(obj)) { - // we need to join elements in - objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }]; - } else if (isArray$1(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key]; - - if (skipNulls && value === null) { - continue; - } - - var keyPrefix = isArray$1(obj) - ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix - : prefix + (allowDots ? '.' + key : '[' + key + ']'); - - sideChannel$1.set(object, true); - var valueSideChannel = sideChannel(); - pushToArray(values, stringify( - value, - keyPrefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - valueSideChannel - )); - } - - return values; - }; - - var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { - if (!opts) { - return defaults$1; - } - - if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } - - var charset = opts.charset || defaults$1.charset; - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - - var format = formats['default']; - if (typeof opts.format !== 'undefined') { - if (!has$1.call(formats.formatters, opts.format)) { - throw new TypeError('Unknown format option provided.'); - } - format = opts.format; - } - var formatter = formats.formatters[format]; - - var filter = defaults$1.filter; - if (typeof opts.filter === 'function' || isArray$1(opts.filter)) { - filter = opts.filter; - } - - return { - addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults$1.addQueryPrefix, - allowDots: typeof opts.allowDots === 'undefined' ? defaults$1.allowDots : !!opts.allowDots, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults$1.charsetSentinel, - delimiter: typeof opts.delimiter === 'undefined' ? defaults$1.delimiter : opts.delimiter, - encode: typeof opts.encode === 'boolean' ? opts.encode : defaults$1.encode, - encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults$1.encoder, - encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults$1.encodeValuesOnly, - filter: filter, - format: format, - formatter: formatter, - serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults$1.serializeDate, - skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults$1.skipNulls, - sort: typeof opts.sort === 'function' ? opts.sort : null, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults$1.strictNullHandling - }; - }; - - var stringify_1 = function (object, opts) { - var obj = object; - var options = normalizeStringifyOptions(opts); - - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (isArray$1(options.filter)) { - filter = options.filter; - objKeys = filter; - } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; - } - - var arrayFormat; - if (opts && opts.arrayFormat in arrayPrefixGenerators) { - arrayFormat = opts.arrayFormat; - } else if (opts && 'indices' in opts) { - arrayFormat = opts.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (options.sort) { - objKeys.sort(options.sort); - } - - var sideChannel$1 = sideChannel(); - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (options.skipNulls && obj[key] === null) { - continue; - } - pushToArray(keys, stringify( - obj[key], - key, - generateArrayPrefix, - options.strictNullHandling, - options.skipNulls, - options.encode ? options.encoder : null, - options.filter, - options.sort, - options.allowDots, - options.serializeDate, - options.format, - options.formatter, - options.encodeValuesOnly, - options.charset, - sideChannel$1 - )); - } - - var joined = keys.join(options.delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - if (options.charsetSentinel) { - if (options.charset === 'iso-8859-1') { - // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark - prefix += 'utf8=%26%2310003%3B&'; - } else { - // encodeURIComponent('✓') - prefix += 'utf8=%E2%9C%93&'; - } - } - - return joined.length > 0 ? prefix + joined : ''; - }; - - var has = Object.prototype.hasOwnProperty; - var isArray = Array.isArray; - - var defaults = { - allowDots: false, - allowPrototypes: false, - allowSparse: false, - arrayLimit: 20, - charset: 'utf-8', - charsetSentinel: false, - comma: false, - decoder: utils.decode, - delimiter: '&', - depth: 5, - ignoreQueryPrefix: false, - interpretNumericEntities: false, - parameterLimit: 1000, - parseArrays: true, - plainObjects: false, - strictNullHandling: false - }; - - var interpretNumericEntities = function (str) { - return str.replace(/&#(\d+);/g, function ($0, numberStr) { - return String.fromCharCode(parseInt(numberStr, 10)); - }); - }; - - var parseArrayValue = function (val, options) { - if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { - return val.split(','); - } - - return val; - }; - - // This is what browsers will submit when the ✓ character occurs in an - // application/x-www-form-urlencoded body and the encoding of the page containing - // the form is iso-8859-1, or when the submitted form has an accept-charset - // attribute of iso-8859-1. Presumably also with other charsets that do not contain - // the ✓ character, such as us-ascii. - var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') - - // These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. - var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') - - var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); - var skipIndex = -1; // Keep track of where the utf8 sentinel was found - var i; - - var charset = options.charset; - if (options.charsetSentinel) { - for (i = 0; i < parts.length; ++i) { - if (parts[i].indexOf('utf8=') === 0) { - if (parts[i] === charsetSentinel) { - charset = 'utf-8'; - } else if (parts[i] === isoSentinel) { - charset = 'iso-8859-1'; - } - skipIndex = i; - i = parts.length; // The eslint settings do not allow break; - } - } - } - - for (i = 0; i < parts.length; ++i) { - if (i === skipIndex) { - continue; - } - var part = parts[i]; - - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - - var key, val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder, charset, 'key'); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); - val = utils.maybeMap( - parseArrayValue(part.slice(pos + 1), options), - function (encodedVal) { - return options.decoder(encodedVal, defaults.decoder, charset, 'value'); - } - ); - } - - if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(val); - } - - if (part.indexOf('[]=') > -1) { - val = isArray(val) ? [val] : val; - } - - if (has.call(obj, key)) { - obj[key] = utils.combine(obj[key], val); - } else { - obj[key] = val; - } - } - - return obj; - }; - - var parseObject = function (chain, val, options, valuesParsed) { - var leaf = valuesParsed ? val : parseArrayValue(val, options); - - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]' && options.parseArrays) { - obj = [].concat(leaf); - } else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var index = parseInt(cleanRoot, 10); - if (!options.parseArrays && cleanRoot === '') { - obj = { 0: leaf }; - } else if ( - !isNaN(index) - && root !== cleanRoot - && String(index) === cleanRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else { - obj[cleanRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; - }; - - var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = options.depth > 0 && brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options, valuesParsed); - }; - - var normalizeParseOptions = function normalizeParseOptions(opts) { - if (!opts) { - return defaults; - } - - if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; - - return { - allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, - allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, - allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, - arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, - decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, - delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, - // eslint-disable-next-line no-implicit-coercion, no-extra-parens - depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, - ignoreQueryPrefix: opts.ignoreQueryPrefix === true, - interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, - parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, - parseArrays: opts.parseArrays !== false, - plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; - }; - - var parse$1 = function (str, opts) { - var options = normalizeParseOptions(opts); - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); - obj = utils.merge(obj, newObj, options); - } - - if (options.allowSparse === true) { - return obj; - } - - return utils.compact(obj); - }; - - var lib$1 = { - formats: formats, - parse: parse$1, - stringify: stringify_1 - }; - - function account(rawAccount) { - if (!rawAccount) { - return undefined; - } - try { - return { - ...rawAccount, - raw: () => rawAccount, - buying_power: number(rawAccount.buying_power), - regt_buying_power: number(rawAccount.regt_buying_power), - daytrading_buying_power: number(rawAccount.daytrading_buying_power), - cash: number(rawAccount.cash), - created_at: new Date(rawAccount.created_at), - portfolio_value: number(rawAccount.portfolio_value), - multiplier: number(rawAccount.multiplier), - equity: number(rawAccount.equity), - last_equity: number(rawAccount.last_equity), - long_market_value: number(rawAccount.long_market_value), - short_market_value: number(rawAccount.short_market_value), - initial_margin: number(rawAccount.initial_margin), - maintenance_margin: number(rawAccount.maintenance_margin), - last_maintenance_margin: number(rawAccount.last_maintenance_margin), - sma: number(rawAccount.sma), - status: rawAccount.status, - }; - } - catch (err) { - throw new Error(`Account parsing failed. ${err.message}`); - } - } - function clock(rawClock) { - if (!rawClock) { - return undefined; - } - try { - return { - raw: () => rawClock, - timestamp: new Date(rawClock.timestamp), - is_open: rawClock.is_open, - next_open: new Date(rawClock.next_open), - next_close: new Date(rawClock.next_close), - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } - } - function latestTrade(raw) { - if (!raw) { - return undefined; - } - try { - return { - ...raw, - raw: () => raw, - trade: { - ...raw.trade, - t: new Date(raw.trade.t), - }, - }; - } - catch (err) { - throw new Error(`Latest trade parsing failed. ${err.message}`); - } - } - function order(rawOrder) { - if (!rawOrder) { - return undefined; - } - try { - return { - ...rawOrder, - raw: () => rawOrder, - created_at: new Date(rawOrder.created_at), - updated_at: new Date(rawOrder.updated_at), - submitted_at: new Date(rawOrder.submitted_at), - filled_at: new Date(rawOrder.filled_at), - expired_at: new Date(rawOrder.expired_at), - canceled_at: new Date(rawOrder.canceled_at), - failed_at: new Date(rawOrder.failed_at), - replaced_at: new Date(rawOrder.replaced_at), - qty: number(rawOrder.qty), - filled_qty: number(rawOrder.filled_qty), - type: rawOrder.type, - side: rawOrder.side, - time_in_force: rawOrder.time_in_force, - limit_price: number(rawOrder.limit_price), - stop_price: number(rawOrder.stop_price), - filled_avg_price: number(rawOrder.filled_avg_price), - status: rawOrder.status, - legs: orders(rawOrder.legs), - trail_price: number(rawOrder.trail_price), - trail_percent: number(rawOrder.trail_percent), - hwm: number(rawOrder.hwm), - order_class: rawOrder.order_class, - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } - } - function orders(rawOrders) { - return rawOrders ? rawOrders.map((value) => order(value)) : undefined; - } - function canceled_order(input) { - if (!input) { - return undefined; - } - let order = input.body; - delete input.body; - try { - return { - ...input, - order: { - ...order, - raw: () => order, - created_at: new Date(order.created_at), - updated_at: new Date(order.updated_at), - submitted_at: new Date(order.submitted_at), - filled_at: new Date(order.filled_at), - expired_at: new Date(order.expired_at), - canceled_at: new Date(order.canceled_at), - failed_at: new Date(order.failed_at), - replaced_at: new Date(order.replaced_at), - qty: number(order.qty), - filled_qty: number(order.filled_qty), - type: order.type, - side: order.side, - time_in_force: order.time_in_force, - limit_price: number(order.limit_price), - stop_price: number(order.stop_price), - filled_avg_price: number(order.filled_avg_price), - status: order.status, - legs: orders(order.legs), - trail_price: number(order.trail_price), - trail_percent: number(order.trail_percent), - hwm: number(order.hwm), - order_class: order.order_class, - }, - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } - } - function canceled_orders(rawOrderCancelations) { - return rawOrderCancelations - ? rawOrderCancelations.map((value) => canceled_order(value)) - : undefined; - } - function position(rawPosition) { - if (!rawPosition) { - return undefined; - } - try { - return { - ...rawPosition, - raw: () => rawPosition, - avg_entry_price: number(rawPosition.avg_entry_price), - qty: number(rawPosition.qty), - side: rawPosition.side, - market_value: number(rawPosition.market_value), - cost_basis: number(rawPosition.cost_basis), - unrealized_pl: number(rawPosition.unrealized_pl), - unrealized_plpc: number(rawPosition.unrealized_plpc), - unrealized_intraday_pl: number(rawPosition.unrealized_intraday_pl), - unrealized_intraday_plpc: number(rawPosition.unrealized_intraday_plpc), - current_price: number(rawPosition.current_price), - lastday_price: number(rawPosition.lastday_price), - change_today: number(rawPosition.change_today), - }; - } - catch (err) { - throw new Error(`Position parsing failed. ${err.message}`); - } - } - function positions(rawPositions) { - return rawPositions ? rawPositions.map((pos) => position(pos)) : undefined; - } - function tradeActivity(rawTradeActivity) { - if (!rawTradeActivity) { - return undefined; - } - try { - return { - ...rawTradeActivity, - raw: () => rawTradeActivity, - cum_qty: number(rawTradeActivity.cum_qty), - leaves_qty: number(rawTradeActivity.leaves_qty), - price: number(rawTradeActivity.price), - qty: number(rawTradeActivity.qty), - side: rawTradeActivity.side, - type: rawTradeActivity.type, - }; - } - catch (err) { - throw new Error(`TradeActivity parsing failed. ${err.message}`); - } - } - function nonTradeActivity(rawNonTradeActivity) { - if (!rawNonTradeActivity) { - return undefined; - } - try { - return { - ...rawNonTradeActivity, - raw: () => rawNonTradeActivity, - net_amount: number(rawNonTradeActivity.net_amount), - qty: number(rawNonTradeActivity.qty), - per_share_amount: number(rawNonTradeActivity.per_share_amount), - }; - } - catch (err) { - throw new Error(`NonTradeActivity parsing failed. ${err.message}`); - } - } - function activities(rawActivities) { - if (!rawActivities) { - return undefined; - } - try { - return rawActivities.map((rawActivity) => rawActivity.activity_type === 'FILL' - ? tradeActivity(rawActivity) - : nonTradeActivity(rawActivity)); - } - catch (err) { - throw new Error(`Activity parsing failed. ${err.message}`); - } - } - function pageOfTrades(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - trades: (page.trades == null ? [] : page.trades).map((trade) => ({ - raw: () => trade, - ...trade, - t: new Date(trade.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } - } - function pageOfQuotes(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - quotes: (page.quotes == null ? [] : page.quotes).map((quote) => ({ - raw: () => quote, - ...quote, - t: new Date(quote.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } - } - function pageOfBars(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - bars: (page.bars == null ? [] : page.bars).map((bar) => ({ - raw: () => bar, - ...bar, - t: new Date(bar.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } - } - function snapshot(raw) { - if (!raw) { - return undefined; - } - try { - return { - ...raw, - raw: () => raw, - latestTrade: raw.latestTrade - ? { - ...raw.latestTrade, - t: new Date(raw.latestTrade.t), - } - : null, - latestQuote: raw.latestQuote - ? { - ...raw.latestQuote, - t: new Date(raw.latestQuote.t), - } - : null, - minuteBar: raw.minuteBar - ? { - ...raw.minuteBar, - t: new Date(raw.minuteBar.t), - } - : null, - dailyBar: raw.dailyBar - ? { - ...raw.dailyBar, - t: new Date(raw.dailyBar.t), - } - : null, - prevDailyBar: raw.prevDailyBar - ? { - ...raw.prevDailyBar, - t: new Date(raw.prevDailyBar.t), - } - : null, - }; - } - catch (err) { - throw new Error(`Snapshot parsing failed "${err.message}"`); - } - } - function snapshots(raw) { - let parsed = {}; - for (let [key, value] of Object.entries(raw)) { - parsed[key] = snapshot(value); - } - return parsed; - } - function number(numStr) { - if (typeof numStr === 'undefined' || numStr == null) { - return numStr; - } - const value = parseFloat(numStr); - if (Number.isNaN(value)) { - return null; - } - return value; - } - function trade_update(rawTradeUpdate) { - if (!rawTradeUpdate) - return undefined; - return { - raw: () => rawTradeUpdate, - event: rawTradeUpdate.event, - execution_id: rawTradeUpdate.execution_id, - order: order(rawTradeUpdate.order), - ...(rawTradeUpdate.event_id && { - event_id: number(rawTradeUpdate.event_id), - }), - ...(rawTradeUpdate.at && { at: new Date(rawTradeUpdate.at) }), - ...(rawTradeUpdate.timestamp && { - timestamp: new Date(rawTradeUpdate.timestamp), - }), - ...(rawTradeUpdate.position_qty && { - position_qty: number(rawTradeUpdate.position_qty), - }), - ...(rawTradeUpdate.price && { price: number(rawTradeUpdate.price) }), - ...(rawTradeUpdate.qty && { qty: number(rawTradeUpdate.qty) }), - }; - } - var parse = { - account, - activities, - clock, - nonTradeActivity, - order, - orders, - canceled_orders, - position, - positions, - tradeActivity, - pageOfTrades, - pageOfQuotes, - pageOfBars, - snapshot, - snapshots, - trade_update, - latestTrade, - }; - - function unfetch_module(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return {ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||"get",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+","+t:t;}),t(a());},s.onerror=r,s.withCredentials="include"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null);})} - - var unfetch_module$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': unfetch_module - }); - - var require$$0$2 = /*@__PURE__*/getAugmentedNamespace(unfetch_module$1); - - var browser$1 = self.fetch || (self.fetch = require$$0$2.default || require$$0$2); - - const endpoints = { - rest: { - beta: 'https://data.alpaca.markets/v1beta1', - account: 'https://api.alpaca.markets/v2', - market_data_v2: 'https://data.alpaca.markets/v2', - market_data_v1: 'https://data.alpaca.markets/v1', - }, - websocket: { - account: 'wss://api.alpaca.markets/stream', - market_data: (source = 'iex') => `wss://stream.data.alpaca.markets/v2/${source}`, - }, - }; - - var load = function (received, defaults, onto = {}) { - var k, ref, v; - - for (k in defaults) { - v = defaults[k]; - onto[k] = (ref = received[k]) != null ? ref : v; - } - - return onto; - }; - - var overwrite = function (received, defaults, onto = {}) { - var k, v; - - for (k in received) { - v = received[k]; - - if (defaults[k] !== void 0) { - onto[k] = v; - } - } - - return onto; - }; - - var parser$8 = { - load: load, - overwrite: overwrite - }; - - var DLList$2; - DLList$2 = class DLList { - constructor(incr, decr) { - this.incr = incr; - this.decr = decr; - this._first = null; - this._last = null; - this.length = 0; - } - - push(value) { - var node; - this.length++; - - if (typeof this.incr === "function") { - this.incr(); - } - - node = { - value, - prev: this._last, - next: null - }; - - if (this._last != null) { - this._last.next = node; - this._last = node; - } else { - this._first = this._last = node; - } - - return void 0; - } - - shift() { - var value; - - if (this._first == null) { - return; - } else { - this.length--; - - if (typeof this.decr === "function") { - this.decr(); - } - } - - value = this._first.value; - - if ((this._first = this._first.next) != null) { - this._first.prev = null; - } else { - this._last = null; - } - - return value; - } - - first() { - if (this._first != null) { - return this._first.value; - } - } - - getArray() { - var node, ref, results; - node = this._first; - results = []; - - while (node != null) { - results.push((ref = node, node = node.next, ref.value)); - } - - return results; - } - - forEachShift(cb) { - var node; - node = this.shift(); - - while (node != null) { - cb(node), node = this.shift(); - } - - return void 0; - } - - debug() { - var node, ref, ref1, ref2, results; - node = this._first; - results = []; - - while (node != null) { - results.push((ref = node, node = node.next, { - value: ref.value, - prev: (ref1 = ref.prev) != null ? ref1.value : void 0, - next: (ref2 = ref.next) != null ? ref2.value : void 0 - })); - } - - return results; - } - - }; - var DLList_1 = DLList$2; - - function asyncGeneratorStep$8(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - - function _asyncToGenerator$8(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$8(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$8(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - var Events$6; - Events$6 = class Events { - constructor(instance) { - this.instance = instance; - this._events = {}; - - if (this.instance.on != null || this.instance.once != null || this.instance.removeAllListeners != null) { - throw new Error("An Emitter already exists for this object"); - } - - this.instance.on = (name, cb) => { - return this._addListener(name, "many", cb); - }; - - this.instance.once = (name, cb) => { - return this._addListener(name, "once", cb); - }; - - this.instance.removeAllListeners = (name = null) => { - if (name != null) { - return delete this._events[name]; - } else { - return this._events = {}; - } - }; - } - - _addListener(name, status, cb) { - var base; - - if ((base = this._events)[name] == null) { - base[name] = []; - } - - this._events[name].push({ - cb, - status - }); - - return this.instance; - } - - listenerCount(name) { - if (this._events[name] != null) { - return this._events[name].length; - } else { - return 0; - } - } - - trigger(name, ...args) { - var _this = this; - - return _asyncToGenerator$8(function* () { - var e, promises; - - try { - if (name !== "debug") { - _this.trigger("debug", `Event triggered: ${name}`, args); - } - - if (_this._events[name] == null) { - return; - } - - _this._events[name] = _this._events[name].filter(function (listener) { - return listener.status !== "none"; - }); - promises = _this._events[name].map( - /*#__PURE__*/ - function () { - var _ref = _asyncToGenerator$8(function* (listener) { - var e, returned; - - if (listener.status === "none") { - return; - } - - if (listener.status === "once") { - listener.status = "none"; - } - - try { - returned = typeof listener.cb === "function" ? listener.cb(...args) : void 0; - - if (typeof (returned != null ? returned.then : void 0) === "function") { - return yield returned; - } else { - return returned; - } - } catch (error) { - e = error; - - if ("name" !== "error") { - _this.trigger("error", e); - } - - return null; - } - }); - - return function (_x) { - return _ref.apply(this, arguments); - }; - }()); - return (yield Promise.all(promises)).find(function (x) { - return x != null; - }); - } catch (error) { - e = error; - - { - _this.trigger("error", e); - } - - return null; - } - })(); - } - - }; - var Events_1 = Events$6; - - var DLList$1, Events$5, Queues$1; - DLList$1 = DLList_1; - Events$5 = Events_1; - Queues$1 = class Queues { - constructor(num_priorities) { - this.Events = new Events$5(this); - this._length = 0; - - this._lists = function () { - var j, ref, results; - results = []; - - for (j = 1, ref = num_priorities; 1 <= ref ? j <= ref : j >= ref; 1 <= ref ? ++j : --j) { - results.push(new DLList$1(() => { - return this.incr(); - }, () => { - return this.decr(); - })); - } - - return results; - }.call(this); - } - - incr() { - if (this._length++ === 0) { - return this.Events.trigger("leftzero"); - } - } - - decr() { - if (--this._length === 0) { - return this.Events.trigger("zero"); - } - } - - push(job) { - return this._lists[job.options.priority].push(job); - } - - queued(priority) { - if (priority != null) { - return this._lists[priority].length; - } else { - return this._length; - } - } - - shiftAll(fn) { - return this._lists.forEach(function (list) { - return list.forEachShift(fn); - }); - } - - getFirst(arr = this._lists) { - var j, len, list; - - for (j = 0, len = arr.length; j < len; j++) { - list = arr[j]; - - if (list.length > 0) { - return list; - } - } - - return []; - } - - shiftLastFrom(priority) { - return this.getFirst(this._lists.slice(priority).reverse()).shift(); - } - - }; - var Queues_1 = Queues$1; - - var BottleneckError$4; - BottleneckError$4 = class BottleneckError extends Error {}; - var BottleneckError_1 = BottleneckError$4; - - function asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - - function _asyncToGenerator$7(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - var BottleneckError$3, DEFAULT_PRIORITY$1, Job$1, NUM_PRIORITIES$1, parser$7; - NUM_PRIORITIES$1 = 10; - DEFAULT_PRIORITY$1 = 5; - parser$7 = parser$8; - BottleneckError$3 = BottleneckError_1; - Job$1 = class Job { - constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) { - this.task = task; - this.args = args; - this.rejectOnDrop = rejectOnDrop; - this.Events = Events; - this._states = _states; - this.Promise = Promise; - this.options = parser$7.load(options, jobDefaults); - this.options.priority = this._sanitizePriority(this.options.priority); - - if (this.options.id === jobDefaults.id) { - this.options.id = `${this.options.id}-${this._randomIndex()}`; - } - - this.promise = new this.Promise((_resolve, _reject) => { - this._resolve = _resolve; - this._reject = _reject; - }); - this.retryCount = 0; - } - - _sanitizePriority(priority) { - var sProperty; - sProperty = ~~priority !== priority ? DEFAULT_PRIORITY$1 : priority; - - if (sProperty < 0) { - return 0; - } else if (sProperty > NUM_PRIORITIES$1 - 1) { - return NUM_PRIORITIES$1 - 1; - } else { - return sProperty; - } - } - - _randomIndex() { - return Math.random().toString(36).slice(2); - } - - doDrop({ - error, - message = "This job has been dropped by Bottleneck" - } = {}) { - if (this._states.remove(this.options.id)) { - if (this.rejectOnDrop) { - this._reject(error != null ? error : new BottleneckError$3(message)); - } - - this.Events.trigger("dropped", { - args: this.args, - options: this.options, - task: this.task, - promise: this.promise - }); - return true; - } else { - return false; - } - } - - _assertStatus(expected) { - var status; - status = this._states.jobStatus(this.options.id); - - if (!(status === expected || expected === "DONE" && status === null)) { - throw new BottleneckError$3(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`); - } - } - - doReceive() { - this._states.start(this.options.id); - - return this.Events.trigger("received", { - args: this.args, - options: this.options - }); - } - - doQueue(reachedHWM, blocked) { - this._assertStatus("RECEIVED"); - - this._states.next(this.options.id); - - return this.Events.trigger("queued", { - args: this.args, - options: this.options, - reachedHWM, - blocked - }); - } - - doRun() { - if (this.retryCount === 0) { - this._assertStatus("QUEUED"); - - this._states.next(this.options.id); - } else { - this._assertStatus("EXECUTING"); - } - - return this.Events.trigger("scheduled", { - args: this.args, - options: this.options - }); - } - - doExecute(chained, clearGlobalState, run, free) { - var _this = this; - - return _asyncToGenerator$7(function* () { - var error, eventInfo, passed; - - if (_this.retryCount === 0) { - _this._assertStatus("RUNNING"); - - _this._states.next(_this.options.id); - } else { - _this._assertStatus("EXECUTING"); - } - - eventInfo = { - args: _this.args, - options: _this.options, - retryCount: _this.retryCount - }; - - _this.Events.trigger("executing", eventInfo); - - try { - passed = yield chained != null ? chained.schedule(_this.options, _this.task, ..._this.args) : _this.task(..._this.args); - - if (clearGlobalState()) { - _this.doDone(eventInfo); - - yield free(_this.options, eventInfo); - - _this._assertStatus("DONE"); - - return _this._resolve(passed); - } - } catch (error1) { - error = error1; - return _this._onFailure(error, eventInfo, clearGlobalState, run, free); - } - })(); - } - - doExpire(clearGlobalState, run, free) { - var error, eventInfo; - - if (this._states.jobStatus(this.options.id === "RUNNING")) { - this._states.next(this.options.id); - } - - this._assertStatus("EXECUTING"); - - eventInfo = { - args: this.args, - options: this.options, - retryCount: this.retryCount - }; - error = new BottleneckError$3(`This job timed out after ${this.options.expiration} ms.`); - return this._onFailure(error, eventInfo, clearGlobalState, run, free); - } - - _onFailure(error, eventInfo, clearGlobalState, run, free) { - var _this2 = this; - - return _asyncToGenerator$7(function* () { - var retry, retryAfter; - - if (clearGlobalState()) { - retry = yield _this2.Events.trigger("failed", error, eventInfo); - - if (retry != null) { - retryAfter = ~~retry; - - _this2.Events.trigger("retry", `Retrying ${_this2.options.id} after ${retryAfter} ms`, eventInfo); - - _this2.retryCount++; - return run(retryAfter); - } else { - _this2.doDone(eventInfo); - - yield free(_this2.options, eventInfo); - - _this2._assertStatus("DONE"); - - return _this2._reject(error); - } - } - })(); - } - - doDone(eventInfo) { - this._assertStatus("EXECUTING"); - - this._states.next(this.options.id); - - return this.Events.trigger("done", eventInfo); - } - - }; - var Job_1 = Job$1; - - function asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - - function _asyncToGenerator$6(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - var BottleneckError$2, LocalDatastore$1, parser$6; - parser$6 = parser$8; - BottleneckError$2 = BottleneckError_1; - LocalDatastore$1 = class LocalDatastore { - constructor(instance, storeOptions, storeInstanceOptions) { - this.instance = instance; - this.storeOptions = storeOptions; - this.clientId = this.instance._randomIndex(); - parser$6.load(storeInstanceOptions, storeInstanceOptions, this); - this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now(); - this._running = 0; - this._done = 0; - this._unblockTime = 0; - this.ready = this.Promise.resolve(); - this.clients = {}; - - this._startHeartbeat(); - } - - _startHeartbeat() { - var base; - - if (this.heartbeat == null && (this.storeOptions.reservoirRefreshInterval != null && this.storeOptions.reservoirRefreshAmount != null || this.storeOptions.reservoirIncreaseInterval != null && this.storeOptions.reservoirIncreaseAmount != null)) { - return typeof (base = this.heartbeat = setInterval(() => { - var amount, incr, maximum, now, reservoir; - now = Date.now(); - - if (this.storeOptions.reservoirRefreshInterval != null && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) { - this._lastReservoirRefresh = now; - this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount; - - this.instance._drainAll(this.computeCapacity()); - } - - if (this.storeOptions.reservoirIncreaseInterval != null && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) { - var _this$storeOptions = this.storeOptions; - amount = _this$storeOptions.reservoirIncreaseAmount; - maximum = _this$storeOptions.reservoirIncreaseMaximum; - reservoir = _this$storeOptions.reservoir; - this._lastReservoirIncrease = now; - incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount; - - if (incr > 0) { - this.storeOptions.reservoir += incr; - return this.instance._drainAll(this.computeCapacity()); - } - } - }, this.heartbeatInterval)).unref === "function" ? base.unref() : void 0; - } else { - return clearInterval(this.heartbeat); - } - } - - __publish__(message) { - var _this = this; - - return _asyncToGenerator$6(function* () { - yield _this.yieldLoop(); - return _this.instance.Events.trigger("message", message.toString()); - })(); - } - - __disconnect__(flush) { - var _this2 = this; - - return _asyncToGenerator$6(function* () { - yield _this2.yieldLoop(); - clearInterval(_this2.heartbeat); - return _this2.Promise.resolve(); - })(); - } - - yieldLoop(t = 0) { - return new this.Promise(function (resolve, reject) { - return setTimeout(resolve, t); - }); - } - - computePenalty() { - var ref; - return (ref = this.storeOptions.penalty) != null ? ref : 15 * this.storeOptions.minTime || 5000; - } - - __updateSettings__(options) { - var _this3 = this; - - return _asyncToGenerator$6(function* () { - yield _this3.yieldLoop(); - parser$6.overwrite(options, options, _this3.storeOptions); - - _this3._startHeartbeat(); - - _this3.instance._drainAll(_this3.computeCapacity()); - - return true; - })(); - } - - __running__() { - var _this4 = this; - - return _asyncToGenerator$6(function* () { - yield _this4.yieldLoop(); - return _this4._running; - })(); - } - - __queued__() { - var _this5 = this; - - return _asyncToGenerator$6(function* () { - yield _this5.yieldLoop(); - return _this5.instance.queued(); - })(); - } - - __done__() { - var _this6 = this; - - return _asyncToGenerator$6(function* () { - yield _this6.yieldLoop(); - return _this6._done; - })(); - } - - __groupCheck__(time) { - var _this7 = this; - - return _asyncToGenerator$6(function* () { - yield _this7.yieldLoop(); - return _this7._nextRequest + _this7.timeout < time; - })(); - } - - computeCapacity() { - var maxConcurrent, reservoir; - var _this$storeOptions2 = this.storeOptions; - maxConcurrent = _this$storeOptions2.maxConcurrent; - reservoir = _this$storeOptions2.reservoir; - - if (maxConcurrent != null && reservoir != null) { - return Math.min(maxConcurrent - this._running, reservoir); - } else if (maxConcurrent != null) { - return maxConcurrent - this._running; - } else if (reservoir != null) { - return reservoir; - } else { - return null; - } - } - - conditionsCheck(weight) { - var capacity; - capacity = this.computeCapacity(); - return capacity == null || weight <= capacity; - } - - __incrementReservoir__(incr) { - var _this8 = this; - - return _asyncToGenerator$6(function* () { - var reservoir; - yield _this8.yieldLoop(); - reservoir = _this8.storeOptions.reservoir += incr; - - _this8.instance._drainAll(_this8.computeCapacity()); - - return reservoir; - })(); - } - - __currentReservoir__() { - var _this9 = this; - - return _asyncToGenerator$6(function* () { - yield _this9.yieldLoop(); - return _this9.storeOptions.reservoir; - })(); - } - - isBlocked(now) { - return this._unblockTime >= now; - } - - check(weight, now) { - return this.conditionsCheck(weight) && this._nextRequest - now <= 0; - } - - __check__(weight) { - var _this10 = this; - - return _asyncToGenerator$6(function* () { - var now; - yield _this10.yieldLoop(); - now = Date.now(); - return _this10.check(weight, now); - })(); - } - - __register__(index, weight, expiration) { - var _this11 = this; - - return _asyncToGenerator$6(function* () { - var now, wait; - yield _this11.yieldLoop(); - now = Date.now(); - - if (_this11.conditionsCheck(weight)) { - _this11._running += weight; - - if (_this11.storeOptions.reservoir != null) { - _this11.storeOptions.reservoir -= weight; - } - - wait = Math.max(_this11._nextRequest - now, 0); - _this11._nextRequest = now + wait + _this11.storeOptions.minTime; - return { - success: true, - wait, - reservoir: _this11.storeOptions.reservoir - }; - } else { - return { - success: false - }; - } - })(); - } - - strategyIsBlock() { - return this.storeOptions.strategy === 3; - } - - __submit__(queueLength, weight) { - var _this12 = this; - - return _asyncToGenerator$6(function* () { - var blocked, now, reachedHWM; - yield _this12.yieldLoop(); - - if (_this12.storeOptions.maxConcurrent != null && weight > _this12.storeOptions.maxConcurrent) { - throw new BottleneckError$2(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${_this12.storeOptions.maxConcurrent}`); - } - - now = Date.now(); - reachedHWM = _this12.storeOptions.highWater != null && queueLength === _this12.storeOptions.highWater && !_this12.check(weight, now); - blocked = _this12.strategyIsBlock() && (reachedHWM || _this12.isBlocked(now)); - - if (blocked) { - _this12._unblockTime = now + _this12.computePenalty(); - _this12._nextRequest = _this12._unblockTime + _this12.storeOptions.minTime; - - _this12.instance._dropAllQueued(); - } - - return { - reachedHWM, - blocked, - strategy: _this12.storeOptions.strategy - }; - })(); - } - - __free__(index, weight) { - var _this13 = this; - - return _asyncToGenerator$6(function* () { - yield _this13.yieldLoop(); - _this13._running -= weight; - _this13._done += weight; - - _this13.instance._drainAll(_this13.computeCapacity()); - - return { - running: _this13._running - }; - })(); - } - - }; - var LocalDatastore_1 = LocalDatastore$1; - - var require$$0$1 = { - "blacklist_client.lua": "local blacklist = ARGV[num_static_argv + 1]\n\nif redis.call('zscore', client_last_seen_key, blacklist) then\n redis.call('zadd', client_last_seen_key, 0, blacklist)\nend\n\n\nreturn {}\n", - "check.lua": "local weight = tonumber(ARGV[num_static_argv + 1])\n\nlocal capacity = process_tick(now, false)['capacity']\nlocal nextRequest = tonumber(redis.call('hget', settings_key, 'nextRequest'))\n\nreturn conditions_check(capacity, weight) and nextRequest - now <= 0\n", - "conditions_check.lua": "local conditions_check = function (capacity, weight)\n return capacity == nil or weight <= capacity\nend\n", - "current_reservoir.lua": "return process_tick(now, false)['reservoir']\n", - "done.lua": "process_tick(now, false)\n\nreturn tonumber(redis.call('hget', settings_key, 'done'))\n", - "free.lua": "local index = ARGV[num_static_argv + 1]\n\nredis.call('zadd', job_expirations_key, 0, index)\n\nreturn process_tick(now, false)['running']\n", - "get_time.lua": "redis.replicate_commands()\n\nlocal get_time = function ()\n local time = redis.call('time')\n\n return tonumber(time[1]..string.sub(time[2], 1, 3))\nend\n", - "group_check.lua": "return not (redis.call('exists', settings_key) == 1)\n", - "heartbeat.lua": "process_tick(now, true)\n", - "increment_reservoir.lua": "local incr = tonumber(ARGV[num_static_argv + 1])\n\nredis.call('hincrby', settings_key, 'reservoir', incr)\n\nlocal reservoir = process_tick(now, true)['reservoir']\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn reservoir\n", - "init.lua": "local clear = tonumber(ARGV[num_static_argv + 1])\nlocal limiter_version = ARGV[num_static_argv + 2]\nlocal num_local_argv = num_static_argv + 2\n\nif clear == 1 then\n redis.call('del', unpack(KEYS))\nend\n\nif redis.call('exists', settings_key) == 0 then\n -- Create\n local args = {'hmset', settings_key}\n\n for i = num_local_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\n end\n\n redis.call(unpack(args))\n redis.call('hmset', settings_key,\n 'nextRequest', now,\n 'lastReservoirRefresh', now,\n 'lastReservoirIncrease', now,\n 'running', 0,\n 'done', 0,\n 'unblockTime', 0,\n 'capacityPriorityCounter', 0\n )\n\nelse\n -- Apply migrations\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'version'\n )\n local id = settings[1]\n local current_version = settings[2]\n\n if current_version ~= limiter_version then\n local version_digits = {}\n for k, v in string.gmatch(current_version, \"([^.]+)\") do\n table.insert(version_digits, tonumber(k))\n end\n\n -- 2.10.0\n if version_digits[2] < 10 then\n redis.call('hsetnx', settings_key, 'reservoirRefreshInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirRefreshAmount', '')\n redis.call('hsetnx', settings_key, 'lastReservoirRefresh', '')\n redis.call('hsetnx', settings_key, 'done', 0)\n redis.call('hset', settings_key, 'version', '2.10.0')\n end\n\n -- 2.11.1\n if version_digits[2] < 11 or (version_digits[2] == 11 and version_digits[3] < 1) then\n if redis.call('hstrlen', settings_key, 'lastReservoirRefresh') == 0 then\n redis.call('hmset', settings_key,\n 'lastReservoirRefresh', now,\n 'version', '2.11.1'\n )\n end\n end\n\n -- 2.14.0\n if version_digits[2] < 14 then\n local old_running_key = 'b_'..id..'_running'\n local old_executing_key = 'b_'..id..'_executing'\n\n if redis.call('exists', old_running_key) == 1 then\n redis.call('rename', old_running_key, job_weights_key)\n end\n if redis.call('exists', old_executing_key) == 1 then\n redis.call('rename', old_executing_key, job_expirations_key)\n end\n redis.call('hset', settings_key, 'version', '2.14.0')\n end\n\n -- 2.15.2\n if version_digits[2] < 15 or (version_digits[2] == 15 and version_digits[3] < 2) then\n redis.call('hsetnx', settings_key, 'capacityPriorityCounter', 0)\n redis.call('hset', settings_key, 'version', '2.15.2')\n end\n\n -- 2.17.0\n if version_digits[2] < 17 then\n redis.call('hsetnx', settings_key, 'clientTimeout', 10000)\n redis.call('hset', settings_key, 'version', '2.17.0')\n end\n\n -- 2.18.0\n if version_digits[2] < 18 then\n redis.call('hsetnx', settings_key, 'reservoirIncreaseInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseAmount', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseMaximum', '')\n redis.call('hsetnx', settings_key, 'lastReservoirIncrease', now)\n redis.call('hset', settings_key, 'version', '2.18.0')\n end\n\n end\n\n process_tick(now, false)\nend\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n", - "process_tick.lua": "local process_tick = function (now, always_publish)\n\n local compute_capacity = function (maxConcurrent, running, reservoir)\n if maxConcurrent ~= nil and reservoir ~= nil then\n return math.min((maxConcurrent - running), reservoir)\n elseif maxConcurrent ~= nil then\n return maxConcurrent - running\n elseif reservoir ~= nil then\n return reservoir\n else\n return nil\n end\n end\n\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'running',\n 'reservoir',\n 'reservoirRefreshInterval',\n 'reservoirRefreshAmount',\n 'lastReservoirRefresh',\n 'reservoirIncreaseInterval',\n 'reservoirIncreaseAmount',\n 'reservoirIncreaseMaximum',\n 'lastReservoirIncrease',\n 'capacityPriorityCounter',\n 'clientTimeout'\n )\n local id = settings[1]\n local maxConcurrent = tonumber(settings[2])\n local running = tonumber(settings[3])\n local reservoir = tonumber(settings[4])\n local reservoirRefreshInterval = tonumber(settings[5])\n local reservoirRefreshAmount = tonumber(settings[6])\n local lastReservoirRefresh = tonumber(settings[7])\n local reservoirIncreaseInterval = tonumber(settings[8])\n local reservoirIncreaseAmount = tonumber(settings[9])\n local reservoirIncreaseMaximum = tonumber(settings[10])\n local lastReservoirIncrease = tonumber(settings[11])\n local capacityPriorityCounter = tonumber(settings[12])\n local clientTimeout = tonumber(settings[13])\n\n local initial_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n --\n -- Process 'running' changes\n --\n local expired = redis.call('zrangebyscore', job_expirations_key, '-inf', '('..now)\n\n if #expired > 0 then\n redis.call('zremrangebyscore', job_expirations_key, '-inf', '('..now)\n\n local flush_batch = function (batch, acc)\n local weights = redis.call('hmget', job_weights_key, unpack(batch))\n redis.call('hdel', job_weights_key, unpack(batch))\n local clients = redis.call('hmget', job_clients_key, unpack(batch))\n redis.call('hdel', job_clients_key, unpack(batch))\n\n -- Calculate sum of removed weights\n for i = 1, #weights do\n acc['total'] = acc['total'] + (tonumber(weights[i]) or 0)\n end\n\n -- Calculate sum of removed weights by client\n local client_weights = {}\n for i = 1, #clients do\n local removed = tonumber(weights[i]) or 0\n if removed > 0 then\n acc['client_weights'][clients[i]] = (acc['client_weights'][clients[i]] or 0) + removed\n end\n end\n end\n\n local acc = {\n ['total'] = 0,\n ['client_weights'] = {}\n }\n local batch_size = 1000\n\n -- Compute changes to Zsets and apply changes to Hashes\n for i = 1, #expired, batch_size do\n local batch = {}\n for j = i, math.min(i + batch_size - 1, #expired) do\n table.insert(batch, expired[j])\n end\n\n flush_batch(batch, acc)\n end\n\n -- Apply changes to Zsets\n if acc['total'] > 0 then\n redis.call('hincrby', settings_key, 'done', acc['total'])\n running = tonumber(redis.call('hincrby', settings_key, 'running', -acc['total']))\n end\n\n for client, weight in pairs(acc['client_weights']) do\n redis.call('zincrby', client_running_key, -weight, client)\n end\n end\n\n --\n -- Process 'reservoir' changes\n --\n local reservoirRefreshActive = reservoirRefreshInterval ~= nil and reservoirRefreshAmount ~= nil\n if reservoirRefreshActive and now >= lastReservoirRefresh + reservoirRefreshInterval then\n reservoir = reservoirRefreshAmount\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirRefresh', now\n )\n end\n\n local reservoirIncreaseActive = reservoirIncreaseInterval ~= nil and reservoirIncreaseAmount ~= nil\n if reservoirIncreaseActive and now >= lastReservoirIncrease + reservoirIncreaseInterval then\n local num_intervals = math.floor((now - lastReservoirIncrease) / reservoirIncreaseInterval)\n local incr = reservoirIncreaseAmount * num_intervals\n if reservoirIncreaseMaximum ~= nil then\n incr = math.min(incr, reservoirIncreaseMaximum - (reservoir or 0))\n end\n if incr > 0 then\n reservoir = (reservoir or 0) + incr\n end\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirIncrease', lastReservoirIncrease + (num_intervals * reservoirIncreaseInterval)\n )\n end\n\n --\n -- Clear unresponsive clients\n --\n local unresponsive = redis.call('zrangebyscore', client_last_seen_key, '-inf', (now - clientTimeout))\n local unresponsive_lookup = {}\n local terminated_clients = {}\n for i = 1, #unresponsive do\n unresponsive_lookup[unresponsive[i]] = true\n if tonumber(redis.call('zscore', client_running_key, unresponsive[i])) == 0 then\n table.insert(terminated_clients, unresponsive[i])\n end\n end\n if #terminated_clients > 0 then\n redis.call('zrem', client_running_key, unpack(terminated_clients))\n redis.call('hdel', client_num_queued_key, unpack(terminated_clients))\n redis.call('zrem', client_last_registered_key, unpack(terminated_clients))\n redis.call('zrem', client_last_seen_key, unpack(terminated_clients))\n end\n\n --\n -- Broadcast capacity changes\n --\n local final_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n if always_publish or (initial_capacity ~= nil and final_capacity == nil) then\n -- always_publish or was not unlimited, now unlimited\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n\n elseif initial_capacity ~= nil and final_capacity ~= nil and final_capacity > initial_capacity then\n -- capacity was increased\n -- send the capacity message to the limiter having the lowest number of running jobs\n -- the tiebreaker is the limiter having not registered a job in the longest time\n\n local lowest_concurrency_value = nil\n local lowest_concurrency_clients = {}\n local lowest_concurrency_last_registered = {}\n local client_concurrencies = redis.call('zrange', client_running_key, 0, -1, 'withscores')\n\n for i = 1, #client_concurrencies, 2 do\n local client = client_concurrencies[i]\n local concurrency = tonumber(client_concurrencies[i+1])\n\n if (\n lowest_concurrency_value == nil or lowest_concurrency_value == concurrency\n ) and (\n not unresponsive_lookup[client]\n ) and (\n tonumber(redis.call('hget', client_num_queued_key, client)) > 0\n ) then\n lowest_concurrency_value = concurrency\n table.insert(lowest_concurrency_clients, client)\n local last_registered = tonumber(redis.call('zscore', client_last_registered_key, client))\n table.insert(lowest_concurrency_last_registered, last_registered)\n end\n end\n\n if #lowest_concurrency_clients > 0 then\n local position = 1\n local earliest = lowest_concurrency_last_registered[1]\n\n for i,v in ipairs(lowest_concurrency_last_registered) do\n if v < earliest then\n position = i\n earliest = v\n end\n end\n\n local next_client = lowest_concurrency_clients[position]\n redis.call('publish', 'b_'..id,\n 'capacity-priority:'..(final_capacity or '')..\n ':'..next_client..\n ':'..capacityPriorityCounter\n )\n redis.call('hincrby', settings_key, 'capacityPriorityCounter', '1')\n else\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n end\n end\n\n return {\n ['capacity'] = final_capacity,\n ['running'] = running,\n ['reservoir'] = reservoir\n }\nend\n", - "queued.lua": "local clientTimeout = tonumber(redis.call('hget', settings_key, 'clientTimeout'))\nlocal valid_clients = redis.call('zrangebyscore', client_last_seen_key, (now - clientTimeout), 'inf')\nlocal client_queued = redis.call('hmget', client_num_queued_key, unpack(valid_clients))\n\nlocal sum = 0\nfor i = 1, #client_queued do\n sum = sum + tonumber(client_queued[i])\nend\n\nreturn sum\n", - "refresh_expiration.lua": "local refresh_expiration = function (now, nextRequest, groupTimeout)\n\n if groupTimeout ~= nil then\n local ttl = (nextRequest + groupTimeout) - now\n\n for i = 1, #KEYS do\n redis.call('pexpire', KEYS[i], ttl)\n end\n end\n\nend\n", - "refs.lua": "local settings_key = KEYS[1]\nlocal job_weights_key = KEYS[2]\nlocal job_expirations_key = KEYS[3]\nlocal job_clients_key = KEYS[4]\nlocal client_running_key = KEYS[5]\nlocal client_num_queued_key = KEYS[6]\nlocal client_last_registered_key = KEYS[7]\nlocal client_last_seen_key = KEYS[8]\n\nlocal now = tonumber(ARGV[1])\nlocal client = ARGV[2]\n\nlocal num_static_argv = 2\n", - "register.lua": "local index = ARGV[num_static_argv + 1]\nlocal weight = tonumber(ARGV[num_static_argv + 2])\nlocal expiration = tonumber(ARGV[num_static_argv + 3])\n\nlocal state = process_tick(now, false)\nlocal capacity = state['capacity']\nlocal reservoir = state['reservoir']\n\nlocal settings = redis.call('hmget', settings_key,\n 'nextRequest',\n 'minTime',\n 'groupTimeout'\n)\nlocal nextRequest = tonumber(settings[1])\nlocal minTime = tonumber(settings[2])\nlocal groupTimeout = tonumber(settings[3])\n\nif conditions_check(capacity, weight) then\n\n redis.call('hincrby', settings_key, 'running', weight)\n redis.call('hset', job_weights_key, index, weight)\n if expiration ~= nil then\n redis.call('zadd', job_expirations_key, now + expiration, index)\n end\n redis.call('hset', job_clients_key, index, client)\n redis.call('zincrby', client_running_key, weight, client)\n redis.call('hincrby', client_num_queued_key, client, -1)\n redis.call('zadd', client_last_registered_key, now, client)\n\n local wait = math.max(nextRequest - now, 0)\n local newNextRequest = now + wait + minTime\n\n if reservoir == nil then\n redis.call('hset', settings_key,\n 'nextRequest', newNextRequest\n )\n else\n reservoir = reservoir - weight\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'nextRequest', newNextRequest\n )\n end\n\n refresh_expiration(now, newNextRequest, groupTimeout)\n\n return {true, wait, reservoir}\n\nelse\n return {false}\nend\n", - "register_client.lua": "local queued = tonumber(ARGV[num_static_argv + 1])\n\n-- Could have been re-registered concurrently\nif not redis.call('zscore', client_last_seen_key, client) then\n redis.call('zadd', client_running_key, 0, client)\n redis.call('hset', client_num_queued_key, client, queued)\n redis.call('zadd', client_last_registered_key, 0, client)\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n\nreturn {}\n", - "running.lua": "return process_tick(now, false)['running']\n", - "submit.lua": "local queueLength = tonumber(ARGV[num_static_argv + 1])\nlocal weight = tonumber(ARGV[num_static_argv + 2])\n\nlocal capacity = process_tick(now, false)['capacity']\n\nlocal settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'highWater',\n 'nextRequest',\n 'strategy',\n 'unblockTime',\n 'penalty',\n 'minTime',\n 'groupTimeout'\n)\nlocal id = settings[1]\nlocal maxConcurrent = tonumber(settings[2])\nlocal highWater = tonumber(settings[3])\nlocal nextRequest = tonumber(settings[4])\nlocal strategy = tonumber(settings[5])\nlocal unblockTime = tonumber(settings[6])\nlocal penalty = tonumber(settings[7])\nlocal minTime = tonumber(settings[8])\nlocal groupTimeout = tonumber(settings[9])\n\nif maxConcurrent ~= nil and weight > maxConcurrent then\n return redis.error_reply('OVERWEIGHT:'..weight..':'..maxConcurrent)\nend\n\nlocal reachedHWM = (highWater ~= nil and queueLength == highWater\n and not (\n conditions_check(capacity, weight)\n and nextRequest - now <= 0\n )\n)\n\nlocal blocked = strategy == 3 and (reachedHWM or unblockTime >= now)\n\nif blocked then\n local computedPenalty = penalty\n if computedPenalty == nil then\n if minTime == 0 then\n computedPenalty = 5000\n else\n computedPenalty = 15 * minTime\n end\n end\n\n local newNextRequest = now + computedPenalty + minTime\n\n redis.call('hmset', settings_key,\n 'unblockTime', now + computedPenalty,\n 'nextRequest', newNextRequest\n )\n\n local clients_queued_reset = redis.call('hkeys', client_num_queued_key)\n local queued_reset = {}\n for i = 1, #clients_queued_reset do\n table.insert(queued_reset, clients_queued_reset[i])\n table.insert(queued_reset, 0)\n end\n redis.call('hmset', client_num_queued_key, unpack(queued_reset))\n\n redis.call('publish', 'b_'..id, 'blocked:')\n\n refresh_expiration(now, newNextRequest, groupTimeout)\nend\n\nif not blocked and not reachedHWM then\n redis.call('hincrby', client_num_queued_key, client, 1)\nend\n\nreturn {reachedHWM, blocked, strategy}\n", - "update_settings.lua": "local args = {'hmset', settings_key}\n\nfor i = num_static_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\nend\n\nredis.call(unpack(args))\n\nprocess_tick(now, true)\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n", - "validate_client.lua": "if not redis.call('zscore', client_last_seen_key, client) then\n return redis.error_reply('UNKNOWN_CLIENT')\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n", - "validate_keys.lua": "if not (redis.call('exists', settings_key) == 1) then\n return redis.error_reply('SETTINGS_KEY_NOT_FOUND')\nend\n" - }; - - var Scripts$3 = createCommonjsModule(function (module, exports) { - - var headers, lua, templates; - lua = require$$0$1; - headers = { - refs: lua["refs.lua"], - validate_keys: lua["validate_keys.lua"], - validate_client: lua["validate_client.lua"], - refresh_expiration: lua["refresh_expiration.lua"], - process_tick: lua["process_tick.lua"], - conditions_check: lua["conditions_check.lua"], - get_time: lua["get_time.lua"] - }; - - exports.allKeys = function (id) { - return [ - /* - HASH - */ - `b_${id}_settings`, - /* - HASH - job index -> weight - */ - `b_${id}_job_weights`, - /* - ZSET - job index -> expiration - */ - `b_${id}_job_expirations`, - /* - HASH - job index -> client - */ - `b_${id}_job_clients`, - /* - ZSET - client -> sum running - */ - `b_${id}_client_running`, - /* - HASH - client -> num queued - */ - `b_${id}_client_num_queued`, - /* - ZSET - client -> last job registered - */ - `b_${id}_client_last_registered`, - /* - ZSET - client -> last seen - */ - `b_${id}_client_last_seen`]; - }; - - templates = { - init: { - keys: exports.allKeys, - headers: ["process_tick"], - refresh_expiration: true, - code: lua["init.lua"] - }, - group_check: { - keys: exports.allKeys, - headers: [], - refresh_expiration: false, - code: lua["group_check.lua"] - }, - register_client: { - keys: exports.allKeys, - headers: ["validate_keys"], - refresh_expiration: false, - code: lua["register_client.lua"] - }, - blacklist_client: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client"], - refresh_expiration: false, - code: lua["blacklist_client.lua"] - }, - heartbeat: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["heartbeat.lua"] - }, - update_settings: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: true, - code: lua["update_settings.lua"] - }, - running: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["running.lua"] - }, - queued: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client"], - refresh_expiration: false, - code: lua["queued.lua"] - }, - done: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["done.lua"] - }, - check: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick", "conditions_check"], - refresh_expiration: false, - code: lua["check.lua"] - }, - submit: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick", "conditions_check"], - refresh_expiration: true, - code: lua["submit.lua"] - }, - register: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick", "conditions_check"], - refresh_expiration: true, - code: lua["register.lua"] - }, - free: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: true, - code: lua["free.lua"] - }, - current_reservoir: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["current_reservoir.lua"] - }, - increment_reservoir: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: true, - code: lua["increment_reservoir.lua"] - } - }; - exports.names = Object.keys(templates); - - exports.keys = function (name, id) { - return templates[name].keys(id); - }; - - exports.payload = function (name) { - var template; - template = templates[name]; - return Array.prototype.concat(headers.refs, template.headers.map(function (h) { - return headers[h]; - }), template.refresh_expiration ? headers.refresh_expiration : "", template.code).join("\n"); - }; - }); - - function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - - function _asyncToGenerator$5(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - var Events$4, RedisConnection$2, Scripts$2, parser$5; - parser$5 = parser$8; - Events$4 = Events_1; - Scripts$2 = Scripts$3; - - RedisConnection$2 = function () { - class RedisConnection { - constructor(options = {}) { - parser$5.load(options, this.defaults, this); - - if (this.Redis == null) { - this.Redis = eval("require")("redis"); // Obfuscated or else Webpack/Angular will try to inline the optional redis module. To override this behavior: pass the redis module to Bottleneck as the 'Redis' option. - } - - if (this.Events == null) { - this.Events = new Events$4(this); - } - - this.terminated = false; - - if (this.client == null) { - this.client = this.Redis.createClient(this.clientOptions); - } - - this.subscriber = this.client.duplicate(); - this.limiters = {}; - this.shas = {}; - this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => { - return this._loadScripts(); - }).then(() => { - return { - client: this.client, - subscriber: this.subscriber - }; - }); - } - - _setup(client, sub) { - client.setMaxListeners(0); - return new this.Promise((resolve, reject) => { - client.on("error", e => { - return this.Events.trigger("error", e); - }); - - if (sub) { - client.on("message", (channel, message) => { - var ref; - return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0; - }); - } - - if (client.ready) { - return resolve(); - } else { - return client.once("ready", resolve); - } - }); - } - - _loadScript(name) { - return new this.Promise((resolve, reject) => { - var payload; - payload = Scripts$2.payload(name); - return this.client.multi([["script", "load", payload]]).exec((err, replies) => { - if (err != null) { - return reject(err); - } - - this.shas[name] = replies[0]; - return resolve(replies[0]); - }); - }); - } - - _loadScripts() { - return this.Promise.all(Scripts$2.names.map(k => { - return this._loadScript(k); - })); - } - - __runCommand__(cmd) { - var _this = this; - - return _asyncToGenerator$5(function* () { - yield _this.ready; - return new _this.Promise((resolve, reject) => { - return _this.client.multi([cmd]).exec_atomic(function (err, replies) { - if (err != null) { - return reject(err); - } else { - return resolve(replies[0]); - } - }); - }); - })(); - } - - __addLimiter__(instance) { - return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => { - return new this.Promise((resolve, reject) => { - var handler; - - handler = chan => { - if (chan === channel) { - this.subscriber.removeListener("subscribe", handler); - this.limiters[channel] = instance; - return resolve(); - } - }; - - this.subscriber.on("subscribe", handler); - return this.subscriber.subscribe(channel); - }); - })); - } - - __removeLimiter__(instance) { - var _this2 = this; - - return this.Promise.all([instance.channel(), instance.channel_client()].map( - /*#__PURE__*/ - function () { - var _ref = _asyncToGenerator$5(function* (channel) { - if (!_this2.terminated) { - yield new _this2.Promise((resolve, reject) => { - return _this2.subscriber.unsubscribe(channel, function (err, chan) { - if (err != null) { - return reject(err); - } - - if (chan === channel) { - return resolve(); - } - }); - }); - } - - return delete _this2.limiters[channel]; - }); - - return function (_x) { - return _ref.apply(this, arguments); - }; - }())); - } - - __scriptArgs__(name, id, args, cb) { - var keys; - keys = Scripts$2.keys(name, id); - return [this.shas[name], keys.length].concat(keys, args, cb); - } - - __scriptFn__(name) { - return this.client.evalsha.bind(this.client); - } - - disconnect(flush = true) { - var i, k, len, ref; - ref = Object.keys(this.limiters); - - for (i = 0, len = ref.length; i < len; i++) { - k = ref[i]; - clearInterval(this.limiters[k]._store.heartbeat); - } - - this.limiters = {}; - this.terminated = true; - this.client.end(flush); - this.subscriber.end(flush); - return this.Promise.resolve(); - } - - } - RedisConnection.prototype.datastore = "redis"; - RedisConnection.prototype.defaults = { - Redis: null, - clientOptions: {}, - client: null, - Promise: Promise, - Events: null - }; - return RedisConnection; - }.call(void 0); - - var RedisConnection_1 = RedisConnection$2; - - function _slicedToArray$3(arr, i) { return _arrayWithHoles$3(arr) || _iterableToArrayLimit$3(arr, i) || _nonIterableRest$3(); } - - function _nonIterableRest$3() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - - function _iterableToArrayLimit$3(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - - function _arrayWithHoles$3(arr) { if (Array.isArray(arr)) return arr; } - - function asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - - function _asyncToGenerator$4(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - var Events$3, IORedisConnection$2, Scripts$1, parser$4; - parser$4 = parser$8; - Events$3 = Events_1; - Scripts$1 = Scripts$3; - - IORedisConnection$2 = function () { - class IORedisConnection { - constructor(options = {}) { - parser$4.load(options, this.defaults, this); - - if (this.Redis == null) { - this.Redis = eval("require")("ioredis"); // Obfuscated or else Webpack/Angular will try to inline the optional ioredis module. To override this behavior: pass the ioredis module to Bottleneck as the 'Redis' option. - } - - if (this.Events == null) { - this.Events = new Events$3(this); - } - - this.terminated = false; - - if (this.clusterNodes != null) { - this.client = new this.Redis.Cluster(this.clusterNodes, this.clientOptions); - this.subscriber = new this.Redis.Cluster(this.clusterNodes, this.clientOptions); - } else if (this.client != null && this.client.duplicate == null) { - this.subscriber = new this.Redis.Cluster(this.client.startupNodes, this.client.options); - } else { - if (this.client == null) { - this.client = new this.Redis(this.clientOptions); - } - - this.subscriber = this.client.duplicate(); - } - - this.limiters = {}; - this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => { - this._loadScripts(); - - return { - client: this.client, - subscriber: this.subscriber - }; - }); - } - - _setup(client, sub) { - client.setMaxListeners(0); - return new this.Promise((resolve, reject) => { - client.on("error", e => { - return this.Events.trigger("error", e); - }); - - if (sub) { - client.on("message", (channel, message) => { - var ref; - return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0; - }); - } - - if (client.status === "ready") { - return resolve(); - } else { - return client.once("ready", resolve); - } - }); - } - - _loadScripts() { - return Scripts$1.names.forEach(name => { - return this.client.defineCommand(name, { - lua: Scripts$1.payload(name) - }); - }); - } - - __runCommand__(cmd) { - var _this = this; - - return _asyncToGenerator$4(function* () { - var deleted; - - yield _this.ready; - - var _ref = yield _this.client.pipeline([cmd]).exec(); - - var _ref2 = _slicedToArray$3(_ref, 1); - - var _ref2$ = _slicedToArray$3(_ref2[0], 2); - deleted = _ref2$[1]; - return deleted; - })(); - } - - __addLimiter__(instance) { - return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => { - return new this.Promise((resolve, reject) => { - return this.subscriber.subscribe(channel, () => { - this.limiters[channel] = instance; - return resolve(); - }); - }); - })); - } - - __removeLimiter__(instance) { - var _this2 = this; - - return [instance.channel(), instance.channel_client()].forEach( - /*#__PURE__*/ - function () { - var _ref3 = _asyncToGenerator$4(function* (channel) { - if (!_this2.terminated) { - yield _this2.subscriber.unsubscribe(channel); - } - - return delete _this2.limiters[channel]; - }); - - return function (_x) { - return _ref3.apply(this, arguments); - }; - }()); - } - - __scriptArgs__(name, id, args, cb) { - var keys; - keys = Scripts$1.keys(name, id); - return [keys.length].concat(keys, args, cb); - } - - __scriptFn__(name) { - return this.client[name].bind(this.client); - } - - disconnect(flush = true) { - var i, k, len, ref; - ref = Object.keys(this.limiters); - - for (i = 0, len = ref.length; i < len; i++) { - k = ref[i]; - clearInterval(this.limiters[k]._store.heartbeat); - } - - this.limiters = {}; - this.terminated = true; - - if (flush) { - return this.Promise.all([this.client.quit(), this.subscriber.quit()]); - } else { - this.client.disconnect(); - this.subscriber.disconnect(); - return this.Promise.resolve(); - } - } - - } - IORedisConnection.prototype.datastore = "ioredis"; - IORedisConnection.prototype.defaults = { - Redis: null, - clientOptions: {}, - clusterNodes: null, - client: null, - Promise: Promise, - Events: null - }; - return IORedisConnection; - }.call(void 0); - - var IORedisConnection_1 = IORedisConnection$2; - - function _slicedToArray$2(arr, i) { return _arrayWithHoles$2(arr) || _iterableToArrayLimit$2(arr, i) || _nonIterableRest$2(); } - - function _nonIterableRest$2() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - - function _iterableToArrayLimit$2(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - - function _arrayWithHoles$2(arr) { if (Array.isArray(arr)) return arr; } - - function asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - - function _asyncToGenerator$3(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - var BottleneckError$1, IORedisConnection$1, RedisConnection$1, RedisDatastore$1, parser$3; - parser$3 = parser$8; - BottleneckError$1 = BottleneckError_1; - RedisConnection$1 = RedisConnection_1; - IORedisConnection$1 = IORedisConnection_1; - RedisDatastore$1 = class RedisDatastore { - constructor(instance, storeOptions, storeInstanceOptions) { - this.instance = instance; - this.storeOptions = storeOptions; - this.originalId = this.instance.id; - this.clientId = this.instance._randomIndex(); - parser$3.load(storeInstanceOptions, storeInstanceOptions, this); - this.clients = {}; - this.capacityPriorityCounters = {}; - this.sharedConnection = this.connection != null; - - if (this.connection == null) { - this.connection = this.instance.datastore === "redis" ? new RedisConnection$1({ - Redis: this.Redis, - clientOptions: this.clientOptions, - Promise: this.Promise, - Events: this.instance.Events - }) : this.instance.datastore === "ioredis" ? new IORedisConnection$1({ - Redis: this.Redis, - clientOptions: this.clientOptions, - clusterNodes: this.clusterNodes, - Promise: this.Promise, - Events: this.instance.Events - }) : void 0; - } - - this.instance.connection = this.connection; - this.instance.datastore = this.connection.datastore; - this.ready = this.connection.ready.then(clients => { - this.clients = clients; - return this.runScript("init", this.prepareInitSettings(this.clearDatastore)); - }).then(() => { - return this.connection.__addLimiter__(this.instance); - }).then(() => { - return this.runScript("register_client", [this.instance.queued()]); - }).then(() => { - var base; - - if (typeof (base = this.heartbeat = setInterval(() => { - return this.runScript("heartbeat", []).catch(e => { - return this.instance.Events.trigger("error", e); - }); - }, this.heartbeatInterval)).unref === "function") { - base.unref(); - } - - return this.clients; - }); - } - - __publish__(message) { - var _this = this; - - return _asyncToGenerator$3(function* () { - var client; - - var _ref = yield _this.ready; - - client = _ref.client; - return client.publish(_this.instance.channel(), `message:${message.toString()}`); - })(); - } - - onMessage(channel, message) { - var _this2 = this; - - return _asyncToGenerator$3(function* () { - var capacity, counter, data, drained, e, newCapacity, pos, priorityClient, rawCapacity, type; - - try { - pos = message.indexOf(":"); - var _ref2 = [message.slice(0, pos), message.slice(pos + 1)]; - type = _ref2[0]; - data = _ref2[1]; - - if (type === "capacity") { - return yield _this2.instance._drainAll(data.length > 0 ? ~~data : void 0); - } else if (type === "capacity-priority") { - var _data$split = data.split(":"); - - var _data$split2 = _slicedToArray$2(_data$split, 3); - - rawCapacity = _data$split2[0]; - priorityClient = _data$split2[1]; - counter = _data$split2[2]; - capacity = rawCapacity.length > 0 ? ~~rawCapacity : void 0; - - if (priorityClient === _this2.clientId) { - drained = yield _this2.instance._drainAll(capacity); - newCapacity = capacity != null ? capacity - (drained || 0) : ""; - return yield _this2.clients.client.publish(_this2.instance.channel(), `capacity-priority:${newCapacity}::${counter}`); - } else if (priorityClient === "") { - clearTimeout(_this2.capacityPriorityCounters[counter]); - delete _this2.capacityPriorityCounters[counter]; - return _this2.instance._drainAll(capacity); - } else { - return _this2.capacityPriorityCounters[counter] = setTimeout( - /*#__PURE__*/ - _asyncToGenerator$3(function* () { - var e; - - try { - delete _this2.capacityPriorityCounters[counter]; - yield _this2.runScript("blacklist_client", [priorityClient]); - return yield _this2.instance._drainAll(capacity); - } catch (error) { - e = error; - return _this2.instance.Events.trigger("error", e); - } - }), 1000); - } - } else if (type === "message") { - return _this2.instance.Events.trigger("message", data); - } else if (type === "blocked") { - return yield _this2.instance._dropAllQueued(); - } - } catch (error) { - e = error; - return _this2.instance.Events.trigger("error", e); - } - })(); - } - - __disconnect__(flush) { - clearInterval(this.heartbeat); - - if (this.sharedConnection) { - return this.connection.__removeLimiter__(this.instance); - } else { - return this.connection.disconnect(flush); - } - } - - runScript(name, args) { - var _this3 = this; - - return _asyncToGenerator$3(function* () { - if (!(name === "init" || name === "register_client")) { - yield _this3.ready; - } - - return new _this3.Promise((resolve, reject) => { - var all_args, arr; - all_args = [Date.now(), _this3.clientId].concat(args); - - _this3.instance.Events.trigger("debug", `Calling Redis script: ${name}.lua`, all_args); - - arr = _this3.connection.__scriptArgs__(name, _this3.originalId, all_args, function (err, replies) { - if (err != null) { - return reject(err); - } - - return resolve(replies); - }); - return _this3.connection.__scriptFn__(name)(...arr); - }).catch(e => { - if (e.message === "SETTINGS_KEY_NOT_FOUND") { - if (name === "heartbeat") { - return _this3.Promise.resolve(); - } else { - return _this3.runScript("init", _this3.prepareInitSettings(false)).then(() => { - return _this3.runScript(name, args); - }); - } - } else if (e.message === "UNKNOWN_CLIENT") { - return _this3.runScript("register_client", [_this3.instance.queued()]).then(() => { - return _this3.runScript(name, args); - }); - } else { - return _this3.Promise.reject(e); - } - }); - })(); - } - - prepareArray(arr) { - var i, len, results, x; - results = []; - - for (i = 0, len = arr.length; i < len; i++) { - x = arr[i]; - results.push(x != null ? x.toString() : ""); - } - - return results; - } - - prepareObject(obj) { - var arr, k, v; - arr = []; - - for (k in obj) { - v = obj[k]; - arr.push(k, v != null ? v.toString() : ""); - } - - return arr; - } - - prepareInitSettings(clear) { - var args; - args = this.prepareObject(Object.assign({}, this.storeOptions, { - id: this.originalId, - version: this.instance.version, - groupTimeout: this.timeout, - clientTimeout: this.clientTimeout - })); - args.unshift(clear ? 1 : 0, this.instance.version); - return args; - } - - convertBool(b) { - return !!b; - } - - __updateSettings__(options) { - var _this4 = this; - - return _asyncToGenerator$3(function* () { - yield _this4.runScript("update_settings", _this4.prepareObject(options)); - return parser$3.overwrite(options, options, _this4.storeOptions); - })(); - } - - __running__() { - return this.runScript("running", []); - } - - __queued__() { - return this.runScript("queued", []); - } - - __done__() { - return this.runScript("done", []); - } - - __groupCheck__() { - var _this5 = this; - - return _asyncToGenerator$3(function* () { - return _this5.convertBool((yield _this5.runScript("group_check", []))); - })(); - } - - __incrementReservoir__(incr) { - return this.runScript("increment_reservoir", [incr]); - } - - __currentReservoir__() { - return this.runScript("current_reservoir", []); - } - - __check__(weight) { - var _this6 = this; - - return _asyncToGenerator$3(function* () { - return _this6.convertBool((yield _this6.runScript("check", _this6.prepareArray([weight])))); - })(); - } - - __register__(index, weight, expiration) { - var _this7 = this; - - return _asyncToGenerator$3(function* () { - var reservoir, success, wait; - - var _ref4 = yield _this7.runScript("register", _this7.prepareArray([index, weight, expiration])); - - var _ref5 = _slicedToArray$2(_ref4, 3); - - success = _ref5[0]; - wait = _ref5[1]; - reservoir = _ref5[2]; - return { - success: _this7.convertBool(success), - wait, - reservoir - }; - })(); - } - - __submit__(queueLength, weight) { - var _this8 = this; - - return _asyncToGenerator$3(function* () { - var blocked, e, maxConcurrent, reachedHWM, strategy; - - try { - var _ref6 = yield _this8.runScript("submit", _this8.prepareArray([queueLength, weight])); - - var _ref7 = _slicedToArray$2(_ref6, 3); - - reachedHWM = _ref7[0]; - blocked = _ref7[1]; - strategy = _ref7[2]; - return { - reachedHWM: _this8.convertBool(reachedHWM), - blocked: _this8.convertBool(blocked), - strategy - }; - } catch (error) { - e = error; - - if (e.message.indexOf("OVERWEIGHT") === 0) { - var _e$message$split = e.message.split(":"); - - var _e$message$split2 = _slicedToArray$2(_e$message$split, 3); - weight = _e$message$split2[1]; - maxConcurrent = _e$message$split2[2]; - throw new BottleneckError$1(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${maxConcurrent}`); - } else { - throw e; - } - } - })(); - } - - __free__(index, weight) { - var _this9 = this; - - return _asyncToGenerator$3(function* () { - var running; - running = yield _this9.runScript("free", _this9.prepareArray([index])); - return { - running - }; - })(); - } - - }; - var RedisDatastore_1 = RedisDatastore$1; - - var BottleneckError, States$1; - BottleneckError = BottleneckError_1; - States$1 = class States { - constructor(status1) { - this.status = status1; - this._jobs = {}; - this.counts = this.status.map(function () { - return 0; - }); - } - - next(id) { - var current, next; - current = this._jobs[id]; - next = current + 1; - - if (current != null && next < this.status.length) { - this.counts[current]--; - this.counts[next]++; - return this._jobs[id]++; - } else if (current != null) { - this.counts[current]--; - return delete this._jobs[id]; - } - } - - start(id) { - var initial; - initial = 0; - this._jobs[id] = initial; - return this.counts[initial]++; - } - - remove(id) { - var current; - current = this._jobs[id]; - - if (current != null) { - this.counts[current]--; - delete this._jobs[id]; - } - - return current != null; - } - - jobStatus(id) { - var ref; - return (ref = this.status[this._jobs[id]]) != null ? ref : null; - } - - statusJobs(status) { - var k, pos, ref, results, v; - - if (status != null) { - pos = this.status.indexOf(status); - - if (pos < 0) { - throw new BottleneckError(`status must be one of ${this.status.join(', ')}`); - } - - ref = this._jobs; - results = []; - - for (k in ref) { - v = ref[k]; - - if (v === pos) { - results.push(k); - } - } - - return results; - } else { - return Object.keys(this._jobs); - } - } - - statusCounts() { - return this.counts.reduce((acc, v, i) => { - acc[this.status[i]] = v; - return acc; - }, {}); - } - - }; - var States_1 = States$1; - - function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - - function _asyncToGenerator$2(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - var DLList, Sync$1; - DLList = DLList_1; - Sync$1 = class Sync { - constructor(name, Promise) { - this.schedule = this.schedule.bind(this); - this.name = name; - this.Promise = Promise; - this._running = 0; - this._queue = new DLList(); - } - - isEmpty() { - return this._queue.length === 0; - } - - _tryToRun() { - var _this = this; - - return _asyncToGenerator$2(function* () { - var args, cb, error, reject, resolve, returned, task; - - if (_this._running < 1 && _this._queue.length > 0) { - _this._running++; - - var _this$_queue$shift = _this._queue.shift(); - - task = _this$_queue$shift.task; - args = _this$_queue$shift.args; - resolve = _this$_queue$shift.resolve; - reject = _this$_queue$shift.reject; - cb = yield _asyncToGenerator$2(function* () { - try { - returned = yield task(...args); - return function () { - return resolve(returned); - }; - } catch (error1) { - error = error1; - return function () { - return reject(error); - }; - } - })(); - _this._running--; - - _this._tryToRun(); - - return cb(); - } - })(); - } - - schedule(task, ...args) { - var promise, reject, resolve; - resolve = reject = null; - promise = new this.Promise(function (_resolve, _reject) { - resolve = _resolve; - return reject = _reject; - }); - - this._queue.push({ - task, - args, - resolve, - reject - }); - - this._tryToRun(); - - return promise; - } - - }; - var Sync_1 = Sync$1; - - var version = "2.19.5"; - var require$$8 = { - version: version - }; - - var require$$0 = Bottleneck_1; - - function _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _nonIterableRest$1(); } - - function _nonIterableRest$1() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - - function _iterableToArrayLimit$1(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - - function _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; } - - function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - - function _asyncToGenerator$1(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - var Events$2, Group, IORedisConnection, RedisConnection, Scripts, parser$2; - parser$2 = parser$8; - Events$2 = Events_1; - RedisConnection = RedisConnection_1; - IORedisConnection = IORedisConnection_1; - Scripts = Scripts$3; - - Group = function () { - class Group { - constructor(limiterOptions = {}) { - this.deleteKey = this.deleteKey.bind(this); - this.limiterOptions = limiterOptions; - parser$2.load(this.limiterOptions, this.defaults, this); - this.Events = new Events$2(this); - this.instances = {}; - this.Bottleneck = require$$0; - - this._startAutoCleanup(); - - this.sharedConnection = this.connection != null; - - if (this.connection == null) { - if (this.limiterOptions.datastore === "redis") { - this.connection = new RedisConnection(Object.assign({}, this.limiterOptions, { - Events: this.Events - })); - } else if (this.limiterOptions.datastore === "ioredis") { - this.connection = new IORedisConnection(Object.assign({}, this.limiterOptions, { - Events: this.Events - })); - } - } - } - - key(key = "") { - var ref; - return (ref = this.instances[key]) != null ? ref : (() => { - var limiter; - limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, { - id: `${this.id}-${key}`, - timeout: this.timeout, - connection: this.connection - })); - this.Events.trigger("created", limiter, key); - return limiter; - })(); - } - - deleteKey(key = "") { - var _this = this; - - return _asyncToGenerator$1(function* () { - var deleted, instance; - instance = _this.instances[key]; - - if (_this.connection) { - deleted = yield _this.connection.__runCommand__(['del', ...Scripts.allKeys(`${_this.id}-${key}`)]); - } - - if (instance != null) { - delete _this.instances[key]; - yield instance.disconnect(); - } - - return instance != null || deleted > 0; - })(); - } - - limiters() { - var k, ref, results, v; - ref = this.instances; - results = []; - - for (k in ref) { - v = ref[k]; - results.push({ - key: k, - limiter: v - }); - } - - return results; - } - - keys() { - return Object.keys(this.instances); - } - - clusterKeys() { - var _this2 = this; - - return _asyncToGenerator$1(function* () { - var cursor, end, found, i, k, keys, len, next, start; - - if (_this2.connection == null) { - return _this2.Promise.resolve(_this2.keys()); - } - - keys = []; - cursor = null; - start = `b_${_this2.id}-`.length; - end = "_settings".length; - - while (cursor !== 0) { - var _ref = yield _this2.connection.__runCommand__(["scan", cursor != null ? cursor : 0, "match", `b_${_this2.id}-*_settings`, "count", 10000]); - - var _ref2 = _slicedToArray$1(_ref, 2); - - next = _ref2[0]; - found = _ref2[1]; - cursor = ~~next; - - for (i = 0, len = found.length; i < len; i++) { - k = found[i]; - keys.push(k.slice(start, -end)); - } - } - - return keys; - })(); - } - - _startAutoCleanup() { - var _this3 = this; - - var base; - clearInterval(this.interval); - return typeof (base = this.interval = setInterval( - /*#__PURE__*/ - _asyncToGenerator$1(function* () { - var e, k, ref, results, time, v; - time = Date.now(); - ref = _this3.instances; - results = []; - - for (k in ref) { - v = ref[k]; - - try { - if (yield v._store.__groupCheck__(time)) { - results.push(_this3.deleteKey(k)); - } else { - results.push(void 0); - } - } catch (error) { - e = error; - results.push(v.Events.trigger("error", e)); - } - } - - return results; - }), this.timeout / 2)).unref === "function" ? base.unref() : void 0; - } - - updateSettings(options = {}) { - parser$2.overwrite(options, this.defaults, this); - parser$2.overwrite(options, options, this.limiterOptions); - - if (options.timeout != null) { - return this._startAutoCleanup(); - } - } - - disconnect(flush = true) { - var ref; - - if (!this.sharedConnection) { - return (ref = this.connection) != null ? ref.disconnect(flush) : void 0; - } - } - - } - Group.prototype.defaults = { - timeout: 1000 * 60 * 5, - connection: null, - Promise: Promise, - id: "group-key" - }; - return Group; - }.call(void 0); - - var Group_1 = Group; - - var Batcher, Events$1, parser$1; - parser$1 = parser$8; - Events$1 = Events_1; - - Batcher = function () { - class Batcher { - constructor(options = {}) { - this.options = options; - parser$1.load(this.options, this.defaults, this); - this.Events = new Events$1(this); - this._arr = []; - - this._resetPromise(); - - this._lastFlush = Date.now(); - } - - _resetPromise() { - return this._promise = new this.Promise((res, rej) => { - return this._resolve = res; - }); - } - - _flush() { - clearTimeout(this._timeout); - this._lastFlush = Date.now(); - - this._resolve(); - - this.Events.trigger("batch", this._arr); - this._arr = []; - return this._resetPromise(); - } - - add(data) { - var ret; - - this._arr.push(data); - - ret = this._promise; - - if (this._arr.length === this.maxSize) { - this._flush(); - } else if (this.maxTime != null && this._arr.length === 1) { - this._timeout = setTimeout(() => { - return this._flush(); - }, this.maxTime); - } - - return ret; - } - - } - Batcher.prototype.defaults = { - maxTime: null, - maxSize: null, - Promise: Promise - }; - return Batcher; - }.call(void 0); - - var Batcher_1 = Batcher; - - function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - - function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - - function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); } - - function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - - function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } - - function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - - function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - var Bottleneck, - DEFAULT_PRIORITY, - Events, - Job, - LocalDatastore, - NUM_PRIORITIES, - Queues, - RedisDatastore, - States, - Sync, - parser, - splice = [].splice; - NUM_PRIORITIES = 10; - DEFAULT_PRIORITY = 5; - parser = parser$8; - Queues = Queues_1; - Job = Job_1; - LocalDatastore = LocalDatastore_1; - RedisDatastore = RedisDatastore_1; - Events = Events_1; - States = States_1; - Sync = Sync_1; - - Bottleneck = function () { - class Bottleneck { - constructor(options = {}, ...invalid) { - var storeInstanceOptions, storeOptions; - this._addToQueue = this._addToQueue.bind(this); - - this._validateOptions(options, invalid); - - parser.load(options, this.instanceDefaults, this); - this._queues = new Queues(NUM_PRIORITIES); - this._scheduled = {}; - this._states = new States(["RECEIVED", "QUEUED", "RUNNING", "EXECUTING"].concat(this.trackDoneStatus ? ["DONE"] : [])); - this._limiter = null; - this.Events = new Events(this); - this._submitLock = new Sync("submit", this.Promise); - this._registerLock = new Sync("register", this.Promise); - storeOptions = parser.load(options, this.storeDefaults, {}); - - this._store = function () { - if (this.datastore === "redis" || this.datastore === "ioredis" || this.connection != null) { - storeInstanceOptions = parser.load(options, this.redisStoreDefaults, {}); - return new RedisDatastore(this, storeOptions, storeInstanceOptions); - } else if (this.datastore === "local") { - storeInstanceOptions = parser.load(options, this.localStoreDefaults, {}); - return new LocalDatastore(this, storeOptions, storeInstanceOptions); - } else { - throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`); - } - }.call(this); - - this._queues.on("leftzero", () => { - var ref; - return (ref = this._store.heartbeat) != null ? typeof ref.ref === "function" ? ref.ref() : void 0 : void 0; - }); - - this._queues.on("zero", () => { - var ref; - return (ref = this._store.heartbeat) != null ? typeof ref.unref === "function" ? ref.unref() : void 0 : void 0; - }); - } - - _validateOptions(options, invalid) { - if (!(options != null && typeof options === "object" && invalid.length === 0)) { - throw new Bottleneck.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1."); - } - } - - ready() { - return this._store.ready; - } - - clients() { - return this._store.clients; - } - - channel() { - return `b_${this.id}`; - } - - channel_client() { - return `b_${this.id}_${this._store.clientId}`; - } - - publish(message) { - return this._store.__publish__(message); - } - - disconnect(flush = true) { - return this._store.__disconnect__(flush); - } - - chain(_limiter) { - this._limiter = _limiter; - return this; - } - - queued(priority) { - return this._queues.queued(priority); - } - - clusterQueued() { - return this._store.__queued__(); - } - - empty() { - return this.queued() === 0 && this._submitLock.isEmpty(); - } - - running() { - return this._store.__running__(); - } - - done() { - return this._store.__done__(); - } - - jobStatus(id) { - return this._states.jobStatus(id); - } - - jobs(status) { - return this._states.statusJobs(status); - } - - counts() { - return this._states.statusCounts(); - } - - _randomIndex() { - return Math.random().toString(36).slice(2); - } - - check(weight = 1) { - return this._store.__check__(weight); - } - - _clearGlobalState(index) { - if (this._scheduled[index] != null) { - clearTimeout(this._scheduled[index].expiration); - delete this._scheduled[index]; - return true; - } else { - return false; - } - } - - _free(index, job, options, eventInfo) { - var _this = this; - - return _asyncToGenerator(function* () { - var e, running; - - try { - var _ref = yield _this._store.__free__(index, options.weight); - - running = _ref.running; - - _this.Events.trigger("debug", `Freed ${options.id}`, eventInfo); - - if (running === 0 && _this.empty()) { - return _this.Events.trigger("idle"); - } - } catch (error1) { - e = error1; - return _this.Events.trigger("error", e); - } - })(); - } - - _run(index, job, wait) { - var clearGlobalState, free, run; - job.doRun(); - clearGlobalState = this._clearGlobalState.bind(this, index); - run = this._run.bind(this, index, job); - free = this._free.bind(this, index, job); - return this._scheduled[index] = { - timeout: setTimeout(() => { - return job.doExecute(this._limiter, clearGlobalState, run, free); - }, wait), - expiration: job.options.expiration != null ? setTimeout(function () { - return job.doExpire(clearGlobalState, run, free); - }, wait + job.options.expiration) : void 0, - job: job - }; - } - - _drainOne(capacity) { - return this._registerLock.schedule(() => { - var args, index, next, options, queue; - - if (this.queued() === 0) { - return this.Promise.resolve(null); - } - - queue = this._queues.getFirst(); - - var _next2 = next = queue.first(); - - options = _next2.options; - args = _next2.args; - - if (capacity != null && options.weight > capacity) { - return this.Promise.resolve(null); - } - - this.Events.trigger("debug", `Draining ${options.id}`, { - args, - options - }); - index = this._randomIndex(); - return this._store.__register__(index, options.weight, options.expiration).then(({ - success, - wait, - reservoir - }) => { - var empty; - this.Events.trigger("debug", `Drained ${options.id}`, { - success, - args, - options - }); - - if (success) { - queue.shift(); - empty = this.empty(); - - if (empty) { - this.Events.trigger("empty"); - } - - if (reservoir === 0) { - this.Events.trigger("depleted", empty); - } - - this._run(index, next, wait); - - return this.Promise.resolve(options.weight); - } else { - return this.Promise.resolve(null); - } - }); - }); - } - - _drainAll(capacity, total = 0) { - return this._drainOne(capacity).then(drained => { - var newCapacity; - - if (drained != null) { - newCapacity = capacity != null ? capacity - drained : capacity; - return this._drainAll(newCapacity, total + drained); - } else { - return this.Promise.resolve(total); - } - }).catch(e => { - return this.Events.trigger("error", e); - }); - } - - _dropAllQueued(message) { - return this._queues.shiftAll(function (job) { - return job.doDrop({ - message - }); - }); - } - - stop(options = {}) { - var done, waitForExecuting; - options = parser.load(options, this.stopDefaults); - - waitForExecuting = at => { - var finished; - - finished = () => { - var counts; - counts = this._states.counts; - return counts[0] + counts[1] + counts[2] + counts[3] === at; - }; - - return new this.Promise((resolve, reject) => { - if (finished()) { - return resolve(); - } else { - return this.on("done", () => { - if (finished()) { - this.removeAllListeners("done"); - return resolve(); - } - }); - } - }); - }; - - done = options.dropWaitingJobs ? (this._run = function (index, next) { - return next.doDrop({ - message: options.dropErrorMessage - }); - }, this._drainOne = () => { - return this.Promise.resolve(null); - }, this._registerLock.schedule(() => { - return this._submitLock.schedule(() => { - var k, ref, v; - ref = this._scheduled; - - for (k in ref) { - v = ref[k]; - - if (this.jobStatus(v.job.options.id) === "RUNNING") { - clearTimeout(v.timeout); - clearTimeout(v.expiration); - v.job.doDrop({ - message: options.dropErrorMessage - }); - } - } - - this._dropAllQueued(options.dropErrorMessage); - - return waitForExecuting(0); - }); - })) : this.schedule({ - priority: NUM_PRIORITIES - 1, - weight: 0 - }, () => { - return waitForExecuting(1); - }); - - this._receive = function (job) { - return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage)); - }; - - this.stop = () => { - return this.Promise.reject(new Bottleneck.prototype.BottleneckError("stop() has already been called")); - }; - - return done; - } - - _addToQueue(job) { - var _this2 = this; - - return _asyncToGenerator(function* () { - var args, blocked, error, options, reachedHWM, shifted, strategy; - args = job.args; - options = job.options; - - try { - var _ref2 = yield _this2._store.__submit__(_this2.queued(), options.weight); - - reachedHWM = _ref2.reachedHWM; - blocked = _ref2.blocked; - strategy = _ref2.strategy; - } catch (error1) { - error = error1; - - _this2.Events.trigger("debug", `Could not queue ${options.id}`, { - args, - options, - error - }); - - job.doDrop({ - error - }); - return false; - } - - if (blocked) { - job.doDrop(); - return true; - } else if (reachedHWM) { - shifted = strategy === Bottleneck.prototype.strategy.LEAK ? _this2._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? _this2._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0; - - if (shifted != null) { - shifted.doDrop(); - } - - if (shifted == null || strategy === Bottleneck.prototype.strategy.OVERFLOW) { - if (shifted == null) { - job.doDrop(); - } - - return reachedHWM; - } - } - - job.doQueue(reachedHWM, blocked); - - _this2._queues.push(job); - - yield _this2._drainAll(); - return reachedHWM; - })(); - } - - _receive(job) { - if (this._states.jobStatus(job.options.id) != null) { - job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`)); - - return false; - } else { - job.doReceive(); - return this._submitLock.schedule(this._addToQueue, job); - } - } - - submit(...args) { - var cb, fn, job, options, ref, ref1, task; - - if (typeof args[0] === "function") { - var _ref3, _ref4, _splice$call, _splice$call2; - - ref = args, (_ref3 = ref, _ref4 = _toArray(_ref3), fn = _ref4[0], args = _ref4.slice(1), _ref3), (_splice$call = splice.call(args, -1), _splice$call2 = _slicedToArray(_splice$call, 1), cb = _splice$call2[0], _splice$call); - options = parser.load({}, this.jobDefaults); - } else { - var _ref5, _ref6, _splice$call3, _splice$call4; - - ref1 = args, (_ref5 = ref1, _ref6 = _toArray(_ref5), options = _ref6[0], fn = _ref6[1], args = _ref6.slice(2), _ref5), (_splice$call3 = splice.call(args, -1), _splice$call4 = _slicedToArray(_splice$call3, 1), cb = _splice$call4[0], _splice$call3); - options = parser.load(options, this.jobDefaults); - } - - task = (...args) => { - return new this.Promise(function (resolve, reject) { - return fn(...args, function (...args) { - return (args[0] != null ? reject : resolve)(args); - }); - }); - }; - - job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise); - job.promise.then(function (args) { - return typeof cb === "function" ? cb(...args) : void 0; - }).catch(function (args) { - if (Array.isArray(args)) { - return typeof cb === "function" ? cb(...args) : void 0; - } else { - return typeof cb === "function" ? cb(args) : void 0; - } - }); - return this._receive(job); - } - - schedule(...args) { - var job, options, task; - - if (typeof args[0] === "function") { - var _args = args; - - var _args2 = _toArray(_args); - - task = _args2[0]; - args = _args2.slice(1); - options = {}; - } else { - var _args3 = args; - - var _args4 = _toArray(_args3); - - options = _args4[0]; - task = _args4[1]; - args = _args4.slice(2); - } - - job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise); - - this._receive(job); - - return job.promise; - } - - wrap(fn) { - var schedule, wrapped; - schedule = this.schedule.bind(this); - - wrapped = function wrapped(...args) { - return schedule(fn.bind(this), ...args); - }; - - wrapped.withOptions = function (options, ...args) { - return schedule(options, fn, ...args); - }; - - return wrapped; - } - - updateSettings(options = {}) { - var _this3 = this; - - return _asyncToGenerator(function* () { - yield _this3._store.__updateSettings__(parser.overwrite(options, _this3.storeDefaults)); - parser.overwrite(options, _this3.instanceDefaults, _this3); - return _this3; - })(); - } - - currentReservoir() { - return this._store.__currentReservoir__(); - } - - incrementReservoir(incr = 0) { - return this._store.__incrementReservoir__(incr); - } - - } - Bottleneck.default = Bottleneck; - Bottleneck.Events = Events; - Bottleneck.version = Bottleneck.prototype.version = require$$8.version; - Bottleneck.strategy = Bottleneck.prototype.strategy = { - LEAK: 1, - OVERFLOW: 2, - OVERFLOW_PRIORITY: 4, - BLOCK: 3 - }; - Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = BottleneckError_1; - Bottleneck.Group = Bottleneck.prototype.Group = Group_1; - Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = RedisConnection_1; - Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = IORedisConnection_1; - Bottleneck.Batcher = Bottleneck.prototype.Batcher = Batcher_1; - Bottleneck.prototype.jobDefaults = { - priority: DEFAULT_PRIORITY, - weight: 1, - expiration: null, - id: "" - }; - Bottleneck.prototype.storeDefaults = { - maxConcurrent: null, - minTime: 0, - highWater: null, - strategy: Bottleneck.prototype.strategy.LEAK, - penalty: null, - reservoir: null, - reservoirRefreshInterval: null, - reservoirRefreshAmount: null, - reservoirIncreaseInterval: null, - reservoirIncreaseAmount: null, - reservoirIncreaseMaximum: null - }; - Bottleneck.prototype.localStoreDefaults = { - Promise: Promise, - timeout: null, - heartbeatInterval: 250 - }; - Bottleneck.prototype.redisStoreDefaults = { - Promise: Promise, - timeout: null, - heartbeatInterval: 5000, - clientTimeout: 10000, - Redis: null, - clientOptions: {}, - clusterNodes: null, - clearDatastore: false, - connection: null - }; - Bottleneck.prototype.instanceDefaults = { - datastore: "local", - connection: null, - id: "", - rejectOnDrop: true, - trackDoneStatus: false, - Promise: Promise - }; - Bottleneck.prototype.stopDefaults = { - enqueueErrorMessage: "This limiter has been stopped and cannot accept new jobs.", - dropWaitingJobs: true, - dropErrorMessage: "This limiter has been stopped." - }; - return Bottleneck; - }.call(void 0); - - var Bottleneck_1 = Bottleneck; - - var lib = require$$0; - - const unifetch = typeof fetch !== 'undefined' ? fetch : browser$1; - class AlpacaClient { - params; - baseURLs = endpoints; - limiter = new lib({ - reservoir: 200, - reservoirRefreshAmount: 200, - reservoirRefreshInterval: 60 * 1000, - maxConcurrent: 1, - minTime: 200, - }); - constructor(params) { - this.params = params; - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if (!('paper' in params.credentials) && - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - if ('access_token' in params.credentials && - ('key' in params.credentials || 'secret' in params.credentials)) { - throw new Error("can't create client with both default and oauth credentials"); - } - } - async isAuthenticated() { - try { - await this.getAccount(); - return true; - } - catch { - return false; - } - } - async getAccount() { - return parse.account(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account`, - })); - } - async getOrder(params) { - return parse.order(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders/${params.order_id || params.client_order_id}`, - data: { nested: params.nested }, - })); - } - async getOrders(params = {}) { - return parse.orders(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders`, - data: { - ...params, - symbols: params.symbols ? params.symbols.join(',') : undefined, - }, - })); - } - async placeOrder(params) { - return parse.order(await this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/orders`, - data: params, - })); - } - async replaceOrder(params) { - return parse.order(await this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - data: params, - })); - } - cancelOrder(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - isJSON: false, - }); - } - async cancelOrders() { - return parse.canceled_orders(await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders`, - })); - } - async getPosition(params) { - return parse.position(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - })); - } - async getPositions() { - return parse.positions(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions`, - })); - } - async closePosition(params) { - return parse.order(await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - data: params, - })); - } - async closePositions(params) { - return parse.orders(await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify(params.cancel_orders ?? false)}`, - })); - } - getAsset(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets/${params.asset_id_or_symbol}`, - }); - } - getAssets(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets`, - data: params, - }); - } - getWatchlist(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getWatchlists() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists`, - }); - } - createWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists`, - data: params, - }); - } - updateWatchlist(params) { - return this.request({ - method: 'PUT', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - addToWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - removeFromWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}/${params.symbol}`, - }); - } - deleteWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getCalendar(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/calendar`, - data: params, - }); - } - getNews(params) { - if ('symbols' in params && Array.isArray(params.symbols)) { - params.symbols = params.symbols.join(','); - } - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.beta}/news`, - data: params, - }); - } - async getClock() { - return parse.clock(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/clock`, - })); - } - getAccountConfigurations() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/configurations`, - }); - } - updateAccountConfigurations(params) { - return this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/account/configurations`, - data: params, - }); - } - async getAccountActivities(params) { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params.activity_types.join(','); - } - return parse.activities(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/activities${params.activity_type ? '/'.concat(params.activity_type) : ''}`, - data: { ...params, activity_type: undefined }, - })); - } - getPortfolioHistory(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/portfolio/history`, - data: params, - }); - } - async getBars_v1(params) { - const transformed = { - ...params, - symbols: params.symbols.join(','), - }; - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/bars/${params.timeframe}`, - data: transformed, - }); - } - async getLastTrade_v1(params) { - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last/stocks/${params.symbol}`, - }); - } - async getLastQuote_v1(params) { - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${params.symbol}`, - }); - } - async getTrades(params) { - return parse.pageOfTrades(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/trades`, - data: { ...params, symbol: undefined }, - })); - } - async getQuotes(params) { - return parse.pageOfQuotes(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/quotes`, - data: { ...params, symbol: undefined }, - })); - } - async getBars(params) { - return parse.pageOfBars(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/bars`, - data: { ...params, symbol: undefined }, - })); - } - async getLatestTrade({ symbol, feed, limit, }) { - let query = ''; - if (feed || limit) { - query = '?'.concat(lib$1.stringify({ feed, limit })); - } - return parse.latestTrade(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${symbol}/trades/latest`.concat(query), - })); - } - async getSnapshot(params) { - return parse.snapshot(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/snapshot`, - })); - } - async getSnapshots(params) { - return parse.snapshots(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${params.symbols.join(',')}`, - })); - } - async request(params) { - let headers = {}; - if ('access_token' in this.params.credentials) { - headers['Authorization'] = `Bearer ${this.params.credentials.access_token}`; - } - else { - headers['APCA-API-KEY-ID'] = this.params.credentials.key; - headers['APCA-API-SECRET-KEY'] = this.params.credentials.secret; - } - if (this.params.credentials.paper) { - params.url = params.url.replace('api.', 'paper-api.'); - } - let query = ''; - if (params.data) { - for (let [key, value] of Object.entries(params.data)) { - if (value instanceof Date) { - params.data[key] = value.toISOString(); - } - } - if (!['POST', 'PATCH', 'PUT'].includes(params.method)) { - query = '?'.concat(lib$1.stringify(params.data)); - params.data = undefined; - } - } - const makeCall = () => unifetch(params.url.concat(query), { - method: params.method, - headers, - body: JSON.stringify(params.data), - }), func = this.params.rate_limit - ? () => this.limiter.schedule(makeCall) - : makeCall; - let resp, result = {}; - try { - resp = await func(); - if (!(params.isJSON == undefined ? true : params.isJSON)) { - return resp.ok; - } - result = await resp.json(); - } - catch (e) { - console.error(e); - throw result; - } - if ('code' in result || 'message' in result) { - throw result; - } - return result; - } - } - - var isBlob = value => { - if (typeof Blob === 'undefined') { - return false; - } - - return value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]'; - }; - - // https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js - - var ws = null; - - if (typeof WebSocket !== 'undefined') { - ws = WebSocket; - } else if (typeof MozWebSocket !== 'undefined') { - ws = MozWebSocket; - } else if (typeof commonjsGlobal !== 'undefined') { - ws = commonjsGlobal.WebSocket || commonjsGlobal.MozWebSocket; - } else if (typeof window !== 'undefined') { - ws = window.WebSocket || window.MozWebSocket; - } else if (typeof self !== 'undefined') { - ws = self.WebSocket || self.MozWebSocket; - } - - var browser = ws; - - var eventemitter3 = createCommonjsModule(function (module) { - - var has = Object.prototype.hasOwnProperty - , prefix = '~'; - - /** - * Constructor to create a storage for our `EE` objects. - * An `Events` instance is a plain object whose properties are event names. - * - * @constructor - * @private - */ - function Events() {} - - // - // We try to not inherit from `Object.prototype`. In some engines creating an - // instance in this way is faster than calling `Object.create(null)` directly. - // If `Object.create(null)` is not supported we prefix the event names with a - // character to make sure that the built-in object properties are not - // overridden or used as an attack vector. - // - if (Object.create) { - Events.prototype = Object.create(null); - - // - // This hack is needed because the `__proto__` property is still inherited in - // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5. - // - if (!new Events().__proto__) prefix = false; - } - - /** - * Representation of a single event listener. - * - * @param {Function} fn The listener function. - * @param {*} context The context to invoke the listener with. - * @param {Boolean} [once=false] Specify if the listener is a one-time listener. - * @constructor - * @private - */ - function EE(fn, context, once) { - this.fn = fn; - this.context = context; - this.once = once || false; - } - - /** - * Add a listener for a given event. - * - * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. - * @param {(String|Symbol)} event The event name. - * @param {Function} fn The listener function. - * @param {*} context The context to invoke the listener with. - * @param {Boolean} once Specify if the listener is a one-time listener. - * @returns {EventEmitter} - * @private - */ - function addListener(emitter, event, fn, context, once) { - if (typeof fn !== 'function') { - throw new TypeError('The listener must be a function'); - } - - var listener = new EE(fn, context || emitter, once) - , evt = prefix ? prefix + event : event; - - if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; - else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); - else emitter._events[evt] = [emitter._events[evt], listener]; - - return emitter; - } - - /** - * Clear event by name. - * - * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. - * @param {(String|Symbol)} evt The Event name. - * @private - */ - function clearEvent(emitter, evt) { - if (--emitter._eventsCount === 0) emitter._events = new Events(); - else delete emitter._events[evt]; - } - - /** - * Minimal `EventEmitter` interface that is molded against the Node.js - * `EventEmitter` interface. - * - * @constructor - * @public - */ - function EventEmitter() { - this._events = new Events(); - this._eventsCount = 0; - } - - /** - * Return an array listing the events for which the emitter has registered - * listeners. - * - * @returns {Array} - * @public - */ - EventEmitter.prototype.eventNames = function eventNames() { - var names = [] - , events - , name; - - if (this._eventsCount === 0) return names; - - for (name in (events = this._events)) { - if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); - } - - if (Object.getOwnPropertySymbols) { - return names.concat(Object.getOwnPropertySymbols(events)); - } - - return names; - }; - - /** - * Return the listeners registered for a given event. - * - * @param {(String|Symbol)} event The event name. - * @returns {Array} The registered listeners. - * @public - */ - EventEmitter.prototype.listeners = function listeners(event) { - var evt = prefix ? prefix + event : event - , handlers = this._events[evt]; - - if (!handlers) return []; - if (handlers.fn) return [handlers.fn]; - - for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) { - ee[i] = handlers[i].fn; - } - - return ee; - }; - - /** - * Return the number of listeners listening to a given event. - * - * @param {(String|Symbol)} event The event name. - * @returns {Number} The number of listeners. - * @public - */ - EventEmitter.prototype.listenerCount = function listenerCount(event) { - var evt = prefix ? prefix + event : event - , listeners = this._events[evt]; - - if (!listeners) return 0; - if (listeners.fn) return 1; - return listeners.length; - }; - - /** - * Calls each of the listeners registered for a given event. - * - * @param {(String|Symbol)} event The event name. - * @returns {Boolean} `true` if the event had listeners, else `false`. - * @public - */ - EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return false; - - var listeners = this._events[evt] - , len = arguments.length - , args - , i; - - if (listeners.fn) { - if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); - - switch (len) { - case 1: return listeners.fn.call(listeners.context), true; - case 2: return listeners.fn.call(listeners.context, a1), true; - case 3: return listeners.fn.call(listeners.context, a1, a2), true; - case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; - case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; - case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; - } - - for (i = 1, args = new Array(len -1); i < len; i++) { - args[i - 1] = arguments[i]; - } - - listeners.fn.apply(listeners.context, args); - } else { - var length = listeners.length - , j; - - for (i = 0; i < length; i++) { - if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); - - switch (len) { - case 1: listeners[i].fn.call(listeners[i].context); break; - case 2: listeners[i].fn.call(listeners[i].context, a1); break; - case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; - case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; - default: - if (!args) for (j = 1, args = new Array(len -1); j < len; j++) { - args[j - 1] = arguments[j]; - } - - listeners[i].fn.apply(listeners[i].context, args); - } - } - } - - return true; - }; - - /** - * Add a listener for a given event. - * - * @param {(String|Symbol)} event The event name. - * @param {Function} fn The listener function. - * @param {*} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @public - */ - EventEmitter.prototype.on = function on(event, fn, context) { - return addListener(this, event, fn, context, false); - }; - - /** - * Add a one-time listener for a given event. - * - * @param {(String|Symbol)} event The event name. - * @param {Function} fn The listener function. - * @param {*} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @public - */ - EventEmitter.prototype.once = function once(event, fn, context) { - return addListener(this, event, fn, context, true); - }; - - /** - * Remove the listeners of a given event. - * - * @param {(String|Symbol)} event The event name. - * @param {Function} fn Only remove the listeners that match this function. - * @param {*} context Only remove the listeners that have this context. - * @param {Boolean} once Only remove one-time listeners. - * @returns {EventEmitter} `this`. - * @public - */ - EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return this; - if (!fn) { - clearEvent(this, evt); - return this; - } - - var listeners = this._events[evt]; - - if (listeners.fn) { - if ( - listeners.fn === fn && - (!once || listeners.once) && - (!context || listeners.context === context) - ) { - clearEvent(this, evt); - } - } else { - for (var i = 0, events = [], length = listeners.length; i < length; i++) { - if ( - listeners[i].fn !== fn || - (once && !listeners[i].once) || - (context && listeners[i].context !== context) - ) { - events.push(listeners[i]); - } - } - - // - // Reset the array, or remove it completely if we have no more listeners. - // - if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; - else clearEvent(this, evt); - } - - return this; - }; - - /** - * Remove all listeners, or those of the specified event. - * - * @param {(String|Symbol)} [event] The event name. - * @returns {EventEmitter} `this`. - * @public - */ - EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { - var evt; - - if (event) { - evt = prefix ? prefix + event : event; - if (this._events[evt]) clearEvent(this, evt); - } else { - this._events = new Events(); - this._eventsCount = 0; - } - - return this; - }; - - // - // Alias methods names because people roll like that. - // - EventEmitter.prototype.off = EventEmitter.prototype.removeListener; - EventEmitter.prototype.addListener = EventEmitter.prototype.on; - - // - // Expose the prefix. - // - EventEmitter.prefixed = prefix; - - // - // Allow `EventEmitter` to be imported as module namespace. - // - EventEmitter.EventEmitter = EventEmitter; - - // - // Expose the module. - // - { - module.exports = EventEmitter; - } - }); - - class AlpacaStream extends eventemitter3 { - params; - host; - connection; - authenticated; - baseURLs = endpoints; - constructor(params) { - super(); - this.params = params; - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if (!('paper' in params.credentials) && - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - switch (params.type) { - case 'account': - this.host = params.credentials.paper - ? this.baseURLs.websocket.account.replace('api.', 'paper-api.') - : this.baseURLs.websocket.account; - break; - case 'market_data': - this.host = this.baseURLs.websocket.market_data(this.params.source); - break; - default: - this.host = 'unknown'; - } - this.connection = new browser(this.host); - this.connection.onopen = () => { - let message = {}; - switch (this.params.type) { - case 'account': - message = { - action: 'authenticate', - data: { - key_id: params.credentials.key, - secret_key: params.credentials.secret, - }, - }; - break; - case 'market_data': - message = { action: 'auth', ...params.credentials }; - break; - } - this.connection.send(JSON.stringify(message)); - this.emit('open', this); - }; - this.connection.onclose = () => this.emit('close', this); - this.connection.onmessage = async (event) => { - let data = event.data; - if (isBlob(data)) { - data = await event.data.text(); - } - else if (data instanceof ArrayBuffer) { - data = String.fromCharCode(...new Uint8Array(event.data)); - } - let parsed = JSON.parse(data), messages = this.params.type == 'account' ? [parsed] : parsed; - messages.forEach((message) => { - this.emit('message', message); - if ('T' in message && message.msg == 'authenticated') { - this.authenticated = true; - this.emit('authenticated', this); - } - else if ('stream' in message && message.stream == 'authorization') { - if (message.data.status == 'authorized') { - this.authenticated = true; - this.emit('authenticated', this); - } - } - if ('stream' in message && message.stream == 'trade_updates') { - this.emit('trade_updates', parse.trade_update(message.data)); - } - const x = { - success: 'success', - subscription: 'subscription', - error: 'error', - t: 'trade', - q: 'quote', - b: 'bar', - }; - if ('T' in message) { - this.emit(x[message.T.split('.')[0]], message); - } - }); - }; - this.connection.onerror = (err) => { - this.emit('error', err); - }; - } - getConnection() { - return this.connection; - } - subscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - this.send(JSON.stringify({ action: 'listen', data: { streams: [channel] } })); - break; - case 'market_data': - let message = { action: 'subscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - unsubscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - this.send(JSON.stringify({ action: 'unlisten', data: { streams: [channel] } })); - break; - case 'market_data': - let message = { action: 'unsubscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - send(message) { - if (!this.authenticated) { - throw new Error('not authenticated'); - } - if (typeof message == 'object') { - message = JSON.stringify(message); - } - this.connection.send(message); - return this; - } - } - - var index = { - AlpacaClient: AlpacaClient, - AlpacaStream: AlpacaStream, - }; - - exports.AlpacaClient = AlpacaClient; - exports.AlpacaStream = AlpacaStream; - exports['default'] = index; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -//# sourceMappingURL=alpaca.browser.js.map diff --git a/dist/alpaca.browser.js.map b/dist/alpaca.browser.js.map deleted file mode 100644 index 4474314..0000000 --- a/dist/alpaca.browser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"alpaca.browser.js","sources":["../node_modules/has-symbols/shams.js","../node_modules/has-symbols/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object-inspect/util.inspect.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../src/parse.ts","../node_modules/unfetch/dist/unfetch.module.js","../node_modules/isomorphic-unfetch/browser.js","../src/endpoints.ts","../node_modules/bottleneck/lib/parser.js","../node_modules/bottleneck/lib/DLList.js","../node_modules/bottleneck/lib/Events.js","../node_modules/bottleneck/lib/Queues.js","../node_modules/bottleneck/lib/BottleneckError.js","../node_modules/bottleneck/lib/Job.js","../node_modules/bottleneck/lib/LocalDatastore.js","../node_modules/bottleneck/lib/Scripts.js","../node_modules/bottleneck/lib/RedisConnection.js","../node_modules/bottleneck/lib/IORedisConnection.js","../node_modules/bottleneck/lib/RedisDatastore.js","../node_modules/bottleneck/lib/States.js","../node_modules/bottleneck/lib/Sync.js","../node_modules/bottleneck/lib/Group.js","../node_modules/bottleneck/lib/Batcher.js","../node_modules/bottleneck/lib/Bottleneck.js","../node_modules/bottleneck/lib/index.js","../src/client.ts","../node_modules/is-blob/index.js","../node_modules/isomorphic-ws/browser.js","../node_modules/eventemitter3/index.js","../src/stream.ts","../src/index.ts"],"sourcesContent":["'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","module.exports = require('util').inspect;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\nvar toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('options \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n return String(obj);\n }\n if (typeof obj === 'bigint') {\n return String(obj) + 'n';\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = seen.slice();\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + String(obj.nodeName).toLowerCase();\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + xs.join(', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + ys.join(', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return String(s).replace(/\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase();\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = Array(opts.indent + 1).join(' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: Array(depth + 1).join(baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + xs.join(',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ((/[^\\w$]/).test(key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n if (sideChannel.has(object)) {\n throw new RangeError('Cyclic object value');\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, true);\n var valueSideChannel = getSideChannel();\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n",null,"export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.module.js.map\n","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n",null,"\"use strict\";\n\nexports.load = function (received, defaults, onto = {}) {\n var k, ref, v;\n\n for (k in defaults) {\n v = defaults[k];\n onto[k] = (ref = received[k]) != null ? ref : v;\n }\n\n return onto;\n};\n\nexports.overwrite = function (received, defaults, onto = {}) {\n var k, v;\n\n for (k in received) {\n v = received[k];\n\n if (defaults[k] !== void 0) {\n onto[k] = v;\n }\n }\n\n return onto;\n};","\"use strict\";\n\nvar DLList;\nDLList = class DLList {\n constructor(incr, decr) {\n this.incr = incr;\n this.decr = decr;\n this._first = null;\n this._last = null;\n this.length = 0;\n }\n\n push(value) {\n var node;\n this.length++;\n\n if (typeof this.incr === \"function\") {\n this.incr();\n }\n\n node = {\n value,\n prev: this._last,\n next: null\n };\n\n if (this._last != null) {\n this._last.next = node;\n this._last = node;\n } else {\n this._first = this._last = node;\n }\n\n return void 0;\n }\n\n shift() {\n var value;\n\n if (this._first == null) {\n return;\n } else {\n this.length--;\n\n if (typeof this.decr === \"function\") {\n this.decr();\n }\n }\n\n value = this._first.value;\n\n if ((this._first = this._first.next) != null) {\n this._first.prev = null;\n } else {\n this._last = null;\n }\n\n return value;\n }\n\n first() {\n if (this._first != null) {\n return this._first.value;\n }\n }\n\n getArray() {\n var node, ref, results;\n node = this._first;\n results = [];\n\n while (node != null) {\n results.push((ref = node, node = node.next, ref.value));\n }\n\n return results;\n }\n\n forEachShift(cb) {\n var node;\n node = this.shift();\n\n while (node != null) {\n cb(node), node = this.shift();\n }\n\n return void 0;\n }\n\n debug() {\n var node, ref, ref1, ref2, results;\n node = this._first;\n results = [];\n\n while (node != null) {\n results.push((ref = node, node = node.next, {\n value: ref.value,\n prev: (ref1 = ref.prev) != null ? ref1.value : void 0,\n next: (ref2 = ref.next) != null ? ref2.value : void 0\n }));\n }\n\n return results;\n }\n\n};\nmodule.exports = DLList;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events;\nEvents = class Events {\n constructor(instance) {\n this.instance = instance;\n this._events = {};\n\n if (this.instance.on != null || this.instance.once != null || this.instance.removeAllListeners != null) {\n throw new Error(\"An Emitter already exists for this object\");\n }\n\n this.instance.on = (name, cb) => {\n return this._addListener(name, \"many\", cb);\n };\n\n this.instance.once = (name, cb) => {\n return this._addListener(name, \"once\", cb);\n };\n\n this.instance.removeAllListeners = (name = null) => {\n if (name != null) {\n return delete this._events[name];\n } else {\n return this._events = {};\n }\n };\n }\n\n _addListener(name, status, cb) {\n var base;\n\n if ((base = this._events)[name] == null) {\n base[name] = [];\n }\n\n this._events[name].push({\n cb,\n status\n });\n\n return this.instance;\n }\n\n listenerCount(name) {\n if (this._events[name] != null) {\n return this._events[name].length;\n } else {\n return 0;\n }\n }\n\n trigger(name, ...args) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var e, promises;\n\n try {\n if (name !== \"debug\") {\n _this.trigger(\"debug\", `Event triggered: ${name}`, args);\n }\n\n if (_this._events[name] == null) {\n return;\n }\n\n _this._events[name] = _this._events[name].filter(function (listener) {\n return listener.status !== \"none\";\n });\n promises = _this._events[name].map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(function* (listener) {\n var e, returned;\n\n if (listener.status === \"none\") {\n return;\n }\n\n if (listener.status === \"once\") {\n listener.status = \"none\";\n }\n\n try {\n returned = typeof listener.cb === \"function\" ? listener.cb(...args) : void 0;\n\n if (typeof (returned != null ? returned.then : void 0) === \"function\") {\n return yield returned;\n } else {\n return returned;\n }\n } catch (error) {\n e = error;\n\n if (\"name\" !== \"error\") {\n _this.trigger(\"error\", e);\n }\n\n return null;\n }\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n return (yield Promise.all(promises)).find(function (x) {\n return x != null;\n });\n } catch (error) {\n e = error;\n\n if (\"name\" !== \"error\") {\n _this.trigger(\"error\", e);\n }\n\n return null;\n }\n })();\n }\n\n};\nmodule.exports = Events;","\"use strict\";\n\nvar DLList, Events, Queues;\nDLList = require(\"./DLList\");\nEvents = require(\"./Events\");\nQueues = class Queues {\n constructor(num_priorities) {\n var i;\n this.Events = new Events(this);\n this._length = 0;\n\n this._lists = function () {\n var j, ref, results;\n results = [];\n\n for (i = j = 1, ref = num_priorities; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n results.push(new DLList(() => {\n return this.incr();\n }, () => {\n return this.decr();\n }));\n }\n\n return results;\n }.call(this);\n }\n\n incr() {\n if (this._length++ === 0) {\n return this.Events.trigger(\"leftzero\");\n }\n }\n\n decr() {\n if (--this._length === 0) {\n return this.Events.trigger(\"zero\");\n }\n }\n\n push(job) {\n return this._lists[job.options.priority].push(job);\n }\n\n queued(priority) {\n if (priority != null) {\n return this._lists[priority].length;\n } else {\n return this._length;\n }\n }\n\n shiftAll(fn) {\n return this._lists.forEach(function (list) {\n return list.forEachShift(fn);\n });\n }\n\n getFirst(arr = this._lists) {\n var j, len, list;\n\n for (j = 0, len = arr.length; j < len; j++) {\n list = arr[j];\n\n if (list.length > 0) {\n return list;\n }\n }\n\n return [];\n }\n\n shiftLastFrom(priority) {\n return this.getFirst(this._lists.slice(priority).reverse()).shift();\n }\n\n};\nmodule.exports = Queues;","\"use strict\";\n\nvar BottleneckError;\nBottleneckError = class BottleneckError extends Error {};\nmodule.exports = BottleneckError;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, DEFAULT_PRIORITY, Job, NUM_PRIORITIES, parser;\nNUM_PRIORITIES = 10;\nDEFAULT_PRIORITY = 5;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nJob = class Job {\n constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) {\n this.task = task;\n this.args = args;\n this.rejectOnDrop = rejectOnDrop;\n this.Events = Events;\n this._states = _states;\n this.Promise = Promise;\n this.options = parser.load(options, jobDefaults);\n this.options.priority = this._sanitizePriority(this.options.priority);\n\n if (this.options.id === jobDefaults.id) {\n this.options.id = `${this.options.id}-${this._randomIndex()}`;\n }\n\n this.promise = new this.Promise((_resolve, _reject) => {\n this._resolve = _resolve;\n this._reject = _reject;\n });\n this.retryCount = 0;\n }\n\n _sanitizePriority(priority) {\n var sProperty;\n sProperty = ~~priority !== priority ? DEFAULT_PRIORITY : priority;\n\n if (sProperty < 0) {\n return 0;\n } else if (sProperty > NUM_PRIORITIES - 1) {\n return NUM_PRIORITIES - 1;\n } else {\n return sProperty;\n }\n }\n\n _randomIndex() {\n return Math.random().toString(36).slice(2);\n }\n\n doDrop({\n error,\n message = \"This job has been dropped by Bottleneck\"\n } = {}) {\n if (this._states.remove(this.options.id)) {\n if (this.rejectOnDrop) {\n this._reject(error != null ? error : new BottleneckError(message));\n }\n\n this.Events.trigger(\"dropped\", {\n args: this.args,\n options: this.options,\n task: this.task,\n promise: this.promise\n });\n return true;\n } else {\n return false;\n }\n }\n\n _assertStatus(expected) {\n var status;\n status = this._states.jobStatus(this.options.id);\n\n if (!(status === expected || expected === \"DONE\" && status === null)) {\n throw new BottleneckError(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`);\n }\n }\n\n doReceive() {\n this._states.start(this.options.id);\n\n return this.Events.trigger(\"received\", {\n args: this.args,\n options: this.options\n });\n }\n\n doQueue(reachedHWM, blocked) {\n this._assertStatus(\"RECEIVED\");\n\n this._states.next(this.options.id);\n\n return this.Events.trigger(\"queued\", {\n args: this.args,\n options: this.options,\n reachedHWM,\n blocked\n });\n }\n\n doRun() {\n if (this.retryCount === 0) {\n this._assertStatus(\"QUEUED\");\n\n this._states.next(this.options.id);\n } else {\n this._assertStatus(\"EXECUTING\");\n }\n\n return this.Events.trigger(\"scheduled\", {\n args: this.args,\n options: this.options\n });\n }\n\n doExecute(chained, clearGlobalState, run, free) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var error, eventInfo, passed;\n\n if (_this.retryCount === 0) {\n _this._assertStatus(\"RUNNING\");\n\n _this._states.next(_this.options.id);\n } else {\n _this._assertStatus(\"EXECUTING\");\n }\n\n eventInfo = {\n args: _this.args,\n options: _this.options,\n retryCount: _this.retryCount\n };\n\n _this.Events.trigger(\"executing\", eventInfo);\n\n try {\n passed = yield chained != null ? chained.schedule(_this.options, _this.task, ..._this.args) : _this.task(..._this.args);\n\n if (clearGlobalState()) {\n _this.doDone(eventInfo);\n\n yield free(_this.options, eventInfo);\n\n _this._assertStatus(\"DONE\");\n\n return _this._resolve(passed);\n }\n } catch (error1) {\n error = error1;\n return _this._onFailure(error, eventInfo, clearGlobalState, run, free);\n }\n })();\n }\n\n doExpire(clearGlobalState, run, free) {\n var error, eventInfo;\n\n if (this._states.jobStatus(this.options.id === \"RUNNING\")) {\n this._states.next(this.options.id);\n }\n\n this._assertStatus(\"EXECUTING\");\n\n eventInfo = {\n args: this.args,\n options: this.options,\n retryCount: this.retryCount\n };\n error = new BottleneckError(`This job timed out after ${this.options.expiration} ms.`);\n return this._onFailure(error, eventInfo, clearGlobalState, run, free);\n }\n\n _onFailure(error, eventInfo, clearGlobalState, run, free) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var retry, retryAfter;\n\n if (clearGlobalState()) {\n retry = yield _this2.Events.trigger(\"failed\", error, eventInfo);\n\n if (retry != null) {\n retryAfter = ~~retry;\n\n _this2.Events.trigger(\"retry\", `Retrying ${_this2.options.id} after ${retryAfter} ms`, eventInfo);\n\n _this2.retryCount++;\n return run(retryAfter);\n } else {\n _this2.doDone(eventInfo);\n\n yield free(_this2.options, eventInfo);\n\n _this2._assertStatus(\"DONE\");\n\n return _this2._reject(error);\n }\n }\n })();\n }\n\n doDone(eventInfo) {\n this._assertStatus(\"EXECUTING\");\n\n this._states.next(this.options.id);\n\n return this.Events.trigger(\"done\", eventInfo);\n }\n\n};\nmodule.exports = Job;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, LocalDatastore, parser;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nLocalDatastore = class LocalDatastore {\n constructor(instance, storeOptions, storeInstanceOptions) {\n this.instance = instance;\n this.storeOptions = storeOptions;\n this.clientId = this.instance._randomIndex();\n parser.load(storeInstanceOptions, storeInstanceOptions, this);\n this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now();\n this._running = 0;\n this._done = 0;\n this._unblockTime = 0;\n this.ready = this.Promise.resolve();\n this.clients = {};\n\n this._startHeartbeat();\n }\n\n _startHeartbeat() {\n var base;\n\n if (this.heartbeat == null && (this.storeOptions.reservoirRefreshInterval != null && this.storeOptions.reservoirRefreshAmount != null || this.storeOptions.reservoirIncreaseInterval != null && this.storeOptions.reservoirIncreaseAmount != null)) {\n return typeof (base = this.heartbeat = setInterval(() => {\n var amount, incr, maximum, now, reservoir;\n now = Date.now();\n\n if (this.storeOptions.reservoirRefreshInterval != null && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) {\n this._lastReservoirRefresh = now;\n this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount;\n\n this.instance._drainAll(this.computeCapacity());\n }\n\n if (this.storeOptions.reservoirIncreaseInterval != null && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) {\n var _this$storeOptions = this.storeOptions;\n amount = _this$storeOptions.reservoirIncreaseAmount;\n maximum = _this$storeOptions.reservoirIncreaseMaximum;\n reservoir = _this$storeOptions.reservoir;\n this._lastReservoirIncrease = now;\n incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount;\n\n if (incr > 0) {\n this.storeOptions.reservoir += incr;\n return this.instance._drainAll(this.computeCapacity());\n }\n }\n }, this.heartbeatInterval)).unref === \"function\" ? base.unref() : void 0;\n } else {\n return clearInterval(this.heartbeat);\n }\n }\n\n __publish__(message) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n yield _this.yieldLoop();\n return _this.instance.Events.trigger(\"message\", message.toString());\n })();\n }\n\n __disconnect__(flush) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n yield _this2.yieldLoop();\n clearInterval(_this2.heartbeat);\n return _this2.Promise.resolve();\n })();\n }\n\n yieldLoop(t = 0) {\n return new this.Promise(function (resolve, reject) {\n return setTimeout(resolve, t);\n });\n }\n\n computePenalty() {\n var ref;\n return (ref = this.storeOptions.penalty) != null ? ref : 15 * this.storeOptions.minTime || 5000;\n }\n\n __updateSettings__(options) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n yield _this3.yieldLoop();\n parser.overwrite(options, options, _this3.storeOptions);\n\n _this3._startHeartbeat();\n\n _this3.instance._drainAll(_this3.computeCapacity());\n\n return true;\n })();\n }\n\n __running__() {\n var _this4 = this;\n\n return _asyncToGenerator(function* () {\n yield _this4.yieldLoop();\n return _this4._running;\n })();\n }\n\n __queued__() {\n var _this5 = this;\n\n return _asyncToGenerator(function* () {\n yield _this5.yieldLoop();\n return _this5.instance.queued();\n })();\n }\n\n __done__() {\n var _this6 = this;\n\n return _asyncToGenerator(function* () {\n yield _this6.yieldLoop();\n return _this6._done;\n })();\n }\n\n __groupCheck__(time) {\n var _this7 = this;\n\n return _asyncToGenerator(function* () {\n yield _this7.yieldLoop();\n return _this7._nextRequest + _this7.timeout < time;\n })();\n }\n\n computeCapacity() {\n var maxConcurrent, reservoir;\n var _this$storeOptions2 = this.storeOptions;\n maxConcurrent = _this$storeOptions2.maxConcurrent;\n reservoir = _this$storeOptions2.reservoir;\n\n if (maxConcurrent != null && reservoir != null) {\n return Math.min(maxConcurrent - this._running, reservoir);\n } else if (maxConcurrent != null) {\n return maxConcurrent - this._running;\n } else if (reservoir != null) {\n return reservoir;\n } else {\n return null;\n }\n }\n\n conditionsCheck(weight) {\n var capacity;\n capacity = this.computeCapacity();\n return capacity == null || weight <= capacity;\n }\n\n __incrementReservoir__(incr) {\n var _this8 = this;\n\n return _asyncToGenerator(function* () {\n var reservoir;\n yield _this8.yieldLoop();\n reservoir = _this8.storeOptions.reservoir += incr;\n\n _this8.instance._drainAll(_this8.computeCapacity());\n\n return reservoir;\n })();\n }\n\n __currentReservoir__() {\n var _this9 = this;\n\n return _asyncToGenerator(function* () {\n yield _this9.yieldLoop();\n return _this9.storeOptions.reservoir;\n })();\n }\n\n isBlocked(now) {\n return this._unblockTime >= now;\n }\n\n check(weight, now) {\n return this.conditionsCheck(weight) && this._nextRequest - now <= 0;\n }\n\n __check__(weight) {\n var _this10 = this;\n\n return _asyncToGenerator(function* () {\n var now;\n yield _this10.yieldLoop();\n now = Date.now();\n return _this10.check(weight, now);\n })();\n }\n\n __register__(index, weight, expiration) {\n var _this11 = this;\n\n return _asyncToGenerator(function* () {\n var now, wait;\n yield _this11.yieldLoop();\n now = Date.now();\n\n if (_this11.conditionsCheck(weight)) {\n _this11._running += weight;\n\n if (_this11.storeOptions.reservoir != null) {\n _this11.storeOptions.reservoir -= weight;\n }\n\n wait = Math.max(_this11._nextRequest - now, 0);\n _this11._nextRequest = now + wait + _this11.storeOptions.minTime;\n return {\n success: true,\n wait,\n reservoir: _this11.storeOptions.reservoir\n };\n } else {\n return {\n success: false\n };\n }\n })();\n }\n\n strategyIsBlock() {\n return this.storeOptions.strategy === 3;\n }\n\n __submit__(queueLength, weight) {\n var _this12 = this;\n\n return _asyncToGenerator(function* () {\n var blocked, now, reachedHWM;\n yield _this12.yieldLoop();\n\n if (_this12.storeOptions.maxConcurrent != null && weight > _this12.storeOptions.maxConcurrent) {\n throw new BottleneckError(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${_this12.storeOptions.maxConcurrent}`);\n }\n\n now = Date.now();\n reachedHWM = _this12.storeOptions.highWater != null && queueLength === _this12.storeOptions.highWater && !_this12.check(weight, now);\n blocked = _this12.strategyIsBlock() && (reachedHWM || _this12.isBlocked(now));\n\n if (blocked) {\n _this12._unblockTime = now + _this12.computePenalty();\n _this12._nextRequest = _this12._unblockTime + _this12.storeOptions.minTime;\n\n _this12.instance._dropAllQueued();\n }\n\n return {\n reachedHWM,\n blocked,\n strategy: _this12.storeOptions.strategy\n };\n })();\n }\n\n __free__(index, weight) {\n var _this13 = this;\n\n return _asyncToGenerator(function* () {\n yield _this13.yieldLoop();\n _this13._running -= weight;\n _this13._done += weight;\n\n _this13.instance._drainAll(_this13.computeCapacity());\n\n return {\n running: _this13._running\n };\n })();\n }\n\n};\nmodule.exports = LocalDatastore;","\"use strict\";\n\nvar headers, lua, templates;\nlua = require(\"./lua.json\");\nheaders = {\n refs: lua[\"refs.lua\"],\n validate_keys: lua[\"validate_keys.lua\"],\n validate_client: lua[\"validate_client.lua\"],\n refresh_expiration: lua[\"refresh_expiration.lua\"],\n process_tick: lua[\"process_tick.lua\"],\n conditions_check: lua[\"conditions_check.lua\"],\n get_time: lua[\"get_time.lua\"]\n};\n\nexports.allKeys = function (id) {\n return [\n /*\n HASH\n */\n `b_${id}_settings`,\n /*\n HASH\n job index -> weight\n */\n `b_${id}_job_weights`,\n /*\n ZSET\n job index -> expiration\n */\n `b_${id}_job_expirations`,\n /*\n HASH\n job index -> client\n */\n `b_${id}_job_clients`,\n /*\n ZSET\n client -> sum running\n */\n `b_${id}_client_running`,\n /*\n HASH\n client -> num queued\n */\n `b_${id}_client_num_queued`,\n /*\n ZSET\n client -> last job registered\n */\n `b_${id}_client_last_registered`,\n /*\n ZSET\n client -> last seen\n */\n `b_${id}_client_last_seen`];\n};\n\ntemplates = {\n init: {\n keys: exports.allKeys,\n headers: [\"process_tick\"],\n refresh_expiration: true,\n code: lua[\"init.lua\"]\n },\n group_check: {\n keys: exports.allKeys,\n headers: [],\n refresh_expiration: false,\n code: lua[\"group_check.lua\"]\n },\n register_client: {\n keys: exports.allKeys,\n headers: [\"validate_keys\"],\n refresh_expiration: false,\n code: lua[\"register_client.lua\"]\n },\n blacklist_client: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\"],\n refresh_expiration: false,\n code: lua[\"blacklist_client.lua\"]\n },\n heartbeat: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"heartbeat.lua\"]\n },\n update_settings: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"update_settings.lua\"]\n },\n running: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"running.lua\"]\n },\n queued: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\"],\n refresh_expiration: false,\n code: lua[\"queued.lua\"]\n },\n done: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"done.lua\"]\n },\n check: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: false,\n code: lua[\"check.lua\"]\n },\n submit: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: true,\n code: lua[\"submit.lua\"]\n },\n register: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: true,\n code: lua[\"register.lua\"]\n },\n free: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"free.lua\"]\n },\n current_reservoir: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"current_reservoir.lua\"]\n },\n increment_reservoir: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"increment_reservoir.lua\"]\n }\n};\nexports.names = Object.keys(templates);\n\nexports.keys = function (name, id) {\n return templates[name].keys(id);\n};\n\nexports.payload = function (name) {\n var template;\n template = templates[name];\n return Array.prototype.concat(headers.refs, template.headers.map(function (h) {\n return headers[h];\n }), template.refresh_expiration ? headers.refresh_expiration : \"\", template.code).join(\"\\n\");\n};","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, RedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nScripts = require(\"./Scripts\");\n\nRedisConnection = function () {\n class RedisConnection {\n constructor(options = {}) {\n parser.load(options, this.defaults, this);\n\n if (this.Redis == null) {\n this.Redis = eval(\"require\")(\"redis\"); // Obfuscated or else Webpack/Angular will try to inline the optional redis module. To override this behavior: pass the redis module to Bottleneck as the 'Redis' option.\n }\n\n if (this.Events == null) {\n this.Events = new Events(this);\n }\n\n this.terminated = false;\n\n if (this.client == null) {\n this.client = this.Redis.createClient(this.clientOptions);\n }\n\n this.subscriber = this.client.duplicate();\n this.limiters = {};\n this.shas = {};\n this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => {\n return this._loadScripts();\n }).then(() => {\n return {\n client: this.client,\n subscriber: this.subscriber\n };\n });\n }\n\n _setup(client, sub) {\n client.setMaxListeners(0);\n return new this.Promise((resolve, reject) => {\n client.on(\"error\", e => {\n return this.Events.trigger(\"error\", e);\n });\n\n if (sub) {\n client.on(\"message\", (channel, message) => {\n var ref;\n return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0;\n });\n }\n\n if (client.ready) {\n return resolve();\n } else {\n return client.once(\"ready\", resolve);\n }\n });\n }\n\n _loadScript(name) {\n return new this.Promise((resolve, reject) => {\n var payload;\n payload = Scripts.payload(name);\n return this.client.multi([[\"script\", \"load\", payload]]).exec((err, replies) => {\n if (err != null) {\n return reject(err);\n }\n\n this.shas[name] = replies[0];\n return resolve(replies[0]);\n });\n });\n }\n\n _loadScripts() {\n return this.Promise.all(Scripts.names.map(k => {\n return this._loadScript(k);\n }));\n }\n\n __runCommand__(cmd) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n yield _this.ready;\n return new _this.Promise((resolve, reject) => {\n return _this.client.multi([cmd]).exec_atomic(function (err, replies) {\n if (err != null) {\n return reject(err);\n } else {\n return resolve(replies[0]);\n }\n });\n });\n })();\n }\n\n __addLimiter__(instance) {\n return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => {\n return new this.Promise((resolve, reject) => {\n var handler;\n\n handler = chan => {\n if (chan === channel) {\n this.subscriber.removeListener(\"subscribe\", handler);\n this.limiters[channel] = instance;\n return resolve();\n }\n };\n\n this.subscriber.on(\"subscribe\", handler);\n return this.subscriber.subscribe(channel);\n });\n }));\n }\n\n __removeLimiter__(instance) {\n var _this2 = this;\n\n return this.Promise.all([instance.channel(), instance.channel_client()].map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(function* (channel) {\n if (!_this2.terminated) {\n yield new _this2.Promise((resolve, reject) => {\n return _this2.subscriber.unsubscribe(channel, function (err, chan) {\n if (err != null) {\n return reject(err);\n }\n\n if (chan === channel) {\n return resolve();\n }\n });\n });\n }\n\n return delete _this2.limiters[channel];\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }()));\n }\n\n __scriptArgs__(name, id, args, cb) {\n var keys;\n keys = Scripts.keys(name, id);\n return [this.shas[name], keys.length].concat(keys, args, cb);\n }\n\n __scriptFn__(name) {\n return this.client.evalsha.bind(this.client);\n }\n\n disconnect(flush = true) {\n var i, k, len, ref;\n ref = Object.keys(this.limiters);\n\n for (i = 0, len = ref.length; i < len; i++) {\n k = ref[i];\n clearInterval(this.limiters[k]._store.heartbeat);\n }\n\n this.limiters = {};\n this.terminated = true;\n this.client.end(flush);\n this.subscriber.end(flush);\n return this.Promise.resolve();\n }\n\n }\n\n ;\n RedisConnection.prototype.datastore = \"redis\";\n RedisConnection.prototype.defaults = {\n Redis: null,\n clientOptions: {},\n client: null,\n Promise: Promise,\n Events: null\n };\n return RedisConnection;\n}.call(void 0);\n\nmodule.exports = RedisConnection;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, IORedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nScripts = require(\"./Scripts\");\n\nIORedisConnection = function () {\n class IORedisConnection {\n constructor(options = {}) {\n parser.load(options, this.defaults, this);\n\n if (this.Redis == null) {\n this.Redis = eval(\"require\")(\"ioredis\"); // Obfuscated or else Webpack/Angular will try to inline the optional ioredis module. To override this behavior: pass the ioredis module to Bottleneck as the 'Redis' option.\n }\n\n if (this.Events == null) {\n this.Events = new Events(this);\n }\n\n this.terminated = false;\n\n if (this.clusterNodes != null) {\n this.client = new this.Redis.Cluster(this.clusterNodes, this.clientOptions);\n this.subscriber = new this.Redis.Cluster(this.clusterNodes, this.clientOptions);\n } else if (this.client != null && this.client.duplicate == null) {\n this.subscriber = new this.Redis.Cluster(this.client.startupNodes, this.client.options);\n } else {\n if (this.client == null) {\n this.client = new this.Redis(this.clientOptions);\n }\n\n this.subscriber = this.client.duplicate();\n }\n\n this.limiters = {};\n this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => {\n this._loadScripts();\n\n return {\n client: this.client,\n subscriber: this.subscriber\n };\n });\n }\n\n _setup(client, sub) {\n client.setMaxListeners(0);\n return new this.Promise((resolve, reject) => {\n client.on(\"error\", e => {\n return this.Events.trigger(\"error\", e);\n });\n\n if (sub) {\n client.on(\"message\", (channel, message) => {\n var ref;\n return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0;\n });\n }\n\n if (client.status === \"ready\") {\n return resolve();\n } else {\n return client.once(\"ready\", resolve);\n }\n });\n }\n\n _loadScripts() {\n return Scripts.names.forEach(name => {\n return this.client.defineCommand(name, {\n lua: Scripts.payload(name)\n });\n });\n }\n\n __runCommand__(cmd) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var _, deleted;\n\n yield _this.ready;\n\n var _ref = yield _this.client.pipeline([cmd]).exec();\n\n var _ref2 = _slicedToArray(_ref, 1);\n\n var _ref2$ = _slicedToArray(_ref2[0], 2);\n\n _ = _ref2$[0];\n deleted = _ref2$[1];\n return deleted;\n })();\n }\n\n __addLimiter__(instance) {\n return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => {\n return new this.Promise((resolve, reject) => {\n return this.subscriber.subscribe(channel, () => {\n this.limiters[channel] = instance;\n return resolve();\n });\n });\n }));\n }\n\n __removeLimiter__(instance) {\n var _this2 = this;\n\n return [instance.channel(), instance.channel_client()].forEach(\n /*#__PURE__*/\n function () {\n var _ref3 = _asyncToGenerator(function* (channel) {\n if (!_this2.terminated) {\n yield _this2.subscriber.unsubscribe(channel);\n }\n\n return delete _this2.limiters[channel];\n });\n\n return function (_x) {\n return _ref3.apply(this, arguments);\n };\n }());\n }\n\n __scriptArgs__(name, id, args, cb) {\n var keys;\n keys = Scripts.keys(name, id);\n return [keys.length].concat(keys, args, cb);\n }\n\n __scriptFn__(name) {\n return this.client[name].bind(this.client);\n }\n\n disconnect(flush = true) {\n var i, k, len, ref;\n ref = Object.keys(this.limiters);\n\n for (i = 0, len = ref.length; i < len; i++) {\n k = ref[i];\n clearInterval(this.limiters[k]._store.heartbeat);\n }\n\n this.limiters = {};\n this.terminated = true;\n\n if (flush) {\n return this.Promise.all([this.client.quit(), this.subscriber.quit()]);\n } else {\n this.client.disconnect();\n this.subscriber.disconnect();\n return this.Promise.resolve();\n }\n }\n\n }\n\n ;\n IORedisConnection.prototype.datastore = \"ioredis\";\n IORedisConnection.prototype.defaults = {\n Redis: null,\n clientOptions: {},\n clusterNodes: null,\n client: null,\n Promise: Promise,\n Events: null\n };\n return IORedisConnection;\n}.call(void 0);\n\nmodule.exports = IORedisConnection;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, IORedisConnection, RedisConnection, RedisDatastore, parser;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nRedisConnection = require(\"./RedisConnection\");\nIORedisConnection = require(\"./IORedisConnection\");\nRedisDatastore = class RedisDatastore {\n constructor(instance, storeOptions, storeInstanceOptions) {\n this.instance = instance;\n this.storeOptions = storeOptions;\n this.originalId = this.instance.id;\n this.clientId = this.instance._randomIndex();\n parser.load(storeInstanceOptions, storeInstanceOptions, this);\n this.clients = {};\n this.capacityPriorityCounters = {};\n this.sharedConnection = this.connection != null;\n\n if (this.connection == null) {\n this.connection = this.instance.datastore === \"redis\" ? new RedisConnection({\n Redis: this.Redis,\n clientOptions: this.clientOptions,\n Promise: this.Promise,\n Events: this.instance.Events\n }) : this.instance.datastore === \"ioredis\" ? new IORedisConnection({\n Redis: this.Redis,\n clientOptions: this.clientOptions,\n clusterNodes: this.clusterNodes,\n Promise: this.Promise,\n Events: this.instance.Events\n }) : void 0;\n }\n\n this.instance.connection = this.connection;\n this.instance.datastore = this.connection.datastore;\n this.ready = this.connection.ready.then(clients => {\n this.clients = clients;\n return this.runScript(\"init\", this.prepareInitSettings(this.clearDatastore));\n }).then(() => {\n return this.connection.__addLimiter__(this.instance);\n }).then(() => {\n return this.runScript(\"register_client\", [this.instance.queued()]);\n }).then(() => {\n var base;\n\n if (typeof (base = this.heartbeat = setInterval(() => {\n return this.runScript(\"heartbeat\", []).catch(e => {\n return this.instance.Events.trigger(\"error\", e);\n });\n }, this.heartbeatInterval)).unref === \"function\") {\n base.unref();\n }\n\n return this.clients;\n });\n }\n\n __publish__(message) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var client;\n\n var _ref = yield _this.ready;\n\n client = _ref.client;\n return client.publish(_this.instance.channel(), `message:${message.toString()}`);\n })();\n }\n\n onMessage(channel, message) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var capacity, counter, data, drained, e, newCapacity, pos, priorityClient, rawCapacity, type;\n\n try {\n pos = message.indexOf(\":\");\n var _ref2 = [message.slice(0, pos), message.slice(pos + 1)];\n type = _ref2[0];\n data = _ref2[1];\n\n if (type === \"capacity\") {\n return yield _this2.instance._drainAll(data.length > 0 ? ~~data : void 0);\n } else if (type === \"capacity-priority\") {\n var _data$split = data.split(\":\");\n\n var _data$split2 = _slicedToArray(_data$split, 3);\n\n rawCapacity = _data$split2[0];\n priorityClient = _data$split2[1];\n counter = _data$split2[2];\n capacity = rawCapacity.length > 0 ? ~~rawCapacity : void 0;\n\n if (priorityClient === _this2.clientId) {\n drained = yield _this2.instance._drainAll(capacity);\n newCapacity = capacity != null ? capacity - (drained || 0) : \"\";\n return yield _this2.clients.client.publish(_this2.instance.channel(), `capacity-priority:${newCapacity}::${counter}`);\n } else if (priorityClient === \"\") {\n clearTimeout(_this2.capacityPriorityCounters[counter]);\n delete _this2.capacityPriorityCounters[counter];\n return _this2.instance._drainAll(capacity);\n } else {\n return _this2.capacityPriorityCounters[counter] = setTimeout(\n /*#__PURE__*/\n _asyncToGenerator(function* () {\n var e;\n\n try {\n delete _this2.capacityPriorityCounters[counter];\n yield _this2.runScript(\"blacklist_client\", [priorityClient]);\n return yield _this2.instance._drainAll(capacity);\n } catch (error) {\n e = error;\n return _this2.instance.Events.trigger(\"error\", e);\n }\n }), 1000);\n }\n } else if (type === \"message\") {\n return _this2.instance.Events.trigger(\"message\", data);\n } else if (type === \"blocked\") {\n return yield _this2.instance._dropAllQueued();\n }\n } catch (error) {\n e = error;\n return _this2.instance.Events.trigger(\"error\", e);\n }\n })();\n }\n\n __disconnect__(flush) {\n clearInterval(this.heartbeat);\n\n if (this.sharedConnection) {\n return this.connection.__removeLimiter__(this.instance);\n } else {\n return this.connection.disconnect(flush);\n }\n }\n\n runScript(name, args) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n if (!(name === \"init\" || name === \"register_client\")) {\n yield _this3.ready;\n }\n\n return new _this3.Promise((resolve, reject) => {\n var all_args, arr;\n all_args = [Date.now(), _this3.clientId].concat(args);\n\n _this3.instance.Events.trigger(\"debug\", `Calling Redis script: ${name}.lua`, all_args);\n\n arr = _this3.connection.__scriptArgs__(name, _this3.originalId, all_args, function (err, replies) {\n if (err != null) {\n return reject(err);\n }\n\n return resolve(replies);\n });\n return _this3.connection.__scriptFn__(name)(...arr);\n }).catch(e => {\n if (e.message === \"SETTINGS_KEY_NOT_FOUND\") {\n if (name === \"heartbeat\") {\n return _this3.Promise.resolve();\n } else {\n return _this3.runScript(\"init\", _this3.prepareInitSettings(false)).then(() => {\n return _this3.runScript(name, args);\n });\n }\n } else if (e.message === \"UNKNOWN_CLIENT\") {\n return _this3.runScript(\"register_client\", [_this3.instance.queued()]).then(() => {\n return _this3.runScript(name, args);\n });\n } else {\n return _this3.Promise.reject(e);\n }\n });\n })();\n }\n\n prepareArray(arr) {\n var i, len, results, x;\n results = [];\n\n for (i = 0, len = arr.length; i < len; i++) {\n x = arr[i];\n results.push(x != null ? x.toString() : \"\");\n }\n\n return results;\n }\n\n prepareObject(obj) {\n var arr, k, v;\n arr = [];\n\n for (k in obj) {\n v = obj[k];\n arr.push(k, v != null ? v.toString() : \"\");\n }\n\n return arr;\n }\n\n prepareInitSettings(clear) {\n var args;\n args = this.prepareObject(Object.assign({}, this.storeOptions, {\n id: this.originalId,\n version: this.instance.version,\n groupTimeout: this.timeout,\n clientTimeout: this.clientTimeout\n }));\n args.unshift(clear ? 1 : 0, this.instance.version);\n return args;\n }\n\n convertBool(b) {\n return !!b;\n }\n\n __updateSettings__(options) {\n var _this4 = this;\n\n return _asyncToGenerator(function* () {\n yield _this4.runScript(\"update_settings\", _this4.prepareObject(options));\n return parser.overwrite(options, options, _this4.storeOptions);\n })();\n }\n\n __running__() {\n return this.runScript(\"running\", []);\n }\n\n __queued__() {\n return this.runScript(\"queued\", []);\n }\n\n __done__() {\n return this.runScript(\"done\", []);\n }\n\n __groupCheck__() {\n var _this5 = this;\n\n return _asyncToGenerator(function* () {\n return _this5.convertBool((yield _this5.runScript(\"group_check\", [])));\n })();\n }\n\n __incrementReservoir__(incr) {\n return this.runScript(\"increment_reservoir\", [incr]);\n }\n\n __currentReservoir__() {\n return this.runScript(\"current_reservoir\", []);\n }\n\n __check__(weight) {\n var _this6 = this;\n\n return _asyncToGenerator(function* () {\n return _this6.convertBool((yield _this6.runScript(\"check\", _this6.prepareArray([weight]))));\n })();\n }\n\n __register__(index, weight, expiration) {\n var _this7 = this;\n\n return _asyncToGenerator(function* () {\n var reservoir, success, wait;\n\n var _ref4 = yield _this7.runScript(\"register\", _this7.prepareArray([index, weight, expiration]));\n\n var _ref5 = _slicedToArray(_ref4, 3);\n\n success = _ref5[0];\n wait = _ref5[1];\n reservoir = _ref5[2];\n return {\n success: _this7.convertBool(success),\n wait,\n reservoir\n };\n })();\n }\n\n __submit__(queueLength, weight) {\n var _this8 = this;\n\n return _asyncToGenerator(function* () {\n var blocked, e, maxConcurrent, overweight, reachedHWM, strategy;\n\n try {\n var _ref6 = yield _this8.runScript(\"submit\", _this8.prepareArray([queueLength, weight]));\n\n var _ref7 = _slicedToArray(_ref6, 3);\n\n reachedHWM = _ref7[0];\n blocked = _ref7[1];\n strategy = _ref7[2];\n return {\n reachedHWM: _this8.convertBool(reachedHWM),\n blocked: _this8.convertBool(blocked),\n strategy\n };\n } catch (error) {\n e = error;\n\n if (e.message.indexOf(\"OVERWEIGHT\") === 0) {\n var _e$message$split = e.message.split(\":\");\n\n var _e$message$split2 = _slicedToArray(_e$message$split, 3);\n\n overweight = _e$message$split2[0];\n weight = _e$message$split2[1];\n maxConcurrent = _e$message$split2[2];\n throw new BottleneckError(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${maxConcurrent}`);\n } else {\n throw e;\n }\n }\n })();\n }\n\n __free__(index, weight) {\n var _this9 = this;\n\n return _asyncToGenerator(function* () {\n var running;\n running = yield _this9.runScript(\"free\", _this9.prepareArray([index]));\n return {\n running\n };\n })();\n }\n\n};\nmodule.exports = RedisDatastore;","\"use strict\";\n\nvar BottleneckError, States;\nBottleneckError = require(\"./BottleneckError\");\nStates = class States {\n constructor(status1) {\n this.status = status1;\n this._jobs = {};\n this.counts = this.status.map(function () {\n return 0;\n });\n }\n\n next(id) {\n var current, next;\n current = this._jobs[id];\n next = current + 1;\n\n if (current != null && next < this.status.length) {\n this.counts[current]--;\n this.counts[next]++;\n return this._jobs[id]++;\n } else if (current != null) {\n this.counts[current]--;\n return delete this._jobs[id];\n }\n }\n\n start(id) {\n var initial;\n initial = 0;\n this._jobs[id] = initial;\n return this.counts[initial]++;\n }\n\n remove(id) {\n var current;\n current = this._jobs[id];\n\n if (current != null) {\n this.counts[current]--;\n delete this._jobs[id];\n }\n\n return current != null;\n }\n\n jobStatus(id) {\n var ref;\n return (ref = this.status[this._jobs[id]]) != null ? ref : null;\n }\n\n statusJobs(status) {\n var k, pos, ref, results, v;\n\n if (status != null) {\n pos = this.status.indexOf(status);\n\n if (pos < 0) {\n throw new BottleneckError(`status must be one of ${this.status.join(', ')}`);\n }\n\n ref = this._jobs;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n\n if (v === pos) {\n results.push(k);\n }\n }\n\n return results;\n } else {\n return Object.keys(this._jobs);\n }\n }\n\n statusCounts() {\n return this.counts.reduce((acc, v, i) => {\n acc[this.status[i]] = v;\n return acc;\n }, {});\n }\n\n};\nmodule.exports = States;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar DLList, Sync;\nDLList = require(\"./DLList\");\nSync = class Sync {\n constructor(name, Promise) {\n this.schedule = this.schedule.bind(this);\n this.name = name;\n this.Promise = Promise;\n this._running = 0;\n this._queue = new DLList();\n }\n\n isEmpty() {\n return this._queue.length === 0;\n }\n\n _tryToRun() {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var args, cb, error, reject, resolve, returned, task;\n\n if (_this._running < 1 && _this._queue.length > 0) {\n _this._running++;\n\n var _this$_queue$shift = _this._queue.shift();\n\n task = _this$_queue$shift.task;\n args = _this$_queue$shift.args;\n resolve = _this$_queue$shift.resolve;\n reject = _this$_queue$shift.reject;\n cb = yield _asyncToGenerator(function* () {\n try {\n returned = yield task(...args);\n return function () {\n return resolve(returned);\n };\n } catch (error1) {\n error = error1;\n return function () {\n return reject(error);\n };\n }\n })();\n _this._running--;\n\n _this._tryToRun();\n\n return cb();\n }\n })();\n }\n\n schedule(task, ...args) {\n var promise, reject, resolve;\n resolve = reject = null;\n promise = new this.Promise(function (_resolve, _reject) {\n resolve = _resolve;\n return reject = _reject;\n });\n\n this._queue.push({\n task,\n args,\n resolve,\n reject\n });\n\n this._tryToRun();\n\n return promise;\n }\n\n};\nmodule.exports = Sync;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, Group, IORedisConnection, RedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nRedisConnection = require(\"./RedisConnection\");\nIORedisConnection = require(\"./IORedisConnection\");\nScripts = require(\"./Scripts\");\n\nGroup = function () {\n class Group {\n constructor(limiterOptions = {}) {\n this.deleteKey = this.deleteKey.bind(this);\n this.limiterOptions = limiterOptions;\n parser.load(this.limiterOptions, this.defaults, this);\n this.Events = new Events(this);\n this.instances = {};\n this.Bottleneck = require(\"./Bottleneck\");\n\n this._startAutoCleanup();\n\n this.sharedConnection = this.connection != null;\n\n if (this.connection == null) {\n if (this.limiterOptions.datastore === \"redis\") {\n this.connection = new RedisConnection(Object.assign({}, this.limiterOptions, {\n Events: this.Events\n }));\n } else if (this.limiterOptions.datastore === \"ioredis\") {\n this.connection = new IORedisConnection(Object.assign({}, this.limiterOptions, {\n Events: this.Events\n }));\n }\n }\n }\n\n key(key = \"\") {\n var ref;\n return (ref = this.instances[key]) != null ? ref : (() => {\n var limiter;\n limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, {\n id: `${this.id}-${key}`,\n timeout: this.timeout,\n connection: this.connection\n }));\n this.Events.trigger(\"created\", limiter, key);\n return limiter;\n })();\n }\n\n deleteKey(key = \"\") {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var deleted, instance;\n instance = _this.instances[key];\n\n if (_this.connection) {\n deleted = yield _this.connection.__runCommand__(['del', ...Scripts.allKeys(`${_this.id}-${key}`)]);\n }\n\n if (instance != null) {\n delete _this.instances[key];\n yield instance.disconnect();\n }\n\n return instance != null || deleted > 0;\n })();\n }\n\n limiters() {\n var k, ref, results, v;\n ref = this.instances;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n results.push({\n key: k,\n limiter: v\n });\n }\n\n return results;\n }\n\n keys() {\n return Object.keys(this.instances);\n }\n\n clusterKeys() {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var cursor, end, found, i, k, keys, len, next, start;\n\n if (_this2.connection == null) {\n return _this2.Promise.resolve(_this2.keys());\n }\n\n keys = [];\n cursor = null;\n start = `b_${_this2.id}-`.length;\n end = \"_settings\".length;\n\n while (cursor !== 0) {\n var _ref = yield _this2.connection.__runCommand__([\"scan\", cursor != null ? cursor : 0, \"match\", `b_${_this2.id}-*_settings`, \"count\", 10000]);\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n next = _ref2[0];\n found = _ref2[1];\n cursor = ~~next;\n\n for (i = 0, len = found.length; i < len; i++) {\n k = found[i];\n keys.push(k.slice(start, -end));\n }\n }\n\n return keys;\n })();\n }\n\n _startAutoCleanup() {\n var _this3 = this;\n\n var base;\n clearInterval(this.interval);\n return typeof (base = this.interval = setInterval(\n /*#__PURE__*/\n _asyncToGenerator(function* () {\n var e, k, ref, results, time, v;\n time = Date.now();\n ref = _this3.instances;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n\n try {\n if (yield v._store.__groupCheck__(time)) {\n results.push(_this3.deleteKey(k));\n } else {\n results.push(void 0);\n }\n } catch (error) {\n e = error;\n results.push(v.Events.trigger(\"error\", e));\n }\n }\n\n return results;\n }), this.timeout / 2)).unref === \"function\" ? base.unref() : void 0;\n }\n\n updateSettings(options = {}) {\n parser.overwrite(options, this.defaults, this);\n parser.overwrite(options, options, this.limiterOptions);\n\n if (options.timeout != null) {\n return this._startAutoCleanup();\n }\n }\n\n disconnect(flush = true) {\n var ref;\n\n if (!this.sharedConnection) {\n return (ref = this.connection) != null ? ref.disconnect(flush) : void 0;\n }\n }\n\n }\n\n ;\n Group.prototype.defaults = {\n timeout: 1000 * 60 * 5,\n connection: null,\n Promise: Promise,\n id: \"group-key\"\n };\n return Group;\n}.call(void 0);\n\nmodule.exports = Group;","\"use strict\";\n\nvar Batcher, Events, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\n\nBatcher = function () {\n class Batcher {\n constructor(options = {}) {\n this.options = options;\n parser.load(this.options, this.defaults, this);\n this.Events = new Events(this);\n this._arr = [];\n\n this._resetPromise();\n\n this._lastFlush = Date.now();\n }\n\n _resetPromise() {\n return this._promise = new this.Promise((res, rej) => {\n return this._resolve = res;\n });\n }\n\n _flush() {\n clearTimeout(this._timeout);\n this._lastFlush = Date.now();\n\n this._resolve();\n\n this.Events.trigger(\"batch\", this._arr);\n this._arr = [];\n return this._resetPromise();\n }\n\n add(data) {\n var ret;\n\n this._arr.push(data);\n\n ret = this._promise;\n\n if (this._arr.length === this.maxSize) {\n this._flush();\n } else if (this.maxTime != null && this._arr.length === 1) {\n this._timeout = setTimeout(() => {\n return this._flush();\n }, this.maxTime);\n }\n\n return ret;\n }\n\n }\n\n ;\n Batcher.prototype.defaults = {\n maxTime: null,\n maxSize: null,\n Promise: Promise\n };\n return Batcher;\n}.call(void 0);\n\nmodule.exports = Batcher;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Bottleneck,\n DEFAULT_PRIORITY,\n Events,\n Job,\n LocalDatastore,\n NUM_PRIORITIES,\n Queues,\n RedisDatastore,\n States,\n Sync,\n parser,\n splice = [].splice;\nNUM_PRIORITIES = 10;\nDEFAULT_PRIORITY = 5;\nparser = require(\"./parser\");\nQueues = require(\"./Queues\");\nJob = require(\"./Job\");\nLocalDatastore = require(\"./LocalDatastore\");\nRedisDatastore = require(\"./RedisDatastore\");\nEvents = require(\"./Events\");\nStates = require(\"./States\");\nSync = require(\"./Sync\");\n\nBottleneck = function () {\n class Bottleneck {\n constructor(options = {}, ...invalid) {\n var storeInstanceOptions, storeOptions;\n this._addToQueue = this._addToQueue.bind(this);\n\n this._validateOptions(options, invalid);\n\n parser.load(options, this.instanceDefaults, this);\n this._queues = new Queues(NUM_PRIORITIES);\n this._scheduled = {};\n this._states = new States([\"RECEIVED\", \"QUEUED\", \"RUNNING\", \"EXECUTING\"].concat(this.trackDoneStatus ? [\"DONE\"] : []));\n this._limiter = null;\n this.Events = new Events(this);\n this._submitLock = new Sync(\"submit\", this.Promise);\n this._registerLock = new Sync(\"register\", this.Promise);\n storeOptions = parser.load(options, this.storeDefaults, {});\n\n this._store = function () {\n if (this.datastore === \"redis\" || this.datastore === \"ioredis\" || this.connection != null) {\n storeInstanceOptions = parser.load(options, this.redisStoreDefaults, {});\n return new RedisDatastore(this, storeOptions, storeInstanceOptions);\n } else if (this.datastore === \"local\") {\n storeInstanceOptions = parser.load(options, this.localStoreDefaults, {});\n return new LocalDatastore(this, storeOptions, storeInstanceOptions);\n } else {\n throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`);\n }\n }.call(this);\n\n this._queues.on(\"leftzero\", () => {\n var ref;\n return (ref = this._store.heartbeat) != null ? typeof ref.ref === \"function\" ? ref.ref() : void 0 : void 0;\n });\n\n this._queues.on(\"zero\", () => {\n var ref;\n return (ref = this._store.heartbeat) != null ? typeof ref.unref === \"function\" ? ref.unref() : void 0 : void 0;\n });\n }\n\n _validateOptions(options, invalid) {\n if (!(options != null && typeof options === \"object\" && invalid.length === 0)) {\n throw new Bottleneck.prototype.BottleneckError(\"Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.\");\n }\n }\n\n ready() {\n return this._store.ready;\n }\n\n clients() {\n return this._store.clients;\n }\n\n channel() {\n return `b_${this.id}`;\n }\n\n channel_client() {\n return `b_${this.id}_${this._store.clientId}`;\n }\n\n publish(message) {\n return this._store.__publish__(message);\n }\n\n disconnect(flush = true) {\n return this._store.__disconnect__(flush);\n }\n\n chain(_limiter) {\n this._limiter = _limiter;\n return this;\n }\n\n queued(priority) {\n return this._queues.queued(priority);\n }\n\n clusterQueued() {\n return this._store.__queued__();\n }\n\n empty() {\n return this.queued() === 0 && this._submitLock.isEmpty();\n }\n\n running() {\n return this._store.__running__();\n }\n\n done() {\n return this._store.__done__();\n }\n\n jobStatus(id) {\n return this._states.jobStatus(id);\n }\n\n jobs(status) {\n return this._states.statusJobs(status);\n }\n\n counts() {\n return this._states.statusCounts();\n }\n\n _randomIndex() {\n return Math.random().toString(36).slice(2);\n }\n\n check(weight = 1) {\n return this._store.__check__(weight);\n }\n\n _clearGlobalState(index) {\n if (this._scheduled[index] != null) {\n clearTimeout(this._scheduled[index].expiration);\n delete this._scheduled[index];\n return true;\n } else {\n return false;\n }\n }\n\n _free(index, job, options, eventInfo) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var e, running;\n\n try {\n var _ref = yield _this._store.__free__(index, options.weight);\n\n running = _ref.running;\n\n _this.Events.trigger(\"debug\", `Freed ${options.id}`, eventInfo);\n\n if (running === 0 && _this.empty()) {\n return _this.Events.trigger(\"idle\");\n }\n } catch (error1) {\n e = error1;\n return _this.Events.trigger(\"error\", e);\n }\n })();\n }\n\n _run(index, job, wait) {\n var clearGlobalState, free, run;\n job.doRun();\n clearGlobalState = this._clearGlobalState.bind(this, index);\n run = this._run.bind(this, index, job);\n free = this._free.bind(this, index, job);\n return this._scheduled[index] = {\n timeout: setTimeout(() => {\n return job.doExecute(this._limiter, clearGlobalState, run, free);\n }, wait),\n expiration: job.options.expiration != null ? setTimeout(function () {\n return job.doExpire(clearGlobalState, run, free);\n }, wait + job.options.expiration) : void 0,\n job: job\n };\n }\n\n _drainOne(capacity) {\n return this._registerLock.schedule(() => {\n var args, index, next, options, queue;\n\n if (this.queued() === 0) {\n return this.Promise.resolve(null);\n }\n\n queue = this._queues.getFirst();\n\n var _next2 = next = queue.first();\n\n options = _next2.options;\n args = _next2.args;\n\n if (capacity != null && options.weight > capacity) {\n return this.Promise.resolve(null);\n }\n\n this.Events.trigger(\"debug\", `Draining ${options.id}`, {\n args,\n options\n });\n index = this._randomIndex();\n return this._store.__register__(index, options.weight, options.expiration).then(({\n success,\n wait,\n reservoir\n }) => {\n var empty;\n this.Events.trigger(\"debug\", `Drained ${options.id}`, {\n success,\n args,\n options\n });\n\n if (success) {\n queue.shift();\n empty = this.empty();\n\n if (empty) {\n this.Events.trigger(\"empty\");\n }\n\n if (reservoir === 0) {\n this.Events.trigger(\"depleted\", empty);\n }\n\n this._run(index, next, wait);\n\n return this.Promise.resolve(options.weight);\n } else {\n return this.Promise.resolve(null);\n }\n });\n });\n }\n\n _drainAll(capacity, total = 0) {\n return this._drainOne(capacity).then(drained => {\n var newCapacity;\n\n if (drained != null) {\n newCapacity = capacity != null ? capacity - drained : capacity;\n return this._drainAll(newCapacity, total + drained);\n } else {\n return this.Promise.resolve(total);\n }\n }).catch(e => {\n return this.Events.trigger(\"error\", e);\n });\n }\n\n _dropAllQueued(message) {\n return this._queues.shiftAll(function (job) {\n return job.doDrop({\n message\n });\n });\n }\n\n stop(options = {}) {\n var done, waitForExecuting;\n options = parser.load(options, this.stopDefaults);\n\n waitForExecuting = at => {\n var finished;\n\n finished = () => {\n var counts;\n counts = this._states.counts;\n return counts[0] + counts[1] + counts[2] + counts[3] === at;\n };\n\n return new this.Promise((resolve, reject) => {\n if (finished()) {\n return resolve();\n } else {\n return this.on(\"done\", () => {\n if (finished()) {\n this.removeAllListeners(\"done\");\n return resolve();\n }\n });\n }\n });\n };\n\n done = options.dropWaitingJobs ? (this._run = function (index, next) {\n return next.doDrop({\n message: options.dropErrorMessage\n });\n }, this._drainOne = () => {\n return this.Promise.resolve(null);\n }, this._registerLock.schedule(() => {\n return this._submitLock.schedule(() => {\n var k, ref, v;\n ref = this._scheduled;\n\n for (k in ref) {\n v = ref[k];\n\n if (this.jobStatus(v.job.options.id) === \"RUNNING\") {\n clearTimeout(v.timeout);\n clearTimeout(v.expiration);\n v.job.doDrop({\n message: options.dropErrorMessage\n });\n }\n }\n\n this._dropAllQueued(options.dropErrorMessage);\n\n return waitForExecuting(0);\n });\n })) : this.schedule({\n priority: NUM_PRIORITIES - 1,\n weight: 0\n }, () => {\n return waitForExecuting(1);\n });\n\n this._receive = function (job) {\n return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage));\n };\n\n this.stop = () => {\n return this.Promise.reject(new Bottleneck.prototype.BottleneckError(\"stop() has already been called\"));\n };\n\n return done;\n }\n\n _addToQueue(job) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var args, blocked, error, options, reachedHWM, shifted, strategy;\n args = job.args;\n options = job.options;\n\n try {\n var _ref2 = yield _this2._store.__submit__(_this2.queued(), options.weight);\n\n reachedHWM = _ref2.reachedHWM;\n blocked = _ref2.blocked;\n strategy = _ref2.strategy;\n } catch (error1) {\n error = error1;\n\n _this2.Events.trigger(\"debug\", `Could not queue ${options.id}`, {\n args,\n options,\n error\n });\n\n job.doDrop({\n error\n });\n return false;\n }\n\n if (blocked) {\n job.doDrop();\n return true;\n } else if (reachedHWM) {\n shifted = strategy === Bottleneck.prototype.strategy.LEAK ? _this2._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? _this2._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0;\n\n if (shifted != null) {\n shifted.doDrop();\n }\n\n if (shifted == null || strategy === Bottleneck.prototype.strategy.OVERFLOW) {\n if (shifted == null) {\n job.doDrop();\n }\n\n return reachedHWM;\n }\n }\n\n job.doQueue(reachedHWM, blocked);\n\n _this2._queues.push(job);\n\n yield _this2._drainAll();\n return reachedHWM;\n })();\n }\n\n _receive(job) {\n if (this._states.jobStatus(job.options.id) != null) {\n job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`));\n\n return false;\n } else {\n job.doReceive();\n return this._submitLock.schedule(this._addToQueue, job);\n }\n }\n\n submit(...args) {\n var cb, fn, job, options, ref, ref1, task;\n\n if (typeof args[0] === \"function\") {\n var _ref3, _ref4, _splice$call, _splice$call2;\n\n ref = args, (_ref3 = ref, _ref4 = _toArray(_ref3), fn = _ref4[0], args = _ref4.slice(1), _ref3), (_splice$call = splice.call(args, -1), _splice$call2 = _slicedToArray(_splice$call, 1), cb = _splice$call2[0], _splice$call);\n options = parser.load({}, this.jobDefaults);\n } else {\n var _ref5, _ref6, _splice$call3, _splice$call4;\n\n ref1 = args, (_ref5 = ref1, _ref6 = _toArray(_ref5), options = _ref6[0], fn = _ref6[1], args = _ref6.slice(2), _ref5), (_splice$call3 = splice.call(args, -1), _splice$call4 = _slicedToArray(_splice$call3, 1), cb = _splice$call4[0], _splice$call3);\n options = parser.load(options, this.jobDefaults);\n }\n\n task = (...args) => {\n return new this.Promise(function (resolve, reject) {\n return fn(...args, function (...args) {\n return (args[0] != null ? reject : resolve)(args);\n });\n });\n };\n\n job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n job.promise.then(function (args) {\n return typeof cb === \"function\" ? cb(...args) : void 0;\n }).catch(function (args) {\n if (Array.isArray(args)) {\n return typeof cb === \"function\" ? cb(...args) : void 0;\n } else {\n return typeof cb === \"function\" ? cb(args) : void 0;\n }\n });\n return this._receive(job);\n }\n\n schedule(...args) {\n var job, options, task;\n\n if (typeof args[0] === \"function\") {\n var _args = args;\n\n var _args2 = _toArray(_args);\n\n task = _args2[0];\n args = _args2.slice(1);\n options = {};\n } else {\n var _args3 = args;\n\n var _args4 = _toArray(_args3);\n\n options = _args4[0];\n task = _args4[1];\n args = _args4.slice(2);\n }\n\n job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n\n this._receive(job);\n\n return job.promise;\n }\n\n wrap(fn) {\n var schedule, wrapped;\n schedule = this.schedule.bind(this);\n\n wrapped = function wrapped(...args) {\n return schedule(fn.bind(this), ...args);\n };\n\n wrapped.withOptions = function (options, ...args) {\n return schedule(options, fn, ...args);\n };\n\n return wrapped;\n }\n\n updateSettings(options = {}) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n yield _this3._store.__updateSettings__(parser.overwrite(options, _this3.storeDefaults));\n parser.overwrite(options, _this3.instanceDefaults, _this3);\n return _this3;\n })();\n }\n\n currentReservoir() {\n return this._store.__currentReservoir__();\n }\n\n incrementReservoir(incr = 0) {\n return this._store.__incrementReservoir__(incr);\n }\n\n }\n\n ;\n Bottleneck.default = Bottleneck;\n Bottleneck.Events = Events;\n Bottleneck.version = Bottleneck.prototype.version = require(\"./version.json\").version;\n Bottleneck.strategy = Bottleneck.prototype.strategy = {\n LEAK: 1,\n OVERFLOW: 2,\n OVERFLOW_PRIORITY: 4,\n BLOCK: 3\n };\n Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = require(\"./BottleneckError\");\n Bottleneck.Group = Bottleneck.prototype.Group = require(\"./Group\");\n Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = require(\"./RedisConnection\");\n Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = require(\"./IORedisConnection\");\n Bottleneck.Batcher = Bottleneck.prototype.Batcher = require(\"./Batcher\");\n Bottleneck.prototype.jobDefaults = {\n priority: DEFAULT_PRIORITY,\n weight: 1,\n expiration: null,\n id: \"\"\n };\n Bottleneck.prototype.storeDefaults = {\n maxConcurrent: null,\n minTime: 0,\n highWater: null,\n strategy: Bottleneck.prototype.strategy.LEAK,\n penalty: null,\n reservoir: null,\n reservoirRefreshInterval: null,\n reservoirRefreshAmount: null,\n reservoirIncreaseInterval: null,\n reservoirIncreaseAmount: null,\n reservoirIncreaseMaximum: null\n };\n Bottleneck.prototype.localStoreDefaults = {\n Promise: Promise,\n timeout: null,\n heartbeatInterval: 250\n };\n Bottleneck.prototype.redisStoreDefaults = {\n Promise: Promise,\n timeout: null,\n heartbeatInterval: 5000,\n clientTimeout: 10000,\n Redis: null,\n clientOptions: {},\n clusterNodes: null,\n clearDatastore: false,\n connection: null\n };\n Bottleneck.prototype.instanceDefaults = {\n datastore: \"local\",\n connection: null,\n id: \"\",\n rejectOnDrop: true,\n trackDoneStatus: false,\n Promise: Promise\n };\n Bottleneck.prototype.stopDefaults = {\n enqueueErrorMessage: \"This limiter has been stopped and cannot accept new jobs.\",\n dropWaitingJobs: true,\n dropErrorMessage: \"This limiter has been stopped.\"\n };\n return Bottleneck;\n}.call(void 0);\n\nmodule.exports = Bottleneck;","\"use strict\";\n\nmodule.exports = require(\"./Bottleneck\");",null,"'use strict';\n\nmodule.exports = value => {\n\tif (typeof Blob === 'undefined') {\n\t\treturn false;\n\t}\n\n\treturn value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n};\n","// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n",null,null],"names":["hasSymbolSham","toStr","bind","undefined","$TypeError","require$$0","hasOwn","GetIntrinsic","has","isArray","isRegExp","inspect","defaults","sideChannel","getSideChannel","parse","stringify","DLList","asyncGeneratorStep","_asyncToGenerator","Events","Queues","require$$1","BottleneckError","DEFAULT_PRIORITY","Job","NUM_PRIORITIES","parser","LocalDatastore","RedisConnection","Scripts","require$$2","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","IORedisConnection","RedisDatastore","require$$3","States","Sync","require$$4","require$$5","require$$6","require$$7","require$$9","require$$10","require$$11","require$$12","require$$13","isofetch","Bottleneck","qs","global","EventEmitter","WebSocket"],"mappings":"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"} \ No newline at end of file diff --git a/dist/alpaca.browser.min.js b/dist/alpaca.browser.min.js deleted file mode 100644 index d551eea..0000000 --- a/dist/alpaca.browser.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("util")):"function"==typeof define&&define.amd?define(["exports","util"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).alpaca={},e.require$$0$3)}(this,(function(exports,require$$0$3){"use strict";function _interopDefaultLegacy(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var require$$0__default=_interopDefaultLegacy(require$$0$3),shams=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var n=Object.getOwnPropertySymbols(e);if(1!==n.length||n[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0},origSymbol="undefined"!=typeof Symbol&&Symbol,hasSymbols$1=function(){return"function"==typeof origSymbol&&("function"==typeof Symbol&&("symbol"==typeof origSymbol("foo")&&("symbol"==typeof Symbol("bar")&&shams())))},ERROR_MESSAGE="Function.prototype.bind called on incompatible ",slice=Array.prototype.slice,toStr$1=Object.prototype.toString,funcType="[object Function]",implementation=function(e){var t=this;if("function"!=typeof t||toStr$1.call(t)!==funcType)throw new TypeError(ERROR_MESSAGE+t);for(var r,n=slice.call(arguments,1),i=function(){if(this instanceof r){var i=t.apply(this,n.concat(slice.call(arguments)));return Object(i)===i?i:this}return t.apply(e,n.concat(slice.call(arguments)))},s=Math.max(0,t.length-n.length),o=[],a=0;a1&&"boolean"!=typeof t)throw new $TypeError$1('"allowMissing" argument must be a boolean');var r=stringToPath(e),n=r.length>0?r[0]:"",i=getBaseIntrinsic("%"+n+"%",t),s=i.name,o=i.value,a=!1,c=i.alias;c&&(n=c[0],$spliceApply(r,$concat([0,1],c)));for(var l=1,u=!0;l=r.length){var y=$gOPD(o,p);o=(u=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:o[p]}else u=src(o,p),o=o[p];u&&!a&&(INTRINSICS[s]=o)}}return o},commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getAugmentedNamespace(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})})),t}function createCommonjsModule(e){var t={exports:{}};return e(t,t.exports),t.exports}var callBind=createCommonjsModule((function(e){var t=getIntrinsic("%Function.prototype.apply%"),r=getIntrinsic("%Function.prototype.call%"),n=getIntrinsic("%Reflect.apply%",!0)||functionBind.call(r,t),i=getIntrinsic("%Object.getOwnPropertyDescriptor%",!0),s=getIntrinsic("%Object.defineProperty%",!0),o=getIntrinsic("%Math.max%");if(s)try{s({},"a",{value:1})}catch(e){s=null}e.exports=function(e){var t=n(functionBind,r,arguments);if(i&&s){var a=i(t,"length");a.configurable&&s(t,"length",{value:1+o(0,e.length-(arguments.length-1))})}return t};var a=function(){return n(functionBind,t,arguments)};s?s(e.exports,"apply",{value:a}):e.exports.apply=a})),$indexOf=callBind(getIntrinsic("String.prototype.indexOf")),callBound=function(e,t){var r=getIntrinsic(e,!!t);return"function"==typeof r&&$indexOf(e,".prototype.")>-1?callBind(r):r},util_inspect=require$$0__default.default.inspect,hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,hasWeakMap="function"==typeof WeakMap&&WeakMap.prototype,weakMapHas=hasWeakMap?WeakMap.prototype.has:null,hasWeakSet="function"==typeof WeakSet&&WeakSet.prototype,weakSetHas=hasWeakSet?WeakSet.prototype.has:null,hasWeakRef="function"==typeof WeakRef&&WeakRef.prototype,weakRefDeref=hasWeakRef?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,match=String.prototype.match,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),inspectCustom=util_inspect.custom,inspectSymbol=inspectCustom&&isSymbol(inspectCustom)?inspectCustom:null,toStringTag="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null,objectInspect=function e(t,r,n,i){var s=r||{};if(has$3(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has$3(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=!has$3(s,"customInspect")||s.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has$3(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,s);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var a=void 0===s.depth?5:s.depth;if(void 0===n&&(n=0),n>=a&&a>0&&"object"==typeof t)return isArray$3(t)?"[Array]":"[Object]";var c=getIndent(s,n);if(void 0===i)i=[];else if(indexOf(i,t)>=0)return"[Circular]";function l(t,r,o){if(r&&(i=i.slice()).push(r),o){var a={depth:s.depth};return has$3(s,"quoteStyle")&&(a.quoteStyle=s.quoteStyle),e(t,a,n+1,i)}return e(t,s,n+1,i)}if("function"==typeof t){var u=nameOf(t),p=arrObjKeys(t,l);return"[Function"+(u?": "+u:" (anonymous)")+"]"+(p.length>0?" { "+p.join(", ")+" }":"")}if(isSymbol(t)){var d=hasShammedSymbols?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?d:markBoxed(d)}if(isElement(t)){for(var h="<"+String(t.nodeName).toLowerCase(),y=t.attributes||[],f=0;f"}if(isArray$3(t)){if(0===t.length)return"[]";var _=arrObjKeys(t,l);return c&&!singleLineValues(_)?"["+indentedJoin(_,c)+"]":"[ "+_.join(", ")+" ]"}if(isError(t)){var m=arrObjKeys(t,l);return 0===m.length?"["+String(t)+"]":"{ ["+String(t)+"] "+m.join(", ")+" }"}if("object"==typeof t&&o){if(inspectSymbol&&"function"==typeof t[inspectSymbol])return t[inspectSymbol]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(isMap(t)){var g=[];return mapForEach.call(t,(function(e,r){g.push(l(r,t,!0)+" => "+l(e,t))})),collectionOf("Map",mapSize.call(t),g,c)}if(isSet(t)){var v=[];return setForEach.call(t,(function(e){v.push(l(e,t))})),collectionOf("Set",setSize.call(t),v,c)}if(isWeakMap(t))return weakCollectionOf("WeakMap");if(isWeakSet(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber(t))return markBoxed(l(Number(t)));if(isBigInt(t))return markBoxed(l(bigIntValueOf.call(t)));if(isBoolean(t))return markBoxed(booleanValueOf.call(t));if(isString(t))return markBoxed(l(String(t)));if(!isDate(t)&&!isRegExp$1(t)){var b=arrObjKeys(t,l),w=gPO?gPO(t)===Object.prototype:t instanceof Object||t.constructor===Object,$=t instanceof Object?"":"null prototype",S=!w&&toStringTag&&Object(t)===t&&toStringTag in t?toStr(t).slice(8,-1):$?"Object":"",k=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(S||$?"["+[].concat(S||[],$||[]).join(": ")+"] ":"");return 0===b.length?k+"{}":c?k+"{"+indentedJoin(b,c)+"}":k+"{ "+b.join(", ")+" }"}return String(t)};function wrapQuotes(e,t,r){var n="double"===(r.quoteStyle||t)?'"':"'";return n+e+n}function quote(e){return String(e).replace(/"/g,""")}function isArray$3(e){return!("[object Array]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isDate(e){return!("[object Date]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isRegExp$1(e){return!("[object RegExp]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isError(e){return!("[object Error]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isString(e){return!("[object String]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isNumber(e){return!("[object Number]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isBoolean(e){return!("[object Boolean]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isSymbol(e){if(hasShammedSymbols)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!symToString)return!1;try{return symToString.call(e),!0}catch(e){}return!1}function isBigInt(e){if(!e||"object"!=typeof e||!bigIntValueOf)return!1;try{return bigIntValueOf.call(e),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(e){return e in this};function has$3(e,t){return hasOwn.call(e,t)}function toStr(e){return objectToString.call(e)}function nameOf(e){if(e.name)return e.name;var t=match.call(functionToString.call(e),/^function\s*([\w$]+)/);return t?t[1]:null}function indexOf(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,n=e.length;rt.maxStringLength){var r=e.length-t.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return inspectString(e.slice(0,t.maxStringLength),t)+n}return wrapQuotes(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,lowbyte),"single",t)}function lowbyte(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function markBoxed(e){return"Object("+e+")"}function weakCollectionOf(e){return e+" { ? }"}function collectionOf(e,t,r,n){return e+" ("+t+") {"+(n?indentedJoin(r,n):r.join(", "))+"}"}function singleLineValues(e){for(var t=0;t=0)return!1;return!0}function getIndent(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}function indentedJoin(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function arrObjKeys(e,t){var r=isArray$3(e),n=[];if(r){n.length=e.length;for(var i=0;i1;){var t=e.pop(),r=t.obj[t.prop];if(isArray$2(r)){for(var n=[],i=0;i=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||i===formats.RFC1738&&(40===c||41===c)?o+=s.charAt(a):c<128?o+=hexTable[c]:c<2048?o+=hexTable[192|c>>6]+hexTable[128|63&c]:c<55296||c>=57344?o+=hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&s.charCodeAt(a)),o+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|63&c])}return o},compact=function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],n=0;n0?_.join(",")||null:void 0}];else if(isArray$1(a))m=a;else{var v=Object.keys(_);m=c?v.sort(c):v}for(var b=0;b0?d+p:""},has=Object.prototype.hasOwnProperty,isArray=Array.isArray,defaults={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:utils.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},interpretNumericEntities=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},parseArrayValue=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function(e,t){var r,n={},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,s=t.parameterLimit===1/0?void 0:t.parameterLimit,o=i.split(t.delimiter,s),a=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r-1&&(u=isArray(u)?[u]:u),has.call(n,l)?n[l]=utils.combine(n[l],u):n[l]=u}return n},parseObject=function(e,t,r,n){for(var i=n?t:parseArrayValue(t,r),s=e.length-1;s>=0;--s){var o,a=e[s];if("[]"===a&&r.parseArrays)o=[].concat(i);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,l=parseInt(c,10);r.parseArrays||""!==c?!isNaN(l)&&a!==c&&String(l)===c&&l>=0&&r.parseArrays&&l<=r.arrayLimit?(o=[])[l]=i:o[c]=i:o={0:i}}i=o}return i},parseKeys=function(e,t,r,n){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/g,o=r.depth>0&&/(\[[^[\]]*])/.exec(i),a=o?i.slice(0,o.index):i,c=[];if(a){if(!r.plainObjects&&has.call(Object.prototype,a)&&!r.allowPrototypes)return;c.push(a)}for(var l=0;r.depth>0&&null!==(o=s.exec(i))&&le,buying_power:number(e.buying_power),regt_buying_power:number(e.regt_buying_power),daytrading_buying_power:number(e.daytrading_buying_power),cash:number(e.cash),created_at:new Date(e.created_at),portfolio_value:number(e.portfolio_value),multiplier:number(e.multiplier),equity:number(e.equity),last_equity:number(e.last_equity),long_market_value:number(e.long_market_value),short_market_value:number(e.short_market_value),initial_margin:number(e.initial_margin),maintenance_margin:number(e.maintenance_margin),last_maintenance_margin:number(e.last_maintenance_margin),sma:number(e.sma),status:e.status}}catch(e){throw new Error(`Account parsing failed. ${e.message}`)}}function clock(e){if(e)try{return{raw:()=>e,timestamp:new Date(e.timestamp),is_open:e.is_open,next_open:new Date(e.next_open),next_close:new Date(e.next_close)}}catch(e){throw new Error(`Order parsing failed. ${e.message}`)}}function latestTrade(e){if(e)try{return{...e,raw:()=>e,trade:{...e.trade,t:new Date(e.trade.t)}}}catch(e){throw new Error(`Latest trade parsing failed. ${e.message}`)}}function order(e){if(e)try{return{...e,raw:()=>e,created_at:new Date(e.created_at),updated_at:new Date(e.updated_at),submitted_at:new Date(e.submitted_at),filled_at:new Date(e.filled_at),expired_at:new Date(e.expired_at),canceled_at:new Date(e.canceled_at),failed_at:new Date(e.failed_at),replaced_at:new Date(e.replaced_at),qty:number(e.qty),filled_qty:number(e.filled_qty),type:e.type,side:e.side,time_in_force:e.time_in_force,limit_price:number(e.limit_price),stop_price:number(e.stop_price),filled_avg_price:number(e.filled_avg_price),status:e.status,legs:orders(e.legs),trail_price:number(e.trail_price),trail_percent:number(e.trail_percent),hwm:number(e.hwm),order_class:e.order_class}}catch(e){throw new Error(`Order parsing failed. ${e.message}`)}}function orders(e){return e?e.map((e=>order(e))):void 0}function canceled_order(e){if(!e)return;let t=e.body;delete e.body;try{return{...e,order:{...t,raw:()=>t,created_at:new Date(t.created_at),updated_at:new Date(t.updated_at),submitted_at:new Date(t.submitted_at),filled_at:new Date(t.filled_at),expired_at:new Date(t.expired_at),canceled_at:new Date(t.canceled_at),failed_at:new Date(t.failed_at),replaced_at:new Date(t.replaced_at),qty:number(t.qty),filled_qty:number(t.filled_qty),type:t.type,side:t.side,time_in_force:t.time_in_force,limit_price:number(t.limit_price),stop_price:number(t.stop_price),filled_avg_price:number(t.filled_avg_price),status:t.status,legs:orders(t.legs),trail_price:number(t.trail_price),trail_percent:number(t.trail_percent),hwm:number(t.hwm),order_class:t.order_class}}}catch(e){throw new Error(`Order parsing failed. ${e.message}`)}}function canceled_orders(e){return e?e.map((e=>canceled_order(e))):void 0}function position(e){if(e)try{return{...e,raw:()=>e,avg_entry_price:number(e.avg_entry_price),qty:number(e.qty),side:e.side,market_value:number(e.market_value),cost_basis:number(e.cost_basis),unrealized_pl:number(e.unrealized_pl),unrealized_plpc:number(e.unrealized_plpc),unrealized_intraday_pl:number(e.unrealized_intraday_pl),unrealized_intraday_plpc:number(e.unrealized_intraday_plpc),current_price:number(e.current_price),lastday_price:number(e.lastday_price),change_today:number(e.change_today)}}catch(e){throw new Error(`Position parsing failed. ${e.message}`)}}function positions(e){return e?e.map((e=>position(e))):void 0}function tradeActivity(e){if(e)try{return{...e,raw:()=>e,cum_qty:number(e.cum_qty),leaves_qty:number(e.leaves_qty),price:number(e.price),qty:number(e.qty),side:e.side,type:e.type}}catch(e){throw new Error(`TradeActivity parsing failed. ${e.message}`)}}function nonTradeActivity(e){if(e)try{return{...e,raw:()=>e,net_amount:number(e.net_amount),qty:number(e.qty),per_share_amount:number(e.per_share_amount)}}catch(e){throw new Error(`NonTradeActivity parsing failed. ${e.message}`)}}function activities(e){if(e)try{return e.map((e=>"FILL"===e.activity_type?tradeActivity(e):nonTradeActivity(e)))}catch(e){throw new Error(`Activity parsing failed. ${e.message}`)}}function pageOfTrades(e){if(e)try{return{raw:()=>e,trades:(null==e.trades?[]:e.trades).map((e=>({raw:()=>e,...e,t:new Date(e.t)}))),symbol:e.symbol,next_page_token:e.next_page_token}}catch(e){throw new Error(`PageOfTrades parsing failed "${e.message}"`)}}function pageOfQuotes(e){if(e)try{return{raw:()=>e,quotes:(null==e.quotes?[]:e.quotes).map((e=>({raw:()=>e,...e,t:new Date(e.t)}))),symbol:e.symbol,next_page_token:e.next_page_token}}catch(e){throw new Error(`PageOfTrades parsing failed "${e.message}"`)}}function pageOfBars(e){if(e)try{return{raw:()=>e,bars:(null==e.bars?[]:e.bars).map((e=>({raw:()=>e,...e,t:new Date(e.t)}))),symbol:e.symbol,next_page_token:e.next_page_token}}catch(e){throw new Error(`PageOfTrades parsing failed "${e.message}"`)}}function snapshot(e){if(e)try{return{...e,raw:()=>e,latestTrade:e.latestTrade?{...e.latestTrade,t:new Date(e.latestTrade.t)}:null,latestQuote:e.latestQuote?{...e.latestQuote,t:new Date(e.latestQuote.t)}:null,minuteBar:e.minuteBar?{...e.minuteBar,t:new Date(e.minuteBar.t)}:null,dailyBar:e.dailyBar?{...e.dailyBar,t:new Date(e.dailyBar.t)}:null,prevDailyBar:e.prevDailyBar?{...e.prevDailyBar,t:new Date(e.prevDailyBar.t)}:null}}catch(e){throw new Error(`Snapshot parsing failed "${e.message}"`)}}function snapshots(e){let t={};for(let[r,n]of Object.entries(e))t[r]=snapshot(n);return t}function number(e){if(void 0===e||null==e)return e;const t=parseFloat(e);return Number.isNaN(t)?null:t}function trade_update(e){if(e)return{raw:()=>e,event:e.event,execution_id:e.execution_id,order:order(e.order),...e.event_id&&{event_id:number(e.event_id)},...e.at&&{at:new Date(e.at)},...e.timestamp&&{timestamp:new Date(e.timestamp)},...e.position_qty&&{position_qty:number(e.position_qty)},...e.price&&{price:number(e.price)},...e.qty&&{qty:number(e.qty)}}}var parse={account:account,activities:activities,clock:clock,nonTradeActivity:nonTradeActivity,order:order,orders:orders,canceled_orders:canceled_orders,position:position,positions:positions,tradeActivity:tradeActivity,pageOfTrades:pageOfTrades,pageOfQuotes:pageOfQuotes,pageOfBars:pageOfBars,snapshot:snapshot,snapshots:snapshots,trade_update:trade_update,latestTrade:latestTrade};function unfetch_module(e,t){return t=t||{},new Promise((function(r,n){var i=new XMLHttpRequest,s=[],o=[],a={},c=function(){return{ok:2==(i.status/100|0),statusText:i.statusText,status:i.status,url:i.responseURL,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},clone:c,headers:{keys:function(){return s},entries:function(){return o},get:function(e){return a[e.toLowerCase()]},has:function(e){return e.toLowerCase()in a}}}};for(var l in i.open(t.method||"get",e,!0),i.onload=function(){i.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,r){s.push(t=t.toLowerCase()),o.push([t,r]),a[t]=a[t]?a[t]+","+r:r})),r(c())},i.onerror=n,i.withCredentials="include"==t.credentials,t.headers)i.setRequestHeader(l,t.headers[l]);i.send(t.body||null)}))}var unfetch_module$1=Object.freeze({__proto__:null,default:unfetch_module}),require$$0$2=getAugmentedNamespace(unfetch_module$1),browser$1=self.fetch||(self.fetch=require$$0$2.default||require$$0$2);const endpoints={rest:{beta:"https://data.alpaca.markets/v1beta1",account:"https://api.alpaca.markets/v2",market_data_v2:"https://data.alpaca.markets/v2",market_data_v1:"https://data.alpaca.markets/v1"},websocket:{account:"wss://api.alpaca.markets/stream",market_data:(e="iex")=>`wss://stream.data.alpaca.markets/v2/${e}`}};var load=function(e,t,r={}){var n,i,s;for(n in t)s=t[n],r[n]=null!=(i=e[n])?i:s;return r},overwrite=function(e,t,r={}){var n,i;for(n in e)i=e[n],void 0!==t[n]&&(r[n]=i);return r},parser$8={load:load,overwrite:overwrite},DLList$2;DLList$2=class{constructor(e,t){this.incr=e,this.decr=t,this._first=null,this._last=null,this.length=0}push(e){var t;this.length++,"function"==typeof this.incr&&this.incr(),t={value:e,prev:this._last,next:null},null!=this._last?(this._last.next=t,this._last=t):this._first=this._last=t}shift(){var e;if(null!=this._first)return this.length--,"function"==typeof this.decr&&this.decr(),e=this._first.value,null!=(this._first=this._first.next)?this._first.prev=null:this._last=null,e}first(){if(null!=this._first)return this._first.value}getArray(){var e,t,r;for(e=this._first,r=[];null!=e;)r.push((t=e,e=e.next,t.value));return r}forEachShift(e){var t;for(t=this.shift();null!=t;)e(t),t=this.shift()}debug(){var e,t,r,n,i;for(e=this._first,i=[];null!=e;)i.push((t=e,e=e.next,{value:t.value,prev:null!=(r=t.prev)?r.value:void 0,next:null!=(n=t.next)?n.value:void 0}));return i}};var DLList_1=DLList$2,Events$6;function asyncGeneratorStep$8(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$8(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$8(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$8(s,n,i,o,a,"throw",e)}o(void 0)}))}}Events$6=class{constructor(e){if(this.instance=e,this._events={},null!=this.instance.on||null!=this.instance.once||null!=this.instance.removeAllListeners)throw new Error("An Emitter already exists for this object");this.instance.on=(e,t)=>this._addListener(e,"many",t),this.instance.once=(e,t)=>this._addListener(e,"once",t),this.instance.removeAllListeners=(e=null)=>null!=e?delete this._events[e]:this._events={}}_addListener(e,t,r){var n;return null==(n=this._events)[e]&&(n[e]=[]),this._events[e].push({cb:r,status:t}),this.instance}listenerCount(e){return null!=this._events[e]?this._events[e].length:0}trigger(e,...t){var r=this;return _asyncToGenerator$8((function*(){var n,i;try{if("debug"!==e&&r.trigger("debug",`Event triggered: ${e}`,t),null==r._events[e])return;return r._events[e]=r._events[e].filter((function(e){return"none"!==e.status})),i=r._events[e].map(function(){var e=_asyncToGenerator$8((function*(e){var n,i;if("none"!==e.status){"once"===e.status&&(e.status="none");try{return"function"==typeof(null!=(i="function"==typeof e.cb?e.cb(...t):void 0)?i.then:void 0)?yield i:i}catch(e){return n=e,r.trigger("error",n),null}}}));return function(t){return e.apply(this,arguments)}}()),(yield Promise.all(i)).find((function(e){return null!=e}))}catch(e){return n=e,r.trigger("error",n),null}}))()}};var Events_1=Events$6,DLList$1,Events$5,Queues$1;DLList$1=DLList_1,Events$5=Events_1,Queues$1=class{constructor(e){this.Events=new Events$5(this),this._length=0,this._lists=function(){var t,r,n;for(n=[],t=1,r=e;1<=r?t<=r:t>=r;1<=r?++t:--t)n.push(new DLList$1((()=>this.incr()),(()=>this.decr())));return n}.call(this)}incr(){if(0==this._length++)return this.Events.trigger("leftzero")}decr(){if(0==--this._length)return this.Events.trigger("zero")}push(e){return this._lists[e.options.priority].push(e)}queued(e){return null!=e?this._lists[e].length:this._length}shiftAll(e){return this._lists.forEach((function(t){return t.forEachShift(e)}))}getFirst(e=this._lists){var t,r,n;for(t=0,r=e.length;t0)return n;return[]}shiftLastFrom(e){return this.getFirst(this._lists.slice(e).reverse()).shift()}};var Queues_1=Queues$1,BottleneckError$4;BottleneckError$4=class extends Error{};var BottleneckError_1=BottleneckError$4,BottleneckError$3,DEFAULT_PRIORITY$1,Job$1,NUM_PRIORITIES$1,parser$7;function asyncGeneratorStep$7(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$7(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$7(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$7(s,n,i,o,a,"throw",e)}o(void 0)}))}}NUM_PRIORITIES$1=10,DEFAULT_PRIORITY$1=5,parser$7=parser$8,BottleneckError$3=BottleneckError_1,Job$1=class{constructor(e,t,r,n,i,s,o,a){this.task=e,this.args=t,this.rejectOnDrop=i,this.Events=s,this._states=o,this.Promise=a,this.options=parser$7.load(r,n),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===n.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise(((e,t)=>{this._resolve=e,this._reject=t})),this.retryCount=0}_sanitizePriority(e){var t;return(t=~~e!==e?DEFAULT_PRIORITY$1:e)<0?0:t>NUM_PRIORITIES$1-1?NUM_PRIORITIES$1-1:t}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:e,message:t="This job has been dropped by Bottleneck"}={}){return!!this._states.remove(this.options.id)&&(this.rejectOnDrop&&this._reject(null!=e?e:new BottleneckError$3(t)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0)}_assertStatus(e){var t;if((t=this._states.jobStatus(this.options.id))!==e&&("DONE"!==e||null!==t))throw new BottleneckError$3(`Invalid job status ${t}, expected ${e}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(e,t){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:e,blocked:t})}doRun(){return 0===this.retryCount?(this._assertStatus("QUEUED"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),this.Events.trigger("scheduled",{args:this.args,options:this.options})}doExecute(e,t,r,n){var i=this;return _asyncToGenerator$7((function*(){var s,o,a;0===i.retryCount?(i._assertStatus("RUNNING"),i._states.next(i.options.id)):i._assertStatus("EXECUTING"),o={args:i.args,options:i.options,retryCount:i.retryCount},i.Events.trigger("executing",o);try{if(a=yield null!=e?e.schedule(i.options,i.task,...i.args):i.task(...i.args),t())return i.doDone(o),yield n(i.options,o),i._assertStatus("DONE"),i._resolve(a)}catch(e){return s=e,i._onFailure(s,o,t,r,n)}}))()}doExpire(e,t,r){var n,i;return this._states.jobStatus("RUNNING"===this.options.id)&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),i={args:this.args,options:this.options,retryCount:this.retryCount},n=new BottleneckError$3(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(n,i,e,t,r)}_onFailure(e,t,r,n,i){var s=this;return _asyncToGenerator$7((function*(){var o,a;if(r())return null!=(o=yield s.Events.trigger("failed",e,t))?(a=~~o,s.Events.trigger("retry",`Retrying ${s.options.id} after ${a} ms`,t),s.retryCount++,n(a)):(s.doDone(t),yield i(s.options,t),s._assertStatus("DONE"),s._reject(e))}))()}doDone(e){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",e)}};var Job_1=Job$1,BottleneckError$2,LocalDatastore$1,parser$6;function asyncGeneratorStep$6(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$6(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$6(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$6(s,n,i,o,a,"throw",e)}o(void 0)}))}}parser$6=parser$8,BottleneckError$2=BottleneckError_1,LocalDatastore$1=class{constructor(e,t,r){this.instance=e,this.storeOptions=t,this.clientId=this.instance._randomIndex(),parser$6.load(r,r,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var e;return null==this.heartbeat&&(null!=this.storeOptions.reservoirRefreshInterval&&null!=this.storeOptions.reservoirRefreshAmount||null!=this.storeOptions.reservoirIncreaseInterval&&null!=this.storeOptions.reservoirIncreaseAmount)?"function"==typeof(e=this.heartbeat=setInterval((()=>{var e,t,r,n,i;if(n=Date.now(),null!=this.storeOptions.reservoirRefreshInterval&&n>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=n,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),null!=this.storeOptions.reservoirIncreaseInterval&&n>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval){var s=this.storeOptions;if(e=s.reservoirIncreaseAmount,r=s.reservoirIncreaseMaximum,i=s.reservoir,this._lastReservoirIncrease=n,(t=null!=r?Math.min(e,r-i):e)>0)return this.storeOptions.reservoir+=t,this.instance._drainAll(this.computeCapacity())}}),this.heartbeatInterval)).unref?e.unref():void 0:clearInterval(this.heartbeat)}__publish__(e){var t=this;return _asyncToGenerator$6((function*(){return yield t.yieldLoop(),t.instance.Events.trigger("message",e.toString())}))()}__disconnect__(e){var t=this;return _asyncToGenerator$6((function*(){return yield t.yieldLoop(),clearInterval(t.heartbeat),t.Promise.resolve()}))()}yieldLoop(e=0){return new this.Promise((function(t,r){return setTimeout(t,e)}))}computePenalty(){var e;return null!=(e=this.storeOptions.penalty)?e:15*this.storeOptions.minTime||5e3}__updateSettings__(e){var t=this;return _asyncToGenerator$6((function*(){return yield t.yieldLoop(),parser$6.overwrite(e,e,t.storeOptions),t._startHeartbeat(),t.instance._drainAll(t.computeCapacity()),!0}))()}__running__(){var e=this;return _asyncToGenerator$6((function*(){return yield e.yieldLoop(),e._running}))()}__queued__(){var e=this;return _asyncToGenerator$6((function*(){return yield e.yieldLoop(),e.instance.queued()}))()}__done__(){var e=this;return _asyncToGenerator$6((function*(){return yield e.yieldLoop(),e._done}))()}__groupCheck__(e){var t=this;return _asyncToGenerator$6((function*(){return yield t.yieldLoop(),t._nextRequest+t.timeout=e}check(e,t){return this.conditionsCheck(e)&&this._nextRequest-t<=0}__check__(e){var t=this;return _asyncToGenerator$6((function*(){var r;return yield t.yieldLoop(),r=Date.now(),t.check(e,r)}))()}__register__(e,t,r){var n=this;return _asyncToGenerator$6((function*(){var e,r;return yield n.yieldLoop(),e=Date.now(),n.conditionsCheck(t)?(n._running+=t,null!=n.storeOptions.reservoir&&(n.storeOptions.reservoir-=t),r=Math.max(n._nextRequest-e,0),n._nextRequest=e+r+n.storeOptions.minTime,{success:!0,wait:r,reservoir:n.storeOptions.reservoir}):{success:!1}}))()}strategyIsBlock(){return 3===this.storeOptions.strategy}__submit__(e,t){var r=this;return _asyncToGenerator$6((function*(){var n,i,s;if(yield r.yieldLoop(),null!=r.storeOptions.maxConcurrent&&t>r.storeOptions.maxConcurrent)throw new BottleneckError$2(`Impossible to add a job having a weight of ${t} to a limiter having a maxConcurrent setting of ${r.storeOptions.maxConcurrent}`);return i=Date.now(),s=null!=r.storeOptions.highWater&&e===r.storeOptions.highWater&&!r.check(t,i),(n=r.strategyIsBlock()&&(s||r.isBlocked(i)))&&(r._unblockTime=i+r.computePenalty(),r._nextRequest=r._unblockTime+r.storeOptions.minTime,r.instance._dropAllQueued()),{reachedHWM:s,blocked:n,strategy:r.storeOptions.strategy}}))()}__free__(e,t){var r=this;return _asyncToGenerator$6((function*(){return yield r.yieldLoop(),r._running-=t,r._done+=t,r.instance._drainAll(r.computeCapacity()),{running:r._running}}))()}};var LocalDatastore_1=LocalDatastore$1,require$$0$1={"blacklist_client.lua":"local blacklist = ARGV[num_static_argv + 1]\n\nif redis.call('zscore', client_last_seen_key, blacklist) then\n redis.call('zadd', client_last_seen_key, 0, blacklist)\nend\n\n\nreturn {}\n","check.lua":"local weight = tonumber(ARGV[num_static_argv + 1])\n\nlocal capacity = process_tick(now, false)['capacity']\nlocal nextRequest = tonumber(redis.call('hget', settings_key, 'nextRequest'))\n\nreturn conditions_check(capacity, weight) and nextRequest - now <= 0\n","conditions_check.lua":"local conditions_check = function (capacity, weight)\n return capacity == nil or weight <= capacity\nend\n","current_reservoir.lua":"return process_tick(now, false)['reservoir']\n","done.lua":"process_tick(now, false)\n\nreturn tonumber(redis.call('hget', settings_key, 'done'))\n","free.lua":"local index = ARGV[num_static_argv + 1]\n\nredis.call('zadd', job_expirations_key, 0, index)\n\nreturn process_tick(now, false)['running']\n","get_time.lua":"redis.replicate_commands()\n\nlocal get_time = function ()\n local time = redis.call('time')\n\n return tonumber(time[1]..string.sub(time[2], 1, 3))\nend\n","group_check.lua":"return not (redis.call('exists', settings_key) == 1)\n","heartbeat.lua":"process_tick(now, true)\n","increment_reservoir.lua":"local incr = tonumber(ARGV[num_static_argv + 1])\n\nredis.call('hincrby', settings_key, 'reservoir', incr)\n\nlocal reservoir = process_tick(now, true)['reservoir']\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn reservoir\n","init.lua":"local clear = tonumber(ARGV[num_static_argv + 1])\nlocal limiter_version = ARGV[num_static_argv + 2]\nlocal num_local_argv = num_static_argv + 2\n\nif clear == 1 then\n redis.call('del', unpack(KEYS))\nend\n\nif redis.call('exists', settings_key) == 0 then\n -- Create\n local args = {'hmset', settings_key}\n\n for i = num_local_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\n end\n\n redis.call(unpack(args))\n redis.call('hmset', settings_key,\n 'nextRequest', now,\n 'lastReservoirRefresh', now,\n 'lastReservoirIncrease', now,\n 'running', 0,\n 'done', 0,\n 'unblockTime', 0,\n 'capacityPriorityCounter', 0\n )\n\nelse\n -- Apply migrations\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'version'\n )\n local id = settings[1]\n local current_version = settings[2]\n\n if current_version ~= limiter_version then\n local version_digits = {}\n for k, v in string.gmatch(current_version, \"([^.]+)\") do\n table.insert(version_digits, tonumber(k))\n end\n\n -- 2.10.0\n if version_digits[2] < 10 then\n redis.call('hsetnx', settings_key, 'reservoirRefreshInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirRefreshAmount', '')\n redis.call('hsetnx', settings_key, 'lastReservoirRefresh', '')\n redis.call('hsetnx', settings_key, 'done', 0)\n redis.call('hset', settings_key, 'version', '2.10.0')\n end\n\n -- 2.11.1\n if version_digits[2] < 11 or (version_digits[2] == 11 and version_digits[3] < 1) then\n if redis.call('hstrlen', settings_key, 'lastReservoirRefresh') == 0 then\n redis.call('hmset', settings_key,\n 'lastReservoirRefresh', now,\n 'version', '2.11.1'\n )\n end\n end\n\n -- 2.14.0\n if version_digits[2] < 14 then\n local old_running_key = 'b_'..id..'_running'\n local old_executing_key = 'b_'..id..'_executing'\n\n if redis.call('exists', old_running_key) == 1 then\n redis.call('rename', old_running_key, job_weights_key)\n end\n if redis.call('exists', old_executing_key) == 1 then\n redis.call('rename', old_executing_key, job_expirations_key)\n end\n redis.call('hset', settings_key, 'version', '2.14.0')\n end\n\n -- 2.15.2\n if version_digits[2] < 15 or (version_digits[2] == 15 and version_digits[3] < 2) then\n redis.call('hsetnx', settings_key, 'capacityPriorityCounter', 0)\n redis.call('hset', settings_key, 'version', '2.15.2')\n end\n\n -- 2.17.0\n if version_digits[2] < 17 then\n redis.call('hsetnx', settings_key, 'clientTimeout', 10000)\n redis.call('hset', settings_key, 'version', '2.17.0')\n end\n\n -- 2.18.0\n if version_digits[2] < 18 then\n redis.call('hsetnx', settings_key, 'reservoirIncreaseInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseAmount', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseMaximum', '')\n redis.call('hsetnx', settings_key, 'lastReservoirIncrease', now)\n redis.call('hset', settings_key, 'version', '2.18.0')\n end\n\n end\n\n process_tick(now, false)\nend\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n","process_tick.lua":"local process_tick = function (now, always_publish)\n\n local compute_capacity = function (maxConcurrent, running, reservoir)\n if maxConcurrent ~= nil and reservoir ~= nil then\n return math.min((maxConcurrent - running), reservoir)\n elseif maxConcurrent ~= nil then\n return maxConcurrent - running\n elseif reservoir ~= nil then\n return reservoir\n else\n return nil\n end\n end\n\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'running',\n 'reservoir',\n 'reservoirRefreshInterval',\n 'reservoirRefreshAmount',\n 'lastReservoirRefresh',\n 'reservoirIncreaseInterval',\n 'reservoirIncreaseAmount',\n 'reservoirIncreaseMaximum',\n 'lastReservoirIncrease',\n 'capacityPriorityCounter',\n 'clientTimeout'\n )\n local id = settings[1]\n local maxConcurrent = tonumber(settings[2])\n local running = tonumber(settings[3])\n local reservoir = tonumber(settings[4])\n local reservoirRefreshInterval = tonumber(settings[5])\n local reservoirRefreshAmount = tonumber(settings[6])\n local lastReservoirRefresh = tonumber(settings[7])\n local reservoirIncreaseInterval = tonumber(settings[8])\n local reservoirIncreaseAmount = tonumber(settings[9])\n local reservoirIncreaseMaximum = tonumber(settings[10])\n local lastReservoirIncrease = tonumber(settings[11])\n local capacityPriorityCounter = tonumber(settings[12])\n local clientTimeout = tonumber(settings[13])\n\n local initial_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n --\n -- Process 'running' changes\n --\n local expired = redis.call('zrangebyscore', job_expirations_key, '-inf', '('..now)\n\n if #expired > 0 then\n redis.call('zremrangebyscore', job_expirations_key, '-inf', '('..now)\n\n local flush_batch = function (batch, acc)\n local weights = redis.call('hmget', job_weights_key, unpack(batch))\n redis.call('hdel', job_weights_key, unpack(batch))\n local clients = redis.call('hmget', job_clients_key, unpack(batch))\n redis.call('hdel', job_clients_key, unpack(batch))\n\n -- Calculate sum of removed weights\n for i = 1, #weights do\n acc['total'] = acc['total'] + (tonumber(weights[i]) or 0)\n end\n\n -- Calculate sum of removed weights by client\n local client_weights = {}\n for i = 1, #clients do\n local removed = tonumber(weights[i]) or 0\n if removed > 0 then\n acc['client_weights'][clients[i]] = (acc['client_weights'][clients[i]] or 0) + removed\n end\n end\n end\n\n local acc = {\n ['total'] = 0,\n ['client_weights'] = {}\n }\n local batch_size = 1000\n\n -- Compute changes to Zsets and apply changes to Hashes\n for i = 1, #expired, batch_size do\n local batch = {}\n for j = i, math.min(i + batch_size - 1, #expired) do\n table.insert(batch, expired[j])\n end\n\n flush_batch(batch, acc)\n end\n\n -- Apply changes to Zsets\n if acc['total'] > 0 then\n redis.call('hincrby', settings_key, 'done', acc['total'])\n running = tonumber(redis.call('hincrby', settings_key, 'running', -acc['total']))\n end\n\n for client, weight in pairs(acc['client_weights']) do\n redis.call('zincrby', client_running_key, -weight, client)\n end\n end\n\n --\n -- Process 'reservoir' changes\n --\n local reservoirRefreshActive = reservoirRefreshInterval ~= nil and reservoirRefreshAmount ~= nil\n if reservoirRefreshActive and now >= lastReservoirRefresh + reservoirRefreshInterval then\n reservoir = reservoirRefreshAmount\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirRefresh', now\n )\n end\n\n local reservoirIncreaseActive = reservoirIncreaseInterval ~= nil and reservoirIncreaseAmount ~= nil\n if reservoirIncreaseActive and now >= lastReservoirIncrease + reservoirIncreaseInterval then\n local num_intervals = math.floor((now - lastReservoirIncrease) / reservoirIncreaseInterval)\n local incr = reservoirIncreaseAmount * num_intervals\n if reservoirIncreaseMaximum ~= nil then\n incr = math.min(incr, reservoirIncreaseMaximum - (reservoir or 0))\n end\n if incr > 0 then\n reservoir = (reservoir or 0) + incr\n end\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirIncrease', lastReservoirIncrease + (num_intervals * reservoirIncreaseInterval)\n )\n end\n\n --\n -- Clear unresponsive clients\n --\n local unresponsive = redis.call('zrangebyscore', client_last_seen_key, '-inf', (now - clientTimeout))\n local unresponsive_lookup = {}\n local terminated_clients = {}\n for i = 1, #unresponsive do\n unresponsive_lookup[unresponsive[i]] = true\n if tonumber(redis.call('zscore', client_running_key, unresponsive[i])) == 0 then\n table.insert(terminated_clients, unresponsive[i])\n end\n end\n if #terminated_clients > 0 then\n redis.call('zrem', client_running_key, unpack(terminated_clients))\n redis.call('hdel', client_num_queued_key, unpack(terminated_clients))\n redis.call('zrem', client_last_registered_key, unpack(terminated_clients))\n redis.call('zrem', client_last_seen_key, unpack(terminated_clients))\n end\n\n --\n -- Broadcast capacity changes\n --\n local final_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n if always_publish or (initial_capacity ~= nil and final_capacity == nil) then\n -- always_publish or was not unlimited, now unlimited\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n\n elseif initial_capacity ~= nil and final_capacity ~= nil and final_capacity > initial_capacity then\n -- capacity was increased\n -- send the capacity message to the limiter having the lowest number of running jobs\n -- the tiebreaker is the limiter having not registered a job in the longest time\n\n local lowest_concurrency_value = nil\n local lowest_concurrency_clients = {}\n local lowest_concurrency_last_registered = {}\n local client_concurrencies = redis.call('zrange', client_running_key, 0, -1, 'withscores')\n\n for i = 1, #client_concurrencies, 2 do\n local client = client_concurrencies[i]\n local concurrency = tonumber(client_concurrencies[i+1])\n\n if (\n lowest_concurrency_value == nil or lowest_concurrency_value == concurrency\n ) and (\n not unresponsive_lookup[client]\n ) and (\n tonumber(redis.call('hget', client_num_queued_key, client)) > 0\n ) then\n lowest_concurrency_value = concurrency\n table.insert(lowest_concurrency_clients, client)\n local last_registered = tonumber(redis.call('zscore', client_last_registered_key, client))\n table.insert(lowest_concurrency_last_registered, last_registered)\n end\n end\n\n if #lowest_concurrency_clients > 0 then\n local position = 1\n local earliest = lowest_concurrency_last_registered[1]\n\n for i,v in ipairs(lowest_concurrency_last_registered) do\n if v < earliest then\n position = i\n earliest = v\n end\n end\n\n local next_client = lowest_concurrency_clients[position]\n redis.call('publish', 'b_'..id,\n 'capacity-priority:'..(final_capacity or '')..\n ':'..next_client..\n ':'..capacityPriorityCounter\n )\n redis.call('hincrby', settings_key, 'capacityPriorityCounter', '1')\n else\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n end\n end\n\n return {\n ['capacity'] = final_capacity,\n ['running'] = running,\n ['reservoir'] = reservoir\n }\nend\n","queued.lua":"local clientTimeout = tonumber(redis.call('hget', settings_key, 'clientTimeout'))\nlocal valid_clients = redis.call('zrangebyscore', client_last_seen_key, (now - clientTimeout), 'inf')\nlocal client_queued = redis.call('hmget', client_num_queued_key, unpack(valid_clients))\n\nlocal sum = 0\nfor i = 1, #client_queued do\n sum = sum + tonumber(client_queued[i])\nend\n\nreturn sum\n","refresh_expiration.lua":"local refresh_expiration = function (now, nextRequest, groupTimeout)\n\n if groupTimeout ~= nil then\n local ttl = (nextRequest + groupTimeout) - now\n\n for i = 1, #KEYS do\n redis.call('pexpire', KEYS[i], ttl)\n end\n end\n\nend\n","refs.lua":"local settings_key = KEYS[1]\nlocal job_weights_key = KEYS[2]\nlocal job_expirations_key = KEYS[3]\nlocal job_clients_key = KEYS[4]\nlocal client_running_key = KEYS[5]\nlocal client_num_queued_key = KEYS[6]\nlocal client_last_registered_key = KEYS[7]\nlocal client_last_seen_key = KEYS[8]\n\nlocal now = tonumber(ARGV[1])\nlocal client = ARGV[2]\n\nlocal num_static_argv = 2\n","register.lua":"local index = ARGV[num_static_argv + 1]\nlocal weight = tonumber(ARGV[num_static_argv + 2])\nlocal expiration = tonumber(ARGV[num_static_argv + 3])\n\nlocal state = process_tick(now, false)\nlocal capacity = state['capacity']\nlocal reservoir = state['reservoir']\n\nlocal settings = redis.call('hmget', settings_key,\n 'nextRequest',\n 'minTime',\n 'groupTimeout'\n)\nlocal nextRequest = tonumber(settings[1])\nlocal minTime = tonumber(settings[2])\nlocal groupTimeout = tonumber(settings[3])\n\nif conditions_check(capacity, weight) then\n\n redis.call('hincrby', settings_key, 'running', weight)\n redis.call('hset', job_weights_key, index, weight)\n if expiration ~= nil then\n redis.call('zadd', job_expirations_key, now + expiration, index)\n end\n redis.call('hset', job_clients_key, index, client)\n redis.call('zincrby', client_running_key, weight, client)\n redis.call('hincrby', client_num_queued_key, client, -1)\n redis.call('zadd', client_last_registered_key, now, client)\n\n local wait = math.max(nextRequest - now, 0)\n local newNextRequest = now + wait + minTime\n\n if reservoir == nil then\n redis.call('hset', settings_key,\n 'nextRequest', newNextRequest\n )\n else\n reservoir = reservoir - weight\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'nextRequest', newNextRequest\n )\n end\n\n refresh_expiration(now, newNextRequest, groupTimeout)\n\n return {true, wait, reservoir}\n\nelse\n return {false}\nend\n","register_client.lua":"local queued = tonumber(ARGV[num_static_argv + 1])\n\n-- Could have been re-registered concurrently\nif not redis.call('zscore', client_last_seen_key, client) then\n redis.call('zadd', client_running_key, 0, client)\n redis.call('hset', client_num_queued_key, client, queued)\n redis.call('zadd', client_last_registered_key, 0, client)\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n\nreturn {}\n","running.lua":"return process_tick(now, false)['running']\n","submit.lua":"local queueLength = tonumber(ARGV[num_static_argv + 1])\nlocal weight = tonumber(ARGV[num_static_argv + 2])\n\nlocal capacity = process_tick(now, false)['capacity']\n\nlocal settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'highWater',\n 'nextRequest',\n 'strategy',\n 'unblockTime',\n 'penalty',\n 'minTime',\n 'groupTimeout'\n)\nlocal id = settings[1]\nlocal maxConcurrent = tonumber(settings[2])\nlocal highWater = tonumber(settings[3])\nlocal nextRequest = tonumber(settings[4])\nlocal strategy = tonumber(settings[5])\nlocal unblockTime = tonumber(settings[6])\nlocal penalty = tonumber(settings[7])\nlocal minTime = tonumber(settings[8])\nlocal groupTimeout = tonumber(settings[9])\n\nif maxConcurrent ~= nil and weight > maxConcurrent then\n return redis.error_reply('OVERWEIGHT:'..weight..':'..maxConcurrent)\nend\n\nlocal reachedHWM = (highWater ~= nil and queueLength == highWater\n and not (\n conditions_check(capacity, weight)\n and nextRequest - now <= 0\n )\n)\n\nlocal blocked = strategy == 3 and (reachedHWM or unblockTime >= now)\n\nif blocked then\n local computedPenalty = penalty\n if computedPenalty == nil then\n if minTime == 0 then\n computedPenalty = 5000\n else\n computedPenalty = 15 * minTime\n end\n end\n\n local newNextRequest = now + computedPenalty + minTime\n\n redis.call('hmset', settings_key,\n 'unblockTime', now + computedPenalty,\n 'nextRequest', newNextRequest\n )\n\n local clients_queued_reset = redis.call('hkeys', client_num_queued_key)\n local queued_reset = {}\n for i = 1, #clients_queued_reset do\n table.insert(queued_reset, clients_queued_reset[i])\n table.insert(queued_reset, 0)\n end\n redis.call('hmset', client_num_queued_key, unpack(queued_reset))\n\n redis.call('publish', 'b_'..id, 'blocked:')\n\n refresh_expiration(now, newNextRequest, groupTimeout)\nend\n\nif not blocked and not reachedHWM then\n redis.call('hincrby', client_num_queued_key, client, 1)\nend\n\nreturn {reachedHWM, blocked, strategy}\n","update_settings.lua":"local args = {'hmset', settings_key}\n\nfor i = num_static_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\nend\n\nredis.call(unpack(args))\n\nprocess_tick(now, true)\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n","validate_client.lua":"if not redis.call('zscore', client_last_seen_key, client) then\n return redis.error_reply('UNKNOWN_CLIENT')\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n","validate_keys.lua":"if not (redis.call('exists', settings_key) == 1) then\n return redis.error_reply('SETTINGS_KEY_NOT_FOUND')\nend\n"},Scripts$3=createCommonjsModule((function(e,t){var r,n,i;r={refs:(n=require$$0$1)["refs.lua"],validate_keys:n["validate_keys.lua"],validate_client:n["validate_client.lua"],refresh_expiration:n["refresh_expiration.lua"],process_tick:n["process_tick.lua"],conditions_check:n["conditions_check.lua"],get_time:n["get_time.lua"]},t.allKeys=function(e){return[`b_${e}_settings`,`b_${e}_job_weights`,`b_${e}_job_expirations`,`b_${e}_job_clients`,`b_${e}_client_running`,`b_${e}_client_num_queued`,`b_${e}_client_last_registered`,`b_${e}_client_last_seen`]},i={init:{keys:t.allKeys,headers:["process_tick"],refresh_expiration:!0,code:n["init.lua"]},group_check:{keys:t.allKeys,headers:[],refresh_expiration:!1,code:n["group_check.lua"]},register_client:{keys:t.allKeys,headers:["validate_keys"],refresh_expiration:!1,code:n["register_client.lua"]},blacklist_client:{keys:t.allKeys,headers:["validate_keys","validate_client"],refresh_expiration:!1,code:n["blacklist_client.lua"]},heartbeat:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:n["heartbeat.lua"]},update_settings:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!0,code:n["update_settings.lua"]},running:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:n["running.lua"]},queued:{keys:t.allKeys,headers:["validate_keys","validate_client"],refresh_expiration:!1,code:n["queued.lua"]},done:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:n["done.lua"]},check:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick","conditions_check"],refresh_expiration:!1,code:n["check.lua"]},submit:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick","conditions_check"],refresh_expiration:!0,code:n["submit.lua"]},register:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick","conditions_check"],refresh_expiration:!0,code:n["register.lua"]},free:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!0,code:n["free.lua"]},current_reservoir:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:n["current_reservoir.lua"]},increment_reservoir:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!0,code:n["increment_reservoir.lua"]}},t.names=Object.keys(i),t.keys=function(e,t){return i[e].keys(t)},t.payload=function(e){var t;return t=i[e],Array.prototype.concat(r.refs,t.headers.map((function(e){return r[e]})),t.refresh_expiration?r.refresh_expiration:"",t.code).join("\n")}})),Events$4,RedisConnection$2,Scripts$2,parser$5;function asyncGeneratorStep$5(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$5(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$5(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$5(s,n,i,o,a,"throw",e)}o(void 0)}))}}parser$5=parser$8,Events$4=Events_1,Scripts$2=Scripts$3,RedisConnection$2=function(){class RedisConnection{constructor(options={}){parser$5.load(options,this.defaults,this),null==this.Redis&&(this.Redis=eval("require")("redis")),null==this.Events&&(this.Events=new Events$4(this)),this.terminated=!1,null==this.client&&(this.client=this.Redis.createClient(this.clientOptions)),this.subscriber=this.client.duplicate(),this.limiters={},this.shas={},this.ready=this.Promise.all([this._setup(this.client,!1),this._setup(this.subscriber,!0)]).then((()=>this._loadScripts())).then((()=>({client:this.client,subscriber:this.subscriber})))}_setup(e,t){return e.setMaxListeners(0),new this.Promise(((r,n)=>(e.on("error",(e=>this.Events.trigger("error",e))),t&&e.on("message",((e,t)=>{var r;return null!=(r=this.limiters[e])?r._store.onMessage(e,t):void 0})),e.ready?r():e.once("ready",r))))}_loadScript(e){return new this.Promise(((t,r)=>{var n;return n=Scripts$2.payload(e),this.client.multi([["script","load",n]]).exec(((n,i)=>null!=n?r(n):(this.shas[e]=i[0],t(i[0]))))}))}_loadScripts(){return this.Promise.all(Scripts$2.names.map((e=>this._loadScript(e))))}__runCommand__(e){var t=this;return _asyncToGenerator$5((function*(){return yield t.ready,new t.Promise(((r,n)=>t.client.multi([e]).exec_atomic((function(e,t){return null!=e?n(e):r(t[0])}))))}))()}__addLimiter__(e){return this.Promise.all([e.channel(),e.channel_client()].map((t=>new this.Promise(((r,n)=>{var i;return i=n=>{if(n===t)return this.subscriber.removeListener("subscribe",i),this.limiters[t]=e,r()},this.subscriber.on("subscribe",i),this.subscriber.subscribe(t)})))))}__removeLimiter__(e){var t=this;return this.Promise.all([e.channel(),e.channel_client()].map(function(){var e=_asyncToGenerator$5((function*(e){return t.terminated||(yield new t.Promise(((r,n)=>t.subscriber.unsubscribe(e,(function(t,i){return null!=t?n(t):i===e?r():void 0}))))),delete t.limiters[e]}));return function(t){return e.apply(this,arguments)}}()))}__scriptArgs__(e,t,r,n){var i;return i=Scripts$2.keys(e,t),[this.shas[e],i.length].concat(i,r,n)}__scriptFn__(e){return this.client.evalsha.bind(this.client)}disconnect(e=!0){var t,r,n,i;for(t=0,n=(i=Object.keys(this.limiters)).length;t(this._loadScripts(),{client:this.client,subscriber:this.subscriber})))}_setup(e,t){return e.setMaxListeners(0),new this.Promise(((r,n)=>(e.on("error",(e=>this.Events.trigger("error",e))),t&&e.on("message",((e,t)=>{var r;return null!=(r=this.limiters[e])?r._store.onMessage(e,t):void 0})),"ready"===e.status?r():e.once("ready",r))))}_loadScripts(){return Scripts$1.names.forEach((e=>this.client.defineCommand(e,{lua:Scripts$1.payload(e)})))}__runCommand__(e){var t=this;return _asyncToGenerator$4((function*(){yield t.ready;var r=_slicedToArray$3(yield t.client.pipeline([e]).exec(),1);return _slicedToArray$3(r[0],2)[1]}))()}__addLimiter__(e){return this.Promise.all([e.channel(),e.channel_client()].map((t=>new this.Promise(((r,n)=>this.subscriber.subscribe(t,(()=>(this.limiters[t]=e,r()))))))))}__removeLimiter__(e){var t=this;return[e.channel(),e.channel_client()].forEach(function(){var e=_asyncToGenerator$4((function*(e){return t.terminated||(yield t.subscriber.unsubscribe(e)),delete t.limiters[e]}));return function(t){return e.apply(this,arguments)}}())}__scriptArgs__(e,t,r,n){var i;return[(i=Scripts$1.keys(e,t)).length].concat(i,r,n)}__scriptFn__(e){return this.client[e].bind(this.client)}disconnect(e=!0){var t,r,n,i;for(t=0,n=(i=Object.keys(this.limiters)).length;t(this.clients=e,this.runScript("init",this.prepareInitSettings(this.clearDatastore))))).then((()=>this.connection.__addLimiter__(this.instance))).then((()=>this.runScript("register_client",[this.instance.queued()]))).then((()=>{var e;return"function"==typeof(e=this.heartbeat=setInterval((()=>this.runScript("heartbeat",[]).catch((e=>this.instance.Events.trigger("error",e)))),this.heartbeatInterval)).unref&&e.unref(),this.clients}))}__publish__(e){var t=this;return _asyncToGenerator$3((function*(){return(yield t.ready).client.publish(t.instance.channel(),`message:${e.toString()}`)}))()}onMessage(e,t){var r=this;return _asyncToGenerator$3((function*(){var e,n,i,s,o,a,c,l,u,p;try{c=t.indexOf(":");var d=[t.slice(0,c),t.slice(c+1)];if(i=d[1],"capacity"===(p=d[0]))return yield r.instance._drainAll(i.length>0?~~i:void 0);if("capacity-priority"===p){var h=_slicedToArray$2(i.split(":"),3);return u=h[0],l=h[1],n=h[2],e=u.length>0?~~u:void 0,l===r.clientId?(s=yield r.instance._drainAll(e),a=null!=e?e-(s||0):"",yield r.clients.client.publish(r.instance.channel(),`capacity-priority:${a}::${n}`)):""===l?(clearTimeout(r.capacityPriorityCounters[n]),delete r.capacityPriorityCounters[n],r.instance._drainAll(e)):r.capacityPriorityCounters[n]=setTimeout(_asyncToGenerator$3((function*(){var t;try{return delete r.capacityPriorityCounters[n],yield r.runScript("blacklist_client",[l]),yield r.instance._drainAll(e)}catch(e){return t=e,r.instance.Events.trigger("error",t)}})),1e3)}if("message"===p)return r.instance.Events.trigger("message",i);if("blocked"===p)return yield r.instance._dropAllQueued()}catch(e){return o=e,r.instance.Events.trigger("error",o)}}))()}__disconnect__(e){return clearInterval(this.heartbeat),this.sharedConnection?this.connection.__removeLimiter__(this.instance):this.connection.disconnect(e)}runScript(e,t){var r=this;return _asyncToGenerator$3((function*(){return"init"!==e&&"register_client"!==e&&(yield r.ready),new r.Promise(((n,i)=>{var s,o;return s=[Date.now(),r.clientId].concat(t),r.instance.Events.trigger("debug",`Calling Redis script: ${e}.lua`,s),o=r.connection.__scriptArgs__(e,r.originalId,s,(function(e,t){return null!=e?i(e):n(t)})),r.connection.__scriptFn__(e)(...o)})).catch((n=>"SETTINGS_KEY_NOT_FOUND"===n.message?"heartbeat"===e?r.Promise.resolve():r.runScript("init",r.prepareInitSettings(!1)).then((()=>r.runScript(e,t))):"UNKNOWN_CLIENT"===n.message?r.runScript("register_client",[r.instance.queued()]).then((()=>r.runScript(e,t))):r.Promise.reject(n)))}))()}prepareArray(e){var t,r,n,i;for(n=[],t=0,r=e.length;t(e[this.status[r]]=t,e)),{})}};var States_1=States$1,DLList,Sync$1;function asyncGeneratorStep$2(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$2(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$2(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$2(s,n,i,o,a,"throw",e)}o(void 0)}))}}DLList=DLList_1,Sync$1=class{constructor(e,t){this.schedule=this.schedule.bind(this),this.name=e,this.Promise=t,this._running=0,this._queue=new DLList}isEmpty(){return 0===this._queue.length}_tryToRun(){var e=this;return _asyncToGenerator$2((function*(){var t,r,n,i,s,o,a;if(e._running<1&&e._queue.length>0){e._running++;var c=e._queue.shift();return a=c.task,t=c.args,s=c.resolve,i=c.reject,r=yield _asyncToGenerator$2((function*(){try{return o=yield a(...t),function(){return s(o)}}catch(e){return n=e,function(){return i(n)}}}))(),e._running--,e._tryToRun(),r()}}))()}schedule(e,...t){var r,n,i;return i=n=null,r=new this.Promise((function(e,t){return i=e,n=t})),this._queue.push({task:e,args:t,resolve:i,reject:n}),this._tryToRun(),r}};var Sync_1=Sync$1,version="2.19.5",require$$8={version:version},require$$0=Bottleneck_1,Events$2,Group,IORedisConnection,RedisConnection,Scripts,parser$2;function _slicedToArray$1(e,t){return _arrayWithHoles$1(e)||_iterableToArrayLimit$1(e,t)||_nonIterableRest$1()}function _nonIterableRest$1(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArrayLimit$1(e,t){var r=[],n=!0,i=!1,s=void 0;try{for(var o,a=e[Symbol.iterator]();!(n=(o=a.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}return r}function _arrayWithHoles$1(e){if(Array.isArray(e))return e}function asyncGeneratorStep$1(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$1(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$1(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$1(s,n,i,o,a,"throw",e)}o(void 0)}))}}parser$2=parser$8,Events$2=Events_1,RedisConnection=RedisConnection_1,IORedisConnection=IORedisConnection_1,Scripts=Scripts$3,Group=function(){class e{constructor(e={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=e,parser$2.load(this.limiterOptions,this.defaults,this),this.Events=new Events$2(this),this.instances={},this.Bottleneck=require$$0,this._startAutoCleanup(),this.sharedConnection=null!=this.connection,null==this.connection&&("redis"===this.limiterOptions.datastore?this.connection=new RedisConnection(Object.assign({},this.limiterOptions,{Events:this.Events})):"ioredis"===this.limiterOptions.datastore&&(this.connection=new IORedisConnection(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(e=""){var t;return null!=(t=this.instances[e])?t:(()=>{var t;return t=this.instances[e]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${e}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",t,e),t})()}deleteKey(e=""){var t=this;return _asyncToGenerator$1((function*(){var r,n;return n=t.instances[e],t.connection&&(r=yield t.connection.__runCommand__(["del",...Scripts.allKeys(`${t.id}-${e}`)])),null!=n&&(delete t.instances[e],yield n.disconnect()),null!=n||r>0}))()}limiters(){var e,t,r,n;for(e in r=[],t=this.instances)n=t[e],r.push({key:e,limiter:n});return r}keys(){return Object.keys(this.instances)}clusterKeys(){var e=this;return _asyncToGenerator$1((function*(){var t,r,n,i,s,o,a,c;if(null==e.connection)return e.Promise.resolve(e.keys());for(o=[],t=null,c=`b_${e.id}-`.length,r="_settings".length;0!==t;){var l=_slicedToArray$1(yield e.connection.__runCommand__(["scan",null!=t?t:0,"match",`b_${e.id}-*_settings`,"count",1e4]),2);for(t=~~l[0],i=0,a=(n=l[1]).length;ithis._resolve=e))}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(e){var t;return this._arr.push(e),t=this._promise,this._arr.length===this.maxSize?this._flush():null!=this.maxTime&&1===this._arr.length&&(this._timeout=setTimeout((()=>this._flush()),this.maxTime)),t}}return e.prototype.defaults={maxTime:null,maxSize:null,Promise:Promise},e}.call(void 0);var Batcher_1=Batcher;function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_nonIterableRest()}function _iterableToArrayLimit(e,t){var r=[],n=!0,i=!1,s=void 0;try{for(var o,a=e[Symbol.iterator]();!(n=(o=a.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}return r}function _toArray(e){return _arrayWithHoles(e)||_iterableToArray(e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function _arrayWithHoles(e){if(Array.isArray(e))return e}function asyncGeneratorStep(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep(s,n,i,o,a,"throw",e)}o(void 0)}))}}var Bottleneck,DEFAULT_PRIORITY,Events,Job,LocalDatastore,NUM_PRIORITIES,Queues,RedisDatastore,States,Sync,parser,splice=[].splice;NUM_PRIORITIES=10,DEFAULT_PRIORITY=5,parser=parser$8,Queues=Queues_1,Job=Job_1,LocalDatastore=LocalDatastore_1,RedisDatastore=RedisDatastore_1,Events=Events_1,States=States_1,Sync=Sync_1,Bottleneck=function(){class e{constructor(t={},...r){var n,i;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(t,r),parser.load(t,this.instanceDefaults,this),this._queues=new Queues(NUM_PRIORITIES),this._scheduled={},this._states=new States(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new Events(this),this._submitLock=new Sync("submit",this.Promise),this._registerLock=new Sync("register",this.Promise),i=parser.load(t,this.storeDefaults,{}),this._store=function(){if("redis"===this.datastore||"ioredis"===this.datastore||null!=this.connection)return n=parser.load(t,this.redisStoreDefaults,{}),new RedisDatastore(this,i,n);if("local"===this.datastore)return n=parser.load(t,this.localStoreDefaults,{}),new LocalDatastore(this,i,n);throw new e.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}.call(this),this._queues.on("leftzero",(()=>{var e;return null!=(e=this._store.heartbeat)&&"function"==typeof e.ref?e.ref():void 0})),this._queues.on("zero",(()=>{var e;return null!=(e=this._store.heartbeat)&&"function"==typeof e.unref?e.unref():void 0}))}_validateOptions(t,r){if(null==t||"object"!=typeof t||0!==r.length)throw new e.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(e){return this._store.__publish__(e)}disconnect(e=!0){return this._store.__disconnect__(e)}chain(e){return this._limiter=e,this}queued(e){return this._queues.queued(e)}clusterQueued(){return this._store.__queued__()}empty(){return 0===this.queued()&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(e){return this._states.jobStatus(e)}jobs(e){return this._states.statusJobs(e)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(e=1){return this._store.__check__(e)}_clearGlobalState(e){return null!=this._scheduled[e]&&(clearTimeout(this._scheduled[e].expiration),delete this._scheduled[e],!0)}_free(e,t,r,n){var i=this;return _asyncToGenerator((function*(){var t,s;try{if(s=(yield i._store.__free__(e,r.weight)).running,i.Events.trigger("debug",`Freed ${r.id}`,n),0===s&&i.empty())return i.Events.trigger("idle")}catch(e){return t=e,i.Events.trigger("error",t)}}))()}_run(e,t,r){var n,i,s;return t.doRun(),n=this._clearGlobalState.bind(this,e),s=this._run.bind(this,e,t),i=this._free.bind(this,e,t),this._scheduled[e]={timeout:setTimeout((()=>t.doExecute(this._limiter,n,s,i)),r),expiration:null!=t.options.expiration?setTimeout((function(){return t.doExpire(n,s,i)}),r+t.options.expiration):void 0,job:t}}_drainOne(e){return this._registerLock.schedule((()=>{var t,r,n,i,s;if(0===this.queued())return this.Promise.resolve(null);s=this._queues.getFirst();var o=n=s.first();return i=o.options,t=o.args,null!=e&&i.weight>e?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${i.id}`,{args:t,options:i}),r=this._randomIndex(),this._store.__register__(r,i.weight,i.expiration).then((({success:e,wait:o,reservoir:a})=>{var c;return this.Events.trigger("debug",`Drained ${i.id}`,{success:e,args:t,options:i}),e?(s.shift(),(c=this.empty())&&this.Events.trigger("empty"),0===a&&this.Events.trigger("depleted",c),this._run(r,n,o),this.Promise.resolve(i.weight)):this.Promise.resolve(null)})))}))}_drainAll(e,t=0){return this._drainOne(e).then((r=>{var n;return null!=r?(n=null!=e?e-r:e,this._drainAll(n,t+r)):this.Promise.resolve(t)})).catch((e=>this.Events.trigger("error",e)))}_dropAllQueued(e){return this._queues.shiftAll((function(t){return t.doDrop({message:e})}))}stop(t={}){var r,n;return t=parser.load(t,this.stopDefaults),n=e=>{var t;return t=()=>{var t;return(t=this._states.counts)[0]+t[1]+t[2]+t[3]===e},new this.Promise(((e,r)=>t()?e():this.on("done",(()=>{if(t())return this.removeAllListeners("done"),e()}))))},r=t.dropWaitingJobs?(this._run=function(e,r){return r.doDrop({message:t.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule((()=>this._submitLock.schedule((()=>{var e,r,i;for(e in r=this._scheduled)i=r[e],"RUNNING"===this.jobStatus(i.job.options.id)&&(clearTimeout(i.timeout),clearTimeout(i.expiration),i.job.doDrop({message:t.dropErrorMessage}));return this._dropAllQueued(t.dropErrorMessage),n(0)}))))):this.schedule({priority:NUM_PRIORITIES-1,weight:0},(()=>n(1))),this._receive=function(r){return r._reject(new e.prototype.BottleneckError(t.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new e.prototype.BottleneckError("stop() has already been called")),r}_addToQueue(t){var r=this;return _asyncToGenerator((function*(){var n,i,s,o,a,c,l;n=t.args,o=t.options;try{var u=yield r._store.__submit__(r.queued(),o.weight);a=u.reachedHWM,i=u.blocked,l=u.strategy}catch(e){return s=e,r.Events.trigger("debug",`Could not queue ${o.id}`,{args:n,options:o,error:s}),t.doDrop({error:s}),!1}return i?(t.doDrop(),!0):a&&(null!=(c=l===e.prototype.strategy.LEAK?r._queues.shiftLastFrom(o.priority):l===e.prototype.strategy.OVERFLOW_PRIORITY?r._queues.shiftLastFrom(o.priority+1):l===e.prototype.strategy.OVERFLOW?t:void 0)&&c.doDrop(),null==c||l===e.prototype.strategy.OVERFLOW)?(null==c&&t.doDrop(),a):(t.doQueue(a,i),r._queues.push(t),yield r._drainAll(),a)}))()}_receive(t){return null!=this._states.jobStatus(t.options.id)?(t._reject(new e.prototype.BottleneckError(`A job with the same id already exists (id=${t.options.id})`)),!1):(t.doReceive(),this._submitLock.schedule(this._addToQueue,t))}submit(...e){var t,r,n,i,s,o,a,c;"function"==typeof e[0]?(s=_toArray(e),r=s[0],e=s.slice(1),o=_slicedToArray(splice.call(e,-1),1),t=o[0],i=parser.load({},this.jobDefaults)):(i=(a=_toArray(e))[0],r=a[1],e=a.slice(2),c=_slicedToArray(splice.call(e,-1),1),t=c[0],i=parser.load(i,this.jobDefaults));return(n=new Job(((...e)=>new this.Promise((function(t,n){return r(...e,(function(...e){return(null!=e[0]?n:t)(e)}))}))),e,i,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise)).promise.then((function(e){return"function"==typeof t?t(...e):void 0})).catch((function(e){return Array.isArray(e)?"function"==typeof t?t(...e):void 0:"function"==typeof t?t(e):void 0})),this._receive(n)}schedule(...e){var t,r,n;if("function"==typeof e[0]){var i=_toArray(e);n=i[0],e=i.slice(1),r={}}else{var s=_toArray(e);r=s[0],n=s[1],e=s.slice(2)}return t=new Job(n,e,r,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(t),t.promise}wrap(e){var t,r;return t=this.schedule.bind(this),(r=function(...r){return t(e.bind(this),...r)}).withOptions=function(r,...n){return t(r,e,...n)},r}updateSettings(e={}){var t=this;return _asyncToGenerator((function*(){return yield t._store.__updateSettings__(parser.overwrite(e,t.storeDefaults)),parser.overwrite(e,t.instanceDefaults,t),t}))()}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(e=0){return this._store.__incrementReservoir__(e)}}return e.default=e,e.Events=Events,e.version=e.prototype.version=require$$8.version,e.strategy=e.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},e.BottleneckError=e.prototype.BottleneckError=BottleneckError_1,e.Group=e.prototype.Group=Group_1,e.RedisConnection=e.prototype.RedisConnection=RedisConnection_1,e.IORedisConnection=e.prototype.IORedisConnection=IORedisConnection_1,e.Batcher=e.prototype.Batcher=Batcher_1,e.prototype.jobDefaults={priority:DEFAULT_PRIORITY,weight:1,expiration:null,id:""},e.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:e.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},e.prototype.localStoreDefaults={Promise:Promise,timeout:null,heartbeatInterval:250},e.prototype.redisStoreDefaults={Promise:Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},e.prototype.instanceDefaults={datastore:"local",connection:null,id:"",rejectOnDrop:!0,trackDoneStatus:!1,Promise:Promise},e.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},e}.call(void 0);var Bottleneck_1=Bottleneck,lib=require$$0;const unifetch="undefined"!=typeof fetch?fetch:browser$1;class AlpacaClient{params;baseURLs=endpoints;limiter=new lib({reservoir:200,reservoirRefreshAmount:200,reservoirRefreshInterval:6e4,maxConcurrent:1,minTime:200});constructor(e){if(this.params=e,"endpoints"in e&&(this.baseURLs=Object.assign(endpoints,e.endpoints)),"paper"in e.credentials||"key"in e.credentials&&e.credentials.key.startsWith("A")||(e.credentials.paper=!0),"access_token"in e.credentials&&("key"in e.credentials||"secret"in e.credentials))throw new Error("can't create client with both default and oauth credentials")}async isAuthenticated(){try{return await this.getAccount(),!0}catch{return!1}}async getAccount(){return parse.account(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/account`}))}async getOrder(e){return parse.order(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/orders/${e.order_id||e.client_order_id}`,data:{nested:e.nested}}))}async getOrders(e={}){return parse.orders(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/orders`,data:{...e,symbols:e.symbols?e.symbols.join(","):void 0}}))}async placeOrder(e){return parse.order(await this.request({method:"POST",url:`${this.baseURLs.rest.account}/orders`,data:e}))}async replaceOrder(e){return parse.order(await this.request({method:"PATCH",url:`${this.baseURLs.rest.account}/orders/${e.order_id}`,data:e}))}cancelOrder(e){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/orders/${e.order_id}`,isJSON:!1})}async cancelOrders(){return parse.canceled_orders(await this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/orders`}))}async getPosition(e){return parse.position(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/positions/${e.symbol}`}))}async getPositions(){return parse.positions(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/positions`}))}async closePosition(e){return parse.order(await this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/positions/${e.symbol}`,data:e}))}async closePositions(e){return parse.orders(await this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify(e.cancel_orders??!1)}`}))}getAsset(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/assets/${e.asset_id_or_symbol}`})}getAssets(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/assets`,data:e})}getWatchlist(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`})}getWatchlists(){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/watchlists`})}createWatchlist(e){return this.request({method:"POST",url:`${this.baseURLs.rest.account}/watchlists`,data:e})}updateWatchlist(e){return this.request({method:"PUT",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`,data:e})}addToWatchlist(e){return this.request({method:"POST",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`,data:e})}removeFromWatchlist(e){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}/${e.symbol}`})}deleteWatchlist(e){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`})}getCalendar(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/calendar`,data:e})}getNews(e){return"symbols"in e&&Array.isArray(e.symbols)&&(e.symbols=e.symbols.join(",")),this.request({method:"GET",url:`${this.baseURLs.rest.beta}/news`,data:e})}async getClock(){return parse.clock(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/clock`}))}getAccountConfigurations(){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/configurations`})}updateAccountConfigurations(e){return this.request({method:"PATCH",url:`${this.baseURLs.rest.account}/account/configurations`,data:e})}async getAccountActivities(e){return e.activity_types&&Array.isArray(e.activity_types)&&(e.activity_types=e.activity_types.join(",")),parse.activities(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/activities${e.activity_type?"/".concat(e.activity_type):""}`,data:{...e,activity_type:void 0}}))}getPortfolioHistory(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/portfolio/history`,data:e})}async getBars_v1(e){const t={...e,symbols:e.symbols.join(",")};return await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/bars/${e.timeframe}`,data:t})}async getLastTrade_v1(e){return await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/last/stocks/${e.symbol}`})}async getLastQuote_v1(e){return await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${e.symbol}`})}async getTrades(e){return parse.pageOfTrades(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/trades`,data:{...e,symbol:void 0}}))}async getQuotes(e){return parse.pageOfQuotes(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/quotes`,data:{...e,symbol:void 0}}))}async getBars(e){return parse.pageOfBars(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/bars`,data:{...e,symbol:void 0}}))}async getLatestTrade({symbol:e,feed:t,limit:r}){let n="";return(t||r)&&(n="?".concat(lib$1.stringify({feed:t,limit:r}))),parse.latestTrade(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e}/trades/latest`.concat(n)}))}async getSnapshot(e){return parse.snapshot(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/snapshot`}))}async getSnapshots(e){return parse.snapshots(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${e.symbols.join(",")}`}))}async request(e){let t={};"access_token"in this.params.credentials?t.Authorization=`Bearer ${this.params.credentials.access_token}`:(t["APCA-API-KEY-ID"]=this.params.credentials.key,t["APCA-API-SECRET-KEY"]=this.params.credentials.secret),this.params.credentials.paper&&(e.url=e.url.replace("api.","paper-api."));let r="";if(e.data){for(let[t,r]of Object.entries(e.data))r instanceof Date&&(e.data[t]=r.toISOString());["POST","PATCH","PUT"].includes(e.method)||(r="?".concat(lib$1.stringify(e.data)),e.data=void 0)}const n=()=>unifetch(e.url.concat(r),{method:e.method,headers:t,body:JSON.stringify(e.data)}),i=this.params.rate_limit?()=>this.limiter.schedule(n):n;let s,o={};try{if(s=await i(),null!=e.isJSON&&!e.isJSON)return s.ok;o=await s.json()}catch(e){throw console.error(e),o}if("code"in o||"message"in o)throw o;return o}}var isBlob=e=>"undefined"!=typeof Blob&&(e instanceof Blob||"[object Blob]"===Object.prototype.toString.call(e)),ws=null;"undefined"!=typeof WebSocket?ws=WebSocket:"undefined"!=typeof MozWebSocket?ws=MozWebSocket:void 0!==commonjsGlobal?ws=commonjsGlobal.WebSocket||commonjsGlobal.MozWebSocket:"undefined"!=typeof window?ws=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(ws=self.WebSocket||self.MozWebSocket);var browser=ws,eventemitter3=createCommonjsModule((function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function i(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,n,s,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var a=new i(n,s||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,n,i=[];if(0===this._eventsCount)return i;for(n in e=this._events)t.call(e,n)&&i.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,o=new Array(s);i{let t={};switch(this.params.type){case"account":t={action:"authenticate",data:{key_id:e.credentials.key,secret_key:e.credentials.secret}};break;case"market_data":t={action:"auth",...e.credentials}}this.connection.send(JSON.stringify(t)),this.emit("open",this)},this.connection.onclose=()=>this.emit("close",this),this.connection.onmessage=async e=>{let t=e.data;isBlob(t)?t=await e.data.text():t instanceof ArrayBuffer&&(t=String.fromCharCode(...new Uint8Array(e.data)));let r=JSON.parse(t);("account"==this.params.type?[r]:r).forEach((e=>{this.emit("message",e),("T"in e&&"authenticated"==e.msg||"stream"in e&&"authorization"==e.stream&&"authorized"==e.data.status)&&(this.authenticated=!0,this.emit("authenticated",this)),"stream"in e&&"trade_updates"==e.stream&&this.emit("trade_updates",parse.trade_update(e.data));const t={success:"success",subscription:"subscription",error:"error",t:"trade",q:"quote",b:"bar"};"T"in e&&this.emit(t[e.T.split(".")[0]],e)}))},this.connection.onerror=e=>{this.emit("error",e)}}getConnection(){return this.connection}subscribe(e,t=[]){switch(this.params.type){case"account":this.send(JSON.stringify({action:"listen",data:{streams:[e]}}));break;case"market_data":let r={action:"subscribe"};r[e]=t,this.send(JSON.stringify(r))}return this}unsubscribe(e,t=[]){switch(this.params.type){case"account":this.send(JSON.stringify({action:"unlisten",data:{streams:[e]}}));break;case"market_data":let r={action:"unsubscribe"};r[e]=t,this.send(JSON.stringify(r))}return this}send(e){if(!this.authenticated)throw new Error("not authenticated");return"object"==typeof e&&(e=JSON.stringify(e)),this.connection.send(e),this}}var index={AlpacaClient:AlpacaClient,AlpacaStream:AlpacaStream};exports.AlpacaClient=AlpacaClient,exports.AlpacaStream=AlpacaStream,exports.default=index,Object.defineProperty(exports,"__esModule",{value:!0})})); diff --git a/dist/alpaca.browser.modern.js b/dist/alpaca.browser.modern.js deleted file mode 100644 index 6f913c0..0000000 --- a/dist/alpaca.browser.modern.js +++ /dev/null @@ -1,5966 +0,0 @@ -/*! - * alpaca@6.3.20 - * released under the permissive ISC license - */ - -import require$$0$3 from 'util'; - -/* eslint complexity: [2, 18], max-statements: [2, 33] */ -var shams = function hasSymbols() { - if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } - if (typeof Symbol.iterator === 'symbol') { return true; } - - var obj = {}; - var sym = Symbol('test'); - var symObj = Object(sym); - if (typeof sym === 'string') { return false; } - - if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } - if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } - - // temp disabled per https://github.com/ljharb/object.assign/issues/17 - // if (sym instanceof Symbol) { return false; } - // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 - // if (!(symObj instanceof Symbol)) { return false; } - - // if (typeof Symbol.prototype.toString !== 'function') { return false; } - // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } - - var symVal = 42; - obj[sym] = symVal; - for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop - if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } - - if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } - - var syms = Object.getOwnPropertySymbols(obj); - if (syms.length !== 1 || syms[0] !== sym) { return false; } - - if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } - - if (typeof Object.getOwnPropertyDescriptor === 'function') { - var descriptor = Object.getOwnPropertyDescriptor(obj, sym); - if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } - } - - return true; -}; - -var origSymbol = typeof Symbol !== 'undefined' && Symbol; - - -var hasSymbols$1 = function hasNativeSymbols() { - if (typeof origSymbol !== 'function') { return false; } - if (typeof Symbol !== 'function') { return false; } - if (typeof origSymbol('foo') !== 'symbol') { return false; } - if (typeof Symbol('bar') !== 'symbol') { return false; } - - return shams(); -}; - -/* eslint no-invalid-this: 1 */ - -var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var slice = Array.prototype.slice; -var toStr$1 = Object.prototype.toString; -var funcType = '[object Function]'; - -var implementation = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr$1.call(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slice.call(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - } - }; - - var boundLength = Math.max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); - } - - bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; -}; - -var functionBind = Function.prototype.bind || implementation; - -var src = functionBind.call(Function.call, Object.prototype.hasOwnProperty); - -var undefined$1; - -var $SyntaxError = SyntaxError; -var $Function = Function; -var $TypeError$1 = TypeError; - -// eslint-disable-next-line consistent-return -var getEvalledConstructor = function (expressionSyntax) { - try { - return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); - } catch (e) {} -}; - -var $gOPD = Object.getOwnPropertyDescriptor; -if ($gOPD) { - try { - $gOPD({}, ''); - } catch (e) { - $gOPD = null; // this is IE 8, which has a broken gOPD - } -} - -var throwTypeError = function () { - throw new $TypeError$1(); -}; -var ThrowTypeError = $gOPD - ? (function () { - try { - // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties - arguments.callee; // IE 8 does not throw here - return throwTypeError; - } catch (calleeThrows) { - try { - // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') - return $gOPD(arguments, 'callee').get; - } catch (gOPDthrows) { - return throwTypeError; - } - } - }()) - : throwTypeError; - -var hasSymbols = hasSymbols$1(); - -var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto - -var needsEval = {}; - -var TypedArray = typeof Uint8Array === 'undefined' ? undefined$1 : getProto(Uint8Array); - -var INTRINSICS = { - '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError, - '%Array%': Array, - '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer, - '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined$1, - '%AsyncFromSyncIteratorPrototype%': undefined$1, - '%AsyncFunction%': needsEval, - '%AsyncGenerator%': needsEval, - '%AsyncGeneratorFunction%': needsEval, - '%AsyncIteratorPrototype%': needsEval, - '%Atomics%': typeof Atomics === 'undefined' ? undefined$1 : Atomics, - '%BigInt%': typeof BigInt === 'undefined' ? undefined$1 : BigInt, - '%Boolean%': Boolean, - '%DataView%': typeof DataView === 'undefined' ? undefined$1 : DataView, - '%Date%': Date, - '%decodeURI%': decodeURI, - '%decodeURIComponent%': decodeURIComponent, - '%encodeURI%': encodeURI, - '%encodeURIComponent%': encodeURIComponent, - '%Error%': Error, - '%eval%': eval, // eslint-disable-line no-eval - '%EvalError%': EvalError, - '%Float32Array%': typeof Float32Array === 'undefined' ? undefined$1 : Float32Array, - '%Float64Array%': typeof Float64Array === 'undefined' ? undefined$1 : Float64Array, - '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined$1 : FinalizationRegistry, - '%Function%': $Function, - '%GeneratorFunction%': needsEval, - '%Int8Array%': typeof Int8Array === 'undefined' ? undefined$1 : Int8Array, - '%Int16Array%': typeof Int16Array === 'undefined' ? undefined$1 : Int16Array, - '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array, - '%isFinite%': isFinite, - '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined$1, - '%JSON%': typeof JSON === 'object' ? JSON : undefined$1, - '%Map%': typeof Map === 'undefined' ? undefined$1 : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Map()[Symbol.iterator]()), - '%Math%': Math, - '%Number%': Number, - '%Object%': Object, - '%parseFloat%': parseFloat, - '%parseInt%': parseInt, - '%Promise%': typeof Promise === 'undefined' ? undefined$1 : Promise, - '%Proxy%': typeof Proxy === 'undefined' ? undefined$1 : Proxy, - '%RangeError%': RangeError, - '%ReferenceError%': ReferenceError, - '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect, - '%RegExp%': RegExp, - '%Set%': typeof Set === 'undefined' ? undefined$1 : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Set()[Symbol.iterator]()), - '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer, - '%String%': String, - '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined$1, - '%Symbol%': hasSymbols ? Symbol : undefined$1, - '%SyntaxError%': $SyntaxError, - '%ThrowTypeError%': ThrowTypeError, - '%TypedArray%': TypedArray, - '%TypeError%': $TypeError$1, - '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined$1 : Uint8Array, - '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined$1 : Uint8ClampedArray, - '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined$1 : Uint16Array, - '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined$1 : Uint32Array, - '%URIError%': URIError, - '%WeakMap%': typeof WeakMap === 'undefined' ? undefined$1 : WeakMap, - '%WeakRef%': typeof WeakRef === 'undefined' ? undefined$1 : WeakRef, - '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet -}; - -var doEval = function doEval(name) { - var value; - if (name === '%AsyncFunction%') { - value = getEvalledConstructor('async function () {}'); - } else if (name === '%GeneratorFunction%') { - value = getEvalledConstructor('function* () {}'); - } else if (name === '%AsyncGeneratorFunction%') { - value = getEvalledConstructor('async function* () {}'); - } else if (name === '%AsyncGenerator%') { - var fn = doEval('%AsyncGeneratorFunction%'); - if (fn) { - value = fn.prototype; - } - } else if (name === '%AsyncIteratorPrototype%') { - var gen = doEval('%AsyncGenerator%'); - if (gen) { - value = getProto(gen.prototype); - } - } - - INTRINSICS[name] = value; - - return value; -}; - -var LEGACY_ALIASES = { - '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], - '%ArrayPrototype%': ['Array', 'prototype'], - '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], - '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], - '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], - '%ArrayProto_values%': ['Array', 'prototype', 'values'], - '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], - '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], - '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], - '%BooleanPrototype%': ['Boolean', 'prototype'], - '%DataViewPrototype%': ['DataView', 'prototype'], - '%DatePrototype%': ['Date', 'prototype'], - '%ErrorPrototype%': ['Error', 'prototype'], - '%EvalErrorPrototype%': ['EvalError', 'prototype'], - '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], - '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], - '%FunctionPrototype%': ['Function', 'prototype'], - '%Generator%': ['GeneratorFunction', 'prototype'], - '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], - '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], - '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], - '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], - '%JSONParse%': ['JSON', 'parse'], - '%JSONStringify%': ['JSON', 'stringify'], - '%MapPrototype%': ['Map', 'prototype'], - '%NumberPrototype%': ['Number', 'prototype'], - '%ObjectPrototype%': ['Object', 'prototype'], - '%ObjProto_toString%': ['Object', 'prototype', 'toString'], - '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], - '%PromisePrototype%': ['Promise', 'prototype'], - '%PromiseProto_then%': ['Promise', 'prototype', 'then'], - '%Promise_all%': ['Promise', 'all'], - '%Promise_reject%': ['Promise', 'reject'], - '%Promise_resolve%': ['Promise', 'resolve'], - '%RangeErrorPrototype%': ['RangeError', 'prototype'], - '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], - '%RegExpPrototype%': ['RegExp', 'prototype'], - '%SetPrototype%': ['Set', 'prototype'], - '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], - '%StringPrototype%': ['String', 'prototype'], - '%SymbolPrototype%': ['Symbol', 'prototype'], - '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], - '%TypedArrayPrototype%': ['TypedArray', 'prototype'], - '%TypeErrorPrototype%': ['TypeError', 'prototype'], - '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], - '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], - '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], - '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], - '%URIErrorPrototype%': ['URIError', 'prototype'], - '%WeakMapPrototype%': ['WeakMap', 'prototype'], - '%WeakSetPrototype%': ['WeakSet', 'prototype'] -}; - - - -var $concat = functionBind.call(Function.call, Array.prototype.concat); -var $spliceApply = functionBind.call(Function.apply, Array.prototype.splice); -var $replace = functionBind.call(Function.call, String.prototype.replace); -var $strSlice = functionBind.call(Function.call, String.prototype.slice); - -/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ -var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; -var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ -var stringToPath = function stringToPath(string) { - var first = $strSlice(string, 0, 1); - var last = $strSlice(string, -1); - if (first === '%' && last !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); - } else if (last === '%' && first !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); - } - var result = []; - $replace(string, rePropName, function (match, number, quote, subString) { - result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; - }); - return result; -}; -/* end adaptation */ - -var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { - var intrinsicName = name; - var alias; - if (src(LEGACY_ALIASES, intrinsicName)) { - alias = LEGACY_ALIASES[intrinsicName]; - intrinsicName = '%' + alias[0] + '%'; - } - - if (src(INTRINSICS, intrinsicName)) { - var value = INTRINSICS[intrinsicName]; - if (value === needsEval) { - value = doEval(intrinsicName); - } - if (typeof value === 'undefined' && !allowMissing) { - throw new $TypeError$1('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); - } - - return { - alias: alias, - name: intrinsicName, - value: value - }; - } - - throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); -}; - -var getIntrinsic = function GetIntrinsic(name, allowMissing) { - if (typeof name !== 'string' || name.length === 0) { - throw new $TypeError$1('intrinsic name must be a non-empty string'); - } - if (arguments.length > 1 && typeof allowMissing !== 'boolean') { - throw new $TypeError$1('"allowMissing" argument must be a boolean'); - } - - var parts = stringToPath(name); - var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; - - var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); - var intrinsicRealName = intrinsic.name; - var value = intrinsic.value; - var skipFurtherCaching = false; - - var alias = intrinsic.alias; - if (alias) { - intrinsicBaseName = alias[0]; - $spliceApply(parts, $concat([0, 1], alias)); - } - - for (var i = 1, isOwn = true; i < parts.length; i += 1) { - var part = parts[i]; - var first = $strSlice(part, 0, 1); - var last = $strSlice(part, -1); - if ( - ( - (first === '"' || first === "'" || first === '`') - || (last === '"' || last === "'" || last === '`') - ) - && first !== last - ) { - throw new $SyntaxError('property names with quotes must have matching quotes'); - } - if (part === 'constructor' || !isOwn) { - skipFurtherCaching = true; - } - - intrinsicBaseName += '.' + part; - intrinsicRealName = '%' + intrinsicBaseName + '%'; - - if (src(INTRINSICS, intrinsicRealName)) { - value = INTRINSICS[intrinsicRealName]; - } else if (value != null) { - if (!(part in value)) { - if (!allowMissing) { - throw new $TypeError$1('base intrinsic for ' + name + ' exists, but the property is not available.'); - } - return void undefined$1; - } - if ($gOPD && (i + 1) >= parts.length) { - var desc = $gOPD(value, part); - isOwn = !!desc; - - // By convention, when a data property is converted to an accessor - // property to emulate a data property that does not suffer from - // the override mistake, that accessor's getter is marked with - // an `originalValue` property. Here, when we detect this, we - // uphold the illusion by pretending to see that original data - // property, i.e., returning the value rather than the getter - // itself. - if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { - value = desc.get; - } else { - value = value[part]; - } - } else { - isOwn = src(value, part); - value = value[part]; - } - - if (isOwn && !skipFurtherCaching) { - INTRINSICS[intrinsicRealName] = value; - } - } - } - return value; -}; - -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var a = Object.defineProperty({}, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; -} - -function createCommonjsModule(fn) { - var module = { exports: {} }; - return fn(module, module.exports), module.exports; -} - -var callBind = createCommonjsModule(function (module) { - - - - -var $apply = getIntrinsic('%Function.prototype.apply%'); -var $call = getIntrinsic('%Function.prototype.call%'); -var $reflectApply = getIntrinsic('%Reflect.apply%', true) || functionBind.call($call, $apply); - -var $gOPD = getIntrinsic('%Object.getOwnPropertyDescriptor%', true); -var $defineProperty = getIntrinsic('%Object.defineProperty%', true); -var $max = getIntrinsic('%Math.max%'); - -if ($defineProperty) { - try { - $defineProperty({}, 'a', { value: 1 }); - } catch (e) { - // IE 8 has a broken defineProperty - $defineProperty = null; - } -} - -module.exports = function callBind(originalFunction) { - var func = $reflectApply(functionBind, $call, arguments); - if ($gOPD && $defineProperty) { - var desc = $gOPD(func, 'length'); - if (desc.configurable) { - // original length, plus the receiver, minus any additional arguments (after the receiver) - $defineProperty( - func, - 'length', - { value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } - ); - } - } - return func; -}; - -var applyBind = function applyBind() { - return $reflectApply(functionBind, $apply, arguments); -}; - -if ($defineProperty) { - $defineProperty(module.exports, 'apply', { value: applyBind }); -} else { - module.exports.apply = applyBind; -} -}); - -var $indexOf = callBind(getIntrinsic('String.prototype.indexOf')); - -var callBound = function callBoundIntrinsic(name, allowMissing) { - var intrinsic = getIntrinsic(name, !!allowMissing); - if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { - return callBind(intrinsic); - } - return intrinsic; -}; - -var util_inspect = require$$0$3.inspect; - -var hasMap = typeof Map === 'function' && Map.prototype; -var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; -var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; -var mapForEach = hasMap && Map.prototype.forEach; -var hasSet = typeof Set === 'function' && Set.prototype; -var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; -var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; -var setForEach = hasSet && Set.prototype.forEach; -var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; -var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; -var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; -var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; -var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; -var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; -var booleanValueOf = Boolean.prototype.valueOf; -var objectToString = Object.prototype.toString; -var functionToString = Function.prototype.toString; -var match = String.prototype.match; -var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; -var gOPS = Object.getOwnPropertySymbols; -var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; -var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; -var isEnumerable = Object.prototype.propertyIsEnumerable; - -var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( - [].__proto__ === Array.prototype // eslint-disable-line no-proto - ? function (O) { - return O.__proto__; // eslint-disable-line no-proto - } - : null -); - -var inspectCustom = util_inspect.custom; -var inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null; -var toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null; - -var objectInspect = function inspect_(obj, options, depth, seen) { - var opts = options || {}; - - if (has$3(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) { - throw new TypeError('option "quoteStyle" must be "single" or "double"'); - } - if ( - has$3(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' - ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity - : opts.maxStringLength !== null - ) - ) { - throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); - } - var customInspect = has$3(opts, 'customInspect') ? opts.customInspect : true; - if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { - throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); - } - - if ( - has$3(opts, 'indent') - && opts.indent !== null - && opts.indent !== '\t' - && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) - ) { - throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`'); - } - - if (typeof obj === 'undefined') { - return 'undefined'; - } - if (obj === null) { - return 'null'; - } - if (typeof obj === 'boolean') { - return obj ? 'true' : 'false'; - } - - if (typeof obj === 'string') { - return inspectString(obj, opts); - } - if (typeof obj === 'number') { - if (obj === 0) { - return Infinity / obj > 0 ? '0' : '-0'; - } - return String(obj); - } - if (typeof obj === 'bigint') { - return String(obj) + 'n'; - } - - var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; - if (typeof depth === 'undefined') { depth = 0; } - if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { - return isArray$3(obj) ? '[Array]' : '[Object]'; - } - - var indent = getIndent(opts, depth); - - if (typeof seen === 'undefined') { - seen = []; - } else if (indexOf(seen, obj) >= 0) { - return '[Circular]'; - } - - function inspect(value, from, noIndent) { - if (from) { - seen = seen.slice(); - seen.push(from); - } - if (noIndent) { - var newOpts = { - depth: opts.depth - }; - if (has$3(opts, 'quoteStyle')) { - newOpts.quoteStyle = opts.quoteStyle; - } - return inspect_(value, newOpts, depth + 1, seen); - } - return inspect_(value, opts, depth + 1, seen); - } - - if (typeof obj === 'function') { - var name = nameOf(obj); - var keys = arrObjKeys(obj, inspect); - return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : ''); - } - if (isSymbol(obj)) { - var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); - return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; - } - if (isElement(obj)) { - var s = '<' + String(obj.nodeName).toLowerCase(); - var attrs = obj.attributes || []; - for (var i = 0; i < attrs.length; i++) { - s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); - } - s += '>'; - if (obj.childNodes && obj.childNodes.length) { s += '...'; } - s += ''; - return s; - } - if (isArray$3(obj)) { - if (obj.length === 0) { return '[]'; } - var xs = arrObjKeys(obj, inspect); - if (indent && !singleLineValues(xs)) { - return '[' + indentedJoin(xs, indent) + ']'; - } - return '[ ' + xs.join(', ') + ' ]'; - } - if (isError(obj)) { - var parts = arrObjKeys(obj, inspect); - if (parts.length === 0) { return '[' + String(obj) + ']'; } - return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }'; - } - if (typeof obj === 'object' && customInspect) { - if (inspectSymbol && typeof obj[inspectSymbol] === 'function') { - return obj[inspectSymbol](); - } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { - return obj.inspect(); - } - } - if (isMap(obj)) { - var mapParts = []; - mapForEach.call(obj, function (value, key) { - mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); - }); - return collectionOf('Map', mapSize.call(obj), mapParts, indent); - } - if (isSet(obj)) { - var setParts = []; - setForEach.call(obj, function (value) { - setParts.push(inspect(value, obj)); - }); - return collectionOf('Set', setSize.call(obj), setParts, indent); - } - if (isWeakMap(obj)) { - return weakCollectionOf('WeakMap'); - } - if (isWeakSet(obj)) { - return weakCollectionOf('WeakSet'); - } - if (isWeakRef(obj)) { - return weakCollectionOf('WeakRef'); - } - if (isNumber(obj)) { - return markBoxed(inspect(Number(obj))); - } - if (isBigInt(obj)) { - return markBoxed(inspect(bigIntValueOf.call(obj))); - } - if (isBoolean(obj)) { - return markBoxed(booleanValueOf.call(obj)); - } - if (isString(obj)) { - return markBoxed(inspect(String(obj))); - } - if (!isDate(obj) && !isRegExp$1(obj)) { - var ys = arrObjKeys(obj, inspect); - var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; - var protoTag = obj instanceof Object ? '' : 'null prototype'; - var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : ''; - var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; - var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : ''); - if (ys.length === 0) { return tag + '{}'; } - if (indent) { - return tag + '{' + indentedJoin(ys, indent) + '}'; - } - return tag + '{ ' + ys.join(', ') + ' }'; - } - return String(obj); -}; - -function wrapQuotes(s, defaultStyle, opts) { - var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'"; - return quoteChar + s + quoteChar; -} - -function quote(s) { - return String(s).replace(/"/g, '"'); -} - -function isArray$3(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isRegExp$1(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } - -// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives -function isSymbol(obj) { - if (hasShammedSymbols) { - return obj && typeof obj === 'object' && obj instanceof Symbol; - } - if (typeof obj === 'symbol') { - return true; - } - if (!obj || typeof obj !== 'object' || !symToString) { - return false; - } - try { - symToString.call(obj); - return true; - } catch (e) {} - return false; -} - -function isBigInt(obj) { - if (!obj || typeof obj !== 'object' || !bigIntValueOf) { - return false; - } - try { - bigIntValueOf.call(obj); - return true; - } catch (e) {} - return false; -} - -var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; -function has$3(obj, key) { - return hasOwn.call(obj, key); -} - -function toStr(obj) { - return objectToString.call(obj); -} - -function nameOf(f) { - if (f.name) { return f.name; } - var m = match.call(functionToString.call(f), /^function\s*([\w$]+)/); - if (m) { return m[1]; } - return null; -} - -function indexOf(xs, x) { - if (xs.indexOf) { return xs.indexOf(x); } - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) { return i; } - } - return -1; -} - -function isMap(x) { - if (!mapSize || !x || typeof x !== 'object') { - return false; - } - try { - mapSize.call(x); - try { - setSize.call(x); - } catch (s) { - return true; - } - return x instanceof Map; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isWeakMap(x) { - if (!weakMapHas || !x || typeof x !== 'object') { - return false; - } - try { - weakMapHas.call(x, weakMapHas); - try { - weakSetHas.call(x, weakSetHas); - } catch (s) { - return true; - } - return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isWeakRef(x) { - if (!weakRefDeref || !x || typeof x !== 'object') { - return false; - } - try { - weakRefDeref.call(x); - return true; - } catch (e) {} - return false; -} - -function isSet(x) { - if (!setSize || !x || typeof x !== 'object') { - return false; - } - try { - setSize.call(x); - try { - mapSize.call(x); - } catch (m) { - return true; - } - return x instanceof Set; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isWeakSet(x) { - if (!weakSetHas || !x || typeof x !== 'object') { - return false; - } - try { - weakSetHas.call(x, weakSetHas); - try { - weakMapHas.call(x, weakMapHas); - } catch (s) { - return true; - } - return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isElement(x) { - if (!x || typeof x !== 'object') { return false; } - if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { - return true; - } - return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; -} - -function inspectString(str, opts) { - if (str.length > opts.maxStringLength) { - var remaining = str.length - opts.maxStringLength; - var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); - return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer; - } - // eslint-disable-next-line no-control-regex - var s = str.replace(/(['\\])/g, '\\$1').replace(/[\x00-\x1f]/g, lowbyte); - return wrapQuotes(s, 'single', opts); -} - -function lowbyte(c) { - var n = c.charCodeAt(0); - var x = { - 8: 'b', - 9: 't', - 10: 'n', - 12: 'f', - 13: 'r' - }[n]; - if (x) { return '\\' + x; } - return '\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase(); -} - -function markBoxed(str) { - return 'Object(' + str + ')'; -} - -function weakCollectionOf(type) { - return type + ' { ? }'; -} - -function collectionOf(type, size, entries, indent) { - var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', '); - return type + ' (' + size + ') {' + joinedEntries + '}'; -} - -function singleLineValues(xs) { - for (var i = 0; i < xs.length; i++) { - if (indexOf(xs[i], '\n') >= 0) { - return false; - } - } - return true; -} - -function getIndent(opts, depth) { - var baseIndent; - if (opts.indent === '\t') { - baseIndent = '\t'; - } else if (typeof opts.indent === 'number' && opts.indent > 0) { - baseIndent = Array(opts.indent + 1).join(' '); - } else { - return null; - } - return { - base: baseIndent, - prev: Array(depth + 1).join(baseIndent) - }; -} - -function indentedJoin(xs, indent) { - if (xs.length === 0) { return ''; } - var lineJoiner = '\n' + indent.prev + indent.base; - return lineJoiner + xs.join(',' + lineJoiner) + '\n' + indent.prev; -} - -function arrObjKeys(obj, inspect) { - var isArr = isArray$3(obj); - var xs = []; - if (isArr) { - xs.length = obj.length; - for (var i = 0; i < obj.length; i++) { - xs[i] = has$3(obj, i) ? inspect(obj[i], obj) : ''; - } - } - var syms = typeof gOPS === 'function' ? gOPS(obj) : []; - var symMap; - if (hasShammedSymbols) { - symMap = {}; - for (var k = 0; k < syms.length; k++) { - symMap['$' + syms[k]] = syms[k]; - } - } - - for (var key in obj) { // eslint-disable-line no-restricted-syntax - if (!has$3(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { - // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section - continue; // eslint-disable-line no-restricted-syntax, no-continue - } else if ((/[^\w$]/).test(key)) { - xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); - } else { - xs.push(key + ': ' + inspect(obj[key], obj)); - } - } - if (typeof gOPS === 'function') { - for (var j = 0; j < syms.length; j++) { - if (isEnumerable.call(obj, syms[j])) { - xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); - } - } - } - return xs; -} - -var $TypeError = getIntrinsic('%TypeError%'); -var $WeakMap = getIntrinsic('%WeakMap%', true); -var $Map = getIntrinsic('%Map%', true); - -var $weakMapGet = callBound('WeakMap.prototype.get', true); -var $weakMapSet = callBound('WeakMap.prototype.set', true); -var $weakMapHas = callBound('WeakMap.prototype.has', true); -var $mapGet = callBound('Map.prototype.get', true); -var $mapSet = callBound('Map.prototype.set', true); -var $mapHas = callBound('Map.prototype.has', true); - -/* - * This function traverses the list returning the node corresponding to the - * given key. - * - * That node is also moved to the head of the list, so that if it's accessed - * again we don't need to traverse the whole list. By doing so, all the recently - * used nodes can be accessed relatively quickly. - */ -var listGetNode = function (list, key) { // eslint-disable-line consistent-return - for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { - if (curr.key === key) { - prev.next = curr.next; - curr.next = list.next; - list.next = curr; // eslint-disable-line no-param-reassign - return curr; - } - } -}; - -var listGet = function (objects, key) { - var node = listGetNode(objects, key); - return node && node.value; -}; -var listSet = function (objects, key, value) { - var node = listGetNode(objects, key); - if (node) { - node.value = value; - } else { - // Prepend the new node to the beginning of the list - objects.next = { // eslint-disable-line no-param-reassign - key: key, - next: objects.next, - value: value - }; - } -}; -var listHas = function (objects, key) { - return !!listGetNode(objects, key); -}; - -var sideChannel = function getSideChannel() { - var $wm; - var $m; - var $o; - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + objectInspect(key)); - } - }, - get: function (key) { // eslint-disable-line consistent-return - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapGet($wm, key); - } - } else if ($Map) { - if ($m) { - return $mapGet($m, key); - } - } else { - if ($o) { // eslint-disable-line no-lonely-if - return listGet($o, key); - } - } - }, - has: function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapHas($wm, key); - } - } else if ($Map) { - if ($m) { - return $mapHas($m, key); - } - } else { - if ($o) { // eslint-disable-line no-lonely-if - return listHas($o, key); - } - } - return false; - }, - set: function (key, value) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if (!$wm) { - $wm = new $WeakMap(); - } - $weakMapSet($wm, key, value); - } else if ($Map) { - if (!$m) { - $m = new $Map(); - } - $mapSet($m, key, value); - } else { - if (!$o) { - /* - * Initialize the linked list as an empty node, so that we don't have - * to special-case handling of the first node: we can always refer to - * it as (previous node).next, instead of something like (list).head - */ - $o = { key: {}, next: null }; - } - listSet($o, key, value); - } - } - }; - return channel; -}; - -var replace = String.prototype.replace; -var percentTwenties = /%20/g; - -var Format = { - RFC1738: 'RFC1738', - RFC3986: 'RFC3986' -}; - -var formats = { - 'default': Format.RFC3986, - formatters: { - RFC1738: function (value) { - return replace.call(value, percentTwenties, '+'); - }, - RFC3986: function (value) { - return String(value); - } - }, - RFC1738: Format.RFC1738, - RFC3986: Format.RFC3986 -}; - -var has$2 = Object.prototype.hasOwnProperty; -var isArray$2 = Array.isArray; - -var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; -}()); - -var compactQueue = function compactQueue(queue) { - while (queue.length > 1) { - var item = queue.pop(); - var obj = item.obj[item.prop]; - - if (isArray$2(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } -}; - -var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; -}; - -var merge = function merge(target, source, options) { - /* eslint no-param-reassign: 0 */ - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (isArray$2(target)) { - target.push(source); - } else if (target && typeof target === 'object') { - if ((options && (options.plainObjects || options.allowPrototypes)) || !has$2.call(Object.prototype, source)) { - target[source] = true; - } - } else { - return [target, source]; - } - - return target; - } - - if (!target || typeof target !== 'object') { - return [target].concat(source); - } - - var mergeTarget = target; - if (isArray$2(target) && !isArray$2(source)) { - mergeTarget = arrayToObject(target, options); - } - - if (isArray$2(target) && isArray$2(source)) { - source.forEach(function (item, i) { - if (has$2.call(target, i)) { - var targetItem = target[i]; - if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { - target[i] = merge(targetItem, item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } - - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; - - if (has$2.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); -}; - -var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); -}; - -var decode = function (str, decoder, charset) { - var strWithoutPlus = str.replace(/\+/g, ' '); - if (charset === 'iso-8859-1') { - // unescape never throws, no try...catch needed: - return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); - } - // utf-8 - try { - return decodeURIComponent(strWithoutPlus); - } catch (e) { - return strWithoutPlus; - } -}; - -var encode = function encode(str, defaultEncoder, charset, kind, format) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - var string = str; - if (typeof str === 'symbol') { - string = Symbol.prototype.toString.call(str); - } else if (typeof str !== 'string') { - string = String(str); - } - - if (charset === 'iso-8859-1') { - return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { - return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; - }); - } - - var out = ''; - for (var i = 0; i < string.length; ++i) { - var c = string.charCodeAt(i); - - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) - ) { - out += string.charAt(i); - continue; - } - - if (c < 0x80) { - out = out + hexTable[c]; - continue; - } - - if (c < 0x800) { - out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); - out += hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - compactQueue(queue); - - return value; -}; - -var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - -var isBuffer = function isBuffer(obj) { - if (!obj || typeof obj !== 'object') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); -}; - -var combine = function combine(a, b) { - return [].concat(a, b); -}; - -var maybeMap = function maybeMap(val, fn) { - if (isArray$2(val)) { - var mapped = []; - for (var i = 0; i < val.length; i += 1) { - mapped.push(fn(val[i])); - } - return mapped; - } - return fn(val); -}; - -var utils = { - arrayToObject: arrayToObject, - assign: assign, - combine: combine, - compact: compact, - decode: decode, - encode: encode, - isBuffer: isBuffer, - isRegExp: isRegExp, - maybeMap: maybeMap, - merge: merge -}; - -var has$1 = Object.prototype.hasOwnProperty; - -var arrayPrefixGenerators = { - brackets: function brackets(prefix) { - return prefix + '[]'; - }, - comma: 'comma', - indices: function indices(prefix, key) { - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { - return prefix; - } -}; - -var isArray$1 = Array.isArray; -var push = Array.prototype.push; -var pushToArray = function (arr, valueOrArray) { - push.apply(arr, isArray$1(valueOrArray) ? valueOrArray : [valueOrArray]); -}; - -var toISO = Date.prototype.toISOString; - -var defaultFormat = formats['default']; -var defaults$1 = { - addQueryPrefix: false, - allowDots: false, - charset: 'utf-8', - charsetSentinel: false, - delimiter: '&', - encode: true, - encoder: utils.encode, - encodeValuesOnly: false, - format: defaultFormat, - formatter: formats.formatters[defaultFormat], - // deprecated - indices: false, - serializeDate: function serializeDate(date) { - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false -}; - -var isNonNullishPrimitive = function isNonNullishPrimitive(v) { - return typeof v === 'string' - || typeof v === 'number' - || typeof v === 'boolean' - || typeof v === 'symbol' - || typeof v === 'bigint'; -}; - -var stringify = function stringify( - object, - prefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - sideChannel$1 -) { - var obj = object; - - if (sideChannel$1.has(object)) { - throw new RangeError('Cyclic object value'); - } - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (generateArrayPrefix === 'comma' && isArray$1(obj)) { - obj = utils.maybeMap(obj, function (value) { - if (value instanceof Date) { - return serializeDate(value); - } - return value; - }); - } - - if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults$1.encoder, charset, 'key', format) : prefix; - } - - obj = ''; - } - - if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults$1.encoder, charset, 'key', format); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults$1.encoder, charset, 'value', format))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (generateArrayPrefix === 'comma' && isArray$1(obj)) { - // we need to join elements in - objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }]; - } else if (isArray$1(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key]; - - if (skipNulls && value === null) { - continue; - } - - var keyPrefix = isArray$1(obj) - ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix - : prefix + (allowDots ? '.' + key : '[' + key + ']'); - - sideChannel$1.set(object, true); - var valueSideChannel = sideChannel(); - pushToArray(values, stringify( - value, - keyPrefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - valueSideChannel - )); - } - - return values; -}; - -var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { - if (!opts) { - return defaults$1; - } - - if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } - - var charset = opts.charset || defaults$1.charset; - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - - var format = formats['default']; - if (typeof opts.format !== 'undefined') { - if (!has$1.call(formats.formatters, opts.format)) { - throw new TypeError('Unknown format option provided.'); - } - format = opts.format; - } - var formatter = formats.formatters[format]; - - var filter = defaults$1.filter; - if (typeof opts.filter === 'function' || isArray$1(opts.filter)) { - filter = opts.filter; - } - - return { - addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults$1.addQueryPrefix, - allowDots: typeof opts.allowDots === 'undefined' ? defaults$1.allowDots : !!opts.allowDots, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults$1.charsetSentinel, - delimiter: typeof opts.delimiter === 'undefined' ? defaults$1.delimiter : opts.delimiter, - encode: typeof opts.encode === 'boolean' ? opts.encode : defaults$1.encode, - encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults$1.encoder, - encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults$1.encodeValuesOnly, - filter: filter, - format: format, - formatter: formatter, - serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults$1.serializeDate, - skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults$1.skipNulls, - sort: typeof opts.sort === 'function' ? opts.sort : null, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults$1.strictNullHandling - }; -}; - -var stringify_1 = function (object, opts) { - var obj = object; - var options = normalizeStringifyOptions(opts); - - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (isArray$1(options.filter)) { - filter = options.filter; - objKeys = filter; - } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; - } - - var arrayFormat; - if (opts && opts.arrayFormat in arrayPrefixGenerators) { - arrayFormat = opts.arrayFormat; - } else if (opts && 'indices' in opts) { - arrayFormat = opts.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (options.sort) { - objKeys.sort(options.sort); - } - - var sideChannel$1 = sideChannel(); - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (options.skipNulls && obj[key] === null) { - continue; - } - pushToArray(keys, stringify( - obj[key], - key, - generateArrayPrefix, - options.strictNullHandling, - options.skipNulls, - options.encode ? options.encoder : null, - options.filter, - options.sort, - options.allowDots, - options.serializeDate, - options.format, - options.formatter, - options.encodeValuesOnly, - options.charset, - sideChannel$1 - )); - } - - var joined = keys.join(options.delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - if (options.charsetSentinel) { - if (options.charset === 'iso-8859-1') { - // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark - prefix += 'utf8=%26%2310003%3B&'; - } else { - // encodeURIComponent('✓') - prefix += 'utf8=%E2%9C%93&'; - } - } - - return joined.length > 0 ? prefix + joined : ''; -}; - -var has = Object.prototype.hasOwnProperty; -var isArray = Array.isArray; - -var defaults = { - allowDots: false, - allowPrototypes: false, - allowSparse: false, - arrayLimit: 20, - charset: 'utf-8', - charsetSentinel: false, - comma: false, - decoder: utils.decode, - delimiter: '&', - depth: 5, - ignoreQueryPrefix: false, - interpretNumericEntities: false, - parameterLimit: 1000, - parseArrays: true, - plainObjects: false, - strictNullHandling: false -}; - -var interpretNumericEntities = function (str) { - return str.replace(/&#(\d+);/g, function ($0, numberStr) { - return String.fromCharCode(parseInt(numberStr, 10)); - }); -}; - -var parseArrayValue = function (val, options) { - if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { - return val.split(','); - } - - return val; -}; - -// This is what browsers will submit when the ✓ character occurs in an -// application/x-www-form-urlencoded body and the encoding of the page containing -// the form is iso-8859-1, or when the submitted form has an accept-charset -// attribute of iso-8859-1. Presumably also with other charsets that do not contain -// the ✓ character, such as us-ascii. -var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') - -// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. -var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') - -var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); - var skipIndex = -1; // Keep track of where the utf8 sentinel was found - var i; - - var charset = options.charset; - if (options.charsetSentinel) { - for (i = 0; i < parts.length; ++i) { - if (parts[i].indexOf('utf8=') === 0) { - if (parts[i] === charsetSentinel) { - charset = 'utf-8'; - } else if (parts[i] === isoSentinel) { - charset = 'iso-8859-1'; - } - skipIndex = i; - i = parts.length; // The eslint settings do not allow break; - } - } - } - - for (i = 0; i < parts.length; ++i) { - if (i === skipIndex) { - continue; - } - var part = parts[i]; - - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - - var key, val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder, charset, 'key'); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); - val = utils.maybeMap( - parseArrayValue(part.slice(pos + 1), options), - function (encodedVal) { - return options.decoder(encodedVal, defaults.decoder, charset, 'value'); - } - ); - } - - if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(val); - } - - if (part.indexOf('[]=') > -1) { - val = isArray(val) ? [val] : val; - } - - if (has.call(obj, key)) { - obj[key] = utils.combine(obj[key], val); - } else { - obj[key] = val; - } - } - - return obj; -}; - -var parseObject = function (chain, val, options, valuesParsed) { - var leaf = valuesParsed ? val : parseArrayValue(val, options); - - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]' && options.parseArrays) { - obj = [].concat(leaf); - } else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var index = parseInt(cleanRoot, 10); - if (!options.parseArrays && cleanRoot === '') { - obj = { 0: leaf }; - } else if ( - !isNaN(index) - && root !== cleanRoot - && String(index) === cleanRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else { - obj[cleanRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; -}; - -var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = options.depth > 0 && brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options, valuesParsed); -}; - -var normalizeParseOptions = function normalizeParseOptions(opts) { - if (!opts) { - return defaults; - } - - if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; - - return { - allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, - allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, - allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, - arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, - decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, - delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, - // eslint-disable-next-line no-implicit-coercion, no-extra-parens - depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, - ignoreQueryPrefix: opts.ignoreQueryPrefix === true, - interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, - parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, - parseArrays: opts.parseArrays !== false, - plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; -}; - -var parse$1 = function (str, opts) { - var options = normalizeParseOptions(opts); - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); - obj = utils.merge(obj, newObj, options); - } - - if (options.allowSparse === true) { - return obj; - } - - return utils.compact(obj); -}; - -var lib$1 = { - formats: formats, - parse: parse$1, - stringify: stringify_1 -}; - -function account(rawAccount) { - if (!rawAccount) { - return undefined; - } - try { - return { - ...rawAccount, - raw: () => rawAccount, - buying_power: number(rawAccount.buying_power), - regt_buying_power: number(rawAccount.regt_buying_power), - daytrading_buying_power: number(rawAccount.daytrading_buying_power), - cash: number(rawAccount.cash), - created_at: new Date(rawAccount.created_at), - portfolio_value: number(rawAccount.portfolio_value), - multiplier: number(rawAccount.multiplier), - equity: number(rawAccount.equity), - last_equity: number(rawAccount.last_equity), - long_market_value: number(rawAccount.long_market_value), - short_market_value: number(rawAccount.short_market_value), - initial_margin: number(rawAccount.initial_margin), - maintenance_margin: number(rawAccount.maintenance_margin), - last_maintenance_margin: number(rawAccount.last_maintenance_margin), - sma: number(rawAccount.sma), - status: rawAccount.status, - }; - } - catch (err) { - throw new Error(`Account parsing failed. ${err.message}`); - } -} -function clock(rawClock) { - if (!rawClock) { - return undefined; - } - try { - return { - raw: () => rawClock, - timestamp: new Date(rawClock.timestamp), - is_open: rawClock.is_open, - next_open: new Date(rawClock.next_open), - next_close: new Date(rawClock.next_close), - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function latestTrade(raw) { - if (!raw) { - return undefined; - } - try { - return { - ...raw, - raw: () => raw, - trade: { - ...raw.trade, - t: new Date(raw.trade.t), - }, - }; - } - catch (err) { - throw new Error(`Latest trade parsing failed. ${err.message}`); - } -} -function order(rawOrder) { - if (!rawOrder) { - return undefined; - } - try { - return { - ...rawOrder, - raw: () => rawOrder, - created_at: new Date(rawOrder.created_at), - updated_at: new Date(rawOrder.updated_at), - submitted_at: new Date(rawOrder.submitted_at), - filled_at: new Date(rawOrder.filled_at), - expired_at: new Date(rawOrder.expired_at), - canceled_at: new Date(rawOrder.canceled_at), - failed_at: new Date(rawOrder.failed_at), - replaced_at: new Date(rawOrder.replaced_at), - qty: number(rawOrder.qty), - filled_qty: number(rawOrder.filled_qty), - type: rawOrder.type, - side: rawOrder.side, - time_in_force: rawOrder.time_in_force, - limit_price: number(rawOrder.limit_price), - stop_price: number(rawOrder.stop_price), - filled_avg_price: number(rawOrder.filled_avg_price), - status: rawOrder.status, - legs: orders(rawOrder.legs), - trail_price: number(rawOrder.trail_price), - trail_percent: number(rawOrder.trail_percent), - hwm: number(rawOrder.hwm), - order_class: rawOrder.order_class, - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function orders(rawOrders) { - return rawOrders ? rawOrders.map((value) => order(value)) : undefined; -} -function canceled_order(input) { - if (!input) { - return undefined; - } - let order = input.body; - delete input.body; - try { - return { - ...input, - order: { - ...order, - raw: () => order, - created_at: new Date(order.created_at), - updated_at: new Date(order.updated_at), - submitted_at: new Date(order.submitted_at), - filled_at: new Date(order.filled_at), - expired_at: new Date(order.expired_at), - canceled_at: new Date(order.canceled_at), - failed_at: new Date(order.failed_at), - replaced_at: new Date(order.replaced_at), - qty: number(order.qty), - filled_qty: number(order.filled_qty), - type: order.type, - side: order.side, - time_in_force: order.time_in_force, - limit_price: number(order.limit_price), - stop_price: number(order.stop_price), - filled_avg_price: number(order.filled_avg_price), - status: order.status, - legs: orders(order.legs), - trail_price: number(order.trail_price), - trail_percent: number(order.trail_percent), - hwm: number(order.hwm), - order_class: order.order_class, - }, - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function canceled_orders(rawOrderCancelations) { - return rawOrderCancelations - ? rawOrderCancelations.map((value) => canceled_order(value)) - : undefined; -} -function position(rawPosition) { - if (!rawPosition) { - return undefined; - } - try { - return { - ...rawPosition, - raw: () => rawPosition, - avg_entry_price: number(rawPosition.avg_entry_price), - qty: number(rawPosition.qty), - side: rawPosition.side, - market_value: number(rawPosition.market_value), - cost_basis: number(rawPosition.cost_basis), - unrealized_pl: number(rawPosition.unrealized_pl), - unrealized_plpc: number(rawPosition.unrealized_plpc), - unrealized_intraday_pl: number(rawPosition.unrealized_intraday_pl), - unrealized_intraday_plpc: number(rawPosition.unrealized_intraday_plpc), - current_price: number(rawPosition.current_price), - lastday_price: number(rawPosition.lastday_price), - change_today: number(rawPosition.change_today), - }; - } - catch (err) { - throw new Error(`Position parsing failed. ${err.message}`); - } -} -function positions(rawPositions) { - return rawPositions ? rawPositions.map((pos) => position(pos)) : undefined; -} -function tradeActivity(rawTradeActivity) { - if (!rawTradeActivity) { - return undefined; - } - try { - return { - ...rawTradeActivity, - raw: () => rawTradeActivity, - cum_qty: number(rawTradeActivity.cum_qty), - leaves_qty: number(rawTradeActivity.leaves_qty), - price: number(rawTradeActivity.price), - qty: number(rawTradeActivity.qty), - side: rawTradeActivity.side, - type: rawTradeActivity.type, - }; - } - catch (err) { - throw new Error(`TradeActivity parsing failed. ${err.message}`); - } -} -function nonTradeActivity(rawNonTradeActivity) { - if (!rawNonTradeActivity) { - return undefined; - } - try { - return { - ...rawNonTradeActivity, - raw: () => rawNonTradeActivity, - net_amount: number(rawNonTradeActivity.net_amount), - qty: number(rawNonTradeActivity.qty), - per_share_amount: number(rawNonTradeActivity.per_share_amount), - }; - } - catch (err) { - throw new Error(`NonTradeActivity parsing failed. ${err.message}`); - } -} -function activities(rawActivities) { - if (!rawActivities) { - return undefined; - } - try { - return rawActivities.map((rawActivity) => rawActivity.activity_type === 'FILL' - ? tradeActivity(rawActivity) - : nonTradeActivity(rawActivity)); - } - catch (err) { - throw new Error(`Activity parsing failed. ${err.message}`); - } -} -function pageOfTrades(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - trades: (page.trades == null ? [] : page.trades).map((trade) => ({ - raw: () => trade, - ...trade, - t: new Date(trade.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfQuotes(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - quotes: (page.quotes == null ? [] : page.quotes).map((quote) => ({ - raw: () => quote, - ...quote, - t: new Date(quote.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfBars(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - bars: (page.bars == null ? [] : page.bars).map((bar) => ({ - raw: () => bar, - ...bar, - t: new Date(bar.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function snapshot(raw) { - if (!raw) { - return undefined; - } - try { - return { - ...raw, - raw: () => raw, - latestTrade: raw.latestTrade - ? { - ...raw.latestTrade, - t: new Date(raw.latestTrade.t), - } - : null, - latestQuote: raw.latestQuote - ? { - ...raw.latestQuote, - t: new Date(raw.latestQuote.t), - } - : null, - minuteBar: raw.minuteBar - ? { - ...raw.minuteBar, - t: new Date(raw.minuteBar.t), - } - : null, - dailyBar: raw.dailyBar - ? { - ...raw.dailyBar, - t: new Date(raw.dailyBar.t), - } - : null, - prevDailyBar: raw.prevDailyBar - ? { - ...raw.prevDailyBar, - t: new Date(raw.prevDailyBar.t), - } - : null, - }; - } - catch (err) { - throw new Error(`Snapshot parsing failed "${err.message}"`); - } -} -function snapshots(raw) { - let parsed = {}; - for (let [key, value] of Object.entries(raw)) { - parsed[key] = snapshot(value); - } - return parsed; -} -function number(numStr) { - if (typeof numStr === 'undefined' || numStr == null) { - return numStr; - } - const value = parseFloat(numStr); - if (Number.isNaN(value)) { - return null; - } - return value; -} -function trade_update(rawTradeUpdate) { - if (!rawTradeUpdate) - return undefined; - return { - raw: () => rawTradeUpdate, - event: rawTradeUpdate.event, - execution_id: rawTradeUpdate.execution_id, - order: order(rawTradeUpdate.order), - ...(rawTradeUpdate.event_id && { - event_id: number(rawTradeUpdate.event_id), - }), - ...(rawTradeUpdate.at && { at: new Date(rawTradeUpdate.at) }), - ...(rawTradeUpdate.timestamp && { - timestamp: new Date(rawTradeUpdate.timestamp), - }), - ...(rawTradeUpdate.position_qty && { - position_qty: number(rawTradeUpdate.position_qty), - }), - ...(rawTradeUpdate.price && { price: number(rawTradeUpdate.price) }), - ...(rawTradeUpdate.qty && { qty: number(rawTradeUpdate.qty) }), - }; -} -var parse = { - account, - activities, - clock, - nonTradeActivity, - order, - orders, - canceled_orders, - position, - positions, - tradeActivity, - pageOfTrades, - pageOfQuotes, - pageOfBars, - snapshot, - snapshots, - trade_update, - latestTrade, -}; - -function unfetch_module(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return {ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||"get",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+","+t:t;}),t(a());},s.onerror=r,s.withCredentials="include"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null);})} - -var unfetch_module$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': unfetch_module -}); - -var require$$0$2 = /*@__PURE__*/getAugmentedNamespace(unfetch_module$1); - -var browser$1 = self.fetch || (self.fetch = require$$0$2.default || require$$0$2); - -const endpoints = { - rest: { - beta: 'https://data.alpaca.markets/v1beta1', - account: 'https://api.alpaca.markets/v2', - market_data_v2: 'https://data.alpaca.markets/v2', - market_data_v1: 'https://data.alpaca.markets/v1', - }, - websocket: { - account: 'wss://api.alpaca.markets/stream', - market_data: (source = 'iex') => `wss://stream.data.alpaca.markets/v2/${source}`, - }, -}; - -var load = function (received, defaults, onto = {}) { - var k, ref, v; - - for (k in defaults) { - v = defaults[k]; - onto[k] = (ref = received[k]) != null ? ref : v; - } - - return onto; -}; - -var overwrite = function (received, defaults, onto = {}) { - var k, v; - - for (k in received) { - v = received[k]; - - if (defaults[k] !== void 0) { - onto[k] = v; - } - } - - return onto; -}; - -var parser$8 = { - load: load, - overwrite: overwrite -}; - -var DLList$2; -DLList$2 = class DLList { - constructor(incr, decr) { - this.incr = incr; - this.decr = decr; - this._first = null; - this._last = null; - this.length = 0; - } - - push(value) { - var node; - this.length++; - - if (typeof this.incr === "function") { - this.incr(); - } - - node = { - value, - prev: this._last, - next: null - }; - - if (this._last != null) { - this._last.next = node; - this._last = node; - } else { - this._first = this._last = node; - } - - return void 0; - } - - shift() { - var value; - - if (this._first == null) { - return; - } else { - this.length--; - - if (typeof this.decr === "function") { - this.decr(); - } - } - - value = this._first.value; - - if ((this._first = this._first.next) != null) { - this._first.prev = null; - } else { - this._last = null; - } - - return value; - } - - first() { - if (this._first != null) { - return this._first.value; - } - } - - getArray() { - var node, ref, results; - node = this._first; - results = []; - - while (node != null) { - results.push((ref = node, node = node.next, ref.value)); - } - - return results; - } - - forEachShift(cb) { - var node; - node = this.shift(); - - while (node != null) { - cb(node), node = this.shift(); - } - - return void 0; - } - - debug() { - var node, ref, ref1, ref2, results; - node = this._first; - results = []; - - while (node != null) { - results.push((ref = node, node = node.next, { - value: ref.value, - prev: (ref1 = ref.prev) != null ? ref1.value : void 0, - next: (ref2 = ref.next) != null ? ref2.value : void 0 - })); - } - - return results; - } - -}; -var DLList_1 = DLList$2; - -function asyncGeneratorStep$8(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$8(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$8(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$8(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Events$6; -Events$6 = class Events { - constructor(instance) { - this.instance = instance; - this._events = {}; - - if (this.instance.on != null || this.instance.once != null || this.instance.removeAllListeners != null) { - throw new Error("An Emitter already exists for this object"); - } - - this.instance.on = (name, cb) => { - return this._addListener(name, "many", cb); - }; - - this.instance.once = (name, cb) => { - return this._addListener(name, "once", cb); - }; - - this.instance.removeAllListeners = (name = null) => { - if (name != null) { - return delete this._events[name]; - } else { - return this._events = {}; - } - }; - } - - _addListener(name, status, cb) { - var base; - - if ((base = this._events)[name] == null) { - base[name] = []; - } - - this._events[name].push({ - cb, - status - }); - - return this.instance; - } - - listenerCount(name) { - if (this._events[name] != null) { - return this._events[name].length; - } else { - return 0; - } - } - - trigger(name, ...args) { - var _this = this; - - return _asyncToGenerator$8(function* () { - var e, promises; - - try { - if (name !== "debug") { - _this.trigger("debug", `Event triggered: ${name}`, args); - } - - if (_this._events[name] == null) { - return; - } - - _this._events[name] = _this._events[name].filter(function (listener) { - return listener.status !== "none"; - }); - promises = _this._events[name].map( - /*#__PURE__*/ - function () { - var _ref = _asyncToGenerator$8(function* (listener) { - var e, returned; - - if (listener.status === "none") { - return; - } - - if (listener.status === "once") { - listener.status = "none"; - } - - try { - returned = typeof listener.cb === "function" ? listener.cb(...args) : void 0; - - if (typeof (returned != null ? returned.then : void 0) === "function") { - return yield returned; - } else { - return returned; - } - } catch (error) { - e = error; - - if ("name" !== "error") { - _this.trigger("error", e); - } - - return null; - } - }); - - return function (_x) { - return _ref.apply(this, arguments); - }; - }()); - return (yield Promise.all(promises)).find(function (x) { - return x != null; - }); - } catch (error) { - e = error; - - { - _this.trigger("error", e); - } - - return null; - } - })(); - } - -}; -var Events_1 = Events$6; - -var DLList$1, Events$5, Queues$1; -DLList$1 = DLList_1; -Events$5 = Events_1; -Queues$1 = class Queues { - constructor(num_priorities) { - this.Events = new Events$5(this); - this._length = 0; - - this._lists = function () { - var j, ref, results; - results = []; - - for (j = 1, ref = num_priorities; 1 <= ref ? j <= ref : j >= ref; 1 <= ref ? ++j : --j) { - results.push(new DLList$1(() => { - return this.incr(); - }, () => { - return this.decr(); - })); - } - - return results; - }.call(this); - } - - incr() { - if (this._length++ === 0) { - return this.Events.trigger("leftzero"); - } - } - - decr() { - if (--this._length === 0) { - return this.Events.trigger("zero"); - } - } - - push(job) { - return this._lists[job.options.priority].push(job); - } - - queued(priority) { - if (priority != null) { - return this._lists[priority].length; - } else { - return this._length; - } - } - - shiftAll(fn) { - return this._lists.forEach(function (list) { - return list.forEachShift(fn); - }); - } - - getFirst(arr = this._lists) { - var j, len, list; - - for (j = 0, len = arr.length; j < len; j++) { - list = arr[j]; - - if (list.length > 0) { - return list; - } - } - - return []; - } - - shiftLastFrom(priority) { - return this.getFirst(this._lists.slice(priority).reverse()).shift(); - } - -}; -var Queues_1 = Queues$1; - -var BottleneckError$4; -BottleneckError$4 = class BottleneckError extends Error {}; -var BottleneckError_1 = BottleneckError$4; - -function asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$7(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var BottleneckError$3, DEFAULT_PRIORITY$1, Job$1, NUM_PRIORITIES$1, parser$7; -NUM_PRIORITIES$1 = 10; -DEFAULT_PRIORITY$1 = 5; -parser$7 = parser$8; -BottleneckError$3 = BottleneckError_1; -Job$1 = class Job { - constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) { - this.task = task; - this.args = args; - this.rejectOnDrop = rejectOnDrop; - this.Events = Events; - this._states = _states; - this.Promise = Promise; - this.options = parser$7.load(options, jobDefaults); - this.options.priority = this._sanitizePriority(this.options.priority); - - if (this.options.id === jobDefaults.id) { - this.options.id = `${this.options.id}-${this._randomIndex()}`; - } - - this.promise = new this.Promise((_resolve, _reject) => { - this._resolve = _resolve; - this._reject = _reject; - }); - this.retryCount = 0; - } - - _sanitizePriority(priority) { - var sProperty; - sProperty = ~~priority !== priority ? DEFAULT_PRIORITY$1 : priority; - - if (sProperty < 0) { - return 0; - } else if (sProperty > NUM_PRIORITIES$1 - 1) { - return NUM_PRIORITIES$1 - 1; - } else { - return sProperty; - } - } - - _randomIndex() { - return Math.random().toString(36).slice(2); - } - - doDrop({ - error, - message = "This job has been dropped by Bottleneck" - } = {}) { - if (this._states.remove(this.options.id)) { - if (this.rejectOnDrop) { - this._reject(error != null ? error : new BottleneckError$3(message)); - } - - this.Events.trigger("dropped", { - args: this.args, - options: this.options, - task: this.task, - promise: this.promise - }); - return true; - } else { - return false; - } - } - - _assertStatus(expected) { - var status; - status = this._states.jobStatus(this.options.id); - - if (!(status === expected || expected === "DONE" && status === null)) { - throw new BottleneckError$3(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`); - } - } - - doReceive() { - this._states.start(this.options.id); - - return this.Events.trigger("received", { - args: this.args, - options: this.options - }); - } - - doQueue(reachedHWM, blocked) { - this._assertStatus("RECEIVED"); - - this._states.next(this.options.id); - - return this.Events.trigger("queued", { - args: this.args, - options: this.options, - reachedHWM, - blocked - }); - } - - doRun() { - if (this.retryCount === 0) { - this._assertStatus("QUEUED"); - - this._states.next(this.options.id); - } else { - this._assertStatus("EXECUTING"); - } - - return this.Events.trigger("scheduled", { - args: this.args, - options: this.options - }); - } - - doExecute(chained, clearGlobalState, run, free) { - var _this = this; - - return _asyncToGenerator$7(function* () { - var error, eventInfo, passed; - - if (_this.retryCount === 0) { - _this._assertStatus("RUNNING"); - - _this._states.next(_this.options.id); - } else { - _this._assertStatus("EXECUTING"); - } - - eventInfo = { - args: _this.args, - options: _this.options, - retryCount: _this.retryCount - }; - - _this.Events.trigger("executing", eventInfo); - - try { - passed = yield chained != null ? chained.schedule(_this.options, _this.task, ..._this.args) : _this.task(..._this.args); - - if (clearGlobalState()) { - _this.doDone(eventInfo); - - yield free(_this.options, eventInfo); - - _this._assertStatus("DONE"); - - return _this._resolve(passed); - } - } catch (error1) { - error = error1; - return _this._onFailure(error, eventInfo, clearGlobalState, run, free); - } - })(); - } - - doExpire(clearGlobalState, run, free) { - var error, eventInfo; - - if (this._states.jobStatus(this.options.id === "RUNNING")) { - this._states.next(this.options.id); - } - - this._assertStatus("EXECUTING"); - - eventInfo = { - args: this.args, - options: this.options, - retryCount: this.retryCount - }; - error = new BottleneckError$3(`This job timed out after ${this.options.expiration} ms.`); - return this._onFailure(error, eventInfo, clearGlobalState, run, free); - } - - _onFailure(error, eventInfo, clearGlobalState, run, free) { - var _this2 = this; - - return _asyncToGenerator$7(function* () { - var retry, retryAfter; - - if (clearGlobalState()) { - retry = yield _this2.Events.trigger("failed", error, eventInfo); - - if (retry != null) { - retryAfter = ~~retry; - - _this2.Events.trigger("retry", `Retrying ${_this2.options.id} after ${retryAfter} ms`, eventInfo); - - _this2.retryCount++; - return run(retryAfter); - } else { - _this2.doDone(eventInfo); - - yield free(_this2.options, eventInfo); - - _this2._assertStatus("DONE"); - - return _this2._reject(error); - } - } - })(); - } - - doDone(eventInfo) { - this._assertStatus("EXECUTING"); - - this._states.next(this.options.id); - - return this.Events.trigger("done", eventInfo); - } - -}; -var Job_1 = Job$1; - -function asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$6(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var BottleneckError$2, LocalDatastore$1, parser$6; -parser$6 = parser$8; -BottleneckError$2 = BottleneckError_1; -LocalDatastore$1 = class LocalDatastore { - constructor(instance, storeOptions, storeInstanceOptions) { - this.instance = instance; - this.storeOptions = storeOptions; - this.clientId = this.instance._randomIndex(); - parser$6.load(storeInstanceOptions, storeInstanceOptions, this); - this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now(); - this._running = 0; - this._done = 0; - this._unblockTime = 0; - this.ready = this.Promise.resolve(); - this.clients = {}; - - this._startHeartbeat(); - } - - _startHeartbeat() { - var base; - - if (this.heartbeat == null && (this.storeOptions.reservoirRefreshInterval != null && this.storeOptions.reservoirRefreshAmount != null || this.storeOptions.reservoirIncreaseInterval != null && this.storeOptions.reservoirIncreaseAmount != null)) { - return typeof (base = this.heartbeat = setInterval(() => { - var amount, incr, maximum, now, reservoir; - now = Date.now(); - - if (this.storeOptions.reservoirRefreshInterval != null && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) { - this._lastReservoirRefresh = now; - this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount; - - this.instance._drainAll(this.computeCapacity()); - } - - if (this.storeOptions.reservoirIncreaseInterval != null && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) { - var _this$storeOptions = this.storeOptions; - amount = _this$storeOptions.reservoirIncreaseAmount; - maximum = _this$storeOptions.reservoirIncreaseMaximum; - reservoir = _this$storeOptions.reservoir; - this._lastReservoirIncrease = now; - incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount; - - if (incr > 0) { - this.storeOptions.reservoir += incr; - return this.instance._drainAll(this.computeCapacity()); - } - } - }, this.heartbeatInterval)).unref === "function" ? base.unref() : void 0; - } else { - return clearInterval(this.heartbeat); - } - } - - __publish__(message) { - var _this = this; - - return _asyncToGenerator$6(function* () { - yield _this.yieldLoop(); - return _this.instance.Events.trigger("message", message.toString()); - })(); - } - - __disconnect__(flush) { - var _this2 = this; - - return _asyncToGenerator$6(function* () { - yield _this2.yieldLoop(); - clearInterval(_this2.heartbeat); - return _this2.Promise.resolve(); - })(); - } - - yieldLoop(t = 0) { - return new this.Promise(function (resolve, reject) { - return setTimeout(resolve, t); - }); - } - - computePenalty() { - var ref; - return (ref = this.storeOptions.penalty) != null ? ref : 15 * this.storeOptions.minTime || 5000; - } - - __updateSettings__(options) { - var _this3 = this; - - return _asyncToGenerator$6(function* () { - yield _this3.yieldLoop(); - parser$6.overwrite(options, options, _this3.storeOptions); - - _this3._startHeartbeat(); - - _this3.instance._drainAll(_this3.computeCapacity()); - - return true; - })(); - } - - __running__() { - var _this4 = this; - - return _asyncToGenerator$6(function* () { - yield _this4.yieldLoop(); - return _this4._running; - })(); - } - - __queued__() { - var _this5 = this; - - return _asyncToGenerator$6(function* () { - yield _this5.yieldLoop(); - return _this5.instance.queued(); - })(); - } - - __done__() { - var _this6 = this; - - return _asyncToGenerator$6(function* () { - yield _this6.yieldLoop(); - return _this6._done; - })(); - } - - __groupCheck__(time) { - var _this7 = this; - - return _asyncToGenerator$6(function* () { - yield _this7.yieldLoop(); - return _this7._nextRequest + _this7.timeout < time; - })(); - } - - computeCapacity() { - var maxConcurrent, reservoir; - var _this$storeOptions2 = this.storeOptions; - maxConcurrent = _this$storeOptions2.maxConcurrent; - reservoir = _this$storeOptions2.reservoir; - - if (maxConcurrent != null && reservoir != null) { - return Math.min(maxConcurrent - this._running, reservoir); - } else if (maxConcurrent != null) { - return maxConcurrent - this._running; - } else if (reservoir != null) { - return reservoir; - } else { - return null; - } - } - - conditionsCheck(weight) { - var capacity; - capacity = this.computeCapacity(); - return capacity == null || weight <= capacity; - } - - __incrementReservoir__(incr) { - var _this8 = this; - - return _asyncToGenerator$6(function* () { - var reservoir; - yield _this8.yieldLoop(); - reservoir = _this8.storeOptions.reservoir += incr; - - _this8.instance._drainAll(_this8.computeCapacity()); - - return reservoir; - })(); - } - - __currentReservoir__() { - var _this9 = this; - - return _asyncToGenerator$6(function* () { - yield _this9.yieldLoop(); - return _this9.storeOptions.reservoir; - })(); - } - - isBlocked(now) { - return this._unblockTime >= now; - } - - check(weight, now) { - return this.conditionsCheck(weight) && this._nextRequest - now <= 0; - } - - __check__(weight) { - var _this10 = this; - - return _asyncToGenerator$6(function* () { - var now; - yield _this10.yieldLoop(); - now = Date.now(); - return _this10.check(weight, now); - })(); - } - - __register__(index, weight, expiration) { - var _this11 = this; - - return _asyncToGenerator$6(function* () { - var now, wait; - yield _this11.yieldLoop(); - now = Date.now(); - - if (_this11.conditionsCheck(weight)) { - _this11._running += weight; - - if (_this11.storeOptions.reservoir != null) { - _this11.storeOptions.reservoir -= weight; - } - - wait = Math.max(_this11._nextRequest - now, 0); - _this11._nextRequest = now + wait + _this11.storeOptions.minTime; - return { - success: true, - wait, - reservoir: _this11.storeOptions.reservoir - }; - } else { - return { - success: false - }; - } - })(); - } - - strategyIsBlock() { - return this.storeOptions.strategy === 3; - } - - __submit__(queueLength, weight) { - var _this12 = this; - - return _asyncToGenerator$6(function* () { - var blocked, now, reachedHWM; - yield _this12.yieldLoop(); - - if (_this12.storeOptions.maxConcurrent != null && weight > _this12.storeOptions.maxConcurrent) { - throw new BottleneckError$2(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${_this12.storeOptions.maxConcurrent}`); - } - - now = Date.now(); - reachedHWM = _this12.storeOptions.highWater != null && queueLength === _this12.storeOptions.highWater && !_this12.check(weight, now); - blocked = _this12.strategyIsBlock() && (reachedHWM || _this12.isBlocked(now)); - - if (blocked) { - _this12._unblockTime = now + _this12.computePenalty(); - _this12._nextRequest = _this12._unblockTime + _this12.storeOptions.minTime; - - _this12.instance._dropAllQueued(); - } - - return { - reachedHWM, - blocked, - strategy: _this12.storeOptions.strategy - }; - })(); - } - - __free__(index, weight) { - var _this13 = this; - - return _asyncToGenerator$6(function* () { - yield _this13.yieldLoop(); - _this13._running -= weight; - _this13._done += weight; - - _this13.instance._drainAll(_this13.computeCapacity()); - - return { - running: _this13._running - }; - })(); - } - -}; -var LocalDatastore_1 = LocalDatastore$1; - -var require$$0$1 = { - "blacklist_client.lua": "local blacklist = ARGV[num_static_argv + 1]\n\nif redis.call('zscore', client_last_seen_key, blacklist) then\n redis.call('zadd', client_last_seen_key, 0, blacklist)\nend\n\n\nreturn {}\n", - "check.lua": "local weight = tonumber(ARGV[num_static_argv + 1])\n\nlocal capacity = process_tick(now, false)['capacity']\nlocal nextRequest = tonumber(redis.call('hget', settings_key, 'nextRequest'))\n\nreturn conditions_check(capacity, weight) and nextRequest - now <= 0\n", - "conditions_check.lua": "local conditions_check = function (capacity, weight)\n return capacity == nil or weight <= capacity\nend\n", - "current_reservoir.lua": "return process_tick(now, false)['reservoir']\n", - "done.lua": "process_tick(now, false)\n\nreturn tonumber(redis.call('hget', settings_key, 'done'))\n", - "free.lua": "local index = ARGV[num_static_argv + 1]\n\nredis.call('zadd', job_expirations_key, 0, index)\n\nreturn process_tick(now, false)['running']\n", - "get_time.lua": "redis.replicate_commands()\n\nlocal get_time = function ()\n local time = redis.call('time')\n\n return tonumber(time[1]..string.sub(time[2], 1, 3))\nend\n", - "group_check.lua": "return not (redis.call('exists', settings_key) == 1)\n", - "heartbeat.lua": "process_tick(now, true)\n", - "increment_reservoir.lua": "local incr = tonumber(ARGV[num_static_argv + 1])\n\nredis.call('hincrby', settings_key, 'reservoir', incr)\n\nlocal reservoir = process_tick(now, true)['reservoir']\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn reservoir\n", - "init.lua": "local clear = tonumber(ARGV[num_static_argv + 1])\nlocal limiter_version = ARGV[num_static_argv + 2]\nlocal num_local_argv = num_static_argv + 2\n\nif clear == 1 then\n redis.call('del', unpack(KEYS))\nend\n\nif redis.call('exists', settings_key) == 0 then\n -- Create\n local args = {'hmset', settings_key}\n\n for i = num_local_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\n end\n\n redis.call(unpack(args))\n redis.call('hmset', settings_key,\n 'nextRequest', now,\n 'lastReservoirRefresh', now,\n 'lastReservoirIncrease', now,\n 'running', 0,\n 'done', 0,\n 'unblockTime', 0,\n 'capacityPriorityCounter', 0\n )\n\nelse\n -- Apply migrations\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'version'\n )\n local id = settings[1]\n local current_version = settings[2]\n\n if current_version ~= limiter_version then\n local version_digits = {}\n for k, v in string.gmatch(current_version, \"([^.]+)\") do\n table.insert(version_digits, tonumber(k))\n end\n\n -- 2.10.0\n if version_digits[2] < 10 then\n redis.call('hsetnx', settings_key, 'reservoirRefreshInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirRefreshAmount', '')\n redis.call('hsetnx', settings_key, 'lastReservoirRefresh', '')\n redis.call('hsetnx', settings_key, 'done', 0)\n redis.call('hset', settings_key, 'version', '2.10.0')\n end\n\n -- 2.11.1\n if version_digits[2] < 11 or (version_digits[2] == 11 and version_digits[3] < 1) then\n if redis.call('hstrlen', settings_key, 'lastReservoirRefresh') == 0 then\n redis.call('hmset', settings_key,\n 'lastReservoirRefresh', now,\n 'version', '2.11.1'\n )\n end\n end\n\n -- 2.14.0\n if version_digits[2] < 14 then\n local old_running_key = 'b_'..id..'_running'\n local old_executing_key = 'b_'..id..'_executing'\n\n if redis.call('exists', old_running_key) == 1 then\n redis.call('rename', old_running_key, job_weights_key)\n end\n if redis.call('exists', old_executing_key) == 1 then\n redis.call('rename', old_executing_key, job_expirations_key)\n end\n redis.call('hset', settings_key, 'version', '2.14.0')\n end\n\n -- 2.15.2\n if version_digits[2] < 15 or (version_digits[2] == 15 and version_digits[3] < 2) then\n redis.call('hsetnx', settings_key, 'capacityPriorityCounter', 0)\n redis.call('hset', settings_key, 'version', '2.15.2')\n end\n\n -- 2.17.0\n if version_digits[2] < 17 then\n redis.call('hsetnx', settings_key, 'clientTimeout', 10000)\n redis.call('hset', settings_key, 'version', '2.17.0')\n end\n\n -- 2.18.0\n if version_digits[2] < 18 then\n redis.call('hsetnx', settings_key, 'reservoirIncreaseInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseAmount', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseMaximum', '')\n redis.call('hsetnx', settings_key, 'lastReservoirIncrease', now)\n redis.call('hset', settings_key, 'version', '2.18.0')\n end\n\n end\n\n process_tick(now, false)\nend\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n", - "process_tick.lua": "local process_tick = function (now, always_publish)\n\n local compute_capacity = function (maxConcurrent, running, reservoir)\n if maxConcurrent ~= nil and reservoir ~= nil then\n return math.min((maxConcurrent - running), reservoir)\n elseif maxConcurrent ~= nil then\n return maxConcurrent - running\n elseif reservoir ~= nil then\n return reservoir\n else\n return nil\n end\n end\n\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'running',\n 'reservoir',\n 'reservoirRefreshInterval',\n 'reservoirRefreshAmount',\n 'lastReservoirRefresh',\n 'reservoirIncreaseInterval',\n 'reservoirIncreaseAmount',\n 'reservoirIncreaseMaximum',\n 'lastReservoirIncrease',\n 'capacityPriorityCounter',\n 'clientTimeout'\n )\n local id = settings[1]\n local maxConcurrent = tonumber(settings[2])\n local running = tonumber(settings[3])\n local reservoir = tonumber(settings[4])\n local reservoirRefreshInterval = tonumber(settings[5])\n local reservoirRefreshAmount = tonumber(settings[6])\n local lastReservoirRefresh = tonumber(settings[7])\n local reservoirIncreaseInterval = tonumber(settings[8])\n local reservoirIncreaseAmount = tonumber(settings[9])\n local reservoirIncreaseMaximum = tonumber(settings[10])\n local lastReservoirIncrease = tonumber(settings[11])\n local capacityPriorityCounter = tonumber(settings[12])\n local clientTimeout = tonumber(settings[13])\n\n local initial_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n --\n -- Process 'running' changes\n --\n local expired = redis.call('zrangebyscore', job_expirations_key, '-inf', '('..now)\n\n if #expired > 0 then\n redis.call('zremrangebyscore', job_expirations_key, '-inf', '('..now)\n\n local flush_batch = function (batch, acc)\n local weights = redis.call('hmget', job_weights_key, unpack(batch))\n redis.call('hdel', job_weights_key, unpack(batch))\n local clients = redis.call('hmget', job_clients_key, unpack(batch))\n redis.call('hdel', job_clients_key, unpack(batch))\n\n -- Calculate sum of removed weights\n for i = 1, #weights do\n acc['total'] = acc['total'] + (tonumber(weights[i]) or 0)\n end\n\n -- Calculate sum of removed weights by client\n local client_weights = {}\n for i = 1, #clients do\n local removed = tonumber(weights[i]) or 0\n if removed > 0 then\n acc['client_weights'][clients[i]] = (acc['client_weights'][clients[i]] or 0) + removed\n end\n end\n end\n\n local acc = {\n ['total'] = 0,\n ['client_weights'] = {}\n }\n local batch_size = 1000\n\n -- Compute changes to Zsets and apply changes to Hashes\n for i = 1, #expired, batch_size do\n local batch = {}\n for j = i, math.min(i + batch_size - 1, #expired) do\n table.insert(batch, expired[j])\n end\n\n flush_batch(batch, acc)\n end\n\n -- Apply changes to Zsets\n if acc['total'] > 0 then\n redis.call('hincrby', settings_key, 'done', acc['total'])\n running = tonumber(redis.call('hincrby', settings_key, 'running', -acc['total']))\n end\n\n for client, weight in pairs(acc['client_weights']) do\n redis.call('zincrby', client_running_key, -weight, client)\n end\n end\n\n --\n -- Process 'reservoir' changes\n --\n local reservoirRefreshActive = reservoirRefreshInterval ~= nil and reservoirRefreshAmount ~= nil\n if reservoirRefreshActive and now >= lastReservoirRefresh + reservoirRefreshInterval then\n reservoir = reservoirRefreshAmount\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirRefresh', now\n )\n end\n\n local reservoirIncreaseActive = reservoirIncreaseInterval ~= nil and reservoirIncreaseAmount ~= nil\n if reservoirIncreaseActive and now >= lastReservoirIncrease + reservoirIncreaseInterval then\n local num_intervals = math.floor((now - lastReservoirIncrease) / reservoirIncreaseInterval)\n local incr = reservoirIncreaseAmount * num_intervals\n if reservoirIncreaseMaximum ~= nil then\n incr = math.min(incr, reservoirIncreaseMaximum - (reservoir or 0))\n end\n if incr > 0 then\n reservoir = (reservoir or 0) + incr\n end\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirIncrease', lastReservoirIncrease + (num_intervals * reservoirIncreaseInterval)\n )\n end\n\n --\n -- Clear unresponsive clients\n --\n local unresponsive = redis.call('zrangebyscore', client_last_seen_key, '-inf', (now - clientTimeout))\n local unresponsive_lookup = {}\n local terminated_clients = {}\n for i = 1, #unresponsive do\n unresponsive_lookup[unresponsive[i]] = true\n if tonumber(redis.call('zscore', client_running_key, unresponsive[i])) == 0 then\n table.insert(terminated_clients, unresponsive[i])\n end\n end\n if #terminated_clients > 0 then\n redis.call('zrem', client_running_key, unpack(terminated_clients))\n redis.call('hdel', client_num_queued_key, unpack(terminated_clients))\n redis.call('zrem', client_last_registered_key, unpack(terminated_clients))\n redis.call('zrem', client_last_seen_key, unpack(terminated_clients))\n end\n\n --\n -- Broadcast capacity changes\n --\n local final_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n if always_publish or (initial_capacity ~= nil and final_capacity == nil) then\n -- always_publish or was not unlimited, now unlimited\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n\n elseif initial_capacity ~= nil and final_capacity ~= nil and final_capacity > initial_capacity then\n -- capacity was increased\n -- send the capacity message to the limiter having the lowest number of running jobs\n -- the tiebreaker is the limiter having not registered a job in the longest time\n\n local lowest_concurrency_value = nil\n local lowest_concurrency_clients = {}\n local lowest_concurrency_last_registered = {}\n local client_concurrencies = redis.call('zrange', client_running_key, 0, -1, 'withscores')\n\n for i = 1, #client_concurrencies, 2 do\n local client = client_concurrencies[i]\n local concurrency = tonumber(client_concurrencies[i+1])\n\n if (\n lowest_concurrency_value == nil or lowest_concurrency_value == concurrency\n ) and (\n not unresponsive_lookup[client]\n ) and (\n tonumber(redis.call('hget', client_num_queued_key, client)) > 0\n ) then\n lowest_concurrency_value = concurrency\n table.insert(lowest_concurrency_clients, client)\n local last_registered = tonumber(redis.call('zscore', client_last_registered_key, client))\n table.insert(lowest_concurrency_last_registered, last_registered)\n end\n end\n\n if #lowest_concurrency_clients > 0 then\n local position = 1\n local earliest = lowest_concurrency_last_registered[1]\n\n for i,v in ipairs(lowest_concurrency_last_registered) do\n if v < earliest then\n position = i\n earliest = v\n end\n end\n\n local next_client = lowest_concurrency_clients[position]\n redis.call('publish', 'b_'..id,\n 'capacity-priority:'..(final_capacity or '')..\n ':'..next_client..\n ':'..capacityPriorityCounter\n )\n redis.call('hincrby', settings_key, 'capacityPriorityCounter', '1')\n else\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n end\n end\n\n return {\n ['capacity'] = final_capacity,\n ['running'] = running,\n ['reservoir'] = reservoir\n }\nend\n", - "queued.lua": "local clientTimeout = tonumber(redis.call('hget', settings_key, 'clientTimeout'))\nlocal valid_clients = redis.call('zrangebyscore', client_last_seen_key, (now - clientTimeout), 'inf')\nlocal client_queued = redis.call('hmget', client_num_queued_key, unpack(valid_clients))\n\nlocal sum = 0\nfor i = 1, #client_queued do\n sum = sum + tonumber(client_queued[i])\nend\n\nreturn sum\n", - "refresh_expiration.lua": "local refresh_expiration = function (now, nextRequest, groupTimeout)\n\n if groupTimeout ~= nil then\n local ttl = (nextRequest + groupTimeout) - now\n\n for i = 1, #KEYS do\n redis.call('pexpire', KEYS[i], ttl)\n end\n end\n\nend\n", - "refs.lua": "local settings_key = KEYS[1]\nlocal job_weights_key = KEYS[2]\nlocal job_expirations_key = KEYS[3]\nlocal job_clients_key = KEYS[4]\nlocal client_running_key = KEYS[5]\nlocal client_num_queued_key = KEYS[6]\nlocal client_last_registered_key = KEYS[7]\nlocal client_last_seen_key = KEYS[8]\n\nlocal now = tonumber(ARGV[1])\nlocal client = ARGV[2]\n\nlocal num_static_argv = 2\n", - "register.lua": "local index = ARGV[num_static_argv + 1]\nlocal weight = tonumber(ARGV[num_static_argv + 2])\nlocal expiration = tonumber(ARGV[num_static_argv + 3])\n\nlocal state = process_tick(now, false)\nlocal capacity = state['capacity']\nlocal reservoir = state['reservoir']\n\nlocal settings = redis.call('hmget', settings_key,\n 'nextRequest',\n 'minTime',\n 'groupTimeout'\n)\nlocal nextRequest = tonumber(settings[1])\nlocal minTime = tonumber(settings[2])\nlocal groupTimeout = tonumber(settings[3])\n\nif conditions_check(capacity, weight) then\n\n redis.call('hincrby', settings_key, 'running', weight)\n redis.call('hset', job_weights_key, index, weight)\n if expiration ~= nil then\n redis.call('zadd', job_expirations_key, now + expiration, index)\n end\n redis.call('hset', job_clients_key, index, client)\n redis.call('zincrby', client_running_key, weight, client)\n redis.call('hincrby', client_num_queued_key, client, -1)\n redis.call('zadd', client_last_registered_key, now, client)\n\n local wait = math.max(nextRequest - now, 0)\n local newNextRequest = now + wait + minTime\n\n if reservoir == nil then\n redis.call('hset', settings_key,\n 'nextRequest', newNextRequest\n )\n else\n reservoir = reservoir - weight\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'nextRequest', newNextRequest\n )\n end\n\n refresh_expiration(now, newNextRequest, groupTimeout)\n\n return {true, wait, reservoir}\n\nelse\n return {false}\nend\n", - "register_client.lua": "local queued = tonumber(ARGV[num_static_argv + 1])\n\n-- Could have been re-registered concurrently\nif not redis.call('zscore', client_last_seen_key, client) then\n redis.call('zadd', client_running_key, 0, client)\n redis.call('hset', client_num_queued_key, client, queued)\n redis.call('zadd', client_last_registered_key, 0, client)\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n\nreturn {}\n", - "running.lua": "return process_tick(now, false)['running']\n", - "submit.lua": "local queueLength = tonumber(ARGV[num_static_argv + 1])\nlocal weight = tonumber(ARGV[num_static_argv + 2])\n\nlocal capacity = process_tick(now, false)['capacity']\n\nlocal settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'highWater',\n 'nextRequest',\n 'strategy',\n 'unblockTime',\n 'penalty',\n 'minTime',\n 'groupTimeout'\n)\nlocal id = settings[1]\nlocal maxConcurrent = tonumber(settings[2])\nlocal highWater = tonumber(settings[3])\nlocal nextRequest = tonumber(settings[4])\nlocal strategy = tonumber(settings[5])\nlocal unblockTime = tonumber(settings[6])\nlocal penalty = tonumber(settings[7])\nlocal minTime = tonumber(settings[8])\nlocal groupTimeout = tonumber(settings[9])\n\nif maxConcurrent ~= nil and weight > maxConcurrent then\n return redis.error_reply('OVERWEIGHT:'..weight..':'..maxConcurrent)\nend\n\nlocal reachedHWM = (highWater ~= nil and queueLength == highWater\n and not (\n conditions_check(capacity, weight)\n and nextRequest - now <= 0\n )\n)\n\nlocal blocked = strategy == 3 and (reachedHWM or unblockTime >= now)\n\nif blocked then\n local computedPenalty = penalty\n if computedPenalty == nil then\n if minTime == 0 then\n computedPenalty = 5000\n else\n computedPenalty = 15 * minTime\n end\n end\n\n local newNextRequest = now + computedPenalty + minTime\n\n redis.call('hmset', settings_key,\n 'unblockTime', now + computedPenalty,\n 'nextRequest', newNextRequest\n )\n\n local clients_queued_reset = redis.call('hkeys', client_num_queued_key)\n local queued_reset = {}\n for i = 1, #clients_queued_reset do\n table.insert(queued_reset, clients_queued_reset[i])\n table.insert(queued_reset, 0)\n end\n redis.call('hmset', client_num_queued_key, unpack(queued_reset))\n\n redis.call('publish', 'b_'..id, 'blocked:')\n\n refresh_expiration(now, newNextRequest, groupTimeout)\nend\n\nif not blocked and not reachedHWM then\n redis.call('hincrby', client_num_queued_key, client, 1)\nend\n\nreturn {reachedHWM, blocked, strategy}\n", - "update_settings.lua": "local args = {'hmset', settings_key}\n\nfor i = num_static_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\nend\n\nredis.call(unpack(args))\n\nprocess_tick(now, true)\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n", - "validate_client.lua": "if not redis.call('zscore', client_last_seen_key, client) then\n return redis.error_reply('UNKNOWN_CLIENT')\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n", - "validate_keys.lua": "if not (redis.call('exists', settings_key) == 1) then\n return redis.error_reply('SETTINGS_KEY_NOT_FOUND')\nend\n" -}; - -var Scripts$3 = createCommonjsModule(function (module, exports) { - -var headers, lua, templates; -lua = require$$0$1; -headers = { - refs: lua["refs.lua"], - validate_keys: lua["validate_keys.lua"], - validate_client: lua["validate_client.lua"], - refresh_expiration: lua["refresh_expiration.lua"], - process_tick: lua["process_tick.lua"], - conditions_check: lua["conditions_check.lua"], - get_time: lua["get_time.lua"] -}; - -exports.allKeys = function (id) { - return [ - /* - HASH - */ - `b_${id}_settings`, - /* - HASH - job index -> weight - */ - `b_${id}_job_weights`, - /* - ZSET - job index -> expiration - */ - `b_${id}_job_expirations`, - /* - HASH - job index -> client - */ - `b_${id}_job_clients`, - /* - ZSET - client -> sum running - */ - `b_${id}_client_running`, - /* - HASH - client -> num queued - */ - `b_${id}_client_num_queued`, - /* - ZSET - client -> last job registered - */ - `b_${id}_client_last_registered`, - /* - ZSET - client -> last seen - */ - `b_${id}_client_last_seen`]; -}; - -templates = { - init: { - keys: exports.allKeys, - headers: ["process_tick"], - refresh_expiration: true, - code: lua["init.lua"] - }, - group_check: { - keys: exports.allKeys, - headers: [], - refresh_expiration: false, - code: lua["group_check.lua"] - }, - register_client: { - keys: exports.allKeys, - headers: ["validate_keys"], - refresh_expiration: false, - code: lua["register_client.lua"] - }, - blacklist_client: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client"], - refresh_expiration: false, - code: lua["blacklist_client.lua"] - }, - heartbeat: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["heartbeat.lua"] - }, - update_settings: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: true, - code: lua["update_settings.lua"] - }, - running: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["running.lua"] - }, - queued: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client"], - refresh_expiration: false, - code: lua["queued.lua"] - }, - done: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["done.lua"] - }, - check: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick", "conditions_check"], - refresh_expiration: false, - code: lua["check.lua"] - }, - submit: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick", "conditions_check"], - refresh_expiration: true, - code: lua["submit.lua"] - }, - register: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick", "conditions_check"], - refresh_expiration: true, - code: lua["register.lua"] - }, - free: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: true, - code: lua["free.lua"] - }, - current_reservoir: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["current_reservoir.lua"] - }, - increment_reservoir: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: true, - code: lua["increment_reservoir.lua"] - } -}; -exports.names = Object.keys(templates); - -exports.keys = function (name, id) { - return templates[name].keys(id); -}; - -exports.payload = function (name) { - var template; - template = templates[name]; - return Array.prototype.concat(headers.refs, template.headers.map(function (h) { - return headers[h]; - }), template.refresh_expiration ? headers.refresh_expiration : "", template.code).join("\n"); -}; -}); - -function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$5(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Events$4, RedisConnection$2, Scripts$2, parser$5; -parser$5 = parser$8; -Events$4 = Events_1; -Scripts$2 = Scripts$3; - -RedisConnection$2 = function () { - class RedisConnection { - constructor(options = {}) { - parser$5.load(options, this.defaults, this); - - if (this.Redis == null) { - this.Redis = eval("require")("redis"); // Obfuscated or else Webpack/Angular will try to inline the optional redis module. To override this behavior: pass the redis module to Bottleneck as the 'Redis' option. - } - - if (this.Events == null) { - this.Events = new Events$4(this); - } - - this.terminated = false; - - if (this.client == null) { - this.client = this.Redis.createClient(this.clientOptions); - } - - this.subscriber = this.client.duplicate(); - this.limiters = {}; - this.shas = {}; - this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => { - return this._loadScripts(); - }).then(() => { - return { - client: this.client, - subscriber: this.subscriber - }; - }); - } - - _setup(client, sub) { - client.setMaxListeners(0); - return new this.Promise((resolve, reject) => { - client.on("error", e => { - return this.Events.trigger("error", e); - }); - - if (sub) { - client.on("message", (channel, message) => { - var ref; - return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0; - }); - } - - if (client.ready) { - return resolve(); - } else { - return client.once("ready", resolve); - } - }); - } - - _loadScript(name) { - return new this.Promise((resolve, reject) => { - var payload; - payload = Scripts$2.payload(name); - return this.client.multi([["script", "load", payload]]).exec((err, replies) => { - if (err != null) { - return reject(err); - } - - this.shas[name] = replies[0]; - return resolve(replies[0]); - }); - }); - } - - _loadScripts() { - return this.Promise.all(Scripts$2.names.map(k => { - return this._loadScript(k); - })); - } - - __runCommand__(cmd) { - var _this = this; - - return _asyncToGenerator$5(function* () { - yield _this.ready; - return new _this.Promise((resolve, reject) => { - return _this.client.multi([cmd]).exec_atomic(function (err, replies) { - if (err != null) { - return reject(err); - } else { - return resolve(replies[0]); - } - }); - }); - })(); - } - - __addLimiter__(instance) { - return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => { - return new this.Promise((resolve, reject) => { - var handler; - - handler = chan => { - if (chan === channel) { - this.subscriber.removeListener("subscribe", handler); - this.limiters[channel] = instance; - return resolve(); - } - }; - - this.subscriber.on("subscribe", handler); - return this.subscriber.subscribe(channel); - }); - })); - } - - __removeLimiter__(instance) { - var _this2 = this; - - return this.Promise.all([instance.channel(), instance.channel_client()].map( - /*#__PURE__*/ - function () { - var _ref = _asyncToGenerator$5(function* (channel) { - if (!_this2.terminated) { - yield new _this2.Promise((resolve, reject) => { - return _this2.subscriber.unsubscribe(channel, function (err, chan) { - if (err != null) { - return reject(err); - } - - if (chan === channel) { - return resolve(); - } - }); - }); - } - - return delete _this2.limiters[channel]; - }); - - return function (_x) { - return _ref.apply(this, arguments); - }; - }())); - } - - __scriptArgs__(name, id, args, cb) { - var keys; - keys = Scripts$2.keys(name, id); - return [this.shas[name], keys.length].concat(keys, args, cb); - } - - __scriptFn__(name) { - return this.client.evalsha.bind(this.client); - } - - disconnect(flush = true) { - var i, k, len, ref; - ref = Object.keys(this.limiters); - - for (i = 0, len = ref.length; i < len; i++) { - k = ref[i]; - clearInterval(this.limiters[k]._store.heartbeat); - } - - this.limiters = {}; - this.terminated = true; - this.client.end(flush); - this.subscriber.end(flush); - return this.Promise.resolve(); - } - - } - RedisConnection.prototype.datastore = "redis"; - RedisConnection.prototype.defaults = { - Redis: null, - clientOptions: {}, - client: null, - Promise: Promise, - Events: null - }; - return RedisConnection; -}.call(void 0); - -var RedisConnection_1 = RedisConnection$2; - -function _slicedToArray$3(arr, i) { return _arrayWithHoles$3(arr) || _iterableToArrayLimit$3(arr, i) || _nonIterableRest$3(); } - -function _nonIterableRest$3() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit$3(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles$3(arr) { if (Array.isArray(arr)) return arr; } - -function asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$4(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Events$3, IORedisConnection$2, Scripts$1, parser$4; -parser$4 = parser$8; -Events$3 = Events_1; -Scripts$1 = Scripts$3; - -IORedisConnection$2 = function () { - class IORedisConnection { - constructor(options = {}) { - parser$4.load(options, this.defaults, this); - - if (this.Redis == null) { - this.Redis = eval("require")("ioredis"); // Obfuscated or else Webpack/Angular will try to inline the optional ioredis module. To override this behavior: pass the ioredis module to Bottleneck as the 'Redis' option. - } - - if (this.Events == null) { - this.Events = new Events$3(this); - } - - this.terminated = false; - - if (this.clusterNodes != null) { - this.client = new this.Redis.Cluster(this.clusterNodes, this.clientOptions); - this.subscriber = new this.Redis.Cluster(this.clusterNodes, this.clientOptions); - } else if (this.client != null && this.client.duplicate == null) { - this.subscriber = new this.Redis.Cluster(this.client.startupNodes, this.client.options); - } else { - if (this.client == null) { - this.client = new this.Redis(this.clientOptions); - } - - this.subscriber = this.client.duplicate(); - } - - this.limiters = {}; - this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => { - this._loadScripts(); - - return { - client: this.client, - subscriber: this.subscriber - }; - }); - } - - _setup(client, sub) { - client.setMaxListeners(0); - return new this.Promise((resolve, reject) => { - client.on("error", e => { - return this.Events.trigger("error", e); - }); - - if (sub) { - client.on("message", (channel, message) => { - var ref; - return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0; - }); - } - - if (client.status === "ready") { - return resolve(); - } else { - return client.once("ready", resolve); - } - }); - } - - _loadScripts() { - return Scripts$1.names.forEach(name => { - return this.client.defineCommand(name, { - lua: Scripts$1.payload(name) - }); - }); - } - - __runCommand__(cmd) { - var _this = this; - - return _asyncToGenerator$4(function* () { - var deleted; - - yield _this.ready; - - var _ref = yield _this.client.pipeline([cmd]).exec(); - - var _ref2 = _slicedToArray$3(_ref, 1); - - var _ref2$ = _slicedToArray$3(_ref2[0], 2); - deleted = _ref2$[1]; - return deleted; - })(); - } - - __addLimiter__(instance) { - return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => { - return new this.Promise((resolve, reject) => { - return this.subscriber.subscribe(channel, () => { - this.limiters[channel] = instance; - return resolve(); - }); - }); - })); - } - - __removeLimiter__(instance) { - var _this2 = this; - - return [instance.channel(), instance.channel_client()].forEach( - /*#__PURE__*/ - function () { - var _ref3 = _asyncToGenerator$4(function* (channel) { - if (!_this2.terminated) { - yield _this2.subscriber.unsubscribe(channel); - } - - return delete _this2.limiters[channel]; - }); - - return function (_x) { - return _ref3.apply(this, arguments); - }; - }()); - } - - __scriptArgs__(name, id, args, cb) { - var keys; - keys = Scripts$1.keys(name, id); - return [keys.length].concat(keys, args, cb); - } - - __scriptFn__(name) { - return this.client[name].bind(this.client); - } - - disconnect(flush = true) { - var i, k, len, ref; - ref = Object.keys(this.limiters); - - for (i = 0, len = ref.length; i < len; i++) { - k = ref[i]; - clearInterval(this.limiters[k]._store.heartbeat); - } - - this.limiters = {}; - this.terminated = true; - - if (flush) { - return this.Promise.all([this.client.quit(), this.subscriber.quit()]); - } else { - this.client.disconnect(); - this.subscriber.disconnect(); - return this.Promise.resolve(); - } - } - - } - IORedisConnection.prototype.datastore = "ioredis"; - IORedisConnection.prototype.defaults = { - Redis: null, - clientOptions: {}, - clusterNodes: null, - client: null, - Promise: Promise, - Events: null - }; - return IORedisConnection; -}.call(void 0); - -var IORedisConnection_1 = IORedisConnection$2; - -function _slicedToArray$2(arr, i) { return _arrayWithHoles$2(arr) || _iterableToArrayLimit$2(arr, i) || _nonIterableRest$2(); } - -function _nonIterableRest$2() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit$2(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles$2(arr) { if (Array.isArray(arr)) return arr; } - -function asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$3(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var BottleneckError$1, IORedisConnection$1, RedisConnection$1, RedisDatastore$1, parser$3; -parser$3 = parser$8; -BottleneckError$1 = BottleneckError_1; -RedisConnection$1 = RedisConnection_1; -IORedisConnection$1 = IORedisConnection_1; -RedisDatastore$1 = class RedisDatastore { - constructor(instance, storeOptions, storeInstanceOptions) { - this.instance = instance; - this.storeOptions = storeOptions; - this.originalId = this.instance.id; - this.clientId = this.instance._randomIndex(); - parser$3.load(storeInstanceOptions, storeInstanceOptions, this); - this.clients = {}; - this.capacityPriorityCounters = {}; - this.sharedConnection = this.connection != null; - - if (this.connection == null) { - this.connection = this.instance.datastore === "redis" ? new RedisConnection$1({ - Redis: this.Redis, - clientOptions: this.clientOptions, - Promise: this.Promise, - Events: this.instance.Events - }) : this.instance.datastore === "ioredis" ? new IORedisConnection$1({ - Redis: this.Redis, - clientOptions: this.clientOptions, - clusterNodes: this.clusterNodes, - Promise: this.Promise, - Events: this.instance.Events - }) : void 0; - } - - this.instance.connection = this.connection; - this.instance.datastore = this.connection.datastore; - this.ready = this.connection.ready.then(clients => { - this.clients = clients; - return this.runScript("init", this.prepareInitSettings(this.clearDatastore)); - }).then(() => { - return this.connection.__addLimiter__(this.instance); - }).then(() => { - return this.runScript("register_client", [this.instance.queued()]); - }).then(() => { - var base; - - if (typeof (base = this.heartbeat = setInterval(() => { - return this.runScript("heartbeat", []).catch(e => { - return this.instance.Events.trigger("error", e); - }); - }, this.heartbeatInterval)).unref === "function") { - base.unref(); - } - - return this.clients; - }); - } - - __publish__(message) { - var _this = this; - - return _asyncToGenerator$3(function* () { - var client; - - var _ref = yield _this.ready; - - client = _ref.client; - return client.publish(_this.instance.channel(), `message:${message.toString()}`); - })(); - } - - onMessage(channel, message) { - var _this2 = this; - - return _asyncToGenerator$3(function* () { - var capacity, counter, data, drained, e, newCapacity, pos, priorityClient, rawCapacity, type; - - try { - pos = message.indexOf(":"); - var _ref2 = [message.slice(0, pos), message.slice(pos + 1)]; - type = _ref2[0]; - data = _ref2[1]; - - if (type === "capacity") { - return yield _this2.instance._drainAll(data.length > 0 ? ~~data : void 0); - } else if (type === "capacity-priority") { - var _data$split = data.split(":"); - - var _data$split2 = _slicedToArray$2(_data$split, 3); - - rawCapacity = _data$split2[0]; - priorityClient = _data$split2[1]; - counter = _data$split2[2]; - capacity = rawCapacity.length > 0 ? ~~rawCapacity : void 0; - - if (priorityClient === _this2.clientId) { - drained = yield _this2.instance._drainAll(capacity); - newCapacity = capacity != null ? capacity - (drained || 0) : ""; - return yield _this2.clients.client.publish(_this2.instance.channel(), `capacity-priority:${newCapacity}::${counter}`); - } else if (priorityClient === "") { - clearTimeout(_this2.capacityPriorityCounters[counter]); - delete _this2.capacityPriorityCounters[counter]; - return _this2.instance._drainAll(capacity); - } else { - return _this2.capacityPriorityCounters[counter] = setTimeout( - /*#__PURE__*/ - _asyncToGenerator$3(function* () { - var e; - - try { - delete _this2.capacityPriorityCounters[counter]; - yield _this2.runScript("blacklist_client", [priorityClient]); - return yield _this2.instance._drainAll(capacity); - } catch (error) { - e = error; - return _this2.instance.Events.trigger("error", e); - } - }), 1000); - } - } else if (type === "message") { - return _this2.instance.Events.trigger("message", data); - } else if (type === "blocked") { - return yield _this2.instance._dropAllQueued(); - } - } catch (error) { - e = error; - return _this2.instance.Events.trigger("error", e); - } - })(); - } - - __disconnect__(flush) { - clearInterval(this.heartbeat); - - if (this.sharedConnection) { - return this.connection.__removeLimiter__(this.instance); - } else { - return this.connection.disconnect(flush); - } - } - - runScript(name, args) { - var _this3 = this; - - return _asyncToGenerator$3(function* () { - if (!(name === "init" || name === "register_client")) { - yield _this3.ready; - } - - return new _this3.Promise((resolve, reject) => { - var all_args, arr; - all_args = [Date.now(), _this3.clientId].concat(args); - - _this3.instance.Events.trigger("debug", `Calling Redis script: ${name}.lua`, all_args); - - arr = _this3.connection.__scriptArgs__(name, _this3.originalId, all_args, function (err, replies) { - if (err != null) { - return reject(err); - } - - return resolve(replies); - }); - return _this3.connection.__scriptFn__(name)(...arr); - }).catch(e => { - if (e.message === "SETTINGS_KEY_NOT_FOUND") { - if (name === "heartbeat") { - return _this3.Promise.resolve(); - } else { - return _this3.runScript("init", _this3.prepareInitSettings(false)).then(() => { - return _this3.runScript(name, args); - }); - } - } else if (e.message === "UNKNOWN_CLIENT") { - return _this3.runScript("register_client", [_this3.instance.queued()]).then(() => { - return _this3.runScript(name, args); - }); - } else { - return _this3.Promise.reject(e); - } - }); - })(); - } - - prepareArray(arr) { - var i, len, results, x; - results = []; - - for (i = 0, len = arr.length; i < len; i++) { - x = arr[i]; - results.push(x != null ? x.toString() : ""); - } - - return results; - } - - prepareObject(obj) { - var arr, k, v; - arr = []; - - for (k in obj) { - v = obj[k]; - arr.push(k, v != null ? v.toString() : ""); - } - - return arr; - } - - prepareInitSettings(clear) { - var args; - args = this.prepareObject(Object.assign({}, this.storeOptions, { - id: this.originalId, - version: this.instance.version, - groupTimeout: this.timeout, - clientTimeout: this.clientTimeout - })); - args.unshift(clear ? 1 : 0, this.instance.version); - return args; - } - - convertBool(b) { - return !!b; - } - - __updateSettings__(options) { - var _this4 = this; - - return _asyncToGenerator$3(function* () { - yield _this4.runScript("update_settings", _this4.prepareObject(options)); - return parser$3.overwrite(options, options, _this4.storeOptions); - })(); - } - - __running__() { - return this.runScript("running", []); - } - - __queued__() { - return this.runScript("queued", []); - } - - __done__() { - return this.runScript("done", []); - } - - __groupCheck__() { - var _this5 = this; - - return _asyncToGenerator$3(function* () { - return _this5.convertBool((yield _this5.runScript("group_check", []))); - })(); - } - - __incrementReservoir__(incr) { - return this.runScript("increment_reservoir", [incr]); - } - - __currentReservoir__() { - return this.runScript("current_reservoir", []); - } - - __check__(weight) { - var _this6 = this; - - return _asyncToGenerator$3(function* () { - return _this6.convertBool((yield _this6.runScript("check", _this6.prepareArray([weight])))); - })(); - } - - __register__(index, weight, expiration) { - var _this7 = this; - - return _asyncToGenerator$3(function* () { - var reservoir, success, wait; - - var _ref4 = yield _this7.runScript("register", _this7.prepareArray([index, weight, expiration])); - - var _ref5 = _slicedToArray$2(_ref4, 3); - - success = _ref5[0]; - wait = _ref5[1]; - reservoir = _ref5[2]; - return { - success: _this7.convertBool(success), - wait, - reservoir - }; - })(); - } - - __submit__(queueLength, weight) { - var _this8 = this; - - return _asyncToGenerator$3(function* () { - var blocked, e, maxConcurrent, reachedHWM, strategy; - - try { - var _ref6 = yield _this8.runScript("submit", _this8.prepareArray([queueLength, weight])); - - var _ref7 = _slicedToArray$2(_ref6, 3); - - reachedHWM = _ref7[0]; - blocked = _ref7[1]; - strategy = _ref7[2]; - return { - reachedHWM: _this8.convertBool(reachedHWM), - blocked: _this8.convertBool(blocked), - strategy - }; - } catch (error) { - e = error; - - if (e.message.indexOf("OVERWEIGHT") === 0) { - var _e$message$split = e.message.split(":"); - - var _e$message$split2 = _slicedToArray$2(_e$message$split, 3); - weight = _e$message$split2[1]; - maxConcurrent = _e$message$split2[2]; - throw new BottleneckError$1(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${maxConcurrent}`); - } else { - throw e; - } - } - })(); - } - - __free__(index, weight) { - var _this9 = this; - - return _asyncToGenerator$3(function* () { - var running; - running = yield _this9.runScript("free", _this9.prepareArray([index])); - return { - running - }; - })(); - } - -}; -var RedisDatastore_1 = RedisDatastore$1; - -var BottleneckError, States$1; -BottleneckError = BottleneckError_1; -States$1 = class States { - constructor(status1) { - this.status = status1; - this._jobs = {}; - this.counts = this.status.map(function () { - return 0; - }); - } - - next(id) { - var current, next; - current = this._jobs[id]; - next = current + 1; - - if (current != null && next < this.status.length) { - this.counts[current]--; - this.counts[next]++; - return this._jobs[id]++; - } else if (current != null) { - this.counts[current]--; - return delete this._jobs[id]; - } - } - - start(id) { - var initial; - initial = 0; - this._jobs[id] = initial; - return this.counts[initial]++; - } - - remove(id) { - var current; - current = this._jobs[id]; - - if (current != null) { - this.counts[current]--; - delete this._jobs[id]; - } - - return current != null; - } - - jobStatus(id) { - var ref; - return (ref = this.status[this._jobs[id]]) != null ? ref : null; - } - - statusJobs(status) { - var k, pos, ref, results, v; - - if (status != null) { - pos = this.status.indexOf(status); - - if (pos < 0) { - throw new BottleneckError(`status must be one of ${this.status.join(', ')}`); - } - - ref = this._jobs; - results = []; - - for (k in ref) { - v = ref[k]; - - if (v === pos) { - results.push(k); - } - } - - return results; - } else { - return Object.keys(this._jobs); - } - } - - statusCounts() { - return this.counts.reduce((acc, v, i) => { - acc[this.status[i]] = v; - return acc; - }, {}); - } - -}; -var States_1 = States$1; - -function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$2(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var DLList, Sync$1; -DLList = DLList_1; -Sync$1 = class Sync { - constructor(name, Promise) { - this.schedule = this.schedule.bind(this); - this.name = name; - this.Promise = Promise; - this._running = 0; - this._queue = new DLList(); - } - - isEmpty() { - return this._queue.length === 0; - } - - _tryToRun() { - var _this = this; - - return _asyncToGenerator$2(function* () { - var args, cb, error, reject, resolve, returned, task; - - if (_this._running < 1 && _this._queue.length > 0) { - _this._running++; - - var _this$_queue$shift = _this._queue.shift(); - - task = _this$_queue$shift.task; - args = _this$_queue$shift.args; - resolve = _this$_queue$shift.resolve; - reject = _this$_queue$shift.reject; - cb = yield _asyncToGenerator$2(function* () { - try { - returned = yield task(...args); - return function () { - return resolve(returned); - }; - } catch (error1) { - error = error1; - return function () { - return reject(error); - }; - } - })(); - _this._running--; - - _this._tryToRun(); - - return cb(); - } - })(); - } - - schedule(task, ...args) { - var promise, reject, resolve; - resolve = reject = null; - promise = new this.Promise(function (_resolve, _reject) { - resolve = _resolve; - return reject = _reject; - }); - - this._queue.push({ - task, - args, - resolve, - reject - }); - - this._tryToRun(); - - return promise; - } - -}; -var Sync_1 = Sync$1; - -var version = "2.19.5"; -var require$$8 = { - version: version -}; - -var require$$0 = Bottleneck_1; - -function _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _nonIterableRest$1(); } - -function _nonIterableRest$1() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit$1(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; } - -function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$1(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Events$2, Group, IORedisConnection, RedisConnection, Scripts, parser$2; -parser$2 = parser$8; -Events$2 = Events_1; -RedisConnection = RedisConnection_1; -IORedisConnection = IORedisConnection_1; -Scripts = Scripts$3; - -Group = function () { - class Group { - constructor(limiterOptions = {}) { - this.deleteKey = this.deleteKey.bind(this); - this.limiterOptions = limiterOptions; - parser$2.load(this.limiterOptions, this.defaults, this); - this.Events = new Events$2(this); - this.instances = {}; - this.Bottleneck = require$$0; - - this._startAutoCleanup(); - - this.sharedConnection = this.connection != null; - - if (this.connection == null) { - if (this.limiterOptions.datastore === "redis") { - this.connection = new RedisConnection(Object.assign({}, this.limiterOptions, { - Events: this.Events - })); - } else if (this.limiterOptions.datastore === "ioredis") { - this.connection = new IORedisConnection(Object.assign({}, this.limiterOptions, { - Events: this.Events - })); - } - } - } - - key(key = "") { - var ref; - return (ref = this.instances[key]) != null ? ref : (() => { - var limiter; - limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, { - id: `${this.id}-${key}`, - timeout: this.timeout, - connection: this.connection - })); - this.Events.trigger("created", limiter, key); - return limiter; - })(); - } - - deleteKey(key = "") { - var _this = this; - - return _asyncToGenerator$1(function* () { - var deleted, instance; - instance = _this.instances[key]; - - if (_this.connection) { - deleted = yield _this.connection.__runCommand__(['del', ...Scripts.allKeys(`${_this.id}-${key}`)]); - } - - if (instance != null) { - delete _this.instances[key]; - yield instance.disconnect(); - } - - return instance != null || deleted > 0; - })(); - } - - limiters() { - var k, ref, results, v; - ref = this.instances; - results = []; - - for (k in ref) { - v = ref[k]; - results.push({ - key: k, - limiter: v - }); - } - - return results; - } - - keys() { - return Object.keys(this.instances); - } - - clusterKeys() { - var _this2 = this; - - return _asyncToGenerator$1(function* () { - var cursor, end, found, i, k, keys, len, next, start; - - if (_this2.connection == null) { - return _this2.Promise.resolve(_this2.keys()); - } - - keys = []; - cursor = null; - start = `b_${_this2.id}-`.length; - end = "_settings".length; - - while (cursor !== 0) { - var _ref = yield _this2.connection.__runCommand__(["scan", cursor != null ? cursor : 0, "match", `b_${_this2.id}-*_settings`, "count", 10000]); - - var _ref2 = _slicedToArray$1(_ref, 2); - - next = _ref2[0]; - found = _ref2[1]; - cursor = ~~next; - - for (i = 0, len = found.length; i < len; i++) { - k = found[i]; - keys.push(k.slice(start, -end)); - } - } - - return keys; - })(); - } - - _startAutoCleanup() { - var _this3 = this; - - var base; - clearInterval(this.interval); - return typeof (base = this.interval = setInterval( - /*#__PURE__*/ - _asyncToGenerator$1(function* () { - var e, k, ref, results, time, v; - time = Date.now(); - ref = _this3.instances; - results = []; - - for (k in ref) { - v = ref[k]; - - try { - if (yield v._store.__groupCheck__(time)) { - results.push(_this3.deleteKey(k)); - } else { - results.push(void 0); - } - } catch (error) { - e = error; - results.push(v.Events.trigger("error", e)); - } - } - - return results; - }), this.timeout / 2)).unref === "function" ? base.unref() : void 0; - } - - updateSettings(options = {}) { - parser$2.overwrite(options, this.defaults, this); - parser$2.overwrite(options, options, this.limiterOptions); - - if (options.timeout != null) { - return this._startAutoCleanup(); - } - } - - disconnect(flush = true) { - var ref; - - if (!this.sharedConnection) { - return (ref = this.connection) != null ? ref.disconnect(flush) : void 0; - } - } - - } - Group.prototype.defaults = { - timeout: 1000 * 60 * 5, - connection: null, - Promise: Promise, - id: "group-key" - }; - return Group; -}.call(void 0); - -var Group_1 = Group; - -var Batcher, Events$1, parser$1; -parser$1 = parser$8; -Events$1 = Events_1; - -Batcher = function () { - class Batcher { - constructor(options = {}) { - this.options = options; - parser$1.load(this.options, this.defaults, this); - this.Events = new Events$1(this); - this._arr = []; - - this._resetPromise(); - - this._lastFlush = Date.now(); - } - - _resetPromise() { - return this._promise = new this.Promise((res, rej) => { - return this._resolve = res; - }); - } - - _flush() { - clearTimeout(this._timeout); - this._lastFlush = Date.now(); - - this._resolve(); - - this.Events.trigger("batch", this._arr); - this._arr = []; - return this._resetPromise(); - } - - add(data) { - var ret; - - this._arr.push(data); - - ret = this._promise; - - if (this._arr.length === this.maxSize) { - this._flush(); - } else if (this.maxTime != null && this._arr.length === 1) { - this._timeout = setTimeout(() => { - return this._flush(); - }, this.maxTime); - } - - return ret; - } - - } - Batcher.prototype.defaults = { - maxTime: null, - maxSize: null, - Promise: Promise - }; - return Batcher; -}.call(void 0); - -var Batcher_1 = Batcher; - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Bottleneck, - DEFAULT_PRIORITY, - Events, - Job, - LocalDatastore, - NUM_PRIORITIES, - Queues, - RedisDatastore, - States, - Sync, - parser, - splice = [].splice; -NUM_PRIORITIES = 10; -DEFAULT_PRIORITY = 5; -parser = parser$8; -Queues = Queues_1; -Job = Job_1; -LocalDatastore = LocalDatastore_1; -RedisDatastore = RedisDatastore_1; -Events = Events_1; -States = States_1; -Sync = Sync_1; - -Bottleneck = function () { - class Bottleneck { - constructor(options = {}, ...invalid) { - var storeInstanceOptions, storeOptions; - this._addToQueue = this._addToQueue.bind(this); - - this._validateOptions(options, invalid); - - parser.load(options, this.instanceDefaults, this); - this._queues = new Queues(NUM_PRIORITIES); - this._scheduled = {}; - this._states = new States(["RECEIVED", "QUEUED", "RUNNING", "EXECUTING"].concat(this.trackDoneStatus ? ["DONE"] : [])); - this._limiter = null; - this.Events = new Events(this); - this._submitLock = new Sync("submit", this.Promise); - this._registerLock = new Sync("register", this.Promise); - storeOptions = parser.load(options, this.storeDefaults, {}); - - this._store = function () { - if (this.datastore === "redis" || this.datastore === "ioredis" || this.connection != null) { - storeInstanceOptions = parser.load(options, this.redisStoreDefaults, {}); - return new RedisDatastore(this, storeOptions, storeInstanceOptions); - } else if (this.datastore === "local") { - storeInstanceOptions = parser.load(options, this.localStoreDefaults, {}); - return new LocalDatastore(this, storeOptions, storeInstanceOptions); - } else { - throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`); - } - }.call(this); - - this._queues.on("leftzero", () => { - var ref; - return (ref = this._store.heartbeat) != null ? typeof ref.ref === "function" ? ref.ref() : void 0 : void 0; - }); - - this._queues.on("zero", () => { - var ref; - return (ref = this._store.heartbeat) != null ? typeof ref.unref === "function" ? ref.unref() : void 0 : void 0; - }); - } - - _validateOptions(options, invalid) { - if (!(options != null && typeof options === "object" && invalid.length === 0)) { - throw new Bottleneck.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1."); - } - } - - ready() { - return this._store.ready; - } - - clients() { - return this._store.clients; - } - - channel() { - return `b_${this.id}`; - } - - channel_client() { - return `b_${this.id}_${this._store.clientId}`; - } - - publish(message) { - return this._store.__publish__(message); - } - - disconnect(flush = true) { - return this._store.__disconnect__(flush); - } - - chain(_limiter) { - this._limiter = _limiter; - return this; - } - - queued(priority) { - return this._queues.queued(priority); - } - - clusterQueued() { - return this._store.__queued__(); - } - - empty() { - return this.queued() === 0 && this._submitLock.isEmpty(); - } - - running() { - return this._store.__running__(); - } - - done() { - return this._store.__done__(); - } - - jobStatus(id) { - return this._states.jobStatus(id); - } - - jobs(status) { - return this._states.statusJobs(status); - } - - counts() { - return this._states.statusCounts(); - } - - _randomIndex() { - return Math.random().toString(36).slice(2); - } - - check(weight = 1) { - return this._store.__check__(weight); - } - - _clearGlobalState(index) { - if (this._scheduled[index] != null) { - clearTimeout(this._scheduled[index].expiration); - delete this._scheduled[index]; - return true; - } else { - return false; - } - } - - _free(index, job, options, eventInfo) { - var _this = this; - - return _asyncToGenerator(function* () { - var e, running; - - try { - var _ref = yield _this._store.__free__(index, options.weight); - - running = _ref.running; - - _this.Events.trigger("debug", `Freed ${options.id}`, eventInfo); - - if (running === 0 && _this.empty()) { - return _this.Events.trigger("idle"); - } - } catch (error1) { - e = error1; - return _this.Events.trigger("error", e); - } - })(); - } - - _run(index, job, wait) { - var clearGlobalState, free, run; - job.doRun(); - clearGlobalState = this._clearGlobalState.bind(this, index); - run = this._run.bind(this, index, job); - free = this._free.bind(this, index, job); - return this._scheduled[index] = { - timeout: setTimeout(() => { - return job.doExecute(this._limiter, clearGlobalState, run, free); - }, wait), - expiration: job.options.expiration != null ? setTimeout(function () { - return job.doExpire(clearGlobalState, run, free); - }, wait + job.options.expiration) : void 0, - job: job - }; - } - - _drainOne(capacity) { - return this._registerLock.schedule(() => { - var args, index, next, options, queue; - - if (this.queued() === 0) { - return this.Promise.resolve(null); - } - - queue = this._queues.getFirst(); - - var _next2 = next = queue.first(); - - options = _next2.options; - args = _next2.args; - - if (capacity != null && options.weight > capacity) { - return this.Promise.resolve(null); - } - - this.Events.trigger("debug", `Draining ${options.id}`, { - args, - options - }); - index = this._randomIndex(); - return this._store.__register__(index, options.weight, options.expiration).then(({ - success, - wait, - reservoir - }) => { - var empty; - this.Events.trigger("debug", `Drained ${options.id}`, { - success, - args, - options - }); - - if (success) { - queue.shift(); - empty = this.empty(); - - if (empty) { - this.Events.trigger("empty"); - } - - if (reservoir === 0) { - this.Events.trigger("depleted", empty); - } - - this._run(index, next, wait); - - return this.Promise.resolve(options.weight); - } else { - return this.Promise.resolve(null); - } - }); - }); - } - - _drainAll(capacity, total = 0) { - return this._drainOne(capacity).then(drained => { - var newCapacity; - - if (drained != null) { - newCapacity = capacity != null ? capacity - drained : capacity; - return this._drainAll(newCapacity, total + drained); - } else { - return this.Promise.resolve(total); - } - }).catch(e => { - return this.Events.trigger("error", e); - }); - } - - _dropAllQueued(message) { - return this._queues.shiftAll(function (job) { - return job.doDrop({ - message - }); - }); - } - - stop(options = {}) { - var done, waitForExecuting; - options = parser.load(options, this.stopDefaults); - - waitForExecuting = at => { - var finished; - - finished = () => { - var counts; - counts = this._states.counts; - return counts[0] + counts[1] + counts[2] + counts[3] === at; - }; - - return new this.Promise((resolve, reject) => { - if (finished()) { - return resolve(); - } else { - return this.on("done", () => { - if (finished()) { - this.removeAllListeners("done"); - return resolve(); - } - }); - } - }); - }; - - done = options.dropWaitingJobs ? (this._run = function (index, next) { - return next.doDrop({ - message: options.dropErrorMessage - }); - }, this._drainOne = () => { - return this.Promise.resolve(null); - }, this._registerLock.schedule(() => { - return this._submitLock.schedule(() => { - var k, ref, v; - ref = this._scheduled; - - for (k in ref) { - v = ref[k]; - - if (this.jobStatus(v.job.options.id) === "RUNNING") { - clearTimeout(v.timeout); - clearTimeout(v.expiration); - v.job.doDrop({ - message: options.dropErrorMessage - }); - } - } - - this._dropAllQueued(options.dropErrorMessage); - - return waitForExecuting(0); - }); - })) : this.schedule({ - priority: NUM_PRIORITIES - 1, - weight: 0 - }, () => { - return waitForExecuting(1); - }); - - this._receive = function (job) { - return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage)); - }; - - this.stop = () => { - return this.Promise.reject(new Bottleneck.prototype.BottleneckError("stop() has already been called")); - }; - - return done; - } - - _addToQueue(job) { - var _this2 = this; - - return _asyncToGenerator(function* () { - var args, blocked, error, options, reachedHWM, shifted, strategy; - args = job.args; - options = job.options; - - try { - var _ref2 = yield _this2._store.__submit__(_this2.queued(), options.weight); - - reachedHWM = _ref2.reachedHWM; - blocked = _ref2.blocked; - strategy = _ref2.strategy; - } catch (error1) { - error = error1; - - _this2.Events.trigger("debug", `Could not queue ${options.id}`, { - args, - options, - error - }); - - job.doDrop({ - error - }); - return false; - } - - if (blocked) { - job.doDrop(); - return true; - } else if (reachedHWM) { - shifted = strategy === Bottleneck.prototype.strategy.LEAK ? _this2._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? _this2._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0; - - if (shifted != null) { - shifted.doDrop(); - } - - if (shifted == null || strategy === Bottleneck.prototype.strategy.OVERFLOW) { - if (shifted == null) { - job.doDrop(); - } - - return reachedHWM; - } - } - - job.doQueue(reachedHWM, blocked); - - _this2._queues.push(job); - - yield _this2._drainAll(); - return reachedHWM; - })(); - } - - _receive(job) { - if (this._states.jobStatus(job.options.id) != null) { - job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`)); - - return false; - } else { - job.doReceive(); - return this._submitLock.schedule(this._addToQueue, job); - } - } - - submit(...args) { - var cb, fn, job, options, ref, ref1, task; - - if (typeof args[0] === "function") { - var _ref3, _ref4, _splice$call, _splice$call2; - - ref = args, (_ref3 = ref, _ref4 = _toArray(_ref3), fn = _ref4[0], args = _ref4.slice(1), _ref3), (_splice$call = splice.call(args, -1), _splice$call2 = _slicedToArray(_splice$call, 1), cb = _splice$call2[0], _splice$call); - options = parser.load({}, this.jobDefaults); - } else { - var _ref5, _ref6, _splice$call3, _splice$call4; - - ref1 = args, (_ref5 = ref1, _ref6 = _toArray(_ref5), options = _ref6[0], fn = _ref6[1], args = _ref6.slice(2), _ref5), (_splice$call3 = splice.call(args, -1), _splice$call4 = _slicedToArray(_splice$call3, 1), cb = _splice$call4[0], _splice$call3); - options = parser.load(options, this.jobDefaults); - } - - task = (...args) => { - return new this.Promise(function (resolve, reject) { - return fn(...args, function (...args) { - return (args[0] != null ? reject : resolve)(args); - }); - }); - }; - - job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise); - job.promise.then(function (args) { - return typeof cb === "function" ? cb(...args) : void 0; - }).catch(function (args) { - if (Array.isArray(args)) { - return typeof cb === "function" ? cb(...args) : void 0; - } else { - return typeof cb === "function" ? cb(args) : void 0; - } - }); - return this._receive(job); - } - - schedule(...args) { - var job, options, task; - - if (typeof args[0] === "function") { - var _args = args; - - var _args2 = _toArray(_args); - - task = _args2[0]; - args = _args2.slice(1); - options = {}; - } else { - var _args3 = args; - - var _args4 = _toArray(_args3); - - options = _args4[0]; - task = _args4[1]; - args = _args4.slice(2); - } - - job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise); - - this._receive(job); - - return job.promise; - } - - wrap(fn) { - var schedule, wrapped; - schedule = this.schedule.bind(this); - - wrapped = function wrapped(...args) { - return schedule(fn.bind(this), ...args); - }; - - wrapped.withOptions = function (options, ...args) { - return schedule(options, fn, ...args); - }; - - return wrapped; - } - - updateSettings(options = {}) { - var _this3 = this; - - return _asyncToGenerator(function* () { - yield _this3._store.__updateSettings__(parser.overwrite(options, _this3.storeDefaults)); - parser.overwrite(options, _this3.instanceDefaults, _this3); - return _this3; - })(); - } - - currentReservoir() { - return this._store.__currentReservoir__(); - } - - incrementReservoir(incr = 0) { - return this._store.__incrementReservoir__(incr); - } - - } - Bottleneck.default = Bottleneck; - Bottleneck.Events = Events; - Bottleneck.version = Bottleneck.prototype.version = require$$8.version; - Bottleneck.strategy = Bottleneck.prototype.strategy = { - LEAK: 1, - OVERFLOW: 2, - OVERFLOW_PRIORITY: 4, - BLOCK: 3 - }; - Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = BottleneckError_1; - Bottleneck.Group = Bottleneck.prototype.Group = Group_1; - Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = RedisConnection_1; - Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = IORedisConnection_1; - Bottleneck.Batcher = Bottleneck.prototype.Batcher = Batcher_1; - Bottleneck.prototype.jobDefaults = { - priority: DEFAULT_PRIORITY, - weight: 1, - expiration: null, - id: "" - }; - Bottleneck.prototype.storeDefaults = { - maxConcurrent: null, - minTime: 0, - highWater: null, - strategy: Bottleneck.prototype.strategy.LEAK, - penalty: null, - reservoir: null, - reservoirRefreshInterval: null, - reservoirRefreshAmount: null, - reservoirIncreaseInterval: null, - reservoirIncreaseAmount: null, - reservoirIncreaseMaximum: null - }; - Bottleneck.prototype.localStoreDefaults = { - Promise: Promise, - timeout: null, - heartbeatInterval: 250 - }; - Bottleneck.prototype.redisStoreDefaults = { - Promise: Promise, - timeout: null, - heartbeatInterval: 5000, - clientTimeout: 10000, - Redis: null, - clientOptions: {}, - clusterNodes: null, - clearDatastore: false, - connection: null - }; - Bottleneck.prototype.instanceDefaults = { - datastore: "local", - connection: null, - id: "", - rejectOnDrop: true, - trackDoneStatus: false, - Promise: Promise - }; - Bottleneck.prototype.stopDefaults = { - enqueueErrorMessage: "This limiter has been stopped and cannot accept new jobs.", - dropWaitingJobs: true, - dropErrorMessage: "This limiter has been stopped." - }; - return Bottleneck; -}.call(void 0); - -var Bottleneck_1 = Bottleneck; - -var lib = require$$0; - -const unifetch = typeof fetch !== 'undefined' ? fetch : browser$1; -class AlpacaClient { - params; - baseURLs = endpoints; - limiter = new lib({ - reservoir: 200, - reservoirRefreshAmount: 200, - reservoirRefreshInterval: 60 * 1000, - maxConcurrent: 1, - minTime: 200, - }); - constructor(params) { - this.params = params; - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if (!('paper' in params.credentials) && - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - if ('access_token' in params.credentials && - ('key' in params.credentials || 'secret' in params.credentials)) { - throw new Error("can't create client with both default and oauth credentials"); - } - } - async isAuthenticated() { - try { - await this.getAccount(); - return true; - } - catch { - return false; - } - } - async getAccount() { - return parse.account(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account`, - })); - } - async getOrder(params) { - return parse.order(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders/${params.order_id || params.client_order_id}`, - data: { nested: params.nested }, - })); - } - async getOrders(params = {}) { - return parse.orders(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders`, - data: { - ...params, - symbols: params.symbols ? params.symbols.join(',') : undefined, - }, - })); - } - async placeOrder(params) { - return parse.order(await this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/orders`, - data: params, - })); - } - async replaceOrder(params) { - return parse.order(await this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - data: params, - })); - } - cancelOrder(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - isJSON: false, - }); - } - async cancelOrders() { - return parse.canceled_orders(await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders`, - })); - } - async getPosition(params) { - return parse.position(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - })); - } - async getPositions() { - return parse.positions(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions`, - })); - } - async closePosition(params) { - return parse.order(await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - data: params, - })); - } - async closePositions(params) { - return parse.orders(await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify(params.cancel_orders ?? false)}`, - })); - } - getAsset(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets/${params.asset_id_or_symbol}`, - }); - } - getAssets(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets`, - data: params, - }); - } - getWatchlist(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getWatchlists() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists`, - }); - } - createWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists`, - data: params, - }); - } - updateWatchlist(params) { - return this.request({ - method: 'PUT', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - addToWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - removeFromWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}/${params.symbol}`, - }); - } - deleteWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getCalendar(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/calendar`, - data: params, - }); - } - getNews(params) { - if ('symbols' in params && Array.isArray(params.symbols)) { - params.symbols = params.symbols.join(','); - } - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.beta}/news`, - data: params, - }); - } - async getClock() { - return parse.clock(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/clock`, - })); - } - getAccountConfigurations() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/configurations`, - }); - } - updateAccountConfigurations(params) { - return this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/account/configurations`, - data: params, - }); - } - async getAccountActivities(params) { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params.activity_types.join(','); - } - return parse.activities(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/activities${params.activity_type ? '/'.concat(params.activity_type) : ''}`, - data: { ...params, activity_type: undefined }, - })); - } - getPortfolioHistory(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/portfolio/history`, - data: params, - }); - } - async getBars_v1(params) { - const transformed = { - ...params, - symbols: params.symbols.join(','), - }; - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/bars/${params.timeframe}`, - data: transformed, - }); - } - async getLastTrade_v1(params) { - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last/stocks/${params.symbol}`, - }); - } - async getLastQuote_v1(params) { - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${params.symbol}`, - }); - } - async getTrades(params) { - return parse.pageOfTrades(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/trades`, - data: { ...params, symbol: undefined }, - })); - } - async getQuotes(params) { - return parse.pageOfQuotes(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/quotes`, - data: { ...params, symbol: undefined }, - })); - } - async getBars(params) { - return parse.pageOfBars(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/bars`, - data: { ...params, symbol: undefined }, - })); - } - async getLatestTrade({ symbol, feed, limit, }) { - let query = ''; - if (feed || limit) { - query = '?'.concat(lib$1.stringify({ feed, limit })); - } - return parse.latestTrade(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${symbol}/trades/latest`.concat(query), - })); - } - async getSnapshot(params) { - return parse.snapshot(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/snapshot`, - })); - } - async getSnapshots(params) { - return parse.snapshots(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${params.symbols.join(',')}`, - })); - } - async request(params) { - let headers = {}; - if ('access_token' in this.params.credentials) { - headers['Authorization'] = `Bearer ${this.params.credentials.access_token}`; - } - else { - headers['APCA-API-KEY-ID'] = this.params.credentials.key; - headers['APCA-API-SECRET-KEY'] = this.params.credentials.secret; - } - if (this.params.credentials.paper) { - params.url = params.url.replace('api.', 'paper-api.'); - } - let query = ''; - if (params.data) { - for (let [key, value] of Object.entries(params.data)) { - if (value instanceof Date) { - params.data[key] = value.toISOString(); - } - } - if (!['POST', 'PATCH', 'PUT'].includes(params.method)) { - query = '?'.concat(lib$1.stringify(params.data)); - params.data = undefined; - } - } - const makeCall = () => unifetch(params.url.concat(query), { - method: params.method, - headers, - body: JSON.stringify(params.data), - }), func = this.params.rate_limit - ? () => this.limiter.schedule(makeCall) - : makeCall; - let resp, result = {}; - try { - resp = await func(); - if (!(params.isJSON == undefined ? true : params.isJSON)) { - return resp.ok; - } - result = await resp.json(); - } - catch (e) { - console.error(e); - throw result; - } - if ('code' in result || 'message' in result) { - throw result; - } - return result; - } -} - -var isBlob = value => { - if (typeof Blob === 'undefined') { - return false; - } - - return value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]'; -}; - -// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js - -var ws = null; - -if (typeof WebSocket !== 'undefined') { - ws = WebSocket; -} else if (typeof MozWebSocket !== 'undefined') { - ws = MozWebSocket; -} else if (typeof commonjsGlobal !== 'undefined') { - ws = commonjsGlobal.WebSocket || commonjsGlobal.MozWebSocket; -} else if (typeof window !== 'undefined') { - ws = window.WebSocket || window.MozWebSocket; -} else if (typeof self !== 'undefined') { - ws = self.WebSocket || self.MozWebSocket; -} - -var browser = ws; - -var eventemitter3 = createCommonjsModule(function (module) { - -var has = Object.prototype.hasOwnProperty - , prefix = '~'; - -/** - * Constructor to create a storage for our `EE` objects. - * An `Events` instance is a plain object whose properties are event names. - * - * @constructor - * @private - */ -function Events() {} - -// -// We try to not inherit from `Object.prototype`. In some engines creating an -// instance in this way is faster than calling `Object.create(null)` directly. -// If `Object.create(null)` is not supported we prefix the event names with a -// character to make sure that the built-in object properties are not -// overridden or used as an attack vector. -// -if (Object.create) { - Events.prototype = Object.create(null); - - // - // This hack is needed because the `__proto__` property is still inherited in - // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5. - // - if (!new Events().__proto__) prefix = false; -} - -/** - * Representation of a single event listener. - * - * @param {Function} fn The listener function. - * @param {*} context The context to invoke the listener with. - * @param {Boolean} [once=false] Specify if the listener is a one-time listener. - * @constructor - * @private - */ -function EE(fn, context, once) { - this.fn = fn; - this.context = context; - this.once = once || false; -} - -/** - * Add a listener for a given event. - * - * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. - * @param {(String|Symbol)} event The event name. - * @param {Function} fn The listener function. - * @param {*} context The context to invoke the listener with. - * @param {Boolean} once Specify if the listener is a one-time listener. - * @returns {EventEmitter} - * @private - */ -function addListener(emitter, event, fn, context, once) { - if (typeof fn !== 'function') { - throw new TypeError('The listener must be a function'); - } - - var listener = new EE(fn, context || emitter, once) - , evt = prefix ? prefix + event : event; - - if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; - else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); - else emitter._events[evt] = [emitter._events[evt], listener]; - - return emitter; -} - -/** - * Clear event by name. - * - * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. - * @param {(String|Symbol)} evt The Event name. - * @private - */ -function clearEvent(emitter, evt) { - if (--emitter._eventsCount === 0) emitter._events = new Events(); - else delete emitter._events[evt]; -} - -/** - * Minimal `EventEmitter` interface that is molded against the Node.js - * `EventEmitter` interface. - * - * @constructor - * @public - */ -function EventEmitter() { - this._events = new Events(); - this._eventsCount = 0; -} - -/** - * Return an array listing the events for which the emitter has registered - * listeners. - * - * @returns {Array} - * @public - */ -EventEmitter.prototype.eventNames = function eventNames() { - var names = [] - , events - , name; - - if (this._eventsCount === 0) return names; - - for (name in (events = this._events)) { - if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); - } - - if (Object.getOwnPropertySymbols) { - return names.concat(Object.getOwnPropertySymbols(events)); - } - - return names; -}; - -/** - * Return the listeners registered for a given event. - * - * @param {(String|Symbol)} event The event name. - * @returns {Array} The registered listeners. - * @public - */ -EventEmitter.prototype.listeners = function listeners(event) { - var evt = prefix ? prefix + event : event - , handlers = this._events[evt]; - - if (!handlers) return []; - if (handlers.fn) return [handlers.fn]; - - for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) { - ee[i] = handlers[i].fn; - } - - return ee; -}; - -/** - * Return the number of listeners listening to a given event. - * - * @param {(String|Symbol)} event The event name. - * @returns {Number} The number of listeners. - * @public - */ -EventEmitter.prototype.listenerCount = function listenerCount(event) { - var evt = prefix ? prefix + event : event - , listeners = this._events[evt]; - - if (!listeners) return 0; - if (listeners.fn) return 1; - return listeners.length; -}; - -/** - * Calls each of the listeners registered for a given event. - * - * @param {(String|Symbol)} event The event name. - * @returns {Boolean} `true` if the event had listeners, else `false`. - * @public - */ -EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return false; - - var listeners = this._events[evt] - , len = arguments.length - , args - , i; - - if (listeners.fn) { - if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); - - switch (len) { - case 1: return listeners.fn.call(listeners.context), true; - case 2: return listeners.fn.call(listeners.context, a1), true; - case 3: return listeners.fn.call(listeners.context, a1, a2), true; - case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; - case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; - case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; - } - - for (i = 1, args = new Array(len -1); i < len; i++) { - args[i - 1] = arguments[i]; - } - - listeners.fn.apply(listeners.context, args); - } else { - var length = listeners.length - , j; - - for (i = 0; i < length; i++) { - if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); - - switch (len) { - case 1: listeners[i].fn.call(listeners[i].context); break; - case 2: listeners[i].fn.call(listeners[i].context, a1); break; - case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; - case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; - default: - if (!args) for (j = 1, args = new Array(len -1); j < len; j++) { - args[j - 1] = arguments[j]; - } - - listeners[i].fn.apply(listeners[i].context, args); - } - } - } - - return true; -}; - -/** - * Add a listener for a given event. - * - * @param {(String|Symbol)} event The event name. - * @param {Function} fn The listener function. - * @param {*} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @public - */ -EventEmitter.prototype.on = function on(event, fn, context) { - return addListener(this, event, fn, context, false); -}; - -/** - * Add a one-time listener for a given event. - * - * @param {(String|Symbol)} event The event name. - * @param {Function} fn The listener function. - * @param {*} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @public - */ -EventEmitter.prototype.once = function once(event, fn, context) { - return addListener(this, event, fn, context, true); -}; - -/** - * Remove the listeners of a given event. - * - * @param {(String|Symbol)} event The event name. - * @param {Function} fn Only remove the listeners that match this function. - * @param {*} context Only remove the listeners that have this context. - * @param {Boolean} once Only remove one-time listeners. - * @returns {EventEmitter} `this`. - * @public - */ -EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return this; - if (!fn) { - clearEvent(this, evt); - return this; - } - - var listeners = this._events[evt]; - - if (listeners.fn) { - if ( - listeners.fn === fn && - (!once || listeners.once) && - (!context || listeners.context === context) - ) { - clearEvent(this, evt); - } - } else { - for (var i = 0, events = [], length = listeners.length; i < length; i++) { - if ( - listeners[i].fn !== fn || - (once && !listeners[i].once) || - (context && listeners[i].context !== context) - ) { - events.push(listeners[i]); - } - } - - // - // Reset the array, or remove it completely if we have no more listeners. - // - if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; - else clearEvent(this, evt); - } - - return this; -}; - -/** - * Remove all listeners, or those of the specified event. - * - * @param {(String|Symbol)} [event] The event name. - * @returns {EventEmitter} `this`. - * @public - */ -EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { - var evt; - - if (event) { - evt = prefix ? prefix + event : event; - if (this._events[evt]) clearEvent(this, evt); - } else { - this._events = new Events(); - this._eventsCount = 0; - } - - return this; -}; - -// -// Alias methods names because people roll like that. -// -EventEmitter.prototype.off = EventEmitter.prototype.removeListener; -EventEmitter.prototype.addListener = EventEmitter.prototype.on; - -// -// Expose the prefix. -// -EventEmitter.prefixed = prefix; - -// -// Allow `EventEmitter` to be imported as module namespace. -// -EventEmitter.EventEmitter = EventEmitter; - -// -// Expose the module. -// -{ - module.exports = EventEmitter; -} -}); - -class AlpacaStream extends eventemitter3 { - params; - host; - connection; - authenticated; - baseURLs = endpoints; - constructor(params) { - super(); - this.params = params; - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if (!('paper' in params.credentials) && - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - switch (params.type) { - case 'account': - this.host = params.credentials.paper - ? this.baseURLs.websocket.account.replace('api.', 'paper-api.') - : this.baseURLs.websocket.account; - break; - case 'market_data': - this.host = this.baseURLs.websocket.market_data(this.params.source); - break; - default: - this.host = 'unknown'; - } - this.connection = new browser(this.host); - this.connection.onopen = () => { - let message = {}; - switch (this.params.type) { - case 'account': - message = { - action: 'authenticate', - data: { - key_id: params.credentials.key, - secret_key: params.credentials.secret, - }, - }; - break; - case 'market_data': - message = { action: 'auth', ...params.credentials }; - break; - } - this.connection.send(JSON.stringify(message)); - this.emit('open', this); - }; - this.connection.onclose = () => this.emit('close', this); - this.connection.onmessage = async (event) => { - let data = event.data; - if (isBlob(data)) { - data = await event.data.text(); - } - else if (data instanceof ArrayBuffer) { - data = String.fromCharCode(...new Uint8Array(event.data)); - } - let parsed = JSON.parse(data), messages = this.params.type == 'account' ? [parsed] : parsed; - messages.forEach((message) => { - this.emit('message', message); - if ('T' in message && message.msg == 'authenticated') { - this.authenticated = true; - this.emit('authenticated', this); - } - else if ('stream' in message && message.stream == 'authorization') { - if (message.data.status == 'authorized') { - this.authenticated = true; - this.emit('authenticated', this); - } - } - if ('stream' in message && message.stream == 'trade_updates') { - this.emit('trade_updates', parse.trade_update(message.data)); - } - const x = { - success: 'success', - subscription: 'subscription', - error: 'error', - t: 'trade', - q: 'quote', - b: 'bar', - }; - if ('T' in message) { - this.emit(x[message.T.split('.')[0]], message); - } - }); - }; - this.connection.onerror = (err) => { - this.emit('error', err); - }; - } - getConnection() { - return this.connection; - } - subscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - this.send(JSON.stringify({ action: 'listen', data: { streams: [channel] } })); - break; - case 'market_data': - let message = { action: 'subscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - unsubscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - this.send(JSON.stringify({ action: 'unlisten', data: { streams: [channel] } })); - break; - case 'market_data': - let message = { action: 'unsubscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - send(message) { - if (!this.authenticated) { - throw new Error('not authenticated'); - } - if (typeof message == 'object') { - message = JSON.stringify(message); - } - this.connection.send(message); - return this; - } -} - -var index = { - AlpacaClient: AlpacaClient, - AlpacaStream: AlpacaStream, -}; - -export { AlpacaClient, AlpacaStream, index as default }; -//# sourceMappingURL=alpaca.browser.modern.js.map diff --git a/dist/alpaca.browser.modern.js.map b/dist/alpaca.browser.modern.js.map deleted file mode 100644 index 00efa8d..0000000 --- a/dist/alpaca.browser.modern.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"alpaca.browser.modern.js","sources":["../node_modules/has-symbols/shams.js","../node_modules/has-symbols/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object-inspect/util.inspect.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../src/parse.ts","../node_modules/unfetch/dist/unfetch.module.js","../node_modules/isomorphic-unfetch/browser.js","../src/endpoints.ts","../node_modules/bottleneck/lib/parser.js","../node_modules/bottleneck/lib/DLList.js","../node_modules/bottleneck/lib/Events.js","../node_modules/bottleneck/lib/Queues.js","../node_modules/bottleneck/lib/BottleneckError.js","../node_modules/bottleneck/lib/Job.js","../node_modules/bottleneck/lib/LocalDatastore.js","../node_modules/bottleneck/lib/Scripts.js","../node_modules/bottleneck/lib/RedisConnection.js","../node_modules/bottleneck/lib/IORedisConnection.js","../node_modules/bottleneck/lib/RedisDatastore.js","../node_modules/bottleneck/lib/States.js","../node_modules/bottleneck/lib/Sync.js","../node_modules/bottleneck/lib/Group.js","../node_modules/bottleneck/lib/Batcher.js","../node_modules/bottleneck/lib/Bottleneck.js","../node_modules/bottleneck/lib/index.js","../src/client.ts","../node_modules/is-blob/index.js","../node_modules/isomorphic-ws/browser.js","../node_modules/eventemitter3/index.js","../src/stream.ts","../src/index.ts"],"sourcesContent":["'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","module.exports = require('util').inspect;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\nvar toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('options \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n return String(obj);\n }\n if (typeof obj === 'bigint') {\n return String(obj) + 'n';\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = seen.slice();\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + String(obj.nodeName).toLowerCase();\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + xs.join(', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + ys.join(', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return String(s).replace(/\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase();\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = Array(opts.indent + 1).join(' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: Array(depth + 1).join(baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + xs.join(',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ((/[^\\w$]/).test(key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n if (sideChannel.has(object)) {\n throw new RangeError('Cyclic object value');\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, true);\n var valueSideChannel = getSideChannel();\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n",null,"export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.module.js.map\n","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n",null,"\"use strict\";\n\nexports.load = function (received, defaults, onto = {}) {\n var k, ref, v;\n\n for (k in defaults) {\n v = defaults[k];\n onto[k] = (ref = received[k]) != null ? ref : v;\n }\n\n return onto;\n};\n\nexports.overwrite = function (received, defaults, onto = {}) {\n var k, v;\n\n for (k in received) {\n v = received[k];\n\n if (defaults[k] !== void 0) {\n onto[k] = v;\n }\n }\n\n return onto;\n};","\"use strict\";\n\nvar DLList;\nDLList = class DLList {\n constructor(incr, decr) {\n this.incr = incr;\n this.decr = decr;\n this._first = null;\n this._last = null;\n this.length = 0;\n }\n\n push(value) {\n var node;\n this.length++;\n\n if (typeof this.incr === \"function\") {\n this.incr();\n }\n\n node = {\n value,\n prev: this._last,\n next: null\n };\n\n if (this._last != null) {\n this._last.next = node;\n this._last = node;\n } else {\n this._first = this._last = node;\n }\n\n return void 0;\n }\n\n shift() {\n var value;\n\n if (this._first == null) {\n return;\n } else {\n this.length--;\n\n if (typeof this.decr === \"function\") {\n this.decr();\n }\n }\n\n value = this._first.value;\n\n if ((this._first = this._first.next) != null) {\n this._first.prev = null;\n } else {\n this._last = null;\n }\n\n return value;\n }\n\n first() {\n if (this._first != null) {\n return this._first.value;\n }\n }\n\n getArray() {\n var node, ref, results;\n node = this._first;\n results = [];\n\n while (node != null) {\n results.push((ref = node, node = node.next, ref.value));\n }\n\n return results;\n }\n\n forEachShift(cb) {\n var node;\n node = this.shift();\n\n while (node != null) {\n cb(node), node = this.shift();\n }\n\n return void 0;\n }\n\n debug() {\n var node, ref, ref1, ref2, results;\n node = this._first;\n results = [];\n\n while (node != null) {\n results.push((ref = node, node = node.next, {\n value: ref.value,\n prev: (ref1 = ref.prev) != null ? ref1.value : void 0,\n next: (ref2 = ref.next) != null ? ref2.value : void 0\n }));\n }\n\n return results;\n }\n\n};\nmodule.exports = DLList;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events;\nEvents = class Events {\n constructor(instance) {\n this.instance = instance;\n this._events = {};\n\n if (this.instance.on != null || this.instance.once != null || this.instance.removeAllListeners != null) {\n throw new Error(\"An Emitter already exists for this object\");\n }\n\n this.instance.on = (name, cb) => {\n return this._addListener(name, \"many\", cb);\n };\n\n this.instance.once = (name, cb) => {\n return this._addListener(name, \"once\", cb);\n };\n\n this.instance.removeAllListeners = (name = null) => {\n if (name != null) {\n return delete this._events[name];\n } else {\n return this._events = {};\n }\n };\n }\n\n _addListener(name, status, cb) {\n var base;\n\n if ((base = this._events)[name] == null) {\n base[name] = [];\n }\n\n this._events[name].push({\n cb,\n status\n });\n\n return this.instance;\n }\n\n listenerCount(name) {\n if (this._events[name] != null) {\n return this._events[name].length;\n } else {\n return 0;\n }\n }\n\n trigger(name, ...args) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var e, promises;\n\n try {\n if (name !== \"debug\") {\n _this.trigger(\"debug\", `Event triggered: ${name}`, args);\n }\n\n if (_this._events[name] == null) {\n return;\n }\n\n _this._events[name] = _this._events[name].filter(function (listener) {\n return listener.status !== \"none\";\n });\n promises = _this._events[name].map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(function* (listener) {\n var e, returned;\n\n if (listener.status === \"none\") {\n return;\n }\n\n if (listener.status === \"once\") {\n listener.status = \"none\";\n }\n\n try {\n returned = typeof listener.cb === \"function\" ? listener.cb(...args) : void 0;\n\n if (typeof (returned != null ? returned.then : void 0) === \"function\") {\n return yield returned;\n } else {\n return returned;\n }\n } catch (error) {\n e = error;\n\n if (\"name\" !== \"error\") {\n _this.trigger(\"error\", e);\n }\n\n return null;\n }\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n return (yield Promise.all(promises)).find(function (x) {\n return x != null;\n });\n } catch (error) {\n e = error;\n\n if (\"name\" !== \"error\") {\n _this.trigger(\"error\", e);\n }\n\n return null;\n }\n })();\n }\n\n};\nmodule.exports = Events;","\"use strict\";\n\nvar DLList, Events, Queues;\nDLList = require(\"./DLList\");\nEvents = require(\"./Events\");\nQueues = class Queues {\n constructor(num_priorities) {\n var i;\n this.Events = new Events(this);\n this._length = 0;\n\n this._lists = function () {\n var j, ref, results;\n results = [];\n\n for (i = j = 1, ref = num_priorities; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n results.push(new DLList(() => {\n return this.incr();\n }, () => {\n return this.decr();\n }));\n }\n\n return results;\n }.call(this);\n }\n\n incr() {\n if (this._length++ === 0) {\n return this.Events.trigger(\"leftzero\");\n }\n }\n\n decr() {\n if (--this._length === 0) {\n return this.Events.trigger(\"zero\");\n }\n }\n\n push(job) {\n return this._lists[job.options.priority].push(job);\n }\n\n queued(priority) {\n if (priority != null) {\n return this._lists[priority].length;\n } else {\n return this._length;\n }\n }\n\n shiftAll(fn) {\n return this._lists.forEach(function (list) {\n return list.forEachShift(fn);\n });\n }\n\n getFirst(arr = this._lists) {\n var j, len, list;\n\n for (j = 0, len = arr.length; j < len; j++) {\n list = arr[j];\n\n if (list.length > 0) {\n return list;\n }\n }\n\n return [];\n }\n\n shiftLastFrom(priority) {\n return this.getFirst(this._lists.slice(priority).reverse()).shift();\n }\n\n};\nmodule.exports = Queues;","\"use strict\";\n\nvar BottleneckError;\nBottleneckError = class BottleneckError extends Error {};\nmodule.exports = BottleneckError;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, DEFAULT_PRIORITY, Job, NUM_PRIORITIES, parser;\nNUM_PRIORITIES = 10;\nDEFAULT_PRIORITY = 5;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nJob = class Job {\n constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) {\n this.task = task;\n this.args = args;\n this.rejectOnDrop = rejectOnDrop;\n this.Events = Events;\n this._states = _states;\n this.Promise = Promise;\n this.options = parser.load(options, jobDefaults);\n this.options.priority = this._sanitizePriority(this.options.priority);\n\n if (this.options.id === jobDefaults.id) {\n this.options.id = `${this.options.id}-${this._randomIndex()}`;\n }\n\n this.promise = new this.Promise((_resolve, _reject) => {\n this._resolve = _resolve;\n this._reject = _reject;\n });\n this.retryCount = 0;\n }\n\n _sanitizePriority(priority) {\n var sProperty;\n sProperty = ~~priority !== priority ? DEFAULT_PRIORITY : priority;\n\n if (sProperty < 0) {\n return 0;\n } else if (sProperty > NUM_PRIORITIES - 1) {\n return NUM_PRIORITIES - 1;\n } else {\n return sProperty;\n }\n }\n\n _randomIndex() {\n return Math.random().toString(36).slice(2);\n }\n\n doDrop({\n error,\n message = \"This job has been dropped by Bottleneck\"\n } = {}) {\n if (this._states.remove(this.options.id)) {\n if (this.rejectOnDrop) {\n this._reject(error != null ? error : new BottleneckError(message));\n }\n\n this.Events.trigger(\"dropped\", {\n args: this.args,\n options: this.options,\n task: this.task,\n promise: this.promise\n });\n return true;\n } else {\n return false;\n }\n }\n\n _assertStatus(expected) {\n var status;\n status = this._states.jobStatus(this.options.id);\n\n if (!(status === expected || expected === \"DONE\" && status === null)) {\n throw new BottleneckError(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`);\n }\n }\n\n doReceive() {\n this._states.start(this.options.id);\n\n return this.Events.trigger(\"received\", {\n args: this.args,\n options: this.options\n });\n }\n\n doQueue(reachedHWM, blocked) {\n this._assertStatus(\"RECEIVED\");\n\n this._states.next(this.options.id);\n\n return this.Events.trigger(\"queued\", {\n args: this.args,\n options: this.options,\n reachedHWM,\n blocked\n });\n }\n\n doRun() {\n if (this.retryCount === 0) {\n this._assertStatus(\"QUEUED\");\n\n this._states.next(this.options.id);\n } else {\n this._assertStatus(\"EXECUTING\");\n }\n\n return this.Events.trigger(\"scheduled\", {\n args: this.args,\n options: this.options\n });\n }\n\n doExecute(chained, clearGlobalState, run, free) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var error, eventInfo, passed;\n\n if (_this.retryCount === 0) {\n _this._assertStatus(\"RUNNING\");\n\n _this._states.next(_this.options.id);\n } else {\n _this._assertStatus(\"EXECUTING\");\n }\n\n eventInfo = {\n args: _this.args,\n options: _this.options,\n retryCount: _this.retryCount\n };\n\n _this.Events.trigger(\"executing\", eventInfo);\n\n try {\n passed = yield chained != null ? chained.schedule(_this.options, _this.task, ..._this.args) : _this.task(..._this.args);\n\n if (clearGlobalState()) {\n _this.doDone(eventInfo);\n\n yield free(_this.options, eventInfo);\n\n _this._assertStatus(\"DONE\");\n\n return _this._resolve(passed);\n }\n } catch (error1) {\n error = error1;\n return _this._onFailure(error, eventInfo, clearGlobalState, run, free);\n }\n })();\n }\n\n doExpire(clearGlobalState, run, free) {\n var error, eventInfo;\n\n if (this._states.jobStatus(this.options.id === \"RUNNING\")) {\n this._states.next(this.options.id);\n }\n\n this._assertStatus(\"EXECUTING\");\n\n eventInfo = {\n args: this.args,\n options: this.options,\n retryCount: this.retryCount\n };\n error = new BottleneckError(`This job timed out after ${this.options.expiration} ms.`);\n return this._onFailure(error, eventInfo, clearGlobalState, run, free);\n }\n\n _onFailure(error, eventInfo, clearGlobalState, run, free) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var retry, retryAfter;\n\n if (clearGlobalState()) {\n retry = yield _this2.Events.trigger(\"failed\", error, eventInfo);\n\n if (retry != null) {\n retryAfter = ~~retry;\n\n _this2.Events.trigger(\"retry\", `Retrying ${_this2.options.id} after ${retryAfter} ms`, eventInfo);\n\n _this2.retryCount++;\n return run(retryAfter);\n } else {\n _this2.doDone(eventInfo);\n\n yield free(_this2.options, eventInfo);\n\n _this2._assertStatus(\"DONE\");\n\n return _this2._reject(error);\n }\n }\n })();\n }\n\n doDone(eventInfo) {\n this._assertStatus(\"EXECUTING\");\n\n this._states.next(this.options.id);\n\n return this.Events.trigger(\"done\", eventInfo);\n }\n\n};\nmodule.exports = Job;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, LocalDatastore, parser;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nLocalDatastore = class LocalDatastore {\n constructor(instance, storeOptions, storeInstanceOptions) {\n this.instance = instance;\n this.storeOptions = storeOptions;\n this.clientId = this.instance._randomIndex();\n parser.load(storeInstanceOptions, storeInstanceOptions, this);\n this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now();\n this._running = 0;\n this._done = 0;\n this._unblockTime = 0;\n this.ready = this.Promise.resolve();\n this.clients = {};\n\n this._startHeartbeat();\n }\n\n _startHeartbeat() {\n var base;\n\n if (this.heartbeat == null && (this.storeOptions.reservoirRefreshInterval != null && this.storeOptions.reservoirRefreshAmount != null || this.storeOptions.reservoirIncreaseInterval != null && this.storeOptions.reservoirIncreaseAmount != null)) {\n return typeof (base = this.heartbeat = setInterval(() => {\n var amount, incr, maximum, now, reservoir;\n now = Date.now();\n\n if (this.storeOptions.reservoirRefreshInterval != null && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) {\n this._lastReservoirRefresh = now;\n this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount;\n\n this.instance._drainAll(this.computeCapacity());\n }\n\n if (this.storeOptions.reservoirIncreaseInterval != null && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) {\n var _this$storeOptions = this.storeOptions;\n amount = _this$storeOptions.reservoirIncreaseAmount;\n maximum = _this$storeOptions.reservoirIncreaseMaximum;\n reservoir = _this$storeOptions.reservoir;\n this._lastReservoirIncrease = now;\n incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount;\n\n if (incr > 0) {\n this.storeOptions.reservoir += incr;\n return this.instance._drainAll(this.computeCapacity());\n }\n }\n }, this.heartbeatInterval)).unref === \"function\" ? base.unref() : void 0;\n } else {\n return clearInterval(this.heartbeat);\n }\n }\n\n __publish__(message) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n yield _this.yieldLoop();\n return _this.instance.Events.trigger(\"message\", message.toString());\n })();\n }\n\n __disconnect__(flush) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n yield _this2.yieldLoop();\n clearInterval(_this2.heartbeat);\n return _this2.Promise.resolve();\n })();\n }\n\n yieldLoop(t = 0) {\n return new this.Promise(function (resolve, reject) {\n return setTimeout(resolve, t);\n });\n }\n\n computePenalty() {\n var ref;\n return (ref = this.storeOptions.penalty) != null ? ref : 15 * this.storeOptions.minTime || 5000;\n }\n\n __updateSettings__(options) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n yield _this3.yieldLoop();\n parser.overwrite(options, options, _this3.storeOptions);\n\n _this3._startHeartbeat();\n\n _this3.instance._drainAll(_this3.computeCapacity());\n\n return true;\n })();\n }\n\n __running__() {\n var _this4 = this;\n\n return _asyncToGenerator(function* () {\n yield _this4.yieldLoop();\n return _this4._running;\n })();\n }\n\n __queued__() {\n var _this5 = this;\n\n return _asyncToGenerator(function* () {\n yield _this5.yieldLoop();\n return _this5.instance.queued();\n })();\n }\n\n __done__() {\n var _this6 = this;\n\n return _asyncToGenerator(function* () {\n yield _this6.yieldLoop();\n return _this6._done;\n })();\n }\n\n __groupCheck__(time) {\n var _this7 = this;\n\n return _asyncToGenerator(function* () {\n yield _this7.yieldLoop();\n return _this7._nextRequest + _this7.timeout < time;\n })();\n }\n\n computeCapacity() {\n var maxConcurrent, reservoir;\n var _this$storeOptions2 = this.storeOptions;\n maxConcurrent = _this$storeOptions2.maxConcurrent;\n reservoir = _this$storeOptions2.reservoir;\n\n if (maxConcurrent != null && reservoir != null) {\n return Math.min(maxConcurrent - this._running, reservoir);\n } else if (maxConcurrent != null) {\n return maxConcurrent - this._running;\n } else if (reservoir != null) {\n return reservoir;\n } else {\n return null;\n }\n }\n\n conditionsCheck(weight) {\n var capacity;\n capacity = this.computeCapacity();\n return capacity == null || weight <= capacity;\n }\n\n __incrementReservoir__(incr) {\n var _this8 = this;\n\n return _asyncToGenerator(function* () {\n var reservoir;\n yield _this8.yieldLoop();\n reservoir = _this8.storeOptions.reservoir += incr;\n\n _this8.instance._drainAll(_this8.computeCapacity());\n\n return reservoir;\n })();\n }\n\n __currentReservoir__() {\n var _this9 = this;\n\n return _asyncToGenerator(function* () {\n yield _this9.yieldLoop();\n return _this9.storeOptions.reservoir;\n })();\n }\n\n isBlocked(now) {\n return this._unblockTime >= now;\n }\n\n check(weight, now) {\n return this.conditionsCheck(weight) && this._nextRequest - now <= 0;\n }\n\n __check__(weight) {\n var _this10 = this;\n\n return _asyncToGenerator(function* () {\n var now;\n yield _this10.yieldLoop();\n now = Date.now();\n return _this10.check(weight, now);\n })();\n }\n\n __register__(index, weight, expiration) {\n var _this11 = this;\n\n return _asyncToGenerator(function* () {\n var now, wait;\n yield _this11.yieldLoop();\n now = Date.now();\n\n if (_this11.conditionsCheck(weight)) {\n _this11._running += weight;\n\n if (_this11.storeOptions.reservoir != null) {\n _this11.storeOptions.reservoir -= weight;\n }\n\n wait = Math.max(_this11._nextRequest - now, 0);\n _this11._nextRequest = now + wait + _this11.storeOptions.minTime;\n return {\n success: true,\n wait,\n reservoir: _this11.storeOptions.reservoir\n };\n } else {\n return {\n success: false\n };\n }\n })();\n }\n\n strategyIsBlock() {\n return this.storeOptions.strategy === 3;\n }\n\n __submit__(queueLength, weight) {\n var _this12 = this;\n\n return _asyncToGenerator(function* () {\n var blocked, now, reachedHWM;\n yield _this12.yieldLoop();\n\n if (_this12.storeOptions.maxConcurrent != null && weight > _this12.storeOptions.maxConcurrent) {\n throw new BottleneckError(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${_this12.storeOptions.maxConcurrent}`);\n }\n\n now = Date.now();\n reachedHWM = _this12.storeOptions.highWater != null && queueLength === _this12.storeOptions.highWater && !_this12.check(weight, now);\n blocked = _this12.strategyIsBlock() && (reachedHWM || _this12.isBlocked(now));\n\n if (blocked) {\n _this12._unblockTime = now + _this12.computePenalty();\n _this12._nextRequest = _this12._unblockTime + _this12.storeOptions.minTime;\n\n _this12.instance._dropAllQueued();\n }\n\n return {\n reachedHWM,\n blocked,\n strategy: _this12.storeOptions.strategy\n };\n })();\n }\n\n __free__(index, weight) {\n var _this13 = this;\n\n return _asyncToGenerator(function* () {\n yield _this13.yieldLoop();\n _this13._running -= weight;\n _this13._done += weight;\n\n _this13.instance._drainAll(_this13.computeCapacity());\n\n return {\n running: _this13._running\n };\n })();\n }\n\n};\nmodule.exports = LocalDatastore;","\"use strict\";\n\nvar headers, lua, templates;\nlua = require(\"./lua.json\");\nheaders = {\n refs: lua[\"refs.lua\"],\n validate_keys: lua[\"validate_keys.lua\"],\n validate_client: lua[\"validate_client.lua\"],\n refresh_expiration: lua[\"refresh_expiration.lua\"],\n process_tick: lua[\"process_tick.lua\"],\n conditions_check: lua[\"conditions_check.lua\"],\n get_time: lua[\"get_time.lua\"]\n};\n\nexports.allKeys = function (id) {\n return [\n /*\n HASH\n */\n `b_${id}_settings`,\n /*\n HASH\n job index -> weight\n */\n `b_${id}_job_weights`,\n /*\n ZSET\n job index -> expiration\n */\n `b_${id}_job_expirations`,\n /*\n HASH\n job index -> client\n */\n `b_${id}_job_clients`,\n /*\n ZSET\n client -> sum running\n */\n `b_${id}_client_running`,\n /*\n HASH\n client -> num queued\n */\n `b_${id}_client_num_queued`,\n /*\n ZSET\n client -> last job registered\n */\n `b_${id}_client_last_registered`,\n /*\n ZSET\n client -> last seen\n */\n `b_${id}_client_last_seen`];\n};\n\ntemplates = {\n init: {\n keys: exports.allKeys,\n headers: [\"process_tick\"],\n refresh_expiration: true,\n code: lua[\"init.lua\"]\n },\n group_check: {\n keys: exports.allKeys,\n headers: [],\n refresh_expiration: false,\n code: lua[\"group_check.lua\"]\n },\n register_client: {\n keys: exports.allKeys,\n headers: [\"validate_keys\"],\n refresh_expiration: false,\n code: lua[\"register_client.lua\"]\n },\n blacklist_client: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\"],\n refresh_expiration: false,\n code: lua[\"blacklist_client.lua\"]\n },\n heartbeat: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"heartbeat.lua\"]\n },\n update_settings: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"update_settings.lua\"]\n },\n running: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"running.lua\"]\n },\n queued: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\"],\n refresh_expiration: false,\n code: lua[\"queued.lua\"]\n },\n done: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"done.lua\"]\n },\n check: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: false,\n code: lua[\"check.lua\"]\n },\n submit: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: true,\n code: lua[\"submit.lua\"]\n },\n register: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: true,\n code: lua[\"register.lua\"]\n },\n free: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"free.lua\"]\n },\n current_reservoir: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"current_reservoir.lua\"]\n },\n increment_reservoir: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"increment_reservoir.lua\"]\n }\n};\nexports.names = Object.keys(templates);\n\nexports.keys = function (name, id) {\n return templates[name].keys(id);\n};\n\nexports.payload = function (name) {\n var template;\n template = templates[name];\n return Array.prototype.concat(headers.refs, template.headers.map(function (h) {\n return headers[h];\n }), template.refresh_expiration ? headers.refresh_expiration : \"\", template.code).join(\"\\n\");\n};","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, RedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nScripts = require(\"./Scripts\");\n\nRedisConnection = function () {\n class RedisConnection {\n constructor(options = {}) {\n parser.load(options, this.defaults, this);\n\n if (this.Redis == null) {\n this.Redis = eval(\"require\")(\"redis\"); // Obfuscated or else Webpack/Angular will try to inline the optional redis module. To override this behavior: pass the redis module to Bottleneck as the 'Redis' option.\n }\n\n if (this.Events == null) {\n this.Events = new Events(this);\n }\n\n this.terminated = false;\n\n if (this.client == null) {\n this.client = this.Redis.createClient(this.clientOptions);\n }\n\n this.subscriber = this.client.duplicate();\n this.limiters = {};\n this.shas = {};\n this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => {\n return this._loadScripts();\n }).then(() => {\n return {\n client: this.client,\n subscriber: this.subscriber\n };\n });\n }\n\n _setup(client, sub) {\n client.setMaxListeners(0);\n return new this.Promise((resolve, reject) => {\n client.on(\"error\", e => {\n return this.Events.trigger(\"error\", e);\n });\n\n if (sub) {\n client.on(\"message\", (channel, message) => {\n var ref;\n return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0;\n });\n }\n\n if (client.ready) {\n return resolve();\n } else {\n return client.once(\"ready\", resolve);\n }\n });\n }\n\n _loadScript(name) {\n return new this.Promise((resolve, reject) => {\n var payload;\n payload = Scripts.payload(name);\n return this.client.multi([[\"script\", \"load\", payload]]).exec((err, replies) => {\n if (err != null) {\n return reject(err);\n }\n\n this.shas[name] = replies[0];\n return resolve(replies[0]);\n });\n });\n }\n\n _loadScripts() {\n return this.Promise.all(Scripts.names.map(k => {\n return this._loadScript(k);\n }));\n }\n\n __runCommand__(cmd) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n yield _this.ready;\n return new _this.Promise((resolve, reject) => {\n return _this.client.multi([cmd]).exec_atomic(function (err, replies) {\n if (err != null) {\n return reject(err);\n } else {\n return resolve(replies[0]);\n }\n });\n });\n })();\n }\n\n __addLimiter__(instance) {\n return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => {\n return new this.Promise((resolve, reject) => {\n var handler;\n\n handler = chan => {\n if (chan === channel) {\n this.subscriber.removeListener(\"subscribe\", handler);\n this.limiters[channel] = instance;\n return resolve();\n }\n };\n\n this.subscriber.on(\"subscribe\", handler);\n return this.subscriber.subscribe(channel);\n });\n }));\n }\n\n __removeLimiter__(instance) {\n var _this2 = this;\n\n return this.Promise.all([instance.channel(), instance.channel_client()].map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(function* (channel) {\n if (!_this2.terminated) {\n yield new _this2.Promise((resolve, reject) => {\n return _this2.subscriber.unsubscribe(channel, function (err, chan) {\n if (err != null) {\n return reject(err);\n }\n\n if (chan === channel) {\n return resolve();\n }\n });\n });\n }\n\n return delete _this2.limiters[channel];\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }()));\n }\n\n __scriptArgs__(name, id, args, cb) {\n var keys;\n keys = Scripts.keys(name, id);\n return [this.shas[name], keys.length].concat(keys, args, cb);\n }\n\n __scriptFn__(name) {\n return this.client.evalsha.bind(this.client);\n }\n\n disconnect(flush = true) {\n var i, k, len, ref;\n ref = Object.keys(this.limiters);\n\n for (i = 0, len = ref.length; i < len; i++) {\n k = ref[i];\n clearInterval(this.limiters[k]._store.heartbeat);\n }\n\n this.limiters = {};\n this.terminated = true;\n this.client.end(flush);\n this.subscriber.end(flush);\n return this.Promise.resolve();\n }\n\n }\n\n ;\n RedisConnection.prototype.datastore = \"redis\";\n RedisConnection.prototype.defaults = {\n Redis: null,\n clientOptions: {},\n client: null,\n Promise: Promise,\n Events: null\n };\n return RedisConnection;\n}.call(void 0);\n\nmodule.exports = RedisConnection;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, IORedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nScripts = require(\"./Scripts\");\n\nIORedisConnection = function () {\n class IORedisConnection {\n constructor(options = {}) {\n parser.load(options, this.defaults, this);\n\n if (this.Redis == null) {\n this.Redis = eval(\"require\")(\"ioredis\"); // Obfuscated or else Webpack/Angular will try to inline the optional ioredis module. To override this behavior: pass the ioredis module to Bottleneck as the 'Redis' option.\n }\n\n if (this.Events == null) {\n this.Events = new Events(this);\n }\n\n this.terminated = false;\n\n if (this.clusterNodes != null) {\n this.client = new this.Redis.Cluster(this.clusterNodes, this.clientOptions);\n this.subscriber = new this.Redis.Cluster(this.clusterNodes, this.clientOptions);\n } else if (this.client != null && this.client.duplicate == null) {\n this.subscriber = new this.Redis.Cluster(this.client.startupNodes, this.client.options);\n } else {\n if (this.client == null) {\n this.client = new this.Redis(this.clientOptions);\n }\n\n this.subscriber = this.client.duplicate();\n }\n\n this.limiters = {};\n this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => {\n this._loadScripts();\n\n return {\n client: this.client,\n subscriber: this.subscriber\n };\n });\n }\n\n _setup(client, sub) {\n client.setMaxListeners(0);\n return new this.Promise((resolve, reject) => {\n client.on(\"error\", e => {\n return this.Events.trigger(\"error\", e);\n });\n\n if (sub) {\n client.on(\"message\", (channel, message) => {\n var ref;\n return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0;\n });\n }\n\n if (client.status === \"ready\") {\n return resolve();\n } else {\n return client.once(\"ready\", resolve);\n }\n });\n }\n\n _loadScripts() {\n return Scripts.names.forEach(name => {\n return this.client.defineCommand(name, {\n lua: Scripts.payload(name)\n });\n });\n }\n\n __runCommand__(cmd) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var _, deleted;\n\n yield _this.ready;\n\n var _ref = yield _this.client.pipeline([cmd]).exec();\n\n var _ref2 = _slicedToArray(_ref, 1);\n\n var _ref2$ = _slicedToArray(_ref2[0], 2);\n\n _ = _ref2$[0];\n deleted = _ref2$[1];\n return deleted;\n })();\n }\n\n __addLimiter__(instance) {\n return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => {\n return new this.Promise((resolve, reject) => {\n return this.subscriber.subscribe(channel, () => {\n this.limiters[channel] = instance;\n return resolve();\n });\n });\n }));\n }\n\n __removeLimiter__(instance) {\n var _this2 = this;\n\n return [instance.channel(), instance.channel_client()].forEach(\n /*#__PURE__*/\n function () {\n var _ref3 = _asyncToGenerator(function* (channel) {\n if (!_this2.terminated) {\n yield _this2.subscriber.unsubscribe(channel);\n }\n\n return delete _this2.limiters[channel];\n });\n\n return function (_x) {\n return _ref3.apply(this, arguments);\n };\n }());\n }\n\n __scriptArgs__(name, id, args, cb) {\n var keys;\n keys = Scripts.keys(name, id);\n return [keys.length].concat(keys, args, cb);\n }\n\n __scriptFn__(name) {\n return this.client[name].bind(this.client);\n }\n\n disconnect(flush = true) {\n var i, k, len, ref;\n ref = Object.keys(this.limiters);\n\n for (i = 0, len = ref.length; i < len; i++) {\n k = ref[i];\n clearInterval(this.limiters[k]._store.heartbeat);\n }\n\n this.limiters = {};\n this.terminated = true;\n\n if (flush) {\n return this.Promise.all([this.client.quit(), this.subscriber.quit()]);\n } else {\n this.client.disconnect();\n this.subscriber.disconnect();\n return this.Promise.resolve();\n }\n }\n\n }\n\n ;\n IORedisConnection.prototype.datastore = \"ioredis\";\n IORedisConnection.prototype.defaults = {\n Redis: null,\n clientOptions: {},\n clusterNodes: null,\n client: null,\n Promise: Promise,\n Events: null\n };\n return IORedisConnection;\n}.call(void 0);\n\nmodule.exports = IORedisConnection;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, IORedisConnection, RedisConnection, RedisDatastore, parser;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nRedisConnection = require(\"./RedisConnection\");\nIORedisConnection = require(\"./IORedisConnection\");\nRedisDatastore = class RedisDatastore {\n constructor(instance, storeOptions, storeInstanceOptions) {\n this.instance = instance;\n this.storeOptions = storeOptions;\n this.originalId = this.instance.id;\n this.clientId = this.instance._randomIndex();\n parser.load(storeInstanceOptions, storeInstanceOptions, this);\n this.clients = {};\n this.capacityPriorityCounters = {};\n this.sharedConnection = this.connection != null;\n\n if (this.connection == null) {\n this.connection = this.instance.datastore === \"redis\" ? new RedisConnection({\n Redis: this.Redis,\n clientOptions: this.clientOptions,\n Promise: this.Promise,\n Events: this.instance.Events\n }) : this.instance.datastore === \"ioredis\" ? new IORedisConnection({\n Redis: this.Redis,\n clientOptions: this.clientOptions,\n clusterNodes: this.clusterNodes,\n Promise: this.Promise,\n Events: this.instance.Events\n }) : void 0;\n }\n\n this.instance.connection = this.connection;\n this.instance.datastore = this.connection.datastore;\n this.ready = this.connection.ready.then(clients => {\n this.clients = clients;\n return this.runScript(\"init\", this.prepareInitSettings(this.clearDatastore));\n }).then(() => {\n return this.connection.__addLimiter__(this.instance);\n }).then(() => {\n return this.runScript(\"register_client\", [this.instance.queued()]);\n }).then(() => {\n var base;\n\n if (typeof (base = this.heartbeat = setInterval(() => {\n return this.runScript(\"heartbeat\", []).catch(e => {\n return this.instance.Events.trigger(\"error\", e);\n });\n }, this.heartbeatInterval)).unref === \"function\") {\n base.unref();\n }\n\n return this.clients;\n });\n }\n\n __publish__(message) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var client;\n\n var _ref = yield _this.ready;\n\n client = _ref.client;\n return client.publish(_this.instance.channel(), `message:${message.toString()}`);\n })();\n }\n\n onMessage(channel, message) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var capacity, counter, data, drained, e, newCapacity, pos, priorityClient, rawCapacity, type;\n\n try {\n pos = message.indexOf(\":\");\n var _ref2 = [message.slice(0, pos), message.slice(pos + 1)];\n type = _ref2[0];\n data = _ref2[1];\n\n if (type === \"capacity\") {\n return yield _this2.instance._drainAll(data.length > 0 ? ~~data : void 0);\n } else if (type === \"capacity-priority\") {\n var _data$split = data.split(\":\");\n\n var _data$split2 = _slicedToArray(_data$split, 3);\n\n rawCapacity = _data$split2[0];\n priorityClient = _data$split2[1];\n counter = _data$split2[2];\n capacity = rawCapacity.length > 0 ? ~~rawCapacity : void 0;\n\n if (priorityClient === _this2.clientId) {\n drained = yield _this2.instance._drainAll(capacity);\n newCapacity = capacity != null ? capacity - (drained || 0) : \"\";\n return yield _this2.clients.client.publish(_this2.instance.channel(), `capacity-priority:${newCapacity}::${counter}`);\n } else if (priorityClient === \"\") {\n clearTimeout(_this2.capacityPriorityCounters[counter]);\n delete _this2.capacityPriorityCounters[counter];\n return _this2.instance._drainAll(capacity);\n } else {\n return _this2.capacityPriorityCounters[counter] = setTimeout(\n /*#__PURE__*/\n _asyncToGenerator(function* () {\n var e;\n\n try {\n delete _this2.capacityPriorityCounters[counter];\n yield _this2.runScript(\"blacklist_client\", [priorityClient]);\n return yield _this2.instance._drainAll(capacity);\n } catch (error) {\n e = error;\n return _this2.instance.Events.trigger(\"error\", e);\n }\n }), 1000);\n }\n } else if (type === \"message\") {\n return _this2.instance.Events.trigger(\"message\", data);\n } else if (type === \"blocked\") {\n return yield _this2.instance._dropAllQueued();\n }\n } catch (error) {\n e = error;\n return _this2.instance.Events.trigger(\"error\", e);\n }\n })();\n }\n\n __disconnect__(flush) {\n clearInterval(this.heartbeat);\n\n if (this.sharedConnection) {\n return this.connection.__removeLimiter__(this.instance);\n } else {\n return this.connection.disconnect(flush);\n }\n }\n\n runScript(name, args) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n if (!(name === \"init\" || name === \"register_client\")) {\n yield _this3.ready;\n }\n\n return new _this3.Promise((resolve, reject) => {\n var all_args, arr;\n all_args = [Date.now(), _this3.clientId].concat(args);\n\n _this3.instance.Events.trigger(\"debug\", `Calling Redis script: ${name}.lua`, all_args);\n\n arr = _this3.connection.__scriptArgs__(name, _this3.originalId, all_args, function (err, replies) {\n if (err != null) {\n return reject(err);\n }\n\n return resolve(replies);\n });\n return _this3.connection.__scriptFn__(name)(...arr);\n }).catch(e => {\n if (e.message === \"SETTINGS_KEY_NOT_FOUND\") {\n if (name === \"heartbeat\") {\n return _this3.Promise.resolve();\n } else {\n return _this3.runScript(\"init\", _this3.prepareInitSettings(false)).then(() => {\n return _this3.runScript(name, args);\n });\n }\n } else if (e.message === \"UNKNOWN_CLIENT\") {\n return _this3.runScript(\"register_client\", [_this3.instance.queued()]).then(() => {\n return _this3.runScript(name, args);\n });\n } else {\n return _this3.Promise.reject(e);\n }\n });\n })();\n }\n\n prepareArray(arr) {\n var i, len, results, x;\n results = [];\n\n for (i = 0, len = arr.length; i < len; i++) {\n x = arr[i];\n results.push(x != null ? x.toString() : \"\");\n }\n\n return results;\n }\n\n prepareObject(obj) {\n var arr, k, v;\n arr = [];\n\n for (k in obj) {\n v = obj[k];\n arr.push(k, v != null ? v.toString() : \"\");\n }\n\n return arr;\n }\n\n prepareInitSettings(clear) {\n var args;\n args = this.prepareObject(Object.assign({}, this.storeOptions, {\n id: this.originalId,\n version: this.instance.version,\n groupTimeout: this.timeout,\n clientTimeout: this.clientTimeout\n }));\n args.unshift(clear ? 1 : 0, this.instance.version);\n return args;\n }\n\n convertBool(b) {\n return !!b;\n }\n\n __updateSettings__(options) {\n var _this4 = this;\n\n return _asyncToGenerator(function* () {\n yield _this4.runScript(\"update_settings\", _this4.prepareObject(options));\n return parser.overwrite(options, options, _this4.storeOptions);\n })();\n }\n\n __running__() {\n return this.runScript(\"running\", []);\n }\n\n __queued__() {\n return this.runScript(\"queued\", []);\n }\n\n __done__() {\n return this.runScript(\"done\", []);\n }\n\n __groupCheck__() {\n var _this5 = this;\n\n return _asyncToGenerator(function* () {\n return _this5.convertBool((yield _this5.runScript(\"group_check\", [])));\n })();\n }\n\n __incrementReservoir__(incr) {\n return this.runScript(\"increment_reservoir\", [incr]);\n }\n\n __currentReservoir__() {\n return this.runScript(\"current_reservoir\", []);\n }\n\n __check__(weight) {\n var _this6 = this;\n\n return _asyncToGenerator(function* () {\n return _this6.convertBool((yield _this6.runScript(\"check\", _this6.prepareArray([weight]))));\n })();\n }\n\n __register__(index, weight, expiration) {\n var _this7 = this;\n\n return _asyncToGenerator(function* () {\n var reservoir, success, wait;\n\n var _ref4 = yield _this7.runScript(\"register\", _this7.prepareArray([index, weight, expiration]));\n\n var _ref5 = _slicedToArray(_ref4, 3);\n\n success = _ref5[0];\n wait = _ref5[1];\n reservoir = _ref5[2];\n return {\n success: _this7.convertBool(success),\n wait,\n reservoir\n };\n })();\n }\n\n __submit__(queueLength, weight) {\n var _this8 = this;\n\n return _asyncToGenerator(function* () {\n var blocked, e, maxConcurrent, overweight, reachedHWM, strategy;\n\n try {\n var _ref6 = yield _this8.runScript(\"submit\", _this8.prepareArray([queueLength, weight]));\n\n var _ref7 = _slicedToArray(_ref6, 3);\n\n reachedHWM = _ref7[0];\n blocked = _ref7[1];\n strategy = _ref7[2];\n return {\n reachedHWM: _this8.convertBool(reachedHWM),\n blocked: _this8.convertBool(blocked),\n strategy\n };\n } catch (error) {\n e = error;\n\n if (e.message.indexOf(\"OVERWEIGHT\") === 0) {\n var _e$message$split = e.message.split(\":\");\n\n var _e$message$split2 = _slicedToArray(_e$message$split, 3);\n\n overweight = _e$message$split2[0];\n weight = _e$message$split2[1];\n maxConcurrent = _e$message$split2[2];\n throw new BottleneckError(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${maxConcurrent}`);\n } else {\n throw e;\n }\n }\n })();\n }\n\n __free__(index, weight) {\n var _this9 = this;\n\n return _asyncToGenerator(function* () {\n var running;\n running = yield _this9.runScript(\"free\", _this9.prepareArray([index]));\n return {\n running\n };\n })();\n }\n\n};\nmodule.exports = RedisDatastore;","\"use strict\";\n\nvar BottleneckError, States;\nBottleneckError = require(\"./BottleneckError\");\nStates = class States {\n constructor(status1) {\n this.status = status1;\n this._jobs = {};\n this.counts = this.status.map(function () {\n return 0;\n });\n }\n\n next(id) {\n var current, next;\n current = this._jobs[id];\n next = current + 1;\n\n if (current != null && next < this.status.length) {\n this.counts[current]--;\n this.counts[next]++;\n return this._jobs[id]++;\n } else if (current != null) {\n this.counts[current]--;\n return delete this._jobs[id];\n }\n }\n\n start(id) {\n var initial;\n initial = 0;\n this._jobs[id] = initial;\n return this.counts[initial]++;\n }\n\n remove(id) {\n var current;\n current = this._jobs[id];\n\n if (current != null) {\n this.counts[current]--;\n delete this._jobs[id];\n }\n\n return current != null;\n }\n\n jobStatus(id) {\n var ref;\n return (ref = this.status[this._jobs[id]]) != null ? ref : null;\n }\n\n statusJobs(status) {\n var k, pos, ref, results, v;\n\n if (status != null) {\n pos = this.status.indexOf(status);\n\n if (pos < 0) {\n throw new BottleneckError(`status must be one of ${this.status.join(', ')}`);\n }\n\n ref = this._jobs;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n\n if (v === pos) {\n results.push(k);\n }\n }\n\n return results;\n } else {\n return Object.keys(this._jobs);\n }\n }\n\n statusCounts() {\n return this.counts.reduce((acc, v, i) => {\n acc[this.status[i]] = v;\n return acc;\n }, {});\n }\n\n};\nmodule.exports = States;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar DLList, Sync;\nDLList = require(\"./DLList\");\nSync = class Sync {\n constructor(name, Promise) {\n this.schedule = this.schedule.bind(this);\n this.name = name;\n this.Promise = Promise;\n this._running = 0;\n this._queue = new DLList();\n }\n\n isEmpty() {\n return this._queue.length === 0;\n }\n\n _tryToRun() {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var args, cb, error, reject, resolve, returned, task;\n\n if (_this._running < 1 && _this._queue.length > 0) {\n _this._running++;\n\n var _this$_queue$shift = _this._queue.shift();\n\n task = _this$_queue$shift.task;\n args = _this$_queue$shift.args;\n resolve = _this$_queue$shift.resolve;\n reject = _this$_queue$shift.reject;\n cb = yield _asyncToGenerator(function* () {\n try {\n returned = yield task(...args);\n return function () {\n return resolve(returned);\n };\n } catch (error1) {\n error = error1;\n return function () {\n return reject(error);\n };\n }\n })();\n _this._running--;\n\n _this._tryToRun();\n\n return cb();\n }\n })();\n }\n\n schedule(task, ...args) {\n var promise, reject, resolve;\n resolve = reject = null;\n promise = new this.Promise(function (_resolve, _reject) {\n resolve = _resolve;\n return reject = _reject;\n });\n\n this._queue.push({\n task,\n args,\n resolve,\n reject\n });\n\n this._tryToRun();\n\n return promise;\n }\n\n};\nmodule.exports = Sync;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, Group, IORedisConnection, RedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nRedisConnection = require(\"./RedisConnection\");\nIORedisConnection = require(\"./IORedisConnection\");\nScripts = require(\"./Scripts\");\n\nGroup = function () {\n class Group {\n constructor(limiterOptions = {}) {\n this.deleteKey = this.deleteKey.bind(this);\n this.limiterOptions = limiterOptions;\n parser.load(this.limiterOptions, this.defaults, this);\n this.Events = new Events(this);\n this.instances = {};\n this.Bottleneck = require(\"./Bottleneck\");\n\n this._startAutoCleanup();\n\n this.sharedConnection = this.connection != null;\n\n if (this.connection == null) {\n if (this.limiterOptions.datastore === \"redis\") {\n this.connection = new RedisConnection(Object.assign({}, this.limiterOptions, {\n Events: this.Events\n }));\n } else if (this.limiterOptions.datastore === \"ioredis\") {\n this.connection = new IORedisConnection(Object.assign({}, this.limiterOptions, {\n Events: this.Events\n }));\n }\n }\n }\n\n key(key = \"\") {\n var ref;\n return (ref = this.instances[key]) != null ? ref : (() => {\n var limiter;\n limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, {\n id: `${this.id}-${key}`,\n timeout: this.timeout,\n connection: this.connection\n }));\n this.Events.trigger(\"created\", limiter, key);\n return limiter;\n })();\n }\n\n deleteKey(key = \"\") {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var deleted, instance;\n instance = _this.instances[key];\n\n if (_this.connection) {\n deleted = yield _this.connection.__runCommand__(['del', ...Scripts.allKeys(`${_this.id}-${key}`)]);\n }\n\n if (instance != null) {\n delete _this.instances[key];\n yield instance.disconnect();\n }\n\n return instance != null || deleted > 0;\n })();\n }\n\n limiters() {\n var k, ref, results, v;\n ref = this.instances;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n results.push({\n key: k,\n limiter: v\n });\n }\n\n return results;\n }\n\n keys() {\n return Object.keys(this.instances);\n }\n\n clusterKeys() {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var cursor, end, found, i, k, keys, len, next, start;\n\n if (_this2.connection == null) {\n return _this2.Promise.resolve(_this2.keys());\n }\n\n keys = [];\n cursor = null;\n start = `b_${_this2.id}-`.length;\n end = \"_settings\".length;\n\n while (cursor !== 0) {\n var _ref = yield _this2.connection.__runCommand__([\"scan\", cursor != null ? cursor : 0, \"match\", `b_${_this2.id}-*_settings`, \"count\", 10000]);\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n next = _ref2[0];\n found = _ref2[1];\n cursor = ~~next;\n\n for (i = 0, len = found.length; i < len; i++) {\n k = found[i];\n keys.push(k.slice(start, -end));\n }\n }\n\n return keys;\n })();\n }\n\n _startAutoCleanup() {\n var _this3 = this;\n\n var base;\n clearInterval(this.interval);\n return typeof (base = this.interval = setInterval(\n /*#__PURE__*/\n _asyncToGenerator(function* () {\n var e, k, ref, results, time, v;\n time = Date.now();\n ref = _this3.instances;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n\n try {\n if (yield v._store.__groupCheck__(time)) {\n results.push(_this3.deleteKey(k));\n } else {\n results.push(void 0);\n }\n } catch (error) {\n e = error;\n results.push(v.Events.trigger(\"error\", e));\n }\n }\n\n return results;\n }), this.timeout / 2)).unref === \"function\" ? base.unref() : void 0;\n }\n\n updateSettings(options = {}) {\n parser.overwrite(options, this.defaults, this);\n parser.overwrite(options, options, this.limiterOptions);\n\n if (options.timeout != null) {\n return this._startAutoCleanup();\n }\n }\n\n disconnect(flush = true) {\n var ref;\n\n if (!this.sharedConnection) {\n return (ref = this.connection) != null ? ref.disconnect(flush) : void 0;\n }\n }\n\n }\n\n ;\n Group.prototype.defaults = {\n timeout: 1000 * 60 * 5,\n connection: null,\n Promise: Promise,\n id: \"group-key\"\n };\n return Group;\n}.call(void 0);\n\nmodule.exports = Group;","\"use strict\";\n\nvar Batcher, Events, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\n\nBatcher = function () {\n class Batcher {\n constructor(options = {}) {\n this.options = options;\n parser.load(this.options, this.defaults, this);\n this.Events = new Events(this);\n this._arr = [];\n\n this._resetPromise();\n\n this._lastFlush = Date.now();\n }\n\n _resetPromise() {\n return this._promise = new this.Promise((res, rej) => {\n return this._resolve = res;\n });\n }\n\n _flush() {\n clearTimeout(this._timeout);\n this._lastFlush = Date.now();\n\n this._resolve();\n\n this.Events.trigger(\"batch\", this._arr);\n this._arr = [];\n return this._resetPromise();\n }\n\n add(data) {\n var ret;\n\n this._arr.push(data);\n\n ret = this._promise;\n\n if (this._arr.length === this.maxSize) {\n this._flush();\n } else if (this.maxTime != null && this._arr.length === 1) {\n this._timeout = setTimeout(() => {\n return this._flush();\n }, this.maxTime);\n }\n\n return ret;\n }\n\n }\n\n ;\n Batcher.prototype.defaults = {\n maxTime: null,\n maxSize: null,\n Promise: Promise\n };\n return Batcher;\n}.call(void 0);\n\nmodule.exports = Batcher;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Bottleneck,\n DEFAULT_PRIORITY,\n Events,\n Job,\n LocalDatastore,\n NUM_PRIORITIES,\n Queues,\n RedisDatastore,\n States,\n Sync,\n parser,\n splice = [].splice;\nNUM_PRIORITIES = 10;\nDEFAULT_PRIORITY = 5;\nparser = require(\"./parser\");\nQueues = require(\"./Queues\");\nJob = require(\"./Job\");\nLocalDatastore = require(\"./LocalDatastore\");\nRedisDatastore = require(\"./RedisDatastore\");\nEvents = require(\"./Events\");\nStates = require(\"./States\");\nSync = require(\"./Sync\");\n\nBottleneck = function () {\n class Bottleneck {\n constructor(options = {}, ...invalid) {\n var storeInstanceOptions, storeOptions;\n this._addToQueue = this._addToQueue.bind(this);\n\n this._validateOptions(options, invalid);\n\n parser.load(options, this.instanceDefaults, this);\n this._queues = new Queues(NUM_PRIORITIES);\n this._scheduled = {};\n this._states = new States([\"RECEIVED\", \"QUEUED\", \"RUNNING\", \"EXECUTING\"].concat(this.trackDoneStatus ? [\"DONE\"] : []));\n this._limiter = null;\n this.Events = new Events(this);\n this._submitLock = new Sync(\"submit\", this.Promise);\n this._registerLock = new Sync(\"register\", this.Promise);\n storeOptions = parser.load(options, this.storeDefaults, {});\n\n this._store = function () {\n if (this.datastore === \"redis\" || this.datastore === \"ioredis\" || this.connection != null) {\n storeInstanceOptions = parser.load(options, this.redisStoreDefaults, {});\n return new RedisDatastore(this, storeOptions, storeInstanceOptions);\n } else if (this.datastore === \"local\") {\n storeInstanceOptions = parser.load(options, this.localStoreDefaults, {});\n return new LocalDatastore(this, storeOptions, storeInstanceOptions);\n } else {\n throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`);\n }\n }.call(this);\n\n this._queues.on(\"leftzero\", () => {\n var ref;\n return (ref = this._store.heartbeat) != null ? typeof ref.ref === \"function\" ? ref.ref() : void 0 : void 0;\n });\n\n this._queues.on(\"zero\", () => {\n var ref;\n return (ref = this._store.heartbeat) != null ? typeof ref.unref === \"function\" ? ref.unref() : void 0 : void 0;\n });\n }\n\n _validateOptions(options, invalid) {\n if (!(options != null && typeof options === \"object\" && invalid.length === 0)) {\n throw new Bottleneck.prototype.BottleneckError(\"Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.\");\n }\n }\n\n ready() {\n return this._store.ready;\n }\n\n clients() {\n return this._store.clients;\n }\n\n channel() {\n return `b_${this.id}`;\n }\n\n channel_client() {\n return `b_${this.id}_${this._store.clientId}`;\n }\n\n publish(message) {\n return this._store.__publish__(message);\n }\n\n disconnect(flush = true) {\n return this._store.__disconnect__(flush);\n }\n\n chain(_limiter) {\n this._limiter = _limiter;\n return this;\n }\n\n queued(priority) {\n return this._queues.queued(priority);\n }\n\n clusterQueued() {\n return this._store.__queued__();\n }\n\n empty() {\n return this.queued() === 0 && this._submitLock.isEmpty();\n }\n\n running() {\n return this._store.__running__();\n }\n\n done() {\n return this._store.__done__();\n }\n\n jobStatus(id) {\n return this._states.jobStatus(id);\n }\n\n jobs(status) {\n return this._states.statusJobs(status);\n }\n\n counts() {\n return this._states.statusCounts();\n }\n\n _randomIndex() {\n return Math.random().toString(36).slice(2);\n }\n\n check(weight = 1) {\n return this._store.__check__(weight);\n }\n\n _clearGlobalState(index) {\n if (this._scheduled[index] != null) {\n clearTimeout(this._scheduled[index].expiration);\n delete this._scheduled[index];\n return true;\n } else {\n return false;\n }\n }\n\n _free(index, job, options, eventInfo) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var e, running;\n\n try {\n var _ref = yield _this._store.__free__(index, options.weight);\n\n running = _ref.running;\n\n _this.Events.trigger(\"debug\", `Freed ${options.id}`, eventInfo);\n\n if (running === 0 && _this.empty()) {\n return _this.Events.trigger(\"idle\");\n }\n } catch (error1) {\n e = error1;\n return _this.Events.trigger(\"error\", e);\n }\n })();\n }\n\n _run(index, job, wait) {\n var clearGlobalState, free, run;\n job.doRun();\n clearGlobalState = this._clearGlobalState.bind(this, index);\n run = this._run.bind(this, index, job);\n free = this._free.bind(this, index, job);\n return this._scheduled[index] = {\n timeout: setTimeout(() => {\n return job.doExecute(this._limiter, clearGlobalState, run, free);\n }, wait),\n expiration: job.options.expiration != null ? setTimeout(function () {\n return job.doExpire(clearGlobalState, run, free);\n }, wait + job.options.expiration) : void 0,\n job: job\n };\n }\n\n _drainOne(capacity) {\n return this._registerLock.schedule(() => {\n var args, index, next, options, queue;\n\n if (this.queued() === 0) {\n return this.Promise.resolve(null);\n }\n\n queue = this._queues.getFirst();\n\n var _next2 = next = queue.first();\n\n options = _next2.options;\n args = _next2.args;\n\n if (capacity != null && options.weight > capacity) {\n return this.Promise.resolve(null);\n }\n\n this.Events.trigger(\"debug\", `Draining ${options.id}`, {\n args,\n options\n });\n index = this._randomIndex();\n return this._store.__register__(index, options.weight, options.expiration).then(({\n success,\n wait,\n reservoir\n }) => {\n var empty;\n this.Events.trigger(\"debug\", `Drained ${options.id}`, {\n success,\n args,\n options\n });\n\n if (success) {\n queue.shift();\n empty = this.empty();\n\n if (empty) {\n this.Events.trigger(\"empty\");\n }\n\n if (reservoir === 0) {\n this.Events.trigger(\"depleted\", empty);\n }\n\n this._run(index, next, wait);\n\n return this.Promise.resolve(options.weight);\n } else {\n return this.Promise.resolve(null);\n }\n });\n });\n }\n\n _drainAll(capacity, total = 0) {\n return this._drainOne(capacity).then(drained => {\n var newCapacity;\n\n if (drained != null) {\n newCapacity = capacity != null ? capacity - drained : capacity;\n return this._drainAll(newCapacity, total + drained);\n } else {\n return this.Promise.resolve(total);\n }\n }).catch(e => {\n return this.Events.trigger(\"error\", e);\n });\n }\n\n _dropAllQueued(message) {\n return this._queues.shiftAll(function (job) {\n return job.doDrop({\n message\n });\n });\n }\n\n stop(options = {}) {\n var done, waitForExecuting;\n options = parser.load(options, this.stopDefaults);\n\n waitForExecuting = at => {\n var finished;\n\n finished = () => {\n var counts;\n counts = this._states.counts;\n return counts[0] + counts[1] + counts[2] + counts[3] === at;\n };\n\n return new this.Promise((resolve, reject) => {\n if (finished()) {\n return resolve();\n } else {\n return this.on(\"done\", () => {\n if (finished()) {\n this.removeAllListeners(\"done\");\n return resolve();\n }\n });\n }\n });\n };\n\n done = options.dropWaitingJobs ? (this._run = function (index, next) {\n return next.doDrop({\n message: options.dropErrorMessage\n });\n }, this._drainOne = () => {\n return this.Promise.resolve(null);\n }, this._registerLock.schedule(() => {\n return this._submitLock.schedule(() => {\n var k, ref, v;\n ref = this._scheduled;\n\n for (k in ref) {\n v = ref[k];\n\n if (this.jobStatus(v.job.options.id) === \"RUNNING\") {\n clearTimeout(v.timeout);\n clearTimeout(v.expiration);\n v.job.doDrop({\n message: options.dropErrorMessage\n });\n }\n }\n\n this._dropAllQueued(options.dropErrorMessage);\n\n return waitForExecuting(0);\n });\n })) : this.schedule({\n priority: NUM_PRIORITIES - 1,\n weight: 0\n }, () => {\n return waitForExecuting(1);\n });\n\n this._receive = function (job) {\n return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage));\n };\n\n this.stop = () => {\n return this.Promise.reject(new Bottleneck.prototype.BottleneckError(\"stop() has already been called\"));\n };\n\n return done;\n }\n\n _addToQueue(job) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var args, blocked, error, options, reachedHWM, shifted, strategy;\n args = job.args;\n options = job.options;\n\n try {\n var _ref2 = yield _this2._store.__submit__(_this2.queued(), options.weight);\n\n reachedHWM = _ref2.reachedHWM;\n blocked = _ref2.blocked;\n strategy = _ref2.strategy;\n } catch (error1) {\n error = error1;\n\n _this2.Events.trigger(\"debug\", `Could not queue ${options.id}`, {\n args,\n options,\n error\n });\n\n job.doDrop({\n error\n });\n return false;\n }\n\n if (blocked) {\n job.doDrop();\n return true;\n } else if (reachedHWM) {\n shifted = strategy === Bottleneck.prototype.strategy.LEAK ? _this2._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? _this2._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0;\n\n if (shifted != null) {\n shifted.doDrop();\n }\n\n if (shifted == null || strategy === Bottleneck.prototype.strategy.OVERFLOW) {\n if (shifted == null) {\n job.doDrop();\n }\n\n return reachedHWM;\n }\n }\n\n job.doQueue(reachedHWM, blocked);\n\n _this2._queues.push(job);\n\n yield _this2._drainAll();\n return reachedHWM;\n })();\n }\n\n _receive(job) {\n if (this._states.jobStatus(job.options.id) != null) {\n job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`));\n\n return false;\n } else {\n job.doReceive();\n return this._submitLock.schedule(this._addToQueue, job);\n }\n }\n\n submit(...args) {\n var cb, fn, job, options, ref, ref1, task;\n\n if (typeof args[0] === \"function\") {\n var _ref3, _ref4, _splice$call, _splice$call2;\n\n ref = args, (_ref3 = ref, _ref4 = _toArray(_ref3), fn = _ref4[0], args = _ref4.slice(1), _ref3), (_splice$call = splice.call(args, -1), _splice$call2 = _slicedToArray(_splice$call, 1), cb = _splice$call2[0], _splice$call);\n options = parser.load({}, this.jobDefaults);\n } else {\n var _ref5, _ref6, _splice$call3, _splice$call4;\n\n ref1 = args, (_ref5 = ref1, _ref6 = _toArray(_ref5), options = _ref6[0], fn = _ref6[1], args = _ref6.slice(2), _ref5), (_splice$call3 = splice.call(args, -1), _splice$call4 = _slicedToArray(_splice$call3, 1), cb = _splice$call4[0], _splice$call3);\n options = parser.load(options, this.jobDefaults);\n }\n\n task = (...args) => {\n return new this.Promise(function (resolve, reject) {\n return fn(...args, function (...args) {\n return (args[0] != null ? reject : resolve)(args);\n });\n });\n };\n\n job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n job.promise.then(function (args) {\n return typeof cb === \"function\" ? cb(...args) : void 0;\n }).catch(function (args) {\n if (Array.isArray(args)) {\n return typeof cb === \"function\" ? cb(...args) : void 0;\n } else {\n return typeof cb === \"function\" ? cb(args) : void 0;\n }\n });\n return this._receive(job);\n }\n\n schedule(...args) {\n var job, options, task;\n\n if (typeof args[0] === \"function\") {\n var _args = args;\n\n var _args2 = _toArray(_args);\n\n task = _args2[0];\n args = _args2.slice(1);\n options = {};\n } else {\n var _args3 = args;\n\n var _args4 = _toArray(_args3);\n\n options = _args4[0];\n task = _args4[1];\n args = _args4.slice(2);\n }\n\n job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n\n this._receive(job);\n\n return job.promise;\n }\n\n wrap(fn) {\n var schedule, wrapped;\n schedule = this.schedule.bind(this);\n\n wrapped = function wrapped(...args) {\n return schedule(fn.bind(this), ...args);\n };\n\n wrapped.withOptions = function (options, ...args) {\n return schedule(options, fn, ...args);\n };\n\n return wrapped;\n }\n\n updateSettings(options = {}) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n yield _this3._store.__updateSettings__(parser.overwrite(options, _this3.storeDefaults));\n parser.overwrite(options, _this3.instanceDefaults, _this3);\n return _this3;\n })();\n }\n\n currentReservoir() {\n return this._store.__currentReservoir__();\n }\n\n incrementReservoir(incr = 0) {\n return this._store.__incrementReservoir__(incr);\n }\n\n }\n\n ;\n Bottleneck.default = Bottleneck;\n Bottleneck.Events = Events;\n Bottleneck.version = Bottleneck.prototype.version = require(\"./version.json\").version;\n Bottleneck.strategy = Bottleneck.prototype.strategy = {\n LEAK: 1,\n OVERFLOW: 2,\n OVERFLOW_PRIORITY: 4,\n BLOCK: 3\n };\n Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = require(\"./BottleneckError\");\n Bottleneck.Group = Bottleneck.prototype.Group = require(\"./Group\");\n Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = require(\"./RedisConnection\");\n Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = require(\"./IORedisConnection\");\n Bottleneck.Batcher = Bottleneck.prototype.Batcher = require(\"./Batcher\");\n Bottleneck.prototype.jobDefaults = {\n priority: DEFAULT_PRIORITY,\n weight: 1,\n expiration: null,\n id: \"\"\n };\n Bottleneck.prototype.storeDefaults = {\n maxConcurrent: null,\n minTime: 0,\n highWater: null,\n strategy: Bottleneck.prototype.strategy.LEAK,\n penalty: null,\n reservoir: null,\n reservoirRefreshInterval: null,\n reservoirRefreshAmount: null,\n reservoirIncreaseInterval: null,\n reservoirIncreaseAmount: null,\n reservoirIncreaseMaximum: null\n };\n Bottleneck.prototype.localStoreDefaults = {\n Promise: Promise,\n timeout: null,\n heartbeatInterval: 250\n };\n Bottleneck.prototype.redisStoreDefaults = {\n Promise: Promise,\n timeout: null,\n heartbeatInterval: 5000,\n clientTimeout: 10000,\n Redis: null,\n clientOptions: {},\n clusterNodes: null,\n clearDatastore: false,\n connection: null\n };\n Bottleneck.prototype.instanceDefaults = {\n datastore: \"local\",\n connection: null,\n id: \"\",\n rejectOnDrop: true,\n trackDoneStatus: false,\n Promise: Promise\n };\n Bottleneck.prototype.stopDefaults = {\n enqueueErrorMessage: \"This limiter has been stopped and cannot accept new jobs.\",\n dropWaitingJobs: true,\n dropErrorMessage: \"This limiter has been stopped.\"\n };\n return Bottleneck;\n}.call(void 0);\n\nmodule.exports = Bottleneck;","\"use strict\";\n\nmodule.exports = require(\"./Bottleneck\");",null,"'use strict';\n\nmodule.exports = value => {\n\tif (typeof Blob === 'undefined') {\n\t\treturn false;\n\t}\n\n\treturn value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n};\n","// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n",null,null],"names":["hasSymbolSham","toStr","bind","undefined","$TypeError","require$$0","hasOwn","GetIntrinsic","has","isArray","isRegExp","inspect","defaults","sideChannel","getSideChannel","parse","stringify","DLList","asyncGeneratorStep","_asyncToGenerator","Events","Queues","require$$1","BottleneckError","DEFAULT_PRIORITY","Job","NUM_PRIORITIES","parser","LocalDatastore","RedisConnection","Scripts","require$$2","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","IORedisConnection","RedisDatastore","require$$3","States","Sync","require$$4","require$$5","require$$6","require$$7","require$$9","require$$10","require$$11","require$$12","require$$13","isofetch","Bottleneck","qs","global","EventEmitter","WebSocket"],"mappings":";;;;;;;AAEA;AACA,SAAc,GAAG,SAAS,UAAU,GAAG;AACvC,CAAC,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AAC1G,CAAC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE;AAC1D;AACA,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;AACd,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AAC/C;AACA,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AACjF,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC;AACjB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACnB,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AACnC,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AAC1F;AACA,CAAC,IAAI,OAAO,MAAM,CAAC,mBAAmB,KAAK,UAAU,IAAI,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AACxH;AACA,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AAC5D;AACA,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AAC7E;AACA,CAAC,IAAI,OAAO,MAAM,CAAC,wBAAwB,KAAK,UAAU,EAAE;AAC5D,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7D,EAAE,IAAI,UAAU,CAAC,KAAK,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,KAAK,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AACtF,EAAE;AACF;AACA,CAAC,OAAO,IAAI,CAAC;AACb,CAAC;;ACvCD,IAAI,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC;AAClB;AACvC;AACA,gBAAc,GAAG,SAAS,gBAAgB,GAAG;AAC7C,CAAC,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AACxD,CAAC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AACpD,CAAC,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AAC7D,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AACzD;AACA,CAAC,OAAOA,KAAa,EAAE,CAAC;AACxB,CAAC;;ACVD;AACA;AACA,IAAI,aAAa,GAAG,iDAAiD,CAAC;AACtE,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;AAClC,IAAIC,OAAK,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AACtC,IAAI,QAAQ,GAAG,mBAAmB,CAAC;AACnC;AACA,kBAAc,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE;AACrC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,OAAO,MAAM,KAAK,UAAU,IAAIA,OAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;AACzE,QAAQ,MAAM,IAAI,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACxC;AACA,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,IAAI,MAAM,GAAG,YAAY;AAC7B,QAAQ,IAAI,IAAI,YAAY,KAAK,EAAE;AACnC,YAAY,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK;AACrC,gBAAgB,IAAI;AACpB,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,aAAa,CAAC;AACd,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE;AAC3C,gBAAgB,OAAO,MAAM,CAAC;AAC9B,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS,MAAM;AACf,YAAY,OAAO,MAAM,CAAC,KAAK;AAC/B,gBAAgB,IAAI;AACpB,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,aAAa,CAAC;AACd,SAAS;AACT,KAAK,CAAC;AACN;AACA,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/D,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAQ,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChC,KAAK;AACL;AACA,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,2CAA2C,CAAC,CAAC,MAAM,CAAC,CAAC;AAChI;AACA,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE;AAC1B,QAAQ,IAAI,KAAK,GAAG,SAAS,KAAK,GAAG,EAAE,CAAC;AACxC,QAAQ,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3C,QAAQ,KAAK,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;AACtC,QAAQ,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAC/B,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;;AC/CD,gBAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,cAAc;;ACA1D,OAAc,GAAGC,YAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;ACF1E,IAAIC,WAAS,CAAC;AACd;AACA,IAAI,YAAY,GAAG,WAAW,CAAC;AAC/B,IAAI,SAAS,GAAG,QAAQ,CAAC;AACzB,IAAIC,YAAU,GAAG,SAAS,CAAC;AAC3B;AACA;AACA,IAAI,qBAAqB,GAAG,UAAU,gBAAgB,EAAE;AACxD,CAAC,IAAI;AACL,EAAE,OAAO,SAAS,CAAC,wBAAwB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,EAAE,CAAC;AACrF,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;AACf,CAAC,CAAC;AACF;AACA,IAAI,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC5C,IAAI,KAAK,EAAE;AACX,CAAC,IAAI;AACL,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChB,EAAE,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,KAAK,GAAG,IAAI,CAAC;AACf,EAAE;AACF,CAAC;AACD;AACA,IAAI,cAAc,GAAG,YAAY;AACjC,CAAC,MAAM,IAAIA,YAAU,EAAE,CAAC;AACxB,CAAC,CAAC;AACF,IAAI,cAAc,GAAG,KAAK;AAC1B,IAAI,YAAY;AAChB,EAAE,IAAI;AACN;AACA,GAAG,SAAS,CAAC,MAAM,CAAC;AACpB,GAAG,OAAO,cAAc,CAAC;AACzB,GAAG,CAAC,OAAO,YAAY,EAAE;AACzB,GAAG,IAAI;AACP;AACA,IAAI,OAAO,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC;AAC1C,IAAI,CAAC,OAAO,UAAU,EAAE;AACxB,IAAI,OAAO,cAAc,CAAC;AAC1B,IAAI;AACJ,GAAG;AACH,EAAE,EAAE;AACJ,GAAG,cAAc,CAAC;AAClB;AACA,IAAI,UAAU,GAAGC,YAAsB,EAAE,CAAC;AAC1C;AACA,IAAI,QAAQ,GAAG,MAAM,CAAC,cAAc,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;AAC7E;AACA,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB;AACA,IAAI,UAAU,GAAG,OAAO,UAAU,KAAK,WAAW,GAAGF,WAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AACtF;AACA,IAAI,UAAU,GAAG;AACjB,CAAC,kBAAkB,EAAE,OAAO,cAAc,KAAK,WAAW,GAAGA,WAAS,GAAG,cAAc;AACvF,CAAC,SAAS,EAAE,KAAK;AACjB,CAAC,eAAe,EAAE,OAAO,WAAW,KAAK,WAAW,GAAGA,WAAS,GAAG,WAAW;AAC9E,CAAC,0BAA0B,EAAE,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAGA,WAAS;AACrF,CAAC,kCAAkC,EAAEA,WAAS;AAC9C,CAAC,iBAAiB,EAAE,SAAS;AAC7B,CAAC,kBAAkB,EAAE,SAAS;AAC9B,CAAC,0BAA0B,EAAE,SAAS;AACtC,CAAC,0BAA0B,EAAE,SAAS;AACtC,CAAC,WAAW,EAAE,OAAO,OAAO,KAAK,WAAW,GAAGA,WAAS,GAAG,OAAO;AAClE,CAAC,UAAU,EAAE,OAAO,MAAM,KAAK,WAAW,GAAGA,WAAS,GAAG,MAAM;AAC/D,CAAC,WAAW,EAAE,OAAO;AACrB,CAAC,YAAY,EAAE,OAAO,QAAQ,KAAK,WAAW,GAAGA,WAAS,GAAG,QAAQ;AACrE,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,aAAa,EAAE,SAAS;AACzB,CAAC,sBAAsB,EAAE,kBAAkB;AAC3C,CAAC,aAAa,EAAE,SAAS;AACzB,CAAC,sBAAsB,EAAE,kBAAkB;AAC3C,CAAC,SAAS,EAAE,KAAK;AACjB,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,aAAa,EAAE,SAAS;AACzB,CAAC,gBAAgB,EAAE,OAAO,YAAY,KAAK,WAAW,GAAGA,WAAS,GAAG,YAAY;AACjF,CAAC,gBAAgB,EAAE,OAAO,YAAY,KAAK,WAAW,GAAGA,WAAS,GAAG,YAAY;AACjF,CAAC,wBAAwB,EAAE,OAAO,oBAAoB,KAAK,WAAW,GAAGA,WAAS,GAAG,oBAAoB;AACzG,CAAC,YAAY,EAAE,SAAS;AACxB,CAAC,qBAAqB,EAAE,SAAS;AACjC,CAAC,aAAa,EAAE,OAAO,SAAS,KAAK,WAAW,GAAGA,WAAS,GAAG,SAAS;AACxE,CAAC,cAAc,EAAE,OAAO,UAAU,KAAK,WAAW,GAAGA,WAAS,GAAG,UAAU;AAC3E,CAAC,cAAc,EAAE,OAAO,UAAU,KAAK,WAAW,GAAGA,WAAS,GAAG,UAAU;AAC3E,CAAC,YAAY,EAAE,QAAQ;AACvB,CAAC,SAAS,EAAE,KAAK;AACjB,CAAC,qBAAqB,EAAE,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAGA,WAAS;AAC1F,CAAC,QAAQ,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAGA,WAAS;AACtD,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,WAAW,GAAGA,WAAS,GAAG,GAAG;AACtD,CAAC,wBAAwB,EAAE,OAAO,GAAG,KAAK,WAAW,IAAI,CAAC,UAAU,GAAGA,WAAS,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AACzH,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,UAAU,EAAE,MAAM;AACnB,CAAC,UAAU,EAAE,MAAM;AACnB,CAAC,cAAc,EAAE,UAAU;AAC3B,CAAC,YAAY,EAAE,QAAQ;AACvB,CAAC,WAAW,EAAE,OAAO,OAAO,KAAK,WAAW,GAAGA,WAAS,GAAG,OAAO;AAClE,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK,WAAW,GAAGA,WAAS,GAAG,KAAK;AAC5D,CAAC,cAAc,EAAE,UAAU;AAC3B,CAAC,kBAAkB,EAAE,cAAc;AACnC,CAAC,WAAW,EAAE,OAAO,OAAO,KAAK,WAAW,GAAGA,WAAS,GAAG,OAAO;AAClE,CAAC,UAAU,EAAE,MAAM;AACnB,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,WAAW,GAAGA,WAAS,GAAG,GAAG;AACtD,CAAC,wBAAwB,EAAE,OAAO,GAAG,KAAK,WAAW,IAAI,CAAC,UAAU,GAAGA,WAAS,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AACzH,CAAC,qBAAqB,EAAE,OAAO,iBAAiB,KAAK,WAAW,GAAGA,WAAS,GAAG,iBAAiB;AAChG,CAAC,UAAU,EAAE,MAAM;AACnB,CAAC,2BAA2B,EAAE,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAGA,WAAS;AACtF,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,GAAGA,WAAS;AAC5C,CAAC,eAAe,EAAE,YAAY;AAC9B,CAAC,kBAAkB,EAAE,cAAc;AACnC,CAAC,cAAc,EAAE,UAAU;AAC3B,CAAC,aAAa,EAAEC,YAAU;AAC1B,CAAC,cAAc,EAAE,OAAO,UAAU,KAAK,WAAW,GAAGD,WAAS,GAAG,UAAU;AAC3E,CAAC,qBAAqB,EAAE,OAAO,iBAAiB,KAAK,WAAW,GAAGA,WAAS,GAAG,iBAAiB;AAChG,CAAC,eAAe,EAAE,OAAO,WAAW,KAAK,WAAW,GAAGA,WAAS,GAAG,WAAW;AAC9E,CAAC,eAAe,EAAE,OAAO,WAAW,KAAK,WAAW,GAAGA,WAAS,GAAG,WAAW;AAC9E,CAAC,YAAY,EAAE,QAAQ;AACvB,CAAC,WAAW,EAAE,OAAO,OAAO,KAAK,WAAW,GAAGA,WAAS,GAAG,OAAO;AAClE,CAAC,WAAW,EAAE,OAAO,OAAO,KAAK,WAAW,GAAGA,WAAS,GAAG,OAAO;AAClE,CAAC,WAAW,EAAE,OAAO,OAAO,KAAK,WAAW,GAAGA,WAAS,GAAG,OAAO;AAClE,CAAC,CAAC;AACF;AACA,IAAI,MAAM,GAAG,SAAS,MAAM,CAAC,IAAI,EAAE;AACnC,CAAC,IAAI,KAAK,CAAC;AACX,CAAC,IAAI,IAAI,KAAK,iBAAiB,EAAE;AACjC,EAAE,KAAK,GAAG,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;AACxD,EAAE,MAAM,IAAI,IAAI,KAAK,qBAAqB,EAAE;AAC5C,EAAE,KAAK,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;AACnD,EAAE,MAAM,IAAI,IAAI,KAAK,0BAA0B,EAAE;AACjD,EAAE,KAAK,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;AACzD,EAAE,MAAM,IAAI,IAAI,KAAK,kBAAkB,EAAE;AACzC,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAC9C,EAAE,IAAI,EAAE,EAAE;AACV,GAAG,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC;AACxB,GAAG;AACH,EAAE,MAAM,IAAI,IAAI,KAAK,0BAA0B,EAAE;AACjD,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACvC,EAAE,IAAI,GAAG,EAAE;AACX,GAAG,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACnC,GAAG;AACH,EAAE;AACF;AACA,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC1B;AACA,CAAC,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AACF;AACA,IAAI,cAAc,GAAG;AACrB,CAAC,wBAAwB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;AACvD,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;AAC3C,CAAC,sBAAsB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC;AAC1D,CAAC,sBAAsB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC;AAC1D,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC;AACpD,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC;AACxD,CAAC,0BAA0B,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;AAC3D,CAAC,kBAAkB,EAAE,CAAC,wBAAwB,EAAE,WAAW,CAAC;AAC5D,CAAC,2BAA2B,EAAE,CAAC,wBAAwB,EAAE,WAAW,EAAE,WAAW,CAAC;AAClF,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;AAC/C,CAAC,qBAAqB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;AACjD,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;AACzC,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;AAC3C,CAAC,sBAAsB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AACnD,CAAC,yBAAyB,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;AACzD,CAAC,yBAAyB,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;AACzD,CAAC,qBAAqB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;AACjD,CAAC,aAAa,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;AAClD,CAAC,sBAAsB,EAAE,CAAC,mBAAmB,EAAE,WAAW,EAAE,WAAW,CAAC;AACxE,CAAC,sBAAsB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AACnD,CAAC,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;AACrD,CAAC,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;AACrD,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AACjC,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;AACzC,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AACvC,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC7C,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC7C,CAAC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC;AAC3D,CAAC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC;AACzD,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;AAC/C,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AACxD,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;AACpC,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC1C,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;AAC5C,CAAC,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;AACrD,CAAC,2BAA2B,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC;AAC7D,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC7C,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AACvC,CAAC,8BAA8B,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;AACnE,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC7C,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC7C,CAAC,wBAAwB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;AACvD,CAAC,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;AACrD,CAAC,sBAAsB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AACnD,CAAC,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;AACrD,CAAC,8BAA8B,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;AACnE,CAAC,wBAAwB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;AACvD,CAAC,wBAAwB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;AACvD,CAAC,qBAAqB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;AACjD,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;AAC/C,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;AAC/C,CAAC,CAAC;AACF;AACoC;AACR;AAC5B,IAAI,OAAO,GAAGD,YAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC/D,IAAI,YAAY,GAAGA,YAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACrE,IAAI,QAAQ,GAAGA,YAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAClE,IAAI,SAAS,GAAGA,YAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjE;AACA;AACA,IAAI,UAAU,GAAG,oGAAoG,CAAC;AACtH,IAAI,YAAY,GAAG,UAAU,CAAC;AAC9B,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,MAAM,EAAE;AACjD,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;AACpC,EAAE,MAAM,IAAI,YAAY,CAAC,gDAAgD,CAAC,CAAC;AAC3E,EAAE,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE;AAC3C,EAAE,MAAM,IAAI,YAAY,CAAC,gDAAgD,CAAC,CAAC;AAC3E,EAAE;AACF,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC;AACjB,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;AACzE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC;AAC5F,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AACF;AACA;AACA,IAAI,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE;AACrE,CAAC,IAAI,aAAa,GAAG,IAAI,CAAC;AAC1B,CAAC,IAAI,KAAK,CAAC;AACX,CAAC,IAAII,GAAM,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE;AAC5C,EAAE,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AACxC,EAAE,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACvC,EAAE;AACF;AACA,CAAC,IAAIA,GAAM,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE;AACxC,EAAE,IAAI,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AACxC,EAAE,IAAI,KAAK,KAAK,SAAS,EAAE;AAC3B,GAAG,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,YAAY,EAAE;AACrD,GAAG,MAAM,IAAIF,YAAU,CAAC,YAAY,GAAG,IAAI,GAAG,sDAAsD,CAAC,CAAC;AACtG,GAAG;AACH;AACA,EAAE,OAAO;AACT,GAAG,KAAK,EAAE,KAAK;AACf,GAAG,IAAI,EAAE,aAAa;AACtB,GAAG,KAAK,EAAE,KAAK;AACf,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,MAAM,IAAI,YAAY,CAAC,YAAY,GAAG,IAAI,GAAG,kBAAkB,CAAC,CAAC;AAClE,CAAC,CAAC;AACF;AACA,gBAAc,GAAG,SAAS,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE;AAC3D,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,EAAE,MAAM,IAAIA,YAAU,CAAC,2CAA2C,CAAC,CAAC;AACpE,EAAE;AACF,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE;AAChE,EAAE,MAAM,IAAIA,YAAU,CAAC,2CAA2C,CAAC,CAAC;AACpE,EAAE;AACF;AACA,CAAC,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,IAAI,iBAAiB,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC1D;AACA,CAAC,IAAI,SAAS,GAAG,gBAAgB,CAAC,GAAG,GAAG,iBAAiB,GAAG,GAAG,EAAE,YAAY,CAAC,CAAC;AAC/E,CAAC,IAAI,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC;AACxC,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC7B,CAAC,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAChC;AACA,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC7B,CAAC,IAAI,KAAK,EAAE;AACZ,EAAE,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9C,EAAE;AACF;AACA,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE;AACF,GAAG;AACH,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;AACpD,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC;AACrD;AACA,MAAM,KAAK,KAAK,IAAI;AACpB,IAAI;AACJ,GAAG,MAAM,IAAI,YAAY,CAAC,sDAAsD,CAAC,CAAC;AAClF,GAAG;AACH,EAAE,IAAI,IAAI,KAAK,aAAa,IAAI,CAAC,KAAK,EAAE;AACxC,GAAG,kBAAkB,GAAG,IAAI,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,iBAAiB,IAAI,GAAG,GAAG,IAAI,CAAC;AAClC,EAAE,iBAAiB,GAAG,GAAG,GAAG,iBAAiB,GAAG,GAAG,CAAC;AACpD;AACA,EAAE,IAAIE,GAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE;AAC7C,GAAG,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACzC,GAAG,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AAC5B,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,KAAK,MAAM,IAAIF,YAAU,CAAC,qBAAqB,GAAG,IAAI,GAAG,6CAA6C,CAAC,CAAC;AACxG,KAAK;AACL,IAAI,OAAO,KAAKD,WAAS,CAAC;AAC1B,IAAI;AACJ,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;AACzC,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAClC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,EAAE,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;AAClE,KAAK,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK,MAAM;AACX,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,MAAM;AACV,IAAI,KAAK,GAAGG,GAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACxB,IAAI;AACJ;AACA,GAAG,IAAI,KAAK,IAAI,CAAC,kBAAkB,EAAE;AACrC,IAAI,UAAU,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC;AAC1C,IAAI;AACJ,GAAG;AACH,EAAE;AACF,CAAC,OAAO,KAAK,CAAC;AACd,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACxUD;AACoC;AACQ;AAC5C;AACA,IAAI,MAAM,GAAGC,YAAY,CAAC,4BAA4B,CAAC,CAAC;AACxD,IAAI,KAAK,GAAGA,YAAY,CAAC,2BAA2B,CAAC,CAAC;AACtD,IAAI,aAAa,GAAGA,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAIL,YAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtF;AACA,IAAI,KAAK,GAAGK,YAAY,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;AACpE,IAAI,eAAe,GAAGA,YAAY,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;AACpE,IAAI,IAAI,GAAGA,YAAY,CAAC,YAAY,CAAC,CAAC;AACtC;AACA,IAAI,eAAe,EAAE;AACrB,CAAC,IAAI;AACL,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACzC,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,EAAE,eAAe,GAAG,IAAI,CAAC;AACzB,EAAE;AACF,CAAC;AACD;AACA,iBAAiB,SAAS,QAAQ,CAAC,gBAAgB,EAAE;AACrD,CAAC,IAAI,IAAI,GAAG,aAAa,CAACL,YAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC,IAAI,KAAK,IAAI,eAAe,EAAE;AAC/B,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnC,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;AACzB;AACA,GAAG,eAAe;AAClB,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;AAC5E,IAAI,CAAC;AACL,GAAG;AACH,EAAE;AACF,CAAC,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AACF;AACA,IAAI,SAAS,GAAG,SAAS,SAAS,GAAG;AACrC,CAAC,OAAO,aAAa,CAACA,YAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA,IAAI,eAAe,EAAE;AACrB,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAChE,CAAC,MAAM;AACP,CAAC,uBAAuB,SAAS,CAAC;AAClC;;;ACxCA,IAAI,QAAQ,GAAG,QAAQ,CAACK,YAAY,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAClE;AACA,aAAc,GAAG,SAAS,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE;AACjE,CAAC,IAAI,SAAS,GAAGA,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;AACpD,CAAC,IAAI,OAAO,SAAS,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5E,EAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC7B,EAAE;AACF,CAAC,OAAO,SAAS,CAAC;AAClB,CAAC;;ACdD,gBAAc,GAAGF,YAAe,CAAC,OAAO;;ACAxC,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,SAAS,CAAC;AACxD,IAAI,iBAAiB,GAAG,MAAM,CAAC,wBAAwB,IAAI,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAClI,IAAI,OAAO,GAAG,MAAM,IAAI,iBAAiB,IAAI,OAAO,iBAAiB,CAAC,GAAG,KAAK,UAAU,GAAG,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC;AACxH,IAAI,UAAU,GAAG,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACjD,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,SAAS,CAAC;AACxD,IAAI,iBAAiB,GAAG,MAAM,CAAC,wBAAwB,IAAI,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAClI,IAAI,OAAO,GAAG,MAAM,IAAI,iBAAiB,IAAI,OAAO,iBAAiB,CAAC,GAAG,KAAK,UAAU,GAAG,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC;AACxH,IAAI,UAAU,GAAG,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACjD,IAAI,UAAU,GAAG,OAAO,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;AACpE,IAAI,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC;AAC3D,IAAI,UAAU,GAAG,OAAO,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;AACpE,IAAI,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC;AAC3D,IAAI,UAAU,GAAG,OAAO,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;AACpE,IAAI,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/D,IAAI,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;AAC/C,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC/C,IAAI,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnD,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;AACnC,IAAI,aAAa,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;AACnF,IAAI,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACxC,IAAI,WAAW,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzH,IAAI,iBAAiB,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC5F,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD;AACA,IAAI,GAAG,GAAG,CAAC,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc;AACzF,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;AACpC,UAAU,UAAU,CAAC,EAAE;AACvB,YAAY,OAAO,CAAC,CAAC,SAAS,CAAC;AAC/B,SAAS;AACT,UAAU,IAAI;AACd,CAAC,CAAC;AACF;AACA,IAAI,aAAa,GAAGA,YAAyB,CAAC,MAAM,CAAC;AACrD,IAAI,aAAa,GAAG,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC;AACpF,IAAI,WAAW,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;AACxH;AACA,iBAAc,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9D,IAAI,IAAI,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC;AAC7B;AACA,IAAI,IAAIG,KAAG,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,EAAE;AACnG,QAAQ,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;AAChF,KAAK;AACL,IAAI;AACJ,QAAQA,KAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ;AACjF,cAAc,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ;AAC3E,cAAc,IAAI,CAAC,eAAe,KAAK,IAAI;AAC3C,SAAS;AACT,MAAM;AACN,QAAQ,MAAM,IAAI,SAAS,CAAC,wFAAwF,CAAC,CAAC;AACtH,KAAK;AACL,IAAI,IAAI,aAAa,GAAGA,KAAG,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC/E,IAAI,IAAI,OAAO,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,QAAQ,EAAE;AAC1E,QAAQ,MAAM,IAAI,SAAS,CAAC,+EAA+E,CAAC,CAAC;AAC7G,KAAK;AACL;AACA,IAAI;AACJ,QAAQA,KAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC3B,WAAW,IAAI,CAAC,MAAM,KAAK,IAAI;AAC/B,WAAW,IAAI,CAAC,MAAM,KAAK,IAAI;AAC/B,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1E,MAAM;AACN,QAAQ,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAC;AACzF,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AACpC,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AACtB,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;AAClC,QAAQ,OAAO,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC;AACtC,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;AACvB,YAAY,OAAO,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AACnD,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACjC,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACtE,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;AACpD,IAAI,IAAI,KAAK,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACtE,QAAQ,OAAOC,SAAO,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,UAAU,CAAC;AACrD,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AACrC,QAAQ,IAAI,GAAG,EAAE,CAAC;AAClB,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;AACxC,QAAQ,OAAO,YAAY,CAAC;AAC5B,KAAK;AACL;AACA,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC5C,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,IAAI,OAAO,GAAG;AAC1B,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjC,aAAa,CAAC;AACd,YAAY,IAAID,KAAG,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE;AACzC,gBAAgB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrD,aAAa;AACb,YAAY,OAAO,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACtD,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACnC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5C,QAAQ,OAAO,WAAW,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;AACnI,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,QAAQ,IAAI,SAAS,GAAG,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxH,QAAQ,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AAChG,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AACxB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;AACzD,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;AACzC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/F,SAAS;AACT,QAAQ,CAAC,IAAI,GAAG,CAAC;AACjB,QAAQ,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE;AACpE,QAAQ,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;AAC7D,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,IAAIC,SAAO,CAAC,GAAG,CAAC,EAAE;AACtB,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE;AAC9C,QAAQ,IAAI,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC1C,QAAQ,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE;AAC7C,YAAY,OAAO,GAAG,GAAG,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,QAAQ,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7C,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE;AACnE,QAAQ,OAAO,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACpE,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,aAAa,EAAE;AAClD,QAAQ,IAAI,aAAa,IAAI,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,UAAU,EAAE;AACvE,YAAY,OAAO,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;AACxC,SAAS,MAAM,IAAI,aAAa,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,EAAE;AACpF,YAAY,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;AACjC,SAAS;AACT,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACpB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE,GAAG,EAAE;AACnD,YAAY,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAClF,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACpB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE;AAC9C,YAAY,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/C,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AACxB,QAAQ,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AACxB,QAAQ,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AACxB,QAAQ,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,QAAQ,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,QAAQ,OAAO,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AACxB,QAAQ,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,QAAQ,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAACC,UAAQ,CAAC,GAAG,CAAC,EAAE;AACxC,QAAQ,IAAI,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC1C,QAAQ,IAAI,aAAa,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,SAAS,GAAG,GAAG,YAAY,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;AACtH,QAAQ,IAAI,QAAQ,GAAG,GAAG,YAAY,MAAM,GAAG,EAAE,GAAG,gBAAgB,CAAC;AACrE,QAAQ,IAAI,SAAS,GAAG,CAAC,aAAa,IAAI,WAAW,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,WAAW,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC;AACxJ,QAAQ,IAAI,cAAc,GAAG,aAAa,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,UAAU,GAAG,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAClJ,QAAQ,IAAI,GAAG,GAAG,cAAc,IAAI,SAAS,IAAI,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;AACrI,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,GAAG,IAAI,CAAC,EAAE;AACnD,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,OAAO,GAAG,GAAG,GAAG,GAAG,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;AAC9D,SAAS;AACT,QAAQ,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjD,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC;AACF;AACA,SAAS,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE;AAC3C,IAAI,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,YAAY,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/E,IAAI,OAAO,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;AACrC,CAAC;AACD;AACA,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AACD;AACA,SAASD,SAAO,CAAC,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,gBAAgB,KAAK,CAAC,WAAW,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACvI,SAAS,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,eAAe,KAAK,CAAC,WAAW,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACrI,SAASC,UAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,iBAAiB,KAAK,CAAC,WAAW,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACzI,SAAS,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,gBAAgB,KAAK,CAAC,WAAW,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACvI,SAAS,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,iBAAiB,KAAK,CAAC,WAAW,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACzI,SAAS,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,iBAAiB,KAAK,CAAC,WAAW,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACzI,SAAS,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,kBAAkB,KAAK,CAAC,WAAW,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AAC3I;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,IAAI,IAAI,iBAAiB,EAAE;AAC3B,QAAQ,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,MAAM,CAAC;AACvE,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE;AACzD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC3D,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,IAAI,UAAU,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;AACvF,SAASF,KAAG,CAAC,GAAG,EAAE,GAAG,EAAE;AACvB,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AACD;AACA,SAAS,KAAK,CAAC,GAAG,EAAE;AACpB,IAAI,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AACD;AACA,SAAS,MAAM,CAAC,CAAC,EAAE;AACnB,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AAClC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;AACzE,IAAI,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA,SAAS,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE;AACxB,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE;AACtC,KAAK;AACL,IAAI,OAAO,CAAC,CAAC,CAAC;AACd,CAAC;AACD;AACA,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACjD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,CAAC,YAAY,GAAG,CAAC;AAChC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACpD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACvC,QAAQ,IAAI;AACZ,YAAY,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC3C,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,CAAC,YAAY,OAAO,CAAC;AACpC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACtD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACjD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,CAAC,YAAY,GAAG,CAAC;AAChC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACpD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACvC,QAAQ,IAAI;AACZ,YAAY,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC3C,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,OAAO,CAAC,YAAY,OAAO,CAAC;AACpC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;AACtD,IAAI,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,CAAC,YAAY,WAAW,EAAE;AACxE,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC;AAClF,CAAC;AACD;AACA,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AAClC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;AAC3C,QAAQ,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;AAC1D,QAAQ,IAAI,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,iBAAiB,IAAI,SAAS,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;AAC1F,QAAQ,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC;AACjF,KAAK;AACL;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAC7E,IAAI,OAAO,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AACD;AACA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,GAAG;AACZ,QAAQ,CAAC,EAAE,GAAG;AACd,QAAQ,CAAC,EAAE,GAAG;AACd,QAAQ,EAAE,EAAE,GAAG;AACf,QAAQ,EAAE,EAAE,GAAG;AACf,QAAQ,EAAE,EAAE,GAAG;AACf,KAAK,CAAC,CAAC,CAAC,CAAC;AACT,IAAI,IAAI,CAAC,EAAE,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE;AAC/B,IAAI,OAAO,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACxE,CAAC;AACD;AACA,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,IAAI,OAAO,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,IAAI,OAAO,IAAI,GAAG,QAAQ,CAAC;AAC3B,CAAC;AACD;AACA,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;AACnD,IAAI,IAAI,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpF,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,aAAa,GAAG,GAAG,CAAC;AAC5D,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,EAAE,EAAE;AAC9B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACvC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;AAChC,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AAC9B,QAAQ,UAAU,GAAG,IAAI,CAAC;AAC1B,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACnE,QAAQ,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,KAAK,MAAM;AACX,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,UAAU;AACxB,QAAQ,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/C,KAAK,CAAC;AACN,CAAC;AACD;AACA,SAAS,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE;AAClC,IAAI,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACvC,IAAI,IAAI,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACtD,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACvE,CAAC;AACD;AACA,SAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE;AAClC,IAAI,IAAI,KAAK,GAAGC,SAAO,CAAC,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;AAChB,IAAI,IAAI,KAAK,EAAE;AACf,QAAQ,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC/B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,YAAY,EAAE,CAAC,CAAC,CAAC,GAAGD,KAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAC5D,SAAS;AACT,KAAK;AACL,IAAI,IAAI,IAAI,GAAG,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC3D,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,iBAAiB,EAAE;AAC3B,QAAQ,MAAM,GAAG,EAAE,CAAC;AACpB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,SAAS;AACT,KAAK;AACL;AACA,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;AACzB,QAAQ,IAAI,CAACA,KAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE;AACzC,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE;AACnF,QAAQ,IAAI,iBAAiB,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,YAAY,MAAM,EAAE;AACtE;AACA,YAAY,SAAS;AACrB,SAAS,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AACzC,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvE,SAAS,MAAM;AACf,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACzD,SAAS;AACT,KAAK;AACL,IAAI,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACrF,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd;;AC7cA,IAAI,UAAU,GAAGD,YAAY,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAI,QAAQ,GAAGA,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC/C,IAAI,IAAI,GAAGA,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC;AACA,IAAI,WAAW,GAAG,SAAS,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC3D,IAAI,WAAW,GAAG,SAAS,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC3D,IAAI,WAAW,GAAG,SAAS,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC3D,IAAI,OAAO,GAAG,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACnD,IAAI,OAAO,GAAG,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACnD,IAAI,OAAO,GAAG,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG,UAAU,IAAI,EAAE,GAAG,EAAE;AACvC,CAAC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE;AACvE,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AACxB,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,GAAG,OAAO,IAAI,CAAC;AACf,GAAG;AACH,EAAE;AACF,CAAC,CAAC;AACF;AACA,IAAI,OAAO,GAAG,UAAU,OAAO,EAAE,GAAG,EAAE;AACtC,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;AAC3B,CAAC,CAAC;AACF,IAAI,OAAO,GAAG,UAAU,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7C,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC,IAAI,IAAI,EAAE;AACX,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,MAAM;AACR;AACA,EAAE,OAAO,CAAC,IAAI,GAAG;AACjB,GAAG,GAAG,EAAE,GAAG;AACX,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI;AACrB,GAAG,KAAK,EAAE,KAAK;AACf,GAAG,CAAC;AACJ,EAAE;AACF,CAAC,CAAC;AACF,IAAI,OAAO,GAAG,UAAU,OAAO,EAAE,GAAG,EAAE;AACtC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC,CAAC;AACF;AACA,eAAc,GAAG,SAAS,cAAc,GAAG;AAC3C,CAAC,IAAI,GAAG,CAAC;AACT,CAAC,IAAI,EAAE,CAAC;AACR,CAAC,IAAI,EAAE,CAAC;AACR,CAAC,IAAI,OAAO,GAAG;AACf,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE;AACzB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1B,IAAI,MAAM,IAAI,UAAU,CAAC,gCAAgC,GAAGI,aAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,IAAI;AACJ,GAAG;AACH,EAAE,GAAG,EAAE,UAAU,GAAG,EAAE;AACtB,GAAG,IAAI,QAAQ,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,EAAE;AAClF,IAAI,IAAI,GAAG,EAAE;AACb,KAAK,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,MAAM,IAAI,IAAI,EAAE;AACpB,IAAI,IAAI,EAAE,EAAE;AACZ,KAAK,OAAO,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM;AACV,IAAI,IAAI,EAAE,EAAE;AACZ,KAAK,OAAO,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE,GAAG,EAAE,UAAU,GAAG,EAAE;AACtB,GAAG,IAAI,QAAQ,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,EAAE;AAClF,IAAI,IAAI,GAAG,EAAE;AACb,KAAK,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,MAAM,IAAI,IAAI,EAAE;AACpB,IAAI,IAAI,EAAE,EAAE;AACZ,KAAK,OAAO,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM;AACV,IAAI,IAAI,EAAE,EAAE;AACZ,KAAK,OAAO,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,GAAG;AACH,EAAE,GAAG,EAAE,UAAU,GAAG,EAAE,KAAK,EAAE;AAC7B,GAAG,IAAI,QAAQ,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,EAAE;AAClF,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,KAAK,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACjC,IAAI,MAAM,IAAI,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI,MAAM;AACV,IAAI,IAAI,CAAC,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClC,KAAK;AACL,IAAI,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5B,IAAI;AACJ,GAAG;AACH,EAAE,CAAC;AACH,CAAC,OAAO,OAAO,CAAC;AAChB,CAAC;;ACzHD,IAAI,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;AACvC,IAAI,eAAe,GAAG,MAAM,CAAC;AAC7B;AACA,IAAI,MAAM,GAAG;AACb,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,OAAO,EAAE,SAAS;AACtB,CAAC,CAAC;AACF;AACA,WAAc,GAAG;AACjB,IAAI,SAAS,EAAE,MAAM,CAAC,OAAO;AAC7B,IAAI,UAAU,EAAE;AAChB,QAAQ,OAAO,EAAE,UAAU,KAAK,EAAE;AAClC,YAAY,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,OAAO,EAAE,UAAU,KAAK,EAAE;AAClC,YAAY,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACjC,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO;AAC3B,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO;AAC3B,CAAC;;AClBD,IAAIH,KAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AAC1C,IAAIC,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B;AACA,IAAI,QAAQ,IAAI,YAAY;AAC5B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AAClC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC/E,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,KAAK,EAAE;AAChD,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AAC/B,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,QAAQ,IAAIA,SAAO,CAAC,GAAG,CAAC,EAAE;AAC1B,YAAY,IAAI,SAAS,GAAG,EAAE,CAAC;AAC/B;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACjD,gBAAgB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AACnD,oBAAoB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,iBAAiB;AACjB,aAAa;AACb;AACA,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAC5C,SAAS;AACT,KAAK;AACL,CAAC,CAAC;AACF;AACA,IAAI,aAAa,GAAG,SAAS,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5D,IAAI,IAAI,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACzE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC5C,QAAQ,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AAC9C,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS;AACT,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;AACA,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD;AACA,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,QAAQ,IAAIA,SAAO,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,SAAS,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzD,YAAY,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,CAACD,KAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;AACvH,gBAAgB,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACtC,aAAa;AACb,SAAS,MAAM;AACf,YAAY,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC/C,QAAQ,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC;AAC7B,IAAI,IAAIC,SAAO,CAAC,MAAM,CAAC,IAAI,CAACA,SAAO,CAAC,MAAM,CAAC,EAAE;AAC7C,QAAQ,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,KAAK;AACL;AACA,IAAI,IAAIA,SAAO,CAAC,MAAM,CAAC,IAAIA,SAAO,CAAC,MAAM,CAAC,EAAE;AAC5C,QAAQ,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE;AAC1C,YAAY,IAAID,KAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;AACrC,gBAAgB,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACtG,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACjE,iBAAiB,MAAM;AACvB,oBAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,iBAAiB;AACjB,aAAa,MAAM;AACnB,gBAAgB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACjC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE;AAC1D,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,QAAQ,IAAIA,KAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AAChC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACvD,SAAS,MAAM;AACf,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,EAAE,WAAW,CAAC,CAAC;AACpB,CAAC,CAAC;AACF;AACA,IAAI,MAAM,GAAG,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE;AACzD,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE;AAC1D,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,EAAE,MAAM,CAAC,CAAC;AACf,CAAC,CAAC;AACF;AACA,IAAI,MAAM,GAAG,UAAU,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;AAC9C,IAAI,IAAI,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACjD,IAAI,IAAI,OAAO,KAAK,YAAY,EAAE;AAClC;AACA,QAAQ,OAAO,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAClE,KAAK;AACL;AACA,IAAI,IAAI;AACR,QAAQ,OAAO,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAClD,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,QAAQ,OAAO,cAAc,CAAC;AAC9B,KAAK;AACL,CAAC,CAAC;AACF;AACA,IAAI,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACzE;AACA;AACA,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC;AACrB,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,KAAK,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACxC,QAAQ,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,OAAO,KAAK,YAAY,EAAE;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,EAAE,EAAE;AACvE,YAAY,OAAO,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;AAChE,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC5C,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC;AACA,QAAQ;AACR,YAAY,CAAC,KAAK,IAAI;AACtB,eAAe,CAAC,KAAK,IAAI;AACzB,eAAe,CAAC,KAAK,IAAI;AACzB,eAAe,CAAC,KAAK,IAAI;AACzB,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AACvC,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AACvC,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AACvC,gBAAgB,MAAM,KAAK,OAAO,CAAC,OAAO,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AACzE,UAAU;AACV,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,SAAS;AACrB,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE;AACtB,YAAY,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,SAAS;AACrB,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,GAAG,KAAK,EAAE;AACvB,YAAY,GAAG,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClF,YAAY,SAAS;AACrB,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM,EAAE;AACvC,YAAY,GAAG,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxH,YAAY,SAAS;AACrB,SAAS;AACT;AACA,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7E,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,cAAc,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AACjD,cAAc,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAChD,cAAc,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;AACA,IAAI,OAAO,GAAG,SAAS,OAAO,CAAC,KAAK,EAAE;AACtC,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACnD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;AAClB;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC3C,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC9C,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAY,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACrF,gBAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACpD,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACxB;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AACF;AACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE;AACtC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAC;AACrE,CAAC,CAAC;AACF;AACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE;AACtC,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;AACA,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5F,CAAC,CAAC;AACF;AACA,IAAI,OAAO,GAAG,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AACrC,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC;AACF;AACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE;AAC1C,IAAI,IAAIC,SAAO,CAAC,GAAG,CAAC,EAAE;AACtB,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAChD,YAAY,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC;AACF;AACA,SAAc,GAAG;AACjB,IAAI,aAAa,EAAE,aAAa;AAChC,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,KAAK,EAAE,KAAK;AAChB,CAAC;;ACrPD,IAAID,KAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AAC1C;AACA,IAAI,qBAAqB,GAAG;AAC5B,IAAI,QAAQ,EAAE,SAAS,QAAQ,CAAC,MAAM,EAAE;AACxC,QAAQ,OAAO,MAAM,GAAG,IAAI,CAAC;AAC7B,KAAK;AACL,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,EAAE,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE;AAC3C,QAAQ,OAAO,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxC,KAAK;AACL,IAAI,MAAM,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE;AACpC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,CAAC,CAAC;AACF;AACA,IAAIC,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AAChC,IAAI,WAAW,GAAG,UAAU,GAAG,EAAE,YAAY,EAAE;AAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAEA,SAAO,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3E,CAAC,CAAC;AACF;AACA,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AACvC;AACA,IAAI,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACvC,IAAIG,UAAQ,GAAG;AACf,IAAI,cAAc,EAAE,KAAK;AACzB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,KAAK,CAAC,MAAM;AACzB,IAAI,gBAAgB,EAAE,KAAK;AAC3B,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;AAChD;AACA,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,aAAa,EAAE,SAAS,aAAa,CAAC,IAAI,EAAE;AAChD,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,kBAAkB,EAAE,KAAK;AAC7B,CAAC,CAAC;AACF;AACA,IAAI,qBAAqB,GAAG,SAAS,qBAAqB,CAAC,CAAC,EAAE;AAC9D,IAAI,OAAO,OAAO,CAAC,KAAK,QAAQ;AAChC,WAAW,OAAO,CAAC,KAAK,QAAQ;AAChC,WAAW,OAAO,CAAC,KAAK,SAAS;AACjC,WAAW,OAAO,CAAC,KAAK,QAAQ;AAChC,WAAW,OAAO,CAAC,KAAK,QAAQ,CAAC;AACjC,CAAC,CAAC;AACF;AACA,IAAI,SAAS,GAAG,SAAS,SAAS;AAClC,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,mBAAmB;AACvB,IAAI,kBAAkB;AACtB,IAAI,SAAS;AACb,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,SAAS;AACb,IAAI,aAAa;AACjB,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,gBAAgB;AACpB,IAAI,OAAO;AACX,IAAIC,aAAW;AACf,EAAE;AACF,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC;AACrB;AACA,IAAI,IAAIA,aAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACjC,QAAQ,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;AACpD,KAAK;AACL;AACA,IAAI,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AACtC,QAAQ,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC,KAAK,MAAM,IAAI,GAAG,YAAY,IAAI,EAAE;AACpC,QAAQ,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACjC,KAAK,MAAM,IAAI,mBAAmB,KAAK,OAAO,IAAIJ,SAAO,CAAC,GAAG,CAAC,EAAE;AAChE,QAAQ,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE;AACnD,YAAY,IAAI,KAAK,YAAY,IAAI,EAAE;AACvC,gBAAgB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,aAAa;AACb,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AACtB,QAAQ,IAAI,kBAAkB,EAAE;AAChC,YAAY,OAAO,OAAO,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAEG,UAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;AACrH,SAAS;AACT;AACA,QAAQ,GAAG,GAAG,EAAE,CAAC;AACjB,KAAK;AACL;AACA,IAAI,IAAI,qBAAqB,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC3D,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,QAAQ,GAAG,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAEA,UAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACjH,YAAY,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAEA,UAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACrH,SAAS;AACT,QAAQ,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AACpC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,mBAAmB,KAAK,OAAO,IAAIH,SAAO,CAAC,GAAG,CAAC,EAAE;AACzD;AACA,QAAQ,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC;AAClF,KAAK,MAAM,IAAIA,SAAO,CAAC,MAAM,CAAC,EAAE;AAChC,QAAQ,OAAO,GAAG,MAAM,CAAC;AACzB,KAAK,MAAM;AACX,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAChD,KAAK;AACL;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC7C,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9F;AACA,QAAQ,IAAI,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,YAAY,SAAS;AACrB,SAAS;AACT;AACA,QAAQ,IAAI,SAAS,GAAGA,SAAO,CAAC,GAAG,CAAC;AACpC,cAAc,OAAO,mBAAmB,KAAK,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;AACnG,cAAc,MAAM,IAAI,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACjE;AACA,QAAQI,aAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACtC,QAAQ,IAAI,gBAAgB,GAAGC,WAAc,EAAE,CAAC;AAChD,QAAQ,WAAW,CAAC,MAAM,EAAE,SAAS;AACrC,YAAY,KAAK;AACjB,YAAY,SAAS;AACrB,YAAY,mBAAmB;AAC/B,YAAY,kBAAkB;AAC9B,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,YAAY,MAAM;AAClB,YAAY,IAAI;AAChB,YAAY,SAAS;AACrB,YAAY,aAAa;AACzB,YAAY,MAAM;AAClB,YAAY,SAAS;AACrB,YAAY,gBAAgB;AAC5B,YAAY,OAAO;AACnB,YAAY,gBAAgB;AAC5B,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AACF;AACA,IAAI,yBAAyB,GAAG,SAAS,yBAAyB,CAAC,IAAI,EAAE;AACzE,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,OAAOF,UAAQ,CAAC;AACxB,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE;AACnG,QAAQ,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;AAC7D,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,IAAIA,UAAQ,CAAC,OAAO,CAAC;AACnD,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,EAAE;AAC1G,QAAQ,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAC;AACjG,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;AAC5C,QAAQ,IAAI,CAACJ,KAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AACxD,YAAY,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/C;AACA,IAAI,IAAI,MAAM,GAAGI,UAAQ,CAAC,MAAM,CAAC;AACjC,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAIH,SAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACnE,QAAQ,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,OAAO;AACX,QAAQ,cAAc,EAAE,OAAO,IAAI,CAAC,cAAc,KAAK,SAAS,GAAG,IAAI,CAAC,cAAc,GAAGG,UAAQ,CAAC,cAAc;AAChH,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,GAAGA,UAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS;AAChG,QAAQ,OAAO,EAAE,OAAO;AACxB,QAAQ,eAAe,EAAE,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS,GAAG,IAAI,CAAC,eAAe,GAAGA,UAAQ,CAAC,eAAe;AACpH,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,GAAGA,UAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AAC9F,QAAQ,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,GAAG,IAAI,CAAC,MAAM,GAAGA,UAAQ,CAAC,MAAM;AAChF,QAAQ,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,OAAO,GAAGA,UAAQ,CAAC,OAAO;AACrF,QAAQ,gBAAgB,EAAE,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAGA,UAAQ,CAAC,gBAAgB;AACxH,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,aAAa,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,GAAG,IAAI,CAAC,aAAa,GAAGA,UAAQ,CAAC,aAAa;AAC7G,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC,SAAS,GAAGA,UAAQ,CAAC,SAAS;AAC5F,QAAQ,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI;AAChE,QAAQ,kBAAkB,EAAE,OAAO,IAAI,CAAC,kBAAkB,KAAK,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAGA,UAAQ,CAAC,kBAAkB;AAChI,KAAK,CAAC;AACN,CAAC,CAAC;AACF;AACA,eAAc,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE;AACzC,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC;AACrB,IAAI,IAAI,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAClD;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,MAAM,CAAC;AACf;AACA,IAAI,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;AAC9C,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAChC,QAAQ,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAK,MAAM,IAAIH,SAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACxC,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAChC,QAAQ,OAAO,GAAG,MAAM,CAAC;AACzB,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;AAClB;AACA,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AACjD,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL;AACA,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,qBAAqB,EAAE;AAC3D,QAAQ,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,KAAK,MAAM,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;AAC1C,QAAQ,WAAW,GAAG,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC1D,KAAK,MAAM;AACX,QAAQ,WAAW,GAAG,SAAS,CAAC;AAChC,KAAK;AACL;AACA,IAAI,IAAI,mBAAmB,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACjE;AACA,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK;AACL;AACA,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;AACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,KAAK;AACL;AACA,IAAI,IAAII,aAAW,GAAGC,WAAc,EAAE,CAAC;AACvC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC7C,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7B;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AACpD,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,WAAW,CAAC,IAAI,EAAE,SAAS;AACnC,YAAY,GAAG,CAAC,GAAG,CAAC;AACpB,YAAY,GAAG;AACf,YAAY,mBAAmB;AAC/B,YAAY,OAAO,CAAC,kBAAkB;AACtC,YAAY,OAAO,CAAC,SAAS;AAC7B,YAAY,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI;AACnD,YAAY,OAAO,CAAC,MAAM;AAC1B,YAAY,OAAO,CAAC,IAAI;AACxB,YAAY,OAAO,CAAC,SAAS;AAC7B,YAAY,OAAO,CAAC,aAAa;AACjC,YAAY,OAAO,CAAC,MAAM;AAC1B,YAAY,OAAO,CAAC,SAAS;AAC7B,YAAY,OAAO,CAAC,gBAAgB;AACpC,YAAY,OAAO,CAAC,OAAO;AAC3B,YAAYD,aAAW;AACvB,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,cAAc,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC5D;AACA,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE;AACjC,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY,EAAE;AAC9C;AACA,YAAY,MAAM,IAAI,sBAAsB,CAAC;AAC7C,SAAS,MAAM;AACf;AACA,YAAY,MAAM,IAAI,iBAAiB,CAAC;AACxC,SAAS;AACT,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;AACpD,CAAC;;AC7RD,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AAC1C,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B;AACA,IAAI,QAAQ,GAAG;AACf,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,OAAO,EAAE,KAAK,CAAC,MAAM;AACzB,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,iBAAiB,EAAE,KAAK;AAC5B,IAAI,wBAAwB,EAAE,KAAK;AACnC,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,WAAW,EAAE,IAAI;AACrB,IAAI,YAAY,EAAE,KAAK;AACvB,IAAI,kBAAkB,EAAE,KAAK;AAC7B,CAAC,CAAC;AACF;AACA,IAAI,wBAAwB,GAAG,UAAU,GAAG,EAAE;AAC9C,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE;AAC7D,QAAQ,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5D,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF;AACA,IAAI,eAAe,GAAG,UAAU,GAAG,EAAE,OAAO,EAAE;AAC9C,IAAI,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAClF,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG,qBAAqB,CAAC;AACxC;AACA;AACA,IAAI,eAAe,GAAG,gBAAgB,CAAC;AACvC;AACA,IAAI,WAAW,GAAG,SAAS,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE;AAChE,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AAC5E,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,cAAc,KAAK,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;AACzF,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACzD,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,CAAC;AACV;AACA,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAClC,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE;AACjC,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC3C,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjD,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE;AAClD,oBAAoB,OAAO,GAAG,OAAO,CAAC;AACtC,iBAAiB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AACrD,oBAAoB,OAAO,GAAG,YAAY,CAAC;AAC3C,iBAAiB;AACjB,gBAAgB,SAAS,GAAG,CAAC,CAAC;AAC9B,gBAAgB,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACjC,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACvC,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;AAC7B,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B;AACA,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD,QAAQ,IAAI,GAAG,GAAG,gBAAgB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC;AACrF;AACA,QAAQ,IAAI,GAAG,EAAE,GAAG,CAAC;AACrB,QAAQ,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;AACxB,YAAY,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1E,YAAY,GAAG,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACzD,SAAS,MAAM;AACf,YAAY,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxF,YAAY,GAAG,GAAG,KAAK,CAAC,QAAQ;AAChC,gBAAgB,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;AAC7D,gBAAgB,UAAU,UAAU,EAAE;AACtC,oBAAoB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3F,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,IAAI,OAAO,CAAC,wBAAwB,IAAI,OAAO,KAAK,YAAY,EAAE;AACjF,YAAY,GAAG,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;AAChD,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;AACtC,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7C,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AAChC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACpD,SAAS,MAAM;AACf,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;AACA,IAAI,WAAW,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE;AAC/D,IAAI,IAAI,IAAI,GAAG,YAAY,GAAG,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAClE;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;AAChD,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B;AACA,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE;AAClD,YAAY,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,SAAS,MAAM;AACf,YAAY,GAAG,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAClE,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACtH,YAAY,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAChD,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,SAAS,KAAK,EAAE,EAAE;AAC1D,gBAAgB,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAClC,aAAa,MAAM;AACnB,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;AAC7B,mBAAmB,IAAI,KAAK,SAAS;AACrC,mBAAmB,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS;AAC9C,mBAAmB,KAAK,IAAI,CAAC;AAC7B,oBAAoB,OAAO,CAAC,WAAW,IAAI,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;AACvE,cAAc;AACd,gBAAgB,GAAG,GAAG,EAAE,CAAC;AACzB,gBAAgB,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAClC,aAAa,MAAM;AACnB,gBAAgB,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AACtC,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,GAAG,CAAC;AACnB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF;AACA,IAAI,SAAS,GAAG,SAAS,oBAAoB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE;AACpF,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,OAAO;AACf,KAAK;AACL;AACA;AACA,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC;AACrF;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG,cAAc,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC;AAChC;AACA;AACA;AACA,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1D,IAAI,IAAI,MAAM,GAAG,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAC7D;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;AAClB,IAAI,IAAI,MAAM,EAAE;AAChB;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;AACzE,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC1C,gBAAgB,OAAO;AACvB,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,OAAO,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE;AAC3F,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC1C,gBAAgB,OAAO;AACvB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,OAAO,EAAE;AACjB,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACxD,KAAK;AACL;AACA,IAAI,OAAO,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACzD,CAAC,CAAC;AACF;AACA,IAAI,qBAAqB,GAAG,SAAS,qBAAqB,CAAC,IAAI,EAAE;AACjE,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE;AACnG,QAAQ,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;AAC7D,KAAK;AACL;AACA,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,EAAE;AAC1G,QAAQ,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAC;AACjG,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACxF;AACA,IAAI,OAAO;AACX,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS;AAChG,QAAQ,eAAe,EAAE,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS,GAAG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe;AACpH,QAAQ,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW;AACpG,QAAQ,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU;AAC/F,QAAQ,OAAO,EAAE,OAAO;AACxB,QAAQ,eAAe,EAAE,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS,GAAG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe;AACpH,QAAQ,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AAC5E,QAAQ,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;AACrF,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS;AAC7H;AACA,QAAQ,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AACtG,QAAQ,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,KAAK,IAAI;AAC1D,QAAQ,wBAAwB,EAAE,OAAO,IAAI,CAAC,wBAAwB,KAAK,SAAS,GAAG,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,wBAAwB;AACxJ,QAAQ,cAAc,EAAE,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc;AAC/G,QAAQ,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,KAAK;AAC/C,QAAQ,YAAY,EAAE,OAAO,IAAI,CAAC,YAAY,KAAK,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACxG,QAAQ,kBAAkB,EAAE,OAAO,IAAI,CAAC,kBAAkB,KAAK,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB;AAChI,KAAK,CAAC;AACN,CAAC,CAAC;AACF;AACA,WAAc,GAAG,UAAU,GAAG,EAAE,IAAI,EAAE;AACtC,IAAI,IAAI,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC9C;AACA,IAAI,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAClE,QAAQ,OAAO,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/D,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;AAC5E,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9D;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC1C,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpF,QAAQ,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,KAAK;AACL;AACA,IAAI,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE;AACtC,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;;AChQD,SAAc,GAAG;AACjB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,KAAK,EAAEE,OAAK;AAChB,IAAI,SAAS,EAAEC,WAAS;AACxB,CAAC;;AC6BD,SAAS,OAAO,CAAC,UAAsB;IACrC,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,UAAU;YACb,GAAG,EAAE,MAAM,UAAU;YACrB,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;YAC7C,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACvD,uBAAuB,EAAE,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC;YACnE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;YAC7B,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAC3C,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC;YACnD,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;YACzC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACjC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;YAC3C,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACvD,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;YACzD,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;YACjD,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;YACzD,uBAAuB,EAAE,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC;YACnE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;YAC3B,MAAM,EAAE,UAAU,CAAC,MAAuB;SAC3C,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KAC3D;AACH,CAAC;AAED,SAAS,KAAK,CAAC,QAAkB;IAC/B,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,EAAE,MAAM,QAAQ;YACnB,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;SAC1C,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACzD;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAmB;IACtC,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,GAAG;YACN,GAAG,EAAE,MAAM,GAAG;YACd,KAAK,EAAE;gBACL,GAAG,GAAG,CAAC,KAAK;gBACZ,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;aACzB;SACF,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KAChE;AACH,CAAC;AAED,SAAS,KAAK,CAAC,QAAkB;IAC/B,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,QAAQ;YACX,GAAG,EAAE,MAAM,QAAQ;YACnB,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzC,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC7C,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC3C,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC3C,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YACzB,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YACvC,IAAI,EAAE,QAAQ,CAAC,IAAiB;YAChC,IAAI,EAAE,QAAQ,CAAC,IAAiB;YAChC,aAAa,EAAE,QAAQ,CAAC,aAAiC;YACzD,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YACvC,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACnD,MAAM,EAAE,QAAQ,CAAC,MAAqB;YACtC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3B,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC7C,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACzD;AACH,CAAC;AAED,SAAS,MAAM,CAAC,SAAqB;IACnC,OAAO,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC;AACxE,CAAC;AAED,SAAS,cAAc,CAAC,KAA0B;IAChD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAGvB,OAAO,KAAK,CAAC,IAAI,CAAC;IAElB,IAAI;QACF,OAAO;YACL,GAAG,KAAK;YACR,KAAK,EAAE;gBACL,GAAG,KAAK;gBACR,GAAG,EAAE,MAAM,KAAK;gBAChB,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBACtC,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBACtC,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC1C,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACpC,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBACtC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBACxC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACpC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBACxC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;gBACtB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;gBACpC,IAAI,EAAE,KAAK,CAAC,IAAiB;gBAC7B,IAAI,EAAE,KAAK,CAAC,IAAiB;gBAC7B,aAAa,EAAE,KAAK,CAAC,aAAiC;gBACtD,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;gBACtC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;gBACpC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBAChD,MAAM,EAAE,KAAK,CAAC,MAAqB;gBACnC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;gBACtC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC1C,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B;SACF,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACzD;AACH,CAAC;AAED,SAAS,eAAe,CACtB,oBAA2C;IAE3C,OAAO,oBAAoB;UACvB,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC;UAC1D,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,WAAwB;IACxC,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,WAAW;YACd,GAAG,EAAE,MAAM,WAAW;YACtB,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC;YACpD,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;YAC5B,IAAI,EAAE,WAAW,CAAC,IAAoB;YACtC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;YAC9C,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YAC1C,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC;YAChD,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC;YACpD,sBAAsB,EAAE,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC;YAClE,wBAAwB,EAAE,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC;YACtE,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC;YAChD,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC;YAChD,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;SAC/C,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KAC5D;AACH,CAAC;AAED,SAAS,SAAS,CAAC,YAA2B;IAC5C,OAAO,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,gBAAkC;IACvD,IAAI,CAAC,gBAAgB,EAAE;QACrB,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,gBAAgB;YACnB,GAAG,EAAE,MAAM,gBAAgB;YAC3B,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACzC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC/C,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;YACrC,GAAG,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC;YACjC,IAAI,EAAE,gBAAgB,CAAC,IAAyB;YAChD,IAAI,EAAE,gBAAgB,CAAC,IAAyB;SACjD,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACjE;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,mBAAwC;IAExC,IAAI,CAAC,mBAAmB,EAAE;QACxB,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,mBAAmB;YACtB,GAAG,EAAE,MAAM,mBAAmB;YAC9B,UAAU,EAAE,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC;YAClD,GAAG,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC;YACpC,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;SAC/D,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACpE;AACH,CAAC;AAED,SAAS,UAAU,CAAC,aAAiC;IACnD,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,WAAW,KACnC,WAAW,CAAC,aAAa,KAAK,MAAM;cAChC,aAAa,CAAC,WAAW,CAAC;cAC1B,gBAAgB,CAAC,WAAW,CAAC,CAClC,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KAC5D;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAqB;IACzC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,EAAE,MAAM,IAAI;YACf,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM;gBAC/D,GAAG,EAAE,MAAM,KAAK;gBAChB,GAAG,KAAK;gBACR,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACrB,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;KACjE;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAqB;IACzC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,EAAE,MAAM,IAAI;YACf,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM;gBAC/D,GAAG,EAAE,MAAM,KAAK;gBAChB,GAAG,KAAK;gBACR,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACrB,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;KACjE;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAmB;IACrC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,EAAE,MAAM,IAAI;YACf,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM;gBACvD,GAAG,EAAE,MAAM,GAAG;gBACd,GAAG,GAAG;gBACN,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACnB,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;KACjE;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAgB;IAChC,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,SAAS,CAAC;KAClB;IAED,IAAI;QACF,OAAO;YACL,GAAG,GAAG;YACN,GAAG,EAAE,MAAM,GAAG;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;kBACxB;oBACE,GAAG,GAAG,CAAC,WAAW;oBAClB,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;iBAC/B;kBACD,IAAI;YACR,WAAW,EAAE,GAAG,CAAC,WAAW;kBACxB;oBACE,GAAG,GAAG,CAAC,WAAW;oBAClB,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;iBAC/B;kBACD,IAAI;YACR,SAAS,EAAE,GAAG,CAAC,SAAS;kBACpB;oBACE,GAAG,GAAG,CAAC,SAAS;oBAChB,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;iBAC7B;kBACD,IAAI;YACR,QAAQ,EAAE,GAAG,CAAC,QAAQ;kBAClB;oBACE,GAAG,GAAG,CAAC,QAAQ;oBACf,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;iBAC5B;kBACD,IAAI;YACR,YAAY,EAAE,GAAG,CAAC,YAAY;kBAC1B;oBACE,GAAG,GAAG,CAAC,YAAY;oBACnB,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;iBAChC;kBACD,IAAI;SACU,CAAC;KACtB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;KAC7D;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAmC;IAGpD,IAAI,MAAM,GAAgC,EAAE,CAAC;IAE7C,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC/B;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,MAAoB;IAClC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,IAAI,IAAI,EAAE;QACnD,OAAO,MAAM,CAAC;KACf;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAEjC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,cAA8B;IAClD,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEtC,OAAO;QACL,GAAG,EAAE,MAAM,cAAc;QACzB,KAAK,EAAE,cAAc,CAAC,KAAK;QAC3B,YAAY,EAAE,cAAc,CAAC,YAAY;QACzC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;QAGlC,IAAI,cAAc,CAAC,QAAQ,IAAI;YAC7B,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;SAC1C,CAAC;QACF,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7D,IAAI,cAAc,CAAC,SAAS,IAAI;YAC9B,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;SAC9C,CAAC;QACF,IAAI,cAAc,CAAC,YAAY,IAAI;YACjC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC;SAClD,CAAC;QACF,IAAI,cAAc,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACpE,IAAI,cAAc,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,YAAe;IACb,OAAO;IACP,UAAU;IACV,KAAK;IACL,gBAAgB;IAChB,KAAK;IACL,MAAM;IACN,eAAe;IACf,QAAQ;IACR,SAAS;IACT,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,WAAW;CACZ;;ACldc,uBAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;;;;;;;;;ACAx4B,aAAc,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,GAAGX,YAAkB,CAAC,OAAO,IAAIA,YAAkB,CAAC;;ACE9F,MAAM,SAAS,GAAc;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,qCAAqC;QAC3C,OAAO,EAAE,+BAA+B;QACxC,cAAc,EAAE,gCAAgC;QAChD,cAAc,EAAE,gCAAgC;KACjD;IACD,SAAS,EAAE;QACT,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE,CAAC,SAAqB,KAAK,KACtC,uCAAuC,MAAM,EAAE;KAClD;CACF;;ACZD,QAAY,GAAG,UAAU,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE;AACxD,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAChB;AACA,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE;AACtB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;AACpD,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,aAAiB,GAAG,UAAU,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE;AAC7D,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACX;AACA,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE;AACtB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;AAChC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;;;;;;;ACvBD,IAAIY,QAAM,CAAC;AACXA,QAAM,GAAG,MAAM,MAAM,CAAC;AACtB,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;AAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;AACA,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AACzC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAClB,KAAK;AACL;AACA,IAAI,IAAI,GAAG;AACX,MAAM,KAAK;AACX,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK;AACtB,MAAM,IAAI,EAAE,IAAI;AAChB,KAAK,CAAC;AACN;AACA,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtC,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC,CAAC;AAClB,GAAG;AACH;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,KAAK,CAAC;AACd;AACA,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AAC7B,MAAM,OAAO;AACb,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB;AACA,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AAC3C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB,OAAO;AACP,KAAK;AACL;AACA,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9B;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;AAClD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AAC7B,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/B,KAAK;AACL,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;AAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;AACvB,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,OAAO,IAAI,IAAI,IAAI,EAAE;AACzB,MAAM,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;AAC9D,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,YAAY,CAAC,EAAE,EAAE;AACnB,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB;AACA,IAAI,OAAO,IAAI,IAAI,IAAI,EAAE;AACzB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC,CAAC;AAClB,GAAG;AACH;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACvC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;AACvB,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,OAAO,IAAI,IAAI,IAAI,EAAE;AACzB,MAAM,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAClD,QAAQ,KAAK,EAAE,GAAG,CAAC,KAAK;AACxB,QAAQ,IAAI,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7D,QAAQ,IAAI,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7D,OAAO,EAAE,CAAC;AACV,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,CAAC,CAAC;AACF,YAAc,GAAGA,QAAM;;ACxGvB,SAASC,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE;AACzQ;AACA,SAASC,mBAAiB,CAAC,EAAE,EAAE,EAAE,OAAO,YAAY,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,EAAED,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,EAAEA,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACrY;AACA,IAAIE,QAAM,CAAC;AACXA,QAAM,GAAG,MAAM,MAAM,CAAC;AACtB,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACtB;AACA,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,IAAI,EAAE;AAC5G,MAAM,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK;AACrC,MAAM,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK;AACvC,MAAM,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK;AACxD,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE;AACxB,QAAQ,OAAO,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,OAAO,MAAM;AACb,QAAQ,OAAO,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACjC,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;AACjC,IAAI,IAAI,IAAI,CAAC;AACb;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;AAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AAC5B,MAAM,EAAE;AACR,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;AACzB,GAAG;AACH;AACA,EAAE,aAAa,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACvC,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;AACzB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,IAAI,OAAOD,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,CAAC,EAAE,QAAQ,CAAC;AACtB;AACA,MAAM,IAAI;AACV,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE;AAC9B,UAAU,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnE,SAAS;AACT;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AACzC,UAAU,OAAO;AACjB,SAAS;AACT;AACA,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,QAAQ,EAAE;AAC7E,UAAU,OAAO,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC;AAC5C,SAAS,CAAC,CAAC;AACX,QAAQ,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAC1C;AACA,QAAQ,YAAY;AACpB,UAAU,IAAI,IAAI,GAAGA,mBAAiB,CAAC,WAAW,QAAQ,EAAE;AAC5D,YAAY,IAAI,CAAC,EAAE,QAAQ,CAAC;AAC5B;AACA,YAAY,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE;AAC5C,cAAc,OAAO;AACrB,aAAa;AACb;AACA,YAAY,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE;AAC5C,cAAc,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;AACvC,aAAa;AACb;AACA,YAAY,IAAI;AAChB,cAAc,QAAQ,GAAG,OAAO,QAAQ,CAAC,EAAE,KAAK,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AAC3F;AACA,cAAc,IAAI,QAAQ,QAAQ,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,UAAU,EAAE;AACrF,gBAAgB,OAAO,MAAM,QAAQ,CAAC;AACtC,eAAe,MAAM;AACrB,gBAAgB,OAAO,QAAQ,CAAC;AAChC,eAAe;AACf,aAAa,CAAC,OAAO,KAAK,EAAE;AAC5B,cAAc,CAAC,GAAG,KAAK,CAAC;AACxB;AACA,cAAc,IAAI,MAAM,KAAK,OAAO,EAAE;AACtC,gBAAgB,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1C,eAAe;AACf;AACA,cAAc,OAAO,IAAI,CAAC;AAC1B,aAAa;AACb,WAAW,CAAC,CAAC;AACb;AACA,UAAU,OAAO,UAAU,EAAE,EAAE;AAC/B,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/C,WAAW,CAAC;AACZ,SAAS,EAAE,CAAC,CAAC;AACb,QAAQ,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/D,UAAU,OAAO,CAAC,IAAI,IAAI,CAAC;AAC3B,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,CAAC,GAAG,KAAK,CAAC;AAClB;AACA,QAAgC;AAChC,UAAU,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,CAAC,CAAC;AACF,YAAc,GAAGC,QAAM;;AC7HvB,IAAIH,QAAM,EAAEG,QAAM,EAAEC,QAAM,CAAC;AAC3BJ,QAAM,GAAGZ,QAAmB,CAAC;AAC7Be,QAAM,GAAGE,QAAmB,CAAC;AAC7BD,QAAM,GAAG,MAAM,MAAM,CAAC;AACtB,EAAE,WAAW,CAAC,cAAc,EAAE;AAE9B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAID,QAAM,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY;AAC9B,MAAM,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC;AAC1B,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,MAAM,KAAS,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,cAAc,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,EAAM,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE;AACtG,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAIH,QAAM,CAAC,MAAM;AACtC,UAAU,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAS,EAAE,MAAM;AACjB,UAAU,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAS,CAAC,CAAC,CAAC;AACZ,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,GAAG;AACH;AACA,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;AAC9B,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7C,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;AAC9B,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,GAAG;AACH;AACA,EAAE,MAAM,CAAC,QAAQ,EAAE;AACnB,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1B,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAC1C,KAAK,MAAM;AACX,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC;AAC1B,KAAK;AACL,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,EAAE,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;AAC/C,MAAM,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AAC9B,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC;AACrB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChD,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH;AACA,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC1B,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACxE,GAAG;AACH;AACA,CAAC,CAAC;AACF,YAAc,GAAGI,QAAM;;AC1EvB,IAAIE,iBAAe,CAAC;AACpBA,iBAAe,GAAG,MAAM,eAAe,SAAS,KAAK,CAAC,EAAE,CAAC;AACzD,qBAAc,GAAGA,iBAAe;;ACFhC,SAASL,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE;AACzQ;AACA,SAASC,mBAAiB,CAAC,EAAE,EAAE,EAAE,OAAO,YAAY,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,EAAED,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,EAAEA,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACrY;AACA,IAAIK,iBAAe,EAAEC,kBAAgB,EAAEC,KAAG,EAAEC,gBAAc,EAAEC,QAAM,CAAC;AACnED,gBAAc,GAAG,EAAE,CAAC;AACpBF,kBAAgB,GAAG,CAAC,CAAC;AACrBG,QAAM,GAAGtB,QAAmB,CAAC;AAC7BkB,iBAAe,GAAGD,iBAA4B,CAAC;AAC/CG,KAAG,GAAG,MAAM,GAAG,CAAC;AAChB,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;AACxF,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACrC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAGE,QAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1E;AACA,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,EAAE;AAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACpE,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK;AAC3D,MAAM,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7B,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACxB,GAAG;AACH;AACA,EAAE,iBAAiB,CAAC,QAAQ,EAAE;AAC9B,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,SAAS,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,GAAGH,kBAAgB,GAAG,QAAQ,CAAC;AACtE;AACA,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE;AACvB,MAAM,OAAO,CAAC,CAAC;AACf,KAAK,MAAM,IAAI,SAAS,GAAGE,gBAAc,GAAG,CAAC,EAAE;AAC/C,MAAM,OAAOA,gBAAc,GAAG,CAAC,CAAC;AAChC,KAAK,MAAM;AACX,MAAM,OAAO,SAAS,CAAC;AACvB,KAAK;AACL,GAAG;AACH;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,GAAG;AACH;AACA,EAAE,MAAM,CAAC;AACT,IAAI,KAAK;AACT,IAAI,OAAO,GAAG,yCAAyC;AACvD,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC9C,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7B,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IAAIH,iBAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,OAAO;AACP;AACA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;AACrC,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI;AACvB,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;AAC7B,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI;AACvB,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;AAC7B,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,MAAM;AACX,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,GAAG;AACH;AACA,EAAE,aAAa,CAAC,QAAQ,EAAE;AAC1B,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACrD;AACA,IAAI,IAAI,EAAE,MAAM,KAAK,QAAQ,IAAI,QAAQ,KAAK,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,EAAE;AAC1E,MAAM,MAAM,IAAIA,iBAAe,CAAC,CAAC,mBAAmB,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,uEAAuE,CAAC,CAAC,CAAC;AAC7J,KAAK;AACL,GAAG;AACH;AACA,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxC;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3C,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE;AAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACnC;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACvC;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzC,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,UAAU;AAChB,MAAM,OAAO;AACb,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;AAC/B,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnC;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACzC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACtC,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;AAC5C,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE;AAClD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,IAAI,OAAOJ,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC;AACnC;AACA,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;AAClC,QAAQ,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACvC;AACA,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7C,OAAO,MAAM;AACb,QAAQ,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACzC,OAAO;AACP;AACA,MAAM,SAAS,GAAG;AAClB,QAAQ,IAAI,EAAE,KAAK,CAAC,IAAI;AACxB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU;AACpC,OAAO,CAAC;AACR;AACA,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACnD;AACA,MAAM,IAAI;AACV,QAAQ,MAAM,GAAG,MAAM,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAChI;AACA,QAAQ,IAAI,gBAAgB,EAAE,EAAE;AAChC,UAAU,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAClC;AACA,UAAU,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC/C;AACA,UAAU,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACtC;AACA,UAAU,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACxC,SAAS;AACT,OAAO,CAAC,OAAO,MAAM,EAAE;AACvB,QAAQ,KAAK,GAAG,MAAM,CAAC;AACvB,QAAQ,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/E,OAAO;AACP,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE;AACxC,IAAI,IAAI,KAAK,EAAE,SAAS,CAAC;AACzB;AACA,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE;AAC/D,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACzC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACpC;AACA,IAAI,SAAS,GAAG;AAChB,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,KAAK,CAAC;AACN,IAAI,KAAK,GAAG,IAAII,iBAAe,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3F,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1E,GAAG;AACH;AACA,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5D,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOJ,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,KAAK,EAAE,UAAU,CAAC;AAC5B;AACA,MAAM,IAAI,gBAAgB,EAAE,EAAE;AAC9B,QAAQ,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACxE;AACA,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,UAAU,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC;AAC/B;AACA,UAAU,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5G;AACA,UAAU,MAAM,CAAC,UAAU,EAAE,CAAC;AAC9B,UAAU,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC;AACjC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACnC;AACA,UAAU,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAChD;AACA,UAAU,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACvC;AACA,UAAU,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,SAAS;AACT,OAAO;AACP,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,MAAM,CAAC,SAAS,EAAE;AACpB,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACpC;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACvC;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAClD,GAAG;AACH;AACA,CAAC,CAAC;AACF,SAAc,GAAGM,KAAG;;ACpNpB,SAASP,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE;AACzQ;AACA,SAASC,mBAAiB,CAAC,EAAE,EAAE,EAAE,OAAO,YAAY,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,EAAED,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,EAAEA,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACrY;AACA,IAAIK,iBAAe,EAAEK,gBAAc,EAAED,QAAM,CAAC;AAC5CA,QAAM,GAAGtB,QAAmB,CAAC;AAC7BkB,iBAAe,GAAGD,iBAA4B,CAAC;AAC/CM,gBAAc,GAAG,MAAM,cAAc,CAAC;AACtC,EAAE,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE;AAC5D,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACrC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACjD,IAAID,QAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9F,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACtB;AACA,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,IAAI,CAAC;AACb;AACA,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,wBAAwB,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,sBAAsB,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,yBAAyB,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,IAAI,IAAI,CAAC,EAAE;AACxP,MAAM,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM;AAC/D,QAAQ,IAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC;AAClD,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACzB;AACA,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,wBAAwB,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE;AAClJ,UAAU,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC;AAC3C,UAAU,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC;AACjF;AACA,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC1D,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,yBAAyB,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE;AACrJ,UAAU,IAAI,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC;AACrD,UAAU,MAAM,GAAG,kBAAkB,CAAC,uBAAuB,CAAC;AAC9D,UAAU,OAAO,GAAG,kBAAkB,CAAC,wBAAwB,CAAC;AAChE,UAAU,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC;AACnD,UAAU,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;AAC5C,UAAU,IAAI,GAAG,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC;AAClF;AACA,UAAU,IAAI,IAAI,GAAG,CAAC,EAAE;AACxB,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC;AAChD,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AACnE,WAAW;AACX,SAAS;AACT,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,KAAK,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;AAC/E,KAAK,MAAM;AACX,MAAM,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,KAAK;AACL,GAAG;AACH;AACA,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,IAAI,OAAOR,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;AAC9B,MAAM,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1E,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/B,MAAM,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACtC,MAAM,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACtC,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE;AACnB,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AACvD,MAAM,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACpC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC;AACpG,GAAG;AACH;AACA,EAAE,kBAAkB,CAAC,OAAO,EAAE;AAC9B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/B,MAAMQ,QAAM,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AAC9D;AACA,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;AAC/B;AACA,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;AAC1D;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOR,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/B,MAAM,OAAO,MAAM,CAAC,QAAQ,CAAC;AAC7B,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/B,MAAM,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACtC,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/B,MAAM,OAAO,MAAM,CAAC,KAAK,CAAC;AAC1B,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,cAAc,CAAC,IAAI,EAAE;AACvB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/B,MAAM,OAAO,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AACzD,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,aAAa,EAAE,SAAS,CAAC;AACjC,IAAI,IAAI,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC;AAChD,IAAI,aAAa,GAAG,mBAAmB,CAAC,aAAa,CAAC;AACtD,IAAI,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;AAC9C;AACA,IAAI,IAAI,aAAa,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;AACpD,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChE,KAAK,MAAM,IAAI,aAAa,IAAI,IAAI,EAAE;AACtC,MAAM,OAAO,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3C,KAAK,MAAM,IAAI,SAAS,IAAI,IAAI,EAAE;AAClC,MAAM,OAAO,SAAS,CAAC;AACvB,KAAK,MAAM;AACX,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,eAAe,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,QAAQ,CAAC;AACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACtC,IAAI,OAAO,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAI,QAAQ,CAAC;AAClD,GAAG;AACH;AACA,EAAE,sBAAsB,CAAC,IAAI,EAAE;AAC/B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC;AACxD;AACA,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;AAC1D;AACA,MAAM,OAAO,SAAS,CAAC;AACvB,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,oBAAoB,GAAG;AACzB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AAC/B,MAAM,OAAO,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;AAC3C,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,SAAS,CAAC,GAAG,EAAE;AACjB,IAAI,OAAO,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;AACpC,GAAG;AACH;AACA,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,IAAI,CAAC,CAAC;AACxE,GAAG;AACH;AACA,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;AAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,MAAM,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;AAC1C,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,GAAG,EAAE,IAAI,CAAC;AACpB,MAAM,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;AAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB;AACA,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;AAC3C,QAAQ,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC;AACnC;AACA,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,EAAE;AACpD,UAAU,OAAO,CAAC,YAAY,CAAC,SAAS,IAAI,MAAM,CAAC;AACnD,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AACvD,QAAQ,OAAO,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;AACzE,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,IAAI;AACd,UAAU,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS;AACnD,SAAS,CAAC;AACV,OAAO,MAAM;AACb,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,KAAK;AACxB,SAAS,CAAC;AACV,OAAO;AACP,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE;AAClC,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC;AACnC,MAAM,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;AAChC;AACA,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE;AACrG,QAAQ,MAAM,IAAII,iBAAe,CAAC,CAAC,2CAA2C,EAAE,MAAM,CAAC,gDAAgD,EAAE,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/K,OAAO;AACP;AACA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,IAAI,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3I,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,KAAK,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACpF;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,OAAO,CAAC,YAAY,GAAG,GAAG,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;AAC9D,QAAQ,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;AACnF;AACA,QAAQ,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;AAC1C,OAAO;AACP;AACA,MAAM,OAAO;AACb,QAAQ,UAAU;AAClB,QAAQ,OAAO;AACf,QAAQ,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ;AAC/C,OAAO,CAAC;AACR,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,IAAI,OAAOJ,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;AAChC,MAAM,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC;AACjC,MAAM,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;AAC9B;AACA,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AAC5D;AACA,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,OAAO,CAAC,QAAQ;AACjC,OAAO,CAAC;AACR,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,CAAC,CAAC;AACF,oBAAc,GAAGS,gBAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7R/B;AACA,IAAI,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC;AAC5B,GAAG,GAAGvB,YAAqB,CAAC;AAC5B,OAAO,GAAG;AACV,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC;AACvB,EAAE,aAAa,EAAE,GAAG,CAAC,mBAAmB,CAAC;AACzC,EAAE,eAAe,EAAE,GAAG,CAAC,qBAAqB,CAAC;AAC7C,EAAE,kBAAkB,EAAE,GAAG,CAAC,wBAAwB,CAAC;AACnD,EAAE,YAAY,EAAE,GAAG,CAAC,kBAAkB,CAAC;AACvC,EAAE,gBAAgB,EAAE,GAAG,CAAC,sBAAsB,CAAC;AAC/C,EAAE,QAAQ,EAAE,GAAG,CAAC,cAAc,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,kBAAkB,UAAU,EAAE,EAAE;AAChC,EAAE,OAAO;AACT;AACA;AACA;AACA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC;AACpB;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC;AACvB;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC;AAC3B;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC;AACvB;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC;AAC1B;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC;AAC7B;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,uBAAuB,CAAC;AAClC;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC;AACF;AACA,SAAS,GAAG;AACZ,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,cAAc,CAAC;AAC7B,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC;AACzB,GAAG;AACH,EAAE,WAAW,EAAE;AACf,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;AAChC,GAAG;AACH,EAAE,eAAe,EAAE;AACnB,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,CAAC;AAC9B,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,qBAAqB,CAAC;AACpC,GAAG;AACH,EAAE,gBAAgB,EAAE;AACpB,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,CAAC;AACjD,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC;AACrC,GAAG;AACH,EAAE,SAAS,EAAE;AACb,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACjE,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC;AAC9B,GAAG;AACH,EAAE,eAAe,EAAE;AACnB,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACjE,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,IAAI,EAAE,GAAG,CAAC,qBAAqB,CAAC;AACpC,GAAG;AACH,EAAE,OAAO,EAAE;AACX,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACjE,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC;AAC5B,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,CAAC;AACjD,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACjE,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC;AACzB,GAAG;AACH,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,CAAC;AACrF,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC;AAC1B,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,CAAC;AACrF,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC;AAC3B,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,CAAC;AACrF,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC;AAC7B,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACjE,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC;AACzB,GAAG;AACH,EAAE,iBAAiB,EAAE;AACrB,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACjE,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,uBAAuB,CAAC;AACtC,GAAG;AACH,EAAE,mBAAmB,EAAE;AACvB,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO;AACzB,IAAI,OAAO,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,CAAC;AACjE,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,IAAI,EAAE,GAAG,CAAC,yBAAyB,CAAC;AACxC,GAAG;AACH,CAAC,CAAC;AACF,gBAAgB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvC;AACA,eAAe,UAAU,IAAI,EAAE,EAAE,EAAE;AACnC,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,kBAAkB,UAAU,IAAI,EAAE;AAClC,EAAE,IAAI,QAAQ,CAAC;AACf,EAAE,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAChF,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG,CAAC,EAAE,QAAQ,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,GAAG,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/F,CAAC;;;AC/JD,SAASa,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE;AACzQ;AACA,SAASC,mBAAiB,CAAC,EAAE,EAAE,EAAE,OAAO,YAAY,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,EAAED,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,EAAEA,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACrY;AACA,IAAIE,QAAM,EAAES,iBAAe,EAAEC,SAAO,EAAEH,QAAM,CAAC;AAC7CA,QAAM,GAAGtB,QAAmB,CAAC;AAC7Be,QAAM,GAAGE,QAAmB,CAAC;AAC7BQ,SAAO,GAAGC,SAAoB,CAAC;AAC/B;AACAF,iBAAe,GAAG,YAAY;AAC9B,EAAE,MAAM,eAAe,CAAC;AACxB,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,MAAMF,QAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAChD;AACA,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9C,OAAO;AACP;AACA,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIP,QAAM,CAAC,IAAI,CAAC,CAAC;AACvC,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC9B;AACA,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClE,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AAChD,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACrB,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACtH,QAAQ,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AACnC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM;AACpB,QAAQ,OAAO;AACf,UAAU,MAAM,EAAE,IAAI,CAAC,MAAM;AAC7B,UAAU,UAAU,EAAE,IAAI,CAAC,UAAU;AACrC,SAAS,CAAC;AACV,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE;AACxB,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACnD,QAAQ,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI;AAChC,UAAU,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACjD,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,GAAG,EAAE;AACjB,UAAU,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK;AACrD,YAAY,IAAI,GAAG,CAAC;AACpB,YAAY,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AAC5G,WAAW,CAAC,CAAC;AACb,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE;AAC1B,UAAU,OAAO,OAAO,EAAE,CAAC;AAC3B,SAAS,MAAM;AACf,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/C,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACnD,QAAQ,IAAI,OAAO,CAAC;AACpB,QAAQ,OAAO,GAAGU,SAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK;AACvF,UAAU,IAAI,GAAG,IAAI,IAAI,EAAE;AAC3B,YAAY,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,WAAW;AACX;AACA,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,UAAU,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,YAAY,GAAG;AACnB,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAACA,SAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;AACrD,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACnC,OAAO,CAAC,CAAC,CAAC;AACV,KAAK;AACL;AACA,IAAI,cAAc,CAAC,GAAG,EAAE;AACxB,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;AACvB;AACA,MAAM,OAAOX,mBAAiB,CAAC,aAAa;AAC5C,QAAQ,MAAM,KAAK,CAAC,KAAK,CAAC;AAC1B,QAAQ,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACtD,UAAU,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE;AAC/E,YAAY,IAAI,GAAG,IAAI,IAAI,EAAE;AAC7B,cAAc,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACjC,aAAa,MAAM;AACnB,cAAc,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,aAAa;AACb,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,EAAE,CAAC;AACX,KAAK;AACL;AACA,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC7B,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI;AAC7F,QAAQ,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACrD,UAAU,IAAI,OAAO,CAAC;AACtB;AACA,UAAU,OAAO,GAAG,IAAI,IAAI;AAC5B,YAAY,IAAI,IAAI,KAAK,OAAO,EAAE;AAClC,cAAc,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACnE,cAAc,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;AAChD,cAAc,OAAO,OAAO,EAAE,CAAC;AAC/B,aAAa;AACb,WAAW,CAAC;AACZ;AACA,UAAU,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACnD,UAAU,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACpD,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC,CAAC;AACV,KAAK;AACL;AACA,IAAI,iBAAiB,CAAC,QAAQ,EAAE;AAChC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG;AACjF;AACA,MAAM,YAAY;AAClB,QAAQ,IAAI,IAAI,GAAGA,mBAAiB,CAAC,WAAW,OAAO,EAAE;AACzD,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,YAAY,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1D,cAAc,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,IAAI,EAAE;AACjF,gBAAgB,IAAI,GAAG,IAAI,IAAI,EAAE;AACjC,kBAAkB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,iBAAiB;AACjB;AACA,gBAAgB,IAAI,IAAI,KAAK,OAAO,EAAE;AACtC,kBAAkB,OAAO,OAAO,EAAE,CAAC;AACnC,iBAAiB;AACjB,eAAe,CAAC,CAAC;AACjB,aAAa,CAAC,CAAC;AACf,WAAW;AACX;AACA,UAAU,OAAO,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,OAAO,UAAU,EAAE,EAAE;AAC7B,UAAU,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC7C,SAAS,CAAC;AACV,OAAO,EAAE,CAAC,CAAC,CAAC;AACZ,KAAK;AACL;AACA,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACvC,MAAM,IAAI,IAAI,CAAC;AACf,MAAM,IAAI,GAAGW,SAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,KAAK;AACL;AACA,IAAI,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE;AAC7B,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC;AACA,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClD,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACzD,OAAO;AACP;AACA,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACpC,KAAK;AACL;AACA,GAAG;AAGH,EAAE,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC;AAChD,EAAE,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG;AACvC,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,MAAM,EAAE,IAAI;AAChB,GAAG,CAAC;AACJ,EAAE,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACf;AACA,qBAAc,GAAGD,iBAAe;;AC9LhC,SAASG,gBAAc,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAOC,iBAAe,CAAC,GAAG,CAAC,IAAIC,uBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAIC,kBAAgB,EAAE,CAAC,EAAE;AACvH;AACA,SAASA,kBAAgB,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC,EAAE;AAC5G;AACA,SAASD,uBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE;AACzZ;AACA,SAASD,iBAAe,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE;AACrE;AACA,SAASf,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE;AACzQ;AACA,SAASC,mBAAiB,CAAC,EAAE,EAAE,EAAE,OAAO,YAAY,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,EAAED,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,EAAEA,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACrY;AACA,IAAIE,QAAM,EAAEgB,mBAAiB,EAAEN,SAAO,EAAEH,QAAM,CAAC;AAC/CA,QAAM,GAAGtB,QAAmB,CAAC;AAC7Be,QAAM,GAAGE,QAAmB,CAAC;AAC7BQ,SAAO,GAAGC,SAAoB,CAAC;AAC/B;AACAK,mBAAiB,GAAG,YAAY;AAChC,EAAE,MAAM,iBAAiB,CAAC;AAC1B,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,MAAMT,QAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAChD;AACA,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;AAChD,OAAO;AACP;AACA,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIP,QAAM,CAAC,IAAI,CAAC,CAAC;AACvC,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC9B;AACA,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACpF,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACxF,OAAO,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;AACvE,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChG,OAAO,MAAM;AACb,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AACjC,UAAU,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC3D,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AAClD,OAAO;AACP;AACA,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACtH,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B;AACA,QAAQ,OAAO;AACf,UAAU,MAAM,EAAE,IAAI,CAAC,MAAM;AAC7B,UAAU,UAAU,EAAE,IAAI,CAAC,UAAU;AACrC,SAAS,CAAC;AACV,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE;AACxB,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACnD,QAAQ,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI;AAChC,UAAU,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACjD,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,GAAG,EAAE;AACjB,UAAU,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK;AACrD,YAAY,IAAI,GAAG,CAAC;AACpB,YAAY,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AAC5G,WAAW,CAAC,CAAC;AACb,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;AACvC,UAAU,OAAO,OAAO,EAAE,CAAC;AAC3B,SAAS,MAAM;AACf,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/C,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,YAAY,GAAG;AACnB,MAAM,OAAOU,SAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI;AAC3C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;AAC/C,UAAU,GAAG,EAAEA,SAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AACpC,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,cAAc,CAAC,GAAG,EAAE;AACxB,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;AACvB;AACA,MAAM,OAAOX,mBAAiB,CAAC,aAAa;AAC5C,YAAe,QAAQ;AACvB;AACA,QAAQ,MAAM,KAAK,CAAC,KAAK,CAAC;AAC1B;AACA,QAAQ,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7D;AACA,QAAQ,IAAI,KAAK,GAAGa,gBAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C;AACA,QAAQ,IAAI,MAAM,GAAGA,gBAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAGjD,QAAQ,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,OAAO,OAAO,CAAC;AACvB,OAAO,CAAC,EAAE,CAAC;AACX,KAAK;AACL;AACA,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC7B,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI;AAC7F,QAAQ,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACrD,UAAU,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM;AAC1D,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;AAC9C,YAAY,OAAO,OAAO,EAAE,CAAC;AAC7B,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC,CAAC;AACV,KAAK;AACL;AACA,IAAI,iBAAiB,CAAC,QAAQ,EAAE;AAChC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO;AACpE;AACA,MAAM,YAAY;AAClB,QAAQ,IAAI,KAAK,GAAGb,mBAAiB,CAAC,WAAW,OAAO,EAAE;AAC1D,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,YAAY,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACzD,WAAW;AACX;AACA,UAAU,OAAO,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,OAAO,UAAU,EAAE,EAAE;AAC7B,UAAU,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC9C,SAAS,CAAC;AACV,OAAO,EAAE,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACvC,MAAM,IAAI,IAAI,CAAC;AACf,MAAM,IAAI,GAAGW,SAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAClD,KAAK;AACL;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE;AAC7B,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACzB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC;AACA,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClD,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACzD,OAAO;AACP;AACA,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7B;AACA,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9E,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACtC,OAAO;AACP,KAAK;AACL;AACA,GAAG;AAGH,EAAE,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;AACpD,EAAE,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG;AACzC,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,MAAM,EAAE,IAAI;AAChB,GAAG,CAAC;AACJ,EAAE,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACf;AACA,uBAAc,GAAGM,mBAAiB;;ACvLlC,SAASJ,gBAAc,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAOC,iBAAe,CAAC,GAAG,CAAC,IAAIC,uBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAIC,kBAAgB,EAAE,CAAC,EAAE;AACvH;AACA,SAASA,kBAAgB,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC,EAAE;AAC5G;AACA,SAASD,uBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE;AACzZ;AACA,SAASD,iBAAe,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE;AACrE;AACA,SAASf,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE;AACzQ;AACA,SAASC,mBAAiB,CAAC,EAAE,EAAE,EAAE,OAAO,YAAY,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,EAAED,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,EAAEA,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACrY;AACA,IAAIK,iBAAe,EAAEa,mBAAiB,EAAEP,iBAAe,EAAEQ,gBAAc,EAAEV,QAAM,CAAC;AAChFA,QAAM,GAAGtB,QAAmB,CAAC;AAC7BkB,iBAAe,GAAGD,iBAA4B,CAAC;AAC/CO,iBAAe,GAAGE,iBAA4B,CAAC;AAC/CK,mBAAiB,GAAGE,mBAA8B,CAAC;AACnDD,gBAAc,GAAG,MAAM,cAAc,CAAC;AACtC,EAAE,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE;AAC5D,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACjD,IAAIV,QAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;AACpD;AACA,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AACjC,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,OAAO,GAAG,IAAIE,iBAAe,CAAC;AAClF,QAAQ,KAAK,EAAE,IAAI,CAAC,KAAK;AACzB,QAAQ,aAAa,EAAE,IAAI,CAAC,aAAa;AACzC,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;AAC7B,QAAQ,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;AACpC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,GAAG,IAAIO,mBAAiB,CAAC;AACzE,QAAQ,KAAK,EAAE,IAAI,CAAC,KAAK;AACzB,QAAQ,aAAa,EAAE,IAAI,CAAC,aAAa;AACzC,QAAQ,YAAY,EAAE,IAAI,CAAC,YAAY;AACvC,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;AAC7B,QAAQ,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;AACpC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AAClB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AACxD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI;AACvD,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7B,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AACnF,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM;AAClB,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3D,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM;AAClB,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACzE,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM;AAClB,MAAM,IAAI,IAAI,CAAC;AACf;AACA,MAAM,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM;AAC5D,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;AAC1D,UAAU,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1D,SAAS,CAAC,CAAC;AACX,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,KAAK,UAAU,EAAE;AACxD,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC;AAC1B,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,IAAI,OAAOjB,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,MAAM,CAAC;AACjB;AACA,MAAM,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;AACnC;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,MAAM,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACvF,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC;AACnG;AACA,MAAM,IAAI;AACV,QAAQ,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,QAAQ,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB;AACA,QAAQ,IAAI,IAAI,KAAK,UAAU,EAAE;AACjC,UAAU,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACpF,SAAS,MAAM,IAAI,IAAI,KAAK,mBAAmB,EAAE;AACjD,UAAU,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C;AACA,UAAU,IAAI,YAAY,GAAGa,gBAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC5D;AACA,UAAU,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AACxC,UAAU,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,UAAU,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AACpC,UAAU,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AACrE;AACA,UAAU,IAAI,cAAc,KAAK,MAAM,CAAC,QAAQ,EAAE;AAClD,YAAY,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAChE,YAAY,WAAW,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5E,YAAY,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAClI,WAAW,MAAM,IAAI,cAAc,KAAK,EAAE,EAAE;AAC5C,YAAY,YAAY,CAAC,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,YAAY,OAAO,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC5D,YAAY,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACvD,WAAW,MAAM;AACjB,YAAY,OAAO,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,GAAG,UAAU;AACxE;AACA,YAAYb,mBAAiB,CAAC,aAAa;AAC3C,cAAc,IAAI,CAAC,CAAC;AACpB;AACA,cAAc,IAAI;AAClB,gBAAgB,OAAO,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAChE,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC7E,gBAAgB,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjE,eAAe,CAAC,OAAO,KAAK,EAAE;AAC9B,gBAAgB,CAAC,GAAG,KAAK,CAAC;AAC1B,gBAAgB,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAClE,eAAe;AACf,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;AACtB,WAAW;AACX,SAAS,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;AACvC,UAAU,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjE,SAAS,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;AACvC,UAAU,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;AACxD,SAAS;AACT,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,CAAC,GAAG,KAAK,CAAC;AAClB,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1D,OAAO;AACP,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClC;AACA,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC/B,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9D,KAAK,MAAM;AACX,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/C,KAAK;AACL,GAAG;AACH;AACA,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;AACxB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,EAAE,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,iBAAiB,CAAC,EAAE;AAC5D,QAAQ,MAAM,MAAM,CAAC,KAAK,CAAC;AAC3B,OAAO;AACP;AACA,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACrD,QAAQ,IAAI,QAAQ,EAAE,GAAG,CAAC;AAC1B,QAAQ,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9D;AACA,QAAQ,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/F;AACA,QAAQ,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,EAAE,OAAO,EAAE;AAC1G,UAAU,IAAI,GAAG,IAAI,IAAI,EAAE;AAC3B,YAAY,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,WAAW;AACX;AACA,UAAU,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AAClC,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC5D,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;AACpB,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,wBAAwB,EAAE;AACpD,UAAU,IAAI,IAAI,KAAK,WAAW,EAAE;AACpC,YAAY,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5C,WAAW,MAAM;AACjB,YAAY,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AAC1F,cAAc,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClD,aAAa,CAAC,CAAC;AACf,WAAW;AACX,SAAS,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,gBAAgB,EAAE;AACnD,UAAU,OAAO,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AAC5F,YAAY,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChD,WAAW,CAAC,CAAC;AACb,SAAS,MAAM;AACf,UAAU,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,YAAY,CAAC,GAAG,EAAE;AACpB,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3B,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AAClD,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,aAAa,CAAC,GAAG,EAAE;AACrB,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAClB,IAAI,GAAG,GAAG,EAAE,CAAC;AACb;AACA,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE;AACnB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,mBAAmB,CAAC,KAAK,EAAE;AAC7B,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE;AACnE,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU;AACzB,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;AACpC,MAAM,YAAY,EAAE,IAAI,CAAC,OAAO;AAChC,MAAM,aAAa,EAAE,IAAI,CAAC,aAAa;AACvC,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvD,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,WAAW,CAAC,CAAC,EAAE;AACjB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AACf,GAAG;AACH;AACA,EAAE,kBAAkB,CAAC,OAAO,EAAE;AAC9B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,MAAM,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E,MAAM,OAAOQ,QAAM,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AACrE,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACzC,GAAG;AACH;AACA,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,GAAG;AACH;AACA,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOR,mBAAiB,CAAC,aAAa;AAC1C,MAAM,OAAO,MAAM,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC;AAC7E,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,sBAAsB,CAAC,IAAI,EAAE;AAC/B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,GAAG;AACH;AACA,EAAE,oBAAoB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AACnD,GAAG;AACH;AACA,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,OAAO,MAAM,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAClG,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;AAC1C,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOA,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;AACnC;AACA,MAAM,IAAI,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACvG;AACA,MAAM,IAAI,KAAK,GAAGa,gBAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3C;AACA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AAC5C,QAAQ,IAAI;AACZ,QAAQ,SAAS;AACjB,OAAO,CAAC;AACR,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE;AAClC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOb,mBAAiB,CAAC,aAAa;AAC1C,UAAU,OAAO,EAAE,CAAC,EAAE,aAAa,EAAc,UAAU,EAAE,SAAS;AACtE;AACA,MAAM,IAAI;AACV,QAAQ,IAAI,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACjG;AACA,QAAQ,IAAI,KAAK,GAAGa,gBAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7C;AACA,QAAQ,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,OAAO;AACf,UAAU,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;AACpD,UAAU,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AAC9C,UAAU,QAAQ;AAClB,SAAS,CAAC;AACV,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,CAAC,GAAG,KAAK,CAAC;AAClB;AACA,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACnD,UAAU,IAAI,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtD;AACA,UAAU,IAAI,iBAAiB,GAAGA,gBAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAGtE,UAAU,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACxC,UAAU,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC/C,UAAU,MAAM,IAAIT,iBAAe,CAAC,CAAC,2CAA2C,EAAE,MAAM,CAAC,gDAAgD,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5J,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,CAAC;AAClB,SAAS;AACT,OAAO;AACP,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAOJ,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,OAAO,CAAC;AAClB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7E,MAAM,OAAO;AACb,QAAQ,OAAO;AACf,OAAO,CAAC;AACR,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,CAAC,CAAC;AACF,oBAAc,GAAGkB,gBAAc;;AC7V/B,IAAI,eAAe,EAAEE,QAAM,CAAC;AAC5B,eAAe,GAAGlC,iBAA4B,CAAC;AAC/CkC,QAAM,GAAG,MAAM,MAAM,CAAC;AACtB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;AAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY;AAC9C,MAAM,OAAO,CAAC,CAAC;AACf,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,IAAI,CAAC,EAAE,EAAE;AACX,IAAI,IAAI,OAAO,EAAE,IAAI,CAAC;AACtB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7B,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;AACvB;AACA,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACtD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9B,KAAK,MAAM,IAAI,OAAO,IAAI,IAAI,EAAE;AAChC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7B,MAAM,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnC,KAAK;AACL,GAAG;AACH;AACA,EAAE,KAAK,CAAC,EAAE,EAAE;AACZ,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;AAC7B,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAClC,GAAG;AACH;AACA,EAAE,MAAM,CAAC,EAAE,EAAE;AACb,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7B;AACA,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE;AACzB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7B,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5B,KAAK;AACL;AACA,IAAI,OAAO,OAAO,IAAI,IAAI,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,SAAS,CAAC,EAAE,EAAE;AAChB,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;AACpE,GAAG;AACH;AACA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AAChC;AACA,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACxB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC;AACA,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;AACnB,QAAQ,MAAM,IAAI,eAAe,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,OAAO;AACP;AACA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,MAAM,KAAK,CAAC,IAAI,GAAG,EAAE;AACrB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAS;AACT,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,KAAK;AACL,GAAG;AACH;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK;AAC7C,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,GAAG;AACH;AACA,CAAC,CAAC;AACF,YAAc,GAAGA,QAAM;;ACrFvB,SAASrB,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE;AACzQ;AACA,SAASC,mBAAiB,CAAC,EAAE,EAAE,EAAE,OAAO,YAAY,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,EAAED,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,EAAEA,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACrY;AACA,IAAI,MAAM,EAAEsB,MAAI,CAAC;AACjB,MAAM,GAAGnC,QAAmB,CAAC;AAC7BmC,MAAI,GAAG,MAAM,IAAI,CAAC;AAClB,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;AAC7B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AACpC,GAAG;AACH;AACA,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,IAAI,OAAOrB,mBAAiB,CAAC,aAAa;AAC1C,MAAM,IAAI,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;AAC3D;AACA,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzB;AACA,QAAQ,IAAI,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACtD;AACA,QAAQ,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;AACvC,QAAQ,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;AACvC,QAAQ,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAC7C,QAAQ,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC3C,QAAQ,EAAE,GAAG,MAAMA,mBAAiB,CAAC,aAAa;AAClD,UAAU,IAAI;AACd,YAAY,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3C,YAAY,OAAO,YAAY;AAC/B,cAAc,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvC,aAAa,CAAC;AACd,WAAW,CAAC,OAAO,MAAM,EAAE;AAC3B,YAAY,KAAK,GAAG,MAAM,CAAC;AAC3B,YAAY,OAAO,YAAY;AAC/B,cAAc,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,aAAa,CAAC;AACd,WAAW;AACX,SAAS,CAAC,EAAE,CAAC;AACb,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzB;AACA,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;AAC1B;AACA,QAAQ,OAAO,EAAE,EAAE,CAAC;AACpB,OAAO;AACP,KAAK,CAAC,EAAE,CAAC;AACT,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;AAC1B,IAAI,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;AACjC,IAAI,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;AAC5B,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE,OAAO,EAAE;AAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC;AACzB,MAAM,OAAO,MAAM,GAAG,OAAO,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACrB,MAAM,IAAI;AACV,MAAM,IAAI;AACV,MAAM,OAAO;AACb,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,CAAC,CAAC;AACF,UAAc,GAAGqB,MAAI;;;;;;;;;AC7ErB,SAASR,gBAAc,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAOC,iBAAe,CAAC,GAAG,CAAC,IAAIC,uBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAIC,kBAAgB,EAAE,CAAC,EAAE;AACvH;AACA,SAASA,kBAAgB,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC,EAAE;AAC5G;AACA,SAASD,uBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE;AACzZ;AACA,SAASD,iBAAe,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE;AACrE;AACA,SAASf,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE;AACzQ;AACA,SAASC,mBAAiB,CAAC,EAAE,EAAE,EAAE,OAAO,YAAY,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,EAAED,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,EAAEA,oBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACrY;AACA,IAAIE,QAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAEO,QAAM,CAAC;AACvEA,QAAM,GAAGtB,QAAmB,CAAC;AAC7Be,QAAM,GAAGE,QAAmB,CAAC;AAC7B,eAAe,GAAGS,iBAA4B,CAAC;AAC/C,iBAAiB,GAAGO,mBAA8B,CAAC;AACnD,OAAO,GAAGG,SAAoB,CAAC;AAC/B;AACA,KAAK,GAAG,YAAY;AACpB,EAAE,MAAM,KAAK,CAAC;AACd,IAAI,WAAW,CAAC,cAAc,GAAG,EAAE,EAAE;AACrC,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjD,MAAM,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AAC3C,MAAMd,QAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5D,MAAM,IAAI,CAAC,MAAM,GAAG,IAAIP,QAAM,CAAC,IAAI,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC1B,MAAM,IAAI,CAAC,UAAU,GAAGsB,UAAuB,CAAC;AAChD;AACA,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC/B;AACA,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;AACtD;AACA,MAAM,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,OAAO,EAAE;AACvD,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE;AACvF,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;AAC/B,WAAW,CAAC,CAAC,CAAC;AACd,SAAS,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,SAAS,EAAE;AAChE,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE;AACzF,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;AAC/B,WAAW,CAAC,CAAC,CAAC;AACd,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE;AAClB,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM;AAChE,QAAQ,IAAI,OAAO,CAAC;AACpB,QAAQ,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;AAC/F,UAAU,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC,UAAU,OAAO,EAAE,IAAI,CAAC,OAAO;AAC/B,UAAU,UAAU,EAAE,IAAI,CAAC,UAAU;AACrC,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACrD,QAAQ,OAAO,OAAO,CAAC;AACvB,OAAO,GAAG,CAAC;AACX,KAAK;AACL;AACA,IAAI,SAAS,CAAC,GAAG,GAAG,EAAE,EAAE;AACxB,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;AACvB;AACA,MAAM,OAAOvB,mBAAiB,CAAC,aAAa;AAC5C,QAAQ,IAAI,OAAO,EAAE,QAAQ,CAAC;AAC9B,QAAQ,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxC;AACA,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE;AAC9B,UAAU,OAAO,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7G,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,UAAU,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACtC,UAAU,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AACtC,SAAS;AACT;AACA,QAAQ,OAAO,QAAQ,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC;AAC/C,OAAO,CAAC,EAAE,CAAC;AACX,KAAK;AACL;AACA,IAAI,QAAQ,GAAG;AACf,MAAM,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;AAC3B,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB;AACA,MAAM,KAAK,CAAC,IAAI,GAAG,EAAE;AACrB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,UAAU,GAAG,EAAE,CAAC;AAChB,UAAU,OAAO,EAAE,CAAC;AACpB,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL;AACA,IAAI,IAAI,GAAG;AACX,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzC,KAAK;AACL;AACA,IAAI,WAAW,GAAG;AAClB,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,MAAM,OAAOA,mBAAiB,CAAC,aAAa;AAC5C,QAAQ,IAAI,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC;AAC7D;AACA,QAAQ,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;AACvC,UAAU,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,EAAE,CAAC;AAClB,QAAQ,MAAM,GAAG,IAAI,CAAC;AACtB,QAAQ,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,QAAQ,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;AACjC;AACA,QAAQ,OAAO,MAAM,KAAK,CAAC,EAAE;AAC7B,UAAU,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACzJ;AACA,UAAU,IAAI,KAAK,GAAGa,gBAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9C;AACA,UAAU,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,UAAU,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,UAAU,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;AAC1B;AACA,UAAU,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACxD,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,WAAW;AACX,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO,CAAC,EAAE,CAAC;AACX,KAAK;AACL;AACA,IAAI,iBAAiB,GAAG;AACxB,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,MAAM,IAAI,IAAI,CAAC;AACf,MAAM,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,MAAM,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW;AACvD;AACA,MAAMb,mBAAiB,CAAC,aAAa;AACrC,QAAQ,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,QAAQ,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;AAC/B,QAAQ,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,QAAQ,KAAK,CAAC,IAAI,GAAG,EAAE;AACvB,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB;AACA,UAAU,IAAI;AACd,YAAY,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACrD,cAAc,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,aAAa,MAAM;AACnB,cAAc,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,aAAa;AACb,WAAW,CAAC,OAAO,KAAK,EAAE;AAC1B,YAAY,CAAC,GAAG,KAAK,CAAC;AACtB,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,WAAW;AACX,SAAS;AACT;AACA,QAAQ,OAAO,OAAO,CAAC;AACvB,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;AAC1E,KAAK;AACL;AACA,IAAI,cAAc,CAAC,OAAO,GAAG,EAAE,EAAE;AACjC,MAAMQ,QAAM,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrD,MAAMA,QAAM,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9D;AACA,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,OAAO;AACP,KAAK;AACL;AACA,IAAI,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE;AAC7B,MAAM,IAAI,GAAG,CAAC;AACd;AACA,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAClC,QAAQ,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAChF,OAAO;AACP,KAAK;AACL;AACA,GAAG;AAGH,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG;AAC7B,IAAI,OAAO,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC;AAC1B,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,EAAE,EAAE,WAAW;AACnB,GAAG,CAAC;AACJ,EAAE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACf;AACA,WAAc,GAAG,KAAK;;ACnMtB,IAAI,OAAO,EAAEP,QAAM,EAAEO,QAAM,CAAC;AAC5BA,QAAM,GAAGtB,QAAmB,CAAC;AAC7Be,QAAM,GAAGE,QAAmB,CAAC;AAC7B;AACA,OAAO,GAAG,YAAY;AACtB,EAAE,MAAM,OAAO,CAAC;AAChB,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7B,MAAMK,QAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrD,MAAM,IAAI,CAAC,MAAM,GAAG,IAAIP,QAAM,CAAC,IAAI,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACrB;AACA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B;AACA,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACnC,KAAK;AACL;AACA,IAAI,aAAa,GAAG;AACpB,MAAM,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AAC5D,QAAQ,OAAO,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AACnC,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,MAAM,GAAG;AACb,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACnC;AACA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtB;AACA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACrB,MAAM,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;AAClC,KAAK;AACL;AACA,IAAI,GAAG,CAAC,IAAI,EAAE;AACd,MAAM,IAAI,GAAG,CAAC;AACd;AACA,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B;AACA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC1B;AACA,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE;AAC7C,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,OAAO,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACjE,QAAQ,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM;AACzC,UAAU,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzB,OAAO;AACP;AACA,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK;AACL;AACA,GAAG;AAGH,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG;AAC/B,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,OAAO,EAAE,OAAO;AACpB,GAAG,CAAC;AACJ,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACf;AACA,aAAc,GAAG,OAAO;;AC/DxB,SAAS,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,gBAAgB,EAAE,CAAC,EAAE;AACvH;AACA,SAAS,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE;AACzZ;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,gBAAgB,EAAE,CAAC,EAAE;AACtG;AACA,SAAS,gBAAgB,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC,EAAE;AAC5G;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,oBAAoB,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AAClK;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE;AACrE;AACA,SAAS,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE;AACzQ;AACA,SAAS,iBAAiB,CAAC,EAAE,EAAE,EAAE,OAAO,YAAY,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACrY;AACA,IAAI,UAAU;AACd,IAAI,gBAAgB;AACpB,IAAI,MAAM;AACV,IAAI,GAAG;AACP,IAAI,cAAc;AAClB,IAAI,cAAc;AAClB,IAAI,MAAM;AACV,IAAI,cAAc;AAClB,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,MAAM;AACV,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;AACvB,cAAc,GAAG,EAAE,CAAC;AACpB,gBAAgB,GAAG,CAAC,CAAC;AACrB,MAAM,GAAGf,QAAmB,CAAC;AAC7B,MAAM,GAAGiB,QAAmB,CAAC;AAC7B,GAAG,GAAGS,KAAgB,CAAC;AACvB,cAAc,GAAGO,gBAA2B,CAAC;AAC7C,cAAc,GAAGG,gBAA2B,CAAC;AAC7C,MAAM,GAAGC,QAAmB,CAAC;AAC7B,MAAM,GAAGC,QAAmB,CAAC;AAC7B,IAAI,GAAGC,MAAiB,CAAC;AACzB;AACA,UAAU,GAAG,YAAY;AACzB,EAAE,MAAM,UAAU,CAAC;AACnB,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE;AAC1C,MAAM,IAAI,oBAAoB,EAAE,YAAY,CAAC;AAC7C,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD;AACA,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C;AACA,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACxD,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC3B,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7H,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC3B,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1D,MAAM,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAClE;AACA,MAAM,IAAI,CAAC,MAAM,GAAG,YAAY;AAChC,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AACnG,UAAU,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACnF,UAAU,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAC9E,SAAS,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;AAC/C,UAAU,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACnF,UAAU,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAC9E,SAAS,MAAM;AACf,UAAU,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtG,SAAS;AACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM;AACxC,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AACnH,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM;AACpC,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AACvH,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE;AACvC,MAAM,IAAI,EAAE,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACrF,QAAQ,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,uJAAuJ,CAAC,CAAC;AAChN,OAAO;AACP,KAAK;AACL;AACA,IAAI,KAAK,GAAG;AACZ,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/B,KAAK;AACL;AACA,IAAI,OAAO,GAAG;AACd,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,KAAK;AACL;AACA,IAAI,OAAO,GAAG;AACd,MAAM,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,KAAK;AACL;AACA,IAAI,cAAc,GAAG;AACrB,MAAM,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,KAAK;AACL;AACA,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE;AAC7B,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/C,KAAK;AACL;AACA,IAAI,KAAK,CAAC,QAAQ,EAAE;AACpB,MAAM,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,aAAa,GAAG;AACpB,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACtC,KAAK;AACL;AACA,IAAI,KAAK,GAAG;AACZ,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC/D,KAAK;AACL;AACA,IAAI,OAAO,GAAG;AACd,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,GAAG;AACX,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACpC,KAAK;AACL;AACA,IAAI,SAAS,CAAC,EAAE,EAAE;AAClB,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACxC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7C,KAAK;AACL;AACA,IAAI,MAAM,GAAG;AACb,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AACzC,KAAK;AACL;AACA,IAAI,YAAY,GAAG;AACnB,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;AAC1C,QAAQ,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;AACxD,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACtC,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO,MAAM;AACb,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL;AACA,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE;AAC1C,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;AACvB;AACA,MAAM,OAAO,iBAAiB,CAAC,aAAa;AAC5C,QAAQ,IAAI,CAAC,EAAE,OAAO,CAAC;AACvB;AACA,QAAQ,IAAI;AACZ,UAAU,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACxE;AACA,UAAU,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC;AACA,UAAU,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1E;AACA,UAAU,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAC9C,YAAY,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChD,WAAW;AACX,SAAS,CAAC,OAAO,MAAM,EAAE;AACzB,UAAU,CAAC,GAAG,MAAM,CAAC;AACrB,UAAU,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,OAAO,CAAC,EAAE,CAAC;AACX,KAAK;AACL;AACA,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;AAC3B,MAAM,IAAI,gBAAgB,EAAE,IAAI,EAAE,GAAG,CAAC;AACtC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;AAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/C,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG;AACtC,QAAQ,OAAO,EAAE,UAAU,CAAC,MAAM;AAClC,UAAU,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3E,SAAS,EAAE,IAAI,CAAC;AAChB,QAAQ,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,GAAG,UAAU,CAAC,YAAY;AAC5E,UAAU,OAAO,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3D,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AAClD,QAAQ,GAAG,EAAE,GAAG;AAChB,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,MAAM,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM;AAC/C,QAAQ,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAC9C;AACA,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACjC,UAAU,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAS;AACT;AACA,QAAQ,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACxC;AACA,QAAQ,IAAI,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;AAC1C;AACA,QAAQ,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACjC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B;AACA,QAAQ,IAAI,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,EAAE;AAC3D,UAAU,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;AAC/D,UAAU,IAAI;AACd,UAAU,OAAO;AACjB,SAAS,CAAC,CAAC;AACX,QAAQ,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AACzF,UAAU,OAAO;AACjB,UAAU,IAAI;AACd,UAAU,SAAS;AACnB,SAAS,KAAK;AACd,UAAU,IAAI,KAAK,CAAC;AACpB,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;AAChE,YAAY,OAAO;AACnB,YAAY,IAAI;AAChB,YAAY,OAAO;AACnB,WAAW,CAAC,CAAC;AACb;AACA,UAAU,IAAI,OAAO,EAAE;AACvB,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC;AAC1B,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACjC;AACA,YAAY,IAAI,KAAK,EAAE;AACvB,cAAc,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3C,aAAa;AACb;AACA,YAAY,IAAI,SAAS,KAAK,CAAC,EAAE;AACjC,cAAc,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACrD,aAAa;AACb;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC;AACA,YAAY,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,WAAW,MAAM;AACjB,YAAY,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE;AACnC,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI;AACtD,QAAQ,IAAI,WAAW,CAAC;AACxB;AACA,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAE;AAC7B,UAAU,WAAW,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AACzE,UAAU,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;AAC9D,SAAS,MAAM;AACf,UAAU,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAS;AACT,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;AACpB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/C,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,cAAc,CAAC,OAAO,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE;AAClD,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC;AAC1B,UAAU,OAAO;AACjB,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE;AACvB,MAAM,IAAI,IAAI,EAAE,gBAAgB,CAAC;AACjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACxD;AACA,MAAM,gBAAgB,GAAG,EAAE,IAAI;AAC/B,QAAQ,IAAI,QAAQ,CAAC;AACrB;AACA,QAAQ,QAAQ,GAAG,MAAM;AACzB,UAAU,IAAI,MAAM,CAAC;AACrB,UAAU,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACvC,UAAU,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACtE,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACrD,UAAU,IAAI,QAAQ,EAAE,EAAE;AAC1B,YAAY,OAAO,OAAO,EAAE,CAAC;AAC7B,WAAW,MAAM;AACjB,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM;AACzC,cAAc,IAAI,QAAQ,EAAE,EAAE;AAC9B,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAChD,gBAAgB,OAAO,OAAO,EAAE,CAAC;AACjC,eAAe;AACf,aAAa,CAAC,CAAC;AACf,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,CAAC;AACR;AACA,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,IAAI,EAAE;AAC3E,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,UAAU,OAAO,EAAE,OAAO,CAAC,gBAAgB;AAC3C,SAAS,CAAC,CAAC;AACX,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,MAAM;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM;AAC3C,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM;AAC/C,UAAU,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACxB,UAAU,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AAChC;AACA,UAAU,KAAK,CAAC,IAAI,GAAG,EAAE;AACzB,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB;AACA,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;AAChE,cAAc,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACtC,cAAc,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AACzC,cAAc,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3B,gBAAgB,OAAO,EAAE,OAAO,CAAC,gBAAgB;AACjD,eAAe,CAAC,CAAC;AACjB,aAAa;AACb,WAAW;AACX;AACA,UAAU,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACxD;AACA,UAAU,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACrC,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC1B,QAAQ,QAAQ,EAAE,cAAc,GAAG,CAAC;AACpC,QAAQ,MAAM,EAAE,CAAC;AACjB,OAAO,EAAE,MAAM;AACf,QAAQ,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACnC,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE;AACrC,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAClG,OAAO,CAAC;AACR;AACA,MAAM,IAAI,CAAC,IAAI,GAAG,MAAM;AACxB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAC/G,OAAO,CAAC;AACR;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,MAAM,OAAO,iBAAiB,CAAC,aAAa;AAC5C,QAAQ,IAAI,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;AACzE,QAAQ,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACxB,QAAQ,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAC9B;AACA,QAAQ,IAAI;AACZ,UAAU,IAAI,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACtF;AACA,UAAU,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AACxC,UAAU,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAClC,UAAU,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACpC,SAAS,CAAC,OAAO,MAAM,EAAE;AACzB,UAAU,KAAK,GAAG,MAAM,CAAC;AACzB;AACA,UAAU,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1E,YAAY,IAAI;AAChB,YAAY,OAAO;AACnB,YAAY,KAAK;AACjB,WAAW,CAAC,CAAC;AACb;AACA,UAAU,GAAG,CAAC,MAAM,CAAC;AACrB,YAAY,KAAK;AACjB,WAAW,CAAC,CAAC;AACb,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT;AACA,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC;AACvB,UAAU,OAAO,IAAI,CAAC;AACtB,SAAS,MAAM,IAAI,UAAU,EAAE;AAC/B,UAAU,OAAO,GAAG,QAAQ,KAAK,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,KAAK,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAC9S;AACA,UAAU,IAAI,OAAO,IAAI,IAAI,EAAE;AAC/B,YAAY,OAAO,CAAC,MAAM,EAAE,CAAC;AAC7B,WAAW;AACX;AACA,UAAU,IAAI,OAAO,IAAI,IAAI,IAAI,QAAQ,KAAK,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACtF,YAAY,IAAI,OAAO,IAAI,IAAI,EAAE;AACjC,cAAc,GAAG,CAAC,MAAM,EAAE,CAAC;AAC3B,aAAa;AACb;AACA,YAAY,OAAO,UAAU,CAAC;AAC9B,WAAW;AACX,SAAS;AACT;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzC;AACA,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC;AACA,QAAQ,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AACjC,QAAQ,OAAO,UAAU,CAAC;AAC1B,OAAO,CAAC,EAAE,CAAC;AACX,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,GAAG,EAAE;AAClB,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;AAC1D,QAAQ,GAAG,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,0CAA0C,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9H;AACA,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO,MAAM;AACb,QAAQ,GAAG,CAAC,SAAS,EAAE,CAAC;AACxB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChE,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE;AACpB,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;AAChD;AACA,MAAM,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AACzC,QAAQ,IAAI,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC;AACtD;AACA,QAAQ,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AACtO,QAAQ,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,OAAO,MAAM;AACb,QAAQ,IAAI,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC;AACvD;AACA,QAAQ,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AAC/P,QAAQ,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACzD,OAAO;AACP;AACA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK;AAC1B,QAAQ,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AAC3D,UAAU,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE;AAChD,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC;AAC9D,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,CAAC;AACX,OAAO,CAAC;AACR;AACA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACvH,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE;AACvC,QAAQ,OAAO,OAAO,EAAE,KAAK,UAAU,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AAC/D,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE;AAC/B,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACjC,UAAU,OAAO,OAAO,EAAE,KAAK,UAAU,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AACjE,SAAS,MAAM;AACf,UAAU,OAAO,OAAO,EAAE,KAAK,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AAC9D,SAAS;AACT,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChC,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,GAAG,IAAI,EAAE;AACtB,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;AAC7B;AACA,MAAM,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AACzC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB;AACA,QAAQ,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrC;AACA,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,OAAO,GAAG,EAAE,CAAC;AACrB,OAAO,MAAM;AACb,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;AAC1B;AACA,QAAQ,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtC;AACA,QAAQ,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,OAAO;AACP;AACA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACvH;AACA,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzB;AACA,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC;AACzB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,MAAM,IAAI,QAAQ,EAAE,OAAO,CAAC;AAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,MAAM,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,IAAI,EAAE;AAC1C,QAAQ,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AAChD,OAAO,CAAC;AACR;AACA,MAAM,OAAO,CAAC,WAAW,GAAG,UAAU,OAAO,EAAE,GAAG,IAAI,EAAE;AACxD,QAAQ,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9C,OAAO,CAAC;AACR;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL;AACA,IAAI,cAAc,CAAC,OAAO,GAAG,EAAE,EAAE;AACjC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AACxB;AACA,MAAM,OAAO,iBAAiB,CAAC,aAAa;AAC5C,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAChG,QAAQ,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACnE,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO,CAAC,EAAE,CAAC;AACX,KAAK;AACL;AACA,IAAI,gBAAgB,GAAG;AACvB,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;AAChD,KAAK;AACL;AACA,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE;AACjC,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtD,KAAK;AACL;AACA,GAAG;AAGH,EAAE,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC;AAClC,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,EAAE,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,UAAyB,CAAC,OAAO,CAAC;AACxF,EAAE,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG;AACxD,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,iBAAiB,EAAE,CAAC;AACxB,IAAI,KAAK,EAAE,CAAC;AACZ,GAAG,CAAC;AACJ,EAAE,UAAU,CAAC,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,eAAe,GAAGC,iBAA4B,CAAC;AACnG,EAAE,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,GAAGC,OAAkB,CAAC;AACrE,EAAE,UAAU,CAAC,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,eAAe,GAAGC,iBAA4B,CAAC;AACnG,EAAE,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAGC,mBAA8B,CAAC;AACzG,EAAE,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,GAAGC,SAAoB,CAAC;AAC3E,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG;AACrC,IAAI,QAAQ,EAAE,gBAAgB;AAC9B,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,EAAE,EAAE,SAAS;AACjB,GAAG,CAAC;AACJ,EAAE,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG;AACvC,IAAI,aAAa,EAAE,IAAI;AACvB,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI;AAChD,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,wBAAwB,EAAE,IAAI;AAClC,IAAI,sBAAsB,EAAE,IAAI;AAChC,IAAI,yBAAyB,EAAE,IAAI;AACnC,IAAI,uBAAuB,EAAE,IAAI;AACjC,IAAI,wBAAwB,EAAE,IAAI;AAClC,GAAG,CAAC;AACJ,EAAE,UAAU,CAAC,SAAS,CAAC,kBAAkB,GAAG;AAC5C,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,iBAAiB,EAAE,GAAG;AAC1B,GAAG,CAAC;AACJ,EAAE,UAAU,CAAC,SAAS,CAAC,kBAAkB,GAAG;AAC5C,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,iBAAiB,EAAE,IAAI;AAC3B,IAAI,aAAa,EAAE,KAAK;AACxB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,cAAc,EAAE,KAAK;AACzB,IAAI,UAAU,EAAE,IAAI;AACpB,GAAG,CAAC;AACJ,EAAE,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG;AAC1C,IAAI,SAAS,EAAE,OAAO;AACtB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,OAAO,EAAE,OAAO;AACpB,GAAG,CAAC;AACJ,EAAE,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG;AACtC,IAAI,mBAAmB,EAAE,2DAA2D;AACpF,IAAI,eAAe,EAAE,IAAI;AACzB,IAAI,gBAAgB,EAAE,gCAAgC;AACtD,GAAG,CAAC;AACJ,EAAE,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACf;AACA,gBAAc,GAAG,UAAU;;AC/kB3B,OAAc,GAAG,UAAuB;;ACoExC,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,WAAW,GAAG,KAAK,GAAGC,SAAQ,CAAC;MACpD,YAAY;IAYd;IAXD,QAAQ,GAAc,SAAS,CAAC;IAChC,OAAO,GAAG,IAAIC,GAAU,CAAC;QAC/B,SAAS,EAAE,GAAG;QACd,sBAAsB,EAAE,GAAG;QAC3B,wBAAwB,EAAE,EAAE,GAAG,IAAI;QAEnC,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEH,YACS,MAIN;QAJM,WAAM,GAAN,MAAM,CAIZ;QAGD,IAAI,WAAW,IAAI,MAAM,EAAE;YACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;SAC5D;QAED,IAEE,EAAE,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC;YAEhC,EAAE,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EACxE;YACA,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;SACpC;QAED,IACE,cAAc,IAAI,MAAM,CAAC,WAAW;aACnC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,EAC/D;YACA,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;SACH;KACF;IAED,MAAM,eAAe;QACnB,IAAI;YACF,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;SACb;QAAC,MAAM;YACN,OAAO,KAAK,CAAC;SACd;KACF;IAED,MAAM,UAAU;QACd,OAAO,KAAK,CAAC,OAAO,CAClB,MAAM,IAAI,CAAC,OAAO,CAAa;YAC7B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,UAAU;SAC7C,CAAC,CACH,CAAC;KACH;IAED,MAAM,QAAQ,CAAC,MAAgB;QAC7B,OAAO,KAAK,CAAC,KAAK,CAChB,MAAM,IAAI,CAAC,OAAO,CAAW;YAC3B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,WAChC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,eAC5B,EAAE;YACF,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;SAChC,CAAC,CACH,CAAC;KACH;IAED,MAAM,SAAS,CAAC,SAAoB,EAAE;QACpC,OAAO,KAAK,CAAC,MAAM,CACjB,MAAM,IAAI,CAAC,OAAO,CAAa;YAC7B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,SAAS;YAC3C,IAAI,EAAE;gBACJ,GAAG,MAAM;gBACT,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;aAC/D;SACF,CAAC,CACH,CAAC;KACH;IAED,MAAM,UAAU,CAAC,MAAkB;QACjC,OAAO,KAAK,CAAC,KAAK,CAChB,MAAM,IAAI,CAAC,OAAO,CAAW;YAC3B,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,SAAS;YAC3C,IAAI,EAAE,MAAM;SACb,CAAC,CACH,CAAC;KACH;IAED,MAAM,YAAY,CAAC,MAAoB;QACrC,OAAO,KAAK,CAAC,KAAK,CAChB,MAAM,IAAI,CAAC,OAAO,CAAW;YAC3B,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,WAAW,MAAM,CAAC,QAAQ,EAAE;YAC9D,IAAI,EAAE,MAAM;SACb,CAAC,CACH,CAAC;KACH;IAED,WAAW,CAAC,MAAmB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAU;YAC3B,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,WAAW,MAAM,CAAC,QAAQ,EAAE;YAC9D,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;KACJ;IAED,MAAM,YAAY;QAChB,OAAO,KAAK,CAAC,eAAe,CAC1B,MAAM,IAAI,CAAC,OAAO,CAAwB;YACxC,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,SAAS;SAC5C,CAAC,CACH,CAAC;KACH;IAED,MAAM,WAAW,CAAC,MAAmB;QACnC,OAAO,KAAK,CAAC,QAAQ,CACnB,MAAM,IAAI,CAAC,OAAO,CAAc;YAC9B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,cAAc,MAAM,CAAC,MAAM,EAAE;SAChE,CAAC,CACH,CAAC;KACH;IAED,MAAM,YAAY;QAChB,OAAO,KAAK,CAAC,SAAS,CACpB,MAAM,IAAI,CAAC,OAAO,CAAgB;YAChC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,YAAY;SAC/C,CAAC,CACH,CAAC;KACH;IAED,MAAM,aAAa,CAAC,MAAqB;QACvC,OAAO,KAAK,CAAC,KAAK,CAChB,MAAM,IAAI,CAAC,OAAO,CAAW;YAC3B,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,cAAc,MAAM,CAAC,MAAM,EAAE;YAC/D,IAAI,EAAE,MAAM;SACb,CAAC,CACH,CAAC;KACH;IAED,MAAM,cAAc,CAAC,MAAsB;QACzC,OAAO,KAAK,CAAC,MAAM,CACjB,MAAM,IAAI,CAAC,OAAO,CAAa;YAC7B,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,GACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OACrB,4BAA4B,IAAI,CAAC,SAAS,CACxC,MAAM,CAAC,aAAa,IAAI,KAAK,CAC9B,EAAE;SACJ,CAAC,CACH,CAAC;KACH;IAED,QAAQ,CAAC,MAAgB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,WAAW,MAAM,CAAC,kBAAkB,EAAE;SACzE,CAAC,CAAC;KACJ;IAED,SAAS,CAAC,MAAkB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,SAAS;YAC3C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;KACJ;IAED,YAAY,CAAC,MAAoB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,eAAe,MAAM,CAAC,IAAI,EAAE;SAC/D,CAAC,CAAC;KACJ;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,aAAa;SAChD,CAAC,CAAC;KACJ;IAED,eAAe,CAAC,MAAuB;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,aAAa;YAC/C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;KACJ;IAED,eAAe,CAAC,MAAuB;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,eAAe,MAAM,CAAC,IAAI,EAAE;YAC9D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;KACJ;IAED,cAAc,CAAC,MAAsB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,eAAe,MAAM,CAAC,IAAI,EAAE;YAC9D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;KACJ;IAED,mBAAmB,CAAC,MAA2B;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAU;YAC3B,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,eAAe,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;SAChF,CAAC,CAAC;KACJ;IAED,eAAe,CAAC,MAAuB;QACrC,OAAO,IAAI,CAAC,OAAO,CAAU;YAC3B,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,eAAe,MAAM,CAAC,IAAI,EAAE;SAC/D,CAAC,CAAC;KACJ;IAED,WAAW,CAAC,MAAoB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,WAAW;YAC7C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;KACJ;IAED,OAAO,CAAC,MAAgB;QAEtB,IAAI,SAAS,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACxD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO;YACtC,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;KACJ;IAED,MAAM,QAAQ;QACZ,OAAO,KAAK,CAAC,KAAK,CAChB,MAAM,IAAI,CAAC,OAAO,CAAC;YACjB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,QAAQ;SAC3C,CAAC,CACH,CAAC;KACH;IAED,wBAAwB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,yBAAyB;SAC5D,CAAC,CAAC;KACJ;IAED,2BAA2B,CACzB,MAAmC;QAEnC,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,yBAAyB;YAC3D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;KACJ;IAED,MAAM,oBAAoB,CACxB,MAA4B;QAE5B,IAAI,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;YACjE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACzD;QAED,OAAO,KAAK,CAAC,UAAU,CACrB,MAAM,IAAI,CAAC,OAAO,CAAgB;YAChC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,sBAChC,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAC5D,EAAE;YACF,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE;SAC9C,CAAC,CACH,CAAC;KACH;IAED,mBAAmB,CAAC,MAA4B;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,4BAA4B;YAC9D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;KACJ;IAGD,MAAM,UAAU,CACd,MAAkB;QAElB,MAAM,WAAW,GAAsD;YACrE,GAAG,MAAM;YACT,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;SAClC,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;YACxB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,SAAS,MAAM,CAAC,SAAS,EAAE;YACpE,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;KACJ;IAGD,MAAM,eAAe,CAAC,MAAuB;QAC3C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;YACxB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,gBAAgB,MAAM,CAAC,MAAM,EAAE;SACzE,CAAC,CAAC;KACJ;IAGD,MAAM,eAAe,CAAC,MAAuB;QAC3C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;YACxB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,sBAAsB,MAAM,CAAC,MAAM,EAAE;SAC/E,CAAC,CAAC;KACJ;IAED,MAAM,SAAS,CAAC,MAAiB;QAC/B,OAAO,KAAK,CAAC,YAAY,CACvB,MAAM,IAAI,CAAC,OAAO,CAAC;YACjB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,WAAW,MAAM,CAAC,MAAM,SAAS;YAC1E,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;SACvC,CAAC,CACH,CAAC;KACH;IAED,MAAM,SAAS,CAAC,MAAiB;QAC/B,OAAO,KAAK,CAAC,YAAY,CACvB,MAAM,IAAI,CAAC,OAAO,CAAC;YACjB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,WAAW,MAAM,CAAC,MAAM,SAAS;YAC1E,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;SACvC,CAAC,CACH,CAAC;KACH;IAED,MAAM,OAAO,CAAC,MAAe;QAC3B,OAAO,KAAK,CAAC,UAAU,CACrB,MAAM,IAAI,CAAC,OAAO,CAAC;YACjB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,WAAW,MAAM,CAAC,MAAM,OAAO;YACxE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;SACvC,CAAC,CACH,CAAC;KACH;IAED,MAAM,cAAc,CAAC,EACnB,MAAM,EACN,IAAI,EACJ,KAAK,GACU;QACf,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,IAAI,IAAI,IAAI,KAAK,EAAE;YACjB,KAAK,GAAG,GAAG,CAAC,MAAM,CAACC,KAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SACnD;QAED,OAAO,KAAK,CAAC,WAAW,CACtB,MAAM,IAAI,CAAC,OAAO,CAAC;YACjB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,WAAW,MAAM,gBAAgB,CAAC,MAAM,CAC/E,KAAK,CACN;SACF,CAAC,CACH,CAAC;KACH;IAED,MAAM,WAAW,CAAC,MAAmB;QACnC,OAAO,KAAK,CAAC,QAAQ,CACnB,MAAM,IAAI,CAAC,OAAO,CAAC;YACjB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,WAAW,MAAM,CAAC,MAAM,WAAW;SAC7E,CAAC,CACH,CAAC;KACH;IAED,MAAM,YAAY,CAChB,MAAoB;QAEpB,OAAO,KAAK,CAAC,SAAS,CACpB,MAAM,IAAI,CAAC,OAAO,CAAC;YACjB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cACrB,6BAA6B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;SACxD,CAAC,CACH,CAAC;KACH;IAEO,MAAM,OAAO,CAAU,MAK9B;QACC,IAAI,OAAO,GAAQ,EAAE,CAAC;QAEtB,IAAI,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC7C,OAAO,CACL,eAAe,CAChB,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;SACtD;aAAM;YACL,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;YACzD,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;SACjE;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;YACjC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;SACvD;QAED,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,IAAI,MAAM,CAAC,IAAI,EAAE;YAEf,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACpD,IAAI,KAAK,YAAY,IAAI,EAAE;oBACzB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,KAAc,CAAC,WAAW,EAAE,CAAC;iBAClD;aACF;YAGD,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBACrD,KAAK,GAAG,GAAG,CAAC,MAAM,CAACA,KAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;aACzB;SACF;QAED,MAAM,QAAQ,GAAG,MACb,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;SAClC,CAAC,EACJ,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;cACzB,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;cACrC,QAAQ,CAAC;QAEf,IAAI,IAAI,EACN,MAAM,GAAG,EAAE,CAAC;QAEd,IAAI;YACF,IAAI,GAAG,MAAM,IAAI,EAAE,CAAC;YAEpB,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE;gBACxD,OAAO,IAAI,CAAC,EAAS,CAAC;aACvB;YAED,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;SAC5B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM,MAAM,CAAC;SACd;QAED,IAAI,MAAM,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,EAAE;YAC3C,MAAM,MAAM,CAAC;SACd;QAED,OAAO,MAAa,CAAC;KACtB;;;ACliBH,UAAc,GAAG,KAAK,IAAI;AAC1B,CAAC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AAClC,EAAE,OAAO,KAAK,CAAC;AACf,EAAE;AACF;AACA,CAAC,OAAO,KAAK,YAAY,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC;AAC3F,CAAC;;ACRD;AACA;AACA,IAAI,EAAE,GAAG,KAAI;AACb;AACA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACtC,EAAE,EAAE,GAAG,UAAS;AAChB,CAAC,MAAM,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;AAChD,EAAE,EAAE,GAAG,aAAY;AACnB,CAAC,MAAM,IAAI,OAAOC,cAAM,KAAK,WAAW,EAAE;AAC1C,EAAE,EAAE,GAAGA,cAAM,CAAC,SAAS,IAAIA,cAAM,CAAC,aAAY;AAC9C,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC1C,EAAE,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,aAAY;AAC9C,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AACxC,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAY;AAC1C,CAAC;AACD;AACA,WAAc,GAAG;;;ACfjB;AACA,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AACzC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,GAAG,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE;AACnB,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;AAC9C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC/B,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACf,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,KAAK,CAAC;AAC5B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACxD,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,IAAI,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,EAAE,IAAI,CAAC;AACrD,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAC5C;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;AACrF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/D;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE;AAClC,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;AACnE,OAAO,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,GAAG;AACxB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;AAC9B,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACxB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;AAC1D,EAAE,IAAI,KAAK,GAAG,EAAE;AAChB,MAAM,MAAM;AACZ,MAAM,IAAI,CAAC;AACX;AACA,EAAE,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;AAC5C;AACA,EAAE,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG;AACxC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1E,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,qBAAqB,EAAE;AACpC,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,CAAC,KAAK,EAAE;AAC7D,EAAE,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK;AAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC3B,EAAE,IAAI,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,KAAK,EAAE;AACrE,EAAE,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK;AAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpC;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3B,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC7B,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;AAC1B,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACvE,EAAE,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAC5C;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC;AACvC;AACA,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACnC,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM;AAC5B,MAAM,IAAI;AACV,MAAM,CAAC,CAAC;AACR;AACA,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE;AACpB,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAClF;AACA,IAAI,QAAQ,GAAG;AACf,MAAM,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;AAChE,MAAM,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;AACpE,MAAM,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;AACxE,MAAM,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;AAC5E,MAAM,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;AAChF,MAAM,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;AACpF,KAAK;AACL;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACxD,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACjC,KAAK;AACL;AACA,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAChD,GAAG,MAAM;AACT,IAAI,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM;AACjC,QAAQ,CAAC,CAAC;AACV;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC1F;AACA,MAAM,QAAQ,GAAG;AACjB,QAAQ,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;AAClE,QAAQ,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;AACtE,QAAQ,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;AAC1E,QAAQ,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;AAC9E,QAAQ;AACR,UAAU,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACzE,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACvC,WAAW;AACX;AACA,UAAU,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5D,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE;AAC5D,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE;AAChE,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1F,EAAE,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAC5C;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;AACtC,EAAE,IAAI,CAAC,EAAE,EAAE;AACX,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpC;AACA,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE;AACpB,IAAI;AACJ,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE;AACzB,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC;AAC/B,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC;AACjD,MAAM;AACN,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7E,MAAM;AACN,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AAC9B,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,SAAS,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;AACrD,QAAQ;AACR,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACpF,SAAS,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,kBAAkB,CAAC,KAAK,EAAE;AAC/E,EAAE,IAAI,GAAG,CAAC;AACV;AACA,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAC1C,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjD,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;AAChC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC;AACnE,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;AAC/D;AACA;AACA;AACA;AACA,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC;AAC/B;AACA;AACA;AACA;AACA,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC;AACA;AACA;AACA;AACmC;AACnC,EAAE,iBAAiB,YAAY,CAAC;AAChC;;;MCtSa,YAAa,SAAQC,aAAmC;IAOvD;IANJ,IAAI,CAAS;IACb,UAAU,CAAY;IACtB,aAAa,CAAU;IACvB,QAAQ,GAAc,SAAS,CAAC;IAExC,YACY,MAKT;QAGD,KAAK,EAAE,CAAC;QARE,WAAM,GAAN,MAAM,CAKf;QAMD,IAAI,WAAW,IAAI,MAAM,EAAE;YACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;SAC5D;QAED,IAEE,EAAE,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC;YAEhC,EAAE,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EACxE;YACA,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;SACpC;QAGD,QAAQ,MAAM,CAAC,IAAI;YACjB,KAAK,SAAS;gBACZ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK;sBAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;sBAC7D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC;gBACpC,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpE,MAAM;YACR;gBACE,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;SACzB;QAED,IAAI,CAAC,UAAU,GAAG,IAAIC,OAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;YACvB,IAAI,OAAO,GAAG,EAAE,CAAC;YAEjB,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,KAAK,SAAS;oBACZ,OAAO,GAAG;wBACR,MAAM,EAAE,cAAc;wBACtB,IAAI,EAAE;4BACJ,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG;4BAC9B,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;yBACtC;qBACF,CAAC;oBACF,MAAM;gBACR,KAAK,aAAa;oBAEhB,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;oBACpD,MAAM;aACT;YAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAG9C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SACzB,CAAC;QAGF,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEzD,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,KAAU;YAC3C,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAEtB,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;gBAChB,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAChC;iBAAM,IAAI,IAAI,YAAY,WAAW,EAAE;gBACtC,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aAC3D;YAED,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAC3B,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;YAE/D,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAY;gBAE5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAG9B,IAAI,GAAG,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,IAAI,eAAe,EAAE;oBACpD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;iBAClC;qBAAM,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,eAAe,EAAE;oBACnE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,YAAY,EAAE;wBACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;wBAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;qBAClC;iBACF;gBAGD,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,eAAe,EAAE;oBAC5D,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC9D;gBAGD,MAAM,CAAC,GAAsC;oBAC3C,OAAO,EAAE,SAAS;oBAClB,YAAY,EAAE,cAAc;oBAC5B,KAAK,EAAE,OAAO;oBACd,CAAC,EAAE,OAAO;oBACV,CAAC,EAAE,OAAO;oBACV,CAAC,EAAE,KAAK;iBACT,CAAC;gBAEF,IAAI,GAAG,IAAI,OAAO,EAAE;oBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;iBAChD;aACF,CAAC,CAAC;SACJ,CAAC;QAGF,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,GAAyB;YAClD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SACzB,CAAC;KACH;IAQD,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAOD,SAAS,CAAC,OAAgB,EAAE,UAAoB,EAAE;QAChD,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,KAAK,SAAS;gBAEZ,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CACnE,CAAC;gBACF,MAAM;YACR,KAAK,aAAa;gBAEhB,IAAI,OAAO,GAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;gBAC3C,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,MAAM;SACT;QAED,OAAO,IAAI,CAAC;KACb;IAOD,WAAW,CAAC,OAAgB,EAAE,UAAoB,EAAE;QAClD,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,KAAK,SAAS;gBAEZ,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CACrE,CAAC;gBACF,MAAM;YACR,KAAK,aAAa;gBAEhB,IAAI,OAAO,GAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;gBAC7C,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,MAAM;SACT;QAED,OAAO,IAAI,CAAC;KACb;IAEO,IAAI,CAAC,OAAY;QAEvB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACtC;QAGD,IAAI,OAAO,OAAO,IAAI,QAAQ,EAAE;YAC9B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SACnC;QAGD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAG9B,OAAO,IAAI,CAAC;KACb;;;AC7OH,YAAe;IACb,YAAY,EAAE,YAAY;IAC1B,YAAY,EAAE,YAAY;CAC3B;;;;"} \ No newline at end of file diff --git a/dist/alpaca.browser.modern.min.js b/dist/alpaca.browser.modern.min.js deleted file mode 100644 index da70f4d..0000000 --- a/dist/alpaca.browser.modern.min.js +++ /dev/null @@ -1 +0,0 @@ -import require$$0$3 from"util";var shams=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var n=Object.getOwnPropertySymbols(e);if(1!==n.length||n[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0},origSymbol="undefined"!=typeof Symbol&&Symbol,hasSymbols$1=function(){return"function"==typeof origSymbol&&("function"==typeof Symbol&&("symbol"==typeof origSymbol("foo")&&("symbol"==typeof Symbol("bar")&&shams())))},ERROR_MESSAGE="Function.prototype.bind called on incompatible ",slice=Array.prototype.slice,toStr$1=Object.prototype.toString,funcType="[object Function]",implementation=function(e){var t=this;if("function"!=typeof t||toStr$1.call(t)!==funcType)throw new TypeError(ERROR_MESSAGE+t);for(var r,n=slice.call(arguments,1),i=function(){if(this instanceof r){var i=t.apply(this,n.concat(slice.call(arguments)));return Object(i)===i?i:this}return t.apply(e,n.concat(slice.call(arguments)))},s=Math.max(0,t.length-n.length),o=[],a=0;a1&&"boolean"!=typeof t)throw new $TypeError$1('"allowMissing" argument must be a boolean');var r=stringToPath(e),n=r.length>0?r[0]:"",i=getBaseIntrinsic("%"+n+"%",t),s=i.name,o=i.value,a=!1,c=i.alias;c&&(n=c[0],$spliceApply(r,$concat([0,1],c)));for(var l=1,u=!0;l=r.length){var y=$gOPD(o,p);o=(u=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:o[p]}else u=src(o,p),o=o[p];u&&!a&&(INTRINSICS[s]=o)}}return o},commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getAugmentedNamespace(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})})),t}function createCommonjsModule(e){var t={exports:{}};return e(t,t.exports),t.exports}var callBind=createCommonjsModule((function(e){var t=getIntrinsic("%Function.prototype.apply%"),r=getIntrinsic("%Function.prototype.call%"),n=getIntrinsic("%Reflect.apply%",!0)||functionBind.call(r,t),i=getIntrinsic("%Object.getOwnPropertyDescriptor%",!0),s=getIntrinsic("%Object.defineProperty%",!0),o=getIntrinsic("%Math.max%");if(s)try{s({},"a",{value:1})}catch(e){s=null}e.exports=function(e){var t=n(functionBind,r,arguments);if(i&&s){var a=i(t,"length");a.configurable&&s(t,"length",{value:1+o(0,e.length-(arguments.length-1))})}return t};var a=function(){return n(functionBind,t,arguments)};s?s(e.exports,"apply",{value:a}):e.exports.apply=a})),$indexOf=callBind(getIntrinsic("String.prototype.indexOf")),callBound=function(e,t){var r=getIntrinsic(e,!!t);return"function"==typeof r&&$indexOf(e,".prototype.")>-1?callBind(r):r},util_inspect=require$$0$3.inspect,hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,hasWeakMap="function"==typeof WeakMap&&WeakMap.prototype,weakMapHas=hasWeakMap?WeakMap.prototype.has:null,hasWeakSet="function"==typeof WeakSet&&WeakSet.prototype,weakSetHas=hasWeakSet?WeakSet.prototype.has:null,hasWeakRef="function"==typeof WeakRef&&WeakRef.prototype,weakRefDeref=hasWeakRef?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,match=String.prototype.match,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),inspectCustom=util_inspect.custom,inspectSymbol=inspectCustom&&isSymbol(inspectCustom)?inspectCustom:null,toStringTag="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null,objectInspect=function e(t,r,n,i){var s=r||{};if(has$3(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has$3(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=!has$3(s,"customInspect")||s.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has$3(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,s);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var a=void 0===s.depth?5:s.depth;if(void 0===n&&(n=0),n>=a&&a>0&&"object"==typeof t)return isArray$3(t)?"[Array]":"[Object]";var c=getIndent(s,n);if(void 0===i)i=[];else if(indexOf(i,t)>=0)return"[Circular]";function l(t,r,o){if(r&&(i=i.slice()).push(r),o){var a={depth:s.depth};return has$3(s,"quoteStyle")&&(a.quoteStyle=s.quoteStyle),e(t,a,n+1,i)}return e(t,s,n+1,i)}if("function"==typeof t){var u=nameOf(t),p=arrObjKeys(t,l);return"[Function"+(u?": "+u:" (anonymous)")+"]"+(p.length>0?" { "+p.join(", ")+" }":"")}if(isSymbol(t)){var d=hasShammedSymbols?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?d:markBoxed(d)}if(isElement(t)){for(var h="<"+String(t.nodeName).toLowerCase(),y=t.attributes||[],f=0;f"}if(isArray$3(t)){if(0===t.length)return"[]";var _=arrObjKeys(t,l);return c&&!singleLineValues(_)?"["+indentedJoin(_,c)+"]":"[ "+_.join(", ")+" ]"}if(isError(t)){var m=arrObjKeys(t,l);return 0===m.length?"["+String(t)+"]":"{ ["+String(t)+"] "+m.join(", ")+" }"}if("object"==typeof t&&o){if(inspectSymbol&&"function"==typeof t[inspectSymbol])return t[inspectSymbol]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(isMap(t)){var g=[];return mapForEach.call(t,(function(e,r){g.push(l(r,t,!0)+" => "+l(e,t))})),collectionOf("Map",mapSize.call(t),g,c)}if(isSet(t)){var v=[];return setForEach.call(t,(function(e){v.push(l(e,t))})),collectionOf("Set",setSize.call(t),v,c)}if(isWeakMap(t))return weakCollectionOf("WeakMap");if(isWeakSet(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber(t))return markBoxed(l(Number(t)));if(isBigInt(t))return markBoxed(l(bigIntValueOf.call(t)));if(isBoolean(t))return markBoxed(booleanValueOf.call(t));if(isString(t))return markBoxed(l(String(t)));if(!isDate(t)&&!isRegExp$1(t)){var b=arrObjKeys(t,l),w=gPO?gPO(t)===Object.prototype:t instanceof Object||t.constructor===Object,$=t instanceof Object?"":"null prototype",S=!w&&toStringTag&&Object(t)===t&&toStringTag in t?toStr(t).slice(8,-1):$?"Object":"",k=(w||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(S||$?"["+[].concat(S||[],$||[]).join(": ")+"] ":"");return 0===b.length?k+"{}":c?k+"{"+indentedJoin(b,c)+"}":k+"{ "+b.join(", ")+" }"}return String(t)};function wrapQuotes(e,t,r){var n="double"===(r.quoteStyle||t)?'"':"'";return n+e+n}function quote(e){return String(e).replace(/"/g,""")}function isArray$3(e){return!("[object Array]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isDate(e){return!("[object Date]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isRegExp$1(e){return!("[object RegExp]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isError(e){return!("[object Error]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isString(e){return!("[object String]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isNumber(e){return!("[object Number]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isBoolean(e){return!("[object Boolean]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isSymbol(e){if(hasShammedSymbols)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!symToString)return!1;try{return symToString.call(e),!0}catch(e){}return!1}function isBigInt(e){if(!e||"object"!=typeof e||!bigIntValueOf)return!1;try{return bigIntValueOf.call(e),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(e){return e in this};function has$3(e,t){return hasOwn.call(e,t)}function toStr(e){return objectToString.call(e)}function nameOf(e){if(e.name)return e.name;var t=match.call(functionToString.call(e),/^function\s*([\w$]+)/);return t?t[1]:null}function indexOf(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,n=e.length;rt.maxStringLength){var r=e.length-t.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return inspectString(e.slice(0,t.maxStringLength),t)+n}return wrapQuotes(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,lowbyte),"single",t)}function lowbyte(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function markBoxed(e){return"Object("+e+")"}function weakCollectionOf(e){return e+" { ? }"}function collectionOf(e,t,r,n){return e+" ("+t+") {"+(n?indentedJoin(r,n):r.join(", "))+"}"}function singleLineValues(e){for(var t=0;t=0)return!1;return!0}function getIndent(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}function indentedJoin(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function arrObjKeys(e,t){var r=isArray$3(e),n=[];if(r){n.length=e.length;for(var i=0;i1;){var t=e.pop(),r=t.obj[t.prop];if(isArray$2(r)){for(var n=[],i=0;i=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||i===formats.RFC1738&&(40===c||41===c)?o+=s.charAt(a):c<128?o+=hexTable[c]:c<2048?o+=hexTable[192|c>>6]+hexTable[128|63&c]:c<55296||c>=57344?o+=hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&s.charCodeAt(a)),o+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|63&c])}return o},compact=function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],n=0;n0?_.join(",")||null:void 0}];else if(isArray$1(a))m=a;else{var v=Object.keys(_);m=c?v.sort(c):v}for(var b=0;b0?d+p:""},has=Object.prototype.hasOwnProperty,isArray=Array.isArray,defaults={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:utils.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},interpretNumericEntities=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},parseArrayValue=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function(e,t){var r,n={},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,s=t.parameterLimit===1/0?void 0:t.parameterLimit,o=i.split(t.delimiter,s),a=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r-1&&(u=isArray(u)?[u]:u),has.call(n,l)?n[l]=utils.combine(n[l],u):n[l]=u}return n},parseObject=function(e,t,r,n){for(var i=n?t:parseArrayValue(t,r),s=e.length-1;s>=0;--s){var o,a=e[s];if("[]"===a&&r.parseArrays)o=[].concat(i);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,l=parseInt(c,10);r.parseArrays||""!==c?!isNaN(l)&&a!==c&&String(l)===c&&l>=0&&r.parseArrays&&l<=r.arrayLimit?(o=[])[l]=i:o[c]=i:o={0:i}}i=o}return i},parseKeys=function(e,t,r,n){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/g,o=r.depth>0&&/(\[[^[\]]*])/.exec(i),a=o?i.slice(0,o.index):i,c=[];if(a){if(!r.plainObjects&&has.call(Object.prototype,a)&&!r.allowPrototypes)return;c.push(a)}for(var l=0;r.depth>0&&null!==(o=s.exec(i))&&le,buying_power:number(e.buying_power),regt_buying_power:number(e.regt_buying_power),daytrading_buying_power:number(e.daytrading_buying_power),cash:number(e.cash),created_at:new Date(e.created_at),portfolio_value:number(e.portfolio_value),multiplier:number(e.multiplier),equity:number(e.equity),last_equity:number(e.last_equity),long_market_value:number(e.long_market_value),short_market_value:number(e.short_market_value),initial_margin:number(e.initial_margin),maintenance_margin:number(e.maintenance_margin),last_maintenance_margin:number(e.last_maintenance_margin),sma:number(e.sma),status:e.status}}catch(e){throw new Error(`Account parsing failed. ${e.message}`)}}function clock(e){if(e)try{return{raw:()=>e,timestamp:new Date(e.timestamp),is_open:e.is_open,next_open:new Date(e.next_open),next_close:new Date(e.next_close)}}catch(e){throw new Error(`Order parsing failed. ${e.message}`)}}function latestTrade(e){if(e)try{return{...e,raw:()=>e,trade:{...e.trade,t:new Date(e.trade.t)}}}catch(e){throw new Error(`Latest trade parsing failed. ${e.message}`)}}function order(e){if(e)try{return{...e,raw:()=>e,created_at:new Date(e.created_at),updated_at:new Date(e.updated_at),submitted_at:new Date(e.submitted_at),filled_at:new Date(e.filled_at),expired_at:new Date(e.expired_at),canceled_at:new Date(e.canceled_at),failed_at:new Date(e.failed_at),replaced_at:new Date(e.replaced_at),qty:number(e.qty),filled_qty:number(e.filled_qty),type:e.type,side:e.side,time_in_force:e.time_in_force,limit_price:number(e.limit_price),stop_price:number(e.stop_price),filled_avg_price:number(e.filled_avg_price),status:e.status,legs:orders(e.legs),trail_price:number(e.trail_price),trail_percent:number(e.trail_percent),hwm:number(e.hwm),order_class:e.order_class}}catch(e){throw new Error(`Order parsing failed. ${e.message}`)}}function orders(e){return e?e.map((e=>order(e))):void 0}function canceled_order(e){if(!e)return;let t=e.body;delete e.body;try{return{...e,order:{...t,raw:()=>t,created_at:new Date(t.created_at),updated_at:new Date(t.updated_at),submitted_at:new Date(t.submitted_at),filled_at:new Date(t.filled_at),expired_at:new Date(t.expired_at),canceled_at:new Date(t.canceled_at),failed_at:new Date(t.failed_at),replaced_at:new Date(t.replaced_at),qty:number(t.qty),filled_qty:number(t.filled_qty),type:t.type,side:t.side,time_in_force:t.time_in_force,limit_price:number(t.limit_price),stop_price:number(t.stop_price),filled_avg_price:number(t.filled_avg_price),status:t.status,legs:orders(t.legs),trail_price:number(t.trail_price),trail_percent:number(t.trail_percent),hwm:number(t.hwm),order_class:t.order_class}}}catch(e){throw new Error(`Order parsing failed. ${e.message}`)}}function canceled_orders(e){return e?e.map((e=>canceled_order(e))):void 0}function position(e){if(e)try{return{...e,raw:()=>e,avg_entry_price:number(e.avg_entry_price),qty:number(e.qty),side:e.side,market_value:number(e.market_value),cost_basis:number(e.cost_basis),unrealized_pl:number(e.unrealized_pl),unrealized_plpc:number(e.unrealized_plpc),unrealized_intraday_pl:number(e.unrealized_intraday_pl),unrealized_intraday_plpc:number(e.unrealized_intraday_plpc),current_price:number(e.current_price),lastday_price:number(e.lastday_price),change_today:number(e.change_today)}}catch(e){throw new Error(`Position parsing failed. ${e.message}`)}}function positions(e){return e?e.map((e=>position(e))):void 0}function tradeActivity(e){if(e)try{return{...e,raw:()=>e,cum_qty:number(e.cum_qty),leaves_qty:number(e.leaves_qty),price:number(e.price),qty:number(e.qty),side:e.side,type:e.type}}catch(e){throw new Error(`TradeActivity parsing failed. ${e.message}`)}}function nonTradeActivity(e){if(e)try{return{...e,raw:()=>e,net_amount:number(e.net_amount),qty:number(e.qty),per_share_amount:number(e.per_share_amount)}}catch(e){throw new Error(`NonTradeActivity parsing failed. ${e.message}`)}}function activities(e){if(e)try{return e.map((e=>"FILL"===e.activity_type?tradeActivity(e):nonTradeActivity(e)))}catch(e){throw new Error(`Activity parsing failed. ${e.message}`)}}function pageOfTrades(e){if(e)try{return{raw:()=>e,trades:(null==e.trades?[]:e.trades).map((e=>({raw:()=>e,...e,t:new Date(e.t)}))),symbol:e.symbol,next_page_token:e.next_page_token}}catch(e){throw new Error(`PageOfTrades parsing failed "${e.message}"`)}}function pageOfQuotes(e){if(e)try{return{raw:()=>e,quotes:(null==e.quotes?[]:e.quotes).map((e=>({raw:()=>e,...e,t:new Date(e.t)}))),symbol:e.symbol,next_page_token:e.next_page_token}}catch(e){throw new Error(`PageOfTrades parsing failed "${e.message}"`)}}function pageOfBars(e){if(e)try{return{raw:()=>e,bars:(null==e.bars?[]:e.bars).map((e=>({raw:()=>e,...e,t:new Date(e.t)}))),symbol:e.symbol,next_page_token:e.next_page_token}}catch(e){throw new Error(`PageOfTrades parsing failed "${e.message}"`)}}function snapshot(e){if(e)try{return{...e,raw:()=>e,latestTrade:e.latestTrade?{...e.latestTrade,t:new Date(e.latestTrade.t)}:null,latestQuote:e.latestQuote?{...e.latestQuote,t:new Date(e.latestQuote.t)}:null,minuteBar:e.minuteBar?{...e.minuteBar,t:new Date(e.minuteBar.t)}:null,dailyBar:e.dailyBar?{...e.dailyBar,t:new Date(e.dailyBar.t)}:null,prevDailyBar:e.prevDailyBar?{...e.prevDailyBar,t:new Date(e.prevDailyBar.t)}:null}}catch(e){throw new Error(`Snapshot parsing failed "${e.message}"`)}}function snapshots(e){let t={};for(let[r,n]of Object.entries(e))t[r]=snapshot(n);return t}function number(e){if(void 0===e||null==e)return e;const t=parseFloat(e);return Number.isNaN(t)?null:t}function trade_update(e){if(e)return{raw:()=>e,event:e.event,execution_id:e.execution_id,order:order(e.order),...e.event_id&&{event_id:number(e.event_id)},...e.at&&{at:new Date(e.at)},...e.timestamp&&{timestamp:new Date(e.timestamp)},...e.position_qty&&{position_qty:number(e.position_qty)},...e.price&&{price:number(e.price)},...e.qty&&{qty:number(e.qty)}}}var parse={account:account,activities:activities,clock:clock,nonTradeActivity:nonTradeActivity,order:order,orders:orders,canceled_orders:canceled_orders,position:position,positions:positions,tradeActivity:tradeActivity,pageOfTrades:pageOfTrades,pageOfQuotes:pageOfQuotes,pageOfBars:pageOfBars,snapshot:snapshot,snapshots:snapshots,trade_update:trade_update,latestTrade:latestTrade};function unfetch_module(e,t){return t=t||{},new Promise((function(r,n){var i=new XMLHttpRequest,s=[],o=[],a={},c=function(){return{ok:2==(i.status/100|0),statusText:i.statusText,status:i.status,url:i.responseURL,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},clone:c,headers:{keys:function(){return s},entries:function(){return o},get:function(e){return a[e.toLowerCase()]},has:function(e){return e.toLowerCase()in a}}}};for(var l in i.open(t.method||"get",e,!0),i.onload=function(){i.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,r){s.push(t=t.toLowerCase()),o.push([t,r]),a[t]=a[t]?a[t]+","+r:r})),r(c())},i.onerror=n,i.withCredentials="include"==t.credentials,t.headers)i.setRequestHeader(l,t.headers[l]);i.send(t.body||null)}))}var unfetch_module$1=Object.freeze({__proto__:null,default:unfetch_module}),require$$0$2=getAugmentedNamespace(unfetch_module$1),browser$1=self.fetch||(self.fetch=require$$0$2.default||require$$0$2);const endpoints={rest:{beta:"https://data.alpaca.markets/v1beta1",account:"https://api.alpaca.markets/v2",market_data_v2:"https://data.alpaca.markets/v2",market_data_v1:"https://data.alpaca.markets/v1"},websocket:{account:"wss://api.alpaca.markets/stream",market_data:(e="iex")=>`wss://stream.data.alpaca.markets/v2/${e}`}};var load=function(e,t,r={}){var n,i,s;for(n in t)s=t[n],r[n]=null!=(i=e[n])?i:s;return r},overwrite=function(e,t,r={}){var n,i;for(n in e)i=e[n],void 0!==t[n]&&(r[n]=i);return r},parser$8={load:load,overwrite:overwrite},DLList$2;DLList$2=class{constructor(e,t){this.incr=e,this.decr=t,this._first=null,this._last=null,this.length=0}push(e){var t;this.length++,"function"==typeof this.incr&&this.incr(),t={value:e,prev:this._last,next:null},null!=this._last?(this._last.next=t,this._last=t):this._first=this._last=t}shift(){var e;if(null!=this._first)return this.length--,"function"==typeof this.decr&&this.decr(),e=this._first.value,null!=(this._first=this._first.next)?this._first.prev=null:this._last=null,e}first(){if(null!=this._first)return this._first.value}getArray(){var e,t,r;for(e=this._first,r=[];null!=e;)r.push((t=e,e=e.next,t.value));return r}forEachShift(e){var t;for(t=this.shift();null!=t;)e(t),t=this.shift()}debug(){var e,t,r,n,i;for(e=this._first,i=[];null!=e;)i.push((t=e,e=e.next,{value:t.value,prev:null!=(r=t.prev)?r.value:void 0,next:null!=(n=t.next)?n.value:void 0}));return i}};var DLList_1=DLList$2,Events$6;function asyncGeneratorStep$8(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$8(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$8(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$8(s,n,i,o,a,"throw",e)}o(void 0)}))}}Events$6=class{constructor(e){if(this.instance=e,this._events={},null!=this.instance.on||null!=this.instance.once||null!=this.instance.removeAllListeners)throw new Error("An Emitter already exists for this object");this.instance.on=(e,t)=>this._addListener(e,"many",t),this.instance.once=(e,t)=>this._addListener(e,"once",t),this.instance.removeAllListeners=(e=null)=>null!=e?delete this._events[e]:this._events={}}_addListener(e,t,r){var n;return null==(n=this._events)[e]&&(n[e]=[]),this._events[e].push({cb:r,status:t}),this.instance}listenerCount(e){return null!=this._events[e]?this._events[e].length:0}trigger(e,...t){var r=this;return _asyncToGenerator$8((function*(){var n,i;try{if("debug"!==e&&r.trigger("debug",`Event triggered: ${e}`,t),null==r._events[e])return;return r._events[e]=r._events[e].filter((function(e){return"none"!==e.status})),i=r._events[e].map(function(){var e=_asyncToGenerator$8((function*(e){var n,i;if("none"!==e.status){"once"===e.status&&(e.status="none");try{return"function"==typeof(null!=(i="function"==typeof e.cb?e.cb(...t):void 0)?i.then:void 0)?yield i:i}catch(e){return n=e,r.trigger("error",n),null}}}));return function(t){return e.apply(this,arguments)}}()),(yield Promise.all(i)).find((function(e){return null!=e}))}catch(e){return n=e,r.trigger("error",n),null}}))()}};var Events_1=Events$6,DLList$1,Events$5,Queues$1;DLList$1=DLList_1,Events$5=Events_1,Queues$1=class{constructor(e){this.Events=new Events$5(this),this._length=0,this._lists=function(){var t,r,n;for(n=[],t=1,r=e;1<=r?t<=r:t>=r;1<=r?++t:--t)n.push(new DLList$1((()=>this.incr()),(()=>this.decr())));return n}.call(this)}incr(){if(0==this._length++)return this.Events.trigger("leftzero")}decr(){if(0==--this._length)return this.Events.trigger("zero")}push(e){return this._lists[e.options.priority].push(e)}queued(e){return null!=e?this._lists[e].length:this._length}shiftAll(e){return this._lists.forEach((function(t){return t.forEachShift(e)}))}getFirst(e=this._lists){var t,r,n;for(t=0,r=e.length;t0)return n;return[]}shiftLastFrom(e){return this.getFirst(this._lists.slice(e).reverse()).shift()}};var Queues_1=Queues$1,BottleneckError$4;BottleneckError$4=class extends Error{};var BottleneckError_1=BottleneckError$4,BottleneckError$3,DEFAULT_PRIORITY$1,Job$1,NUM_PRIORITIES$1,parser$7;function asyncGeneratorStep$7(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$7(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$7(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$7(s,n,i,o,a,"throw",e)}o(void 0)}))}}NUM_PRIORITIES$1=10,DEFAULT_PRIORITY$1=5,parser$7=parser$8,BottleneckError$3=BottleneckError_1,Job$1=class{constructor(e,t,r,n,i,s,o,a){this.task=e,this.args=t,this.rejectOnDrop=i,this.Events=s,this._states=o,this.Promise=a,this.options=parser$7.load(r,n),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===n.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise(((e,t)=>{this._resolve=e,this._reject=t})),this.retryCount=0}_sanitizePriority(e){var t;return(t=~~e!==e?DEFAULT_PRIORITY$1:e)<0?0:t>NUM_PRIORITIES$1-1?NUM_PRIORITIES$1-1:t}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:e,message:t="This job has been dropped by Bottleneck"}={}){return!!this._states.remove(this.options.id)&&(this.rejectOnDrop&&this._reject(null!=e?e:new BottleneckError$3(t)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0)}_assertStatus(e){var t;if((t=this._states.jobStatus(this.options.id))!==e&&("DONE"!==e||null!==t))throw new BottleneckError$3(`Invalid job status ${t}, expected ${e}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(e,t){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:e,blocked:t})}doRun(){return 0===this.retryCount?(this._assertStatus("QUEUED"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),this.Events.trigger("scheduled",{args:this.args,options:this.options})}doExecute(e,t,r,n){var i=this;return _asyncToGenerator$7((function*(){var s,o,a;0===i.retryCount?(i._assertStatus("RUNNING"),i._states.next(i.options.id)):i._assertStatus("EXECUTING"),o={args:i.args,options:i.options,retryCount:i.retryCount},i.Events.trigger("executing",o);try{if(a=yield null!=e?e.schedule(i.options,i.task,...i.args):i.task(...i.args),t())return i.doDone(o),yield n(i.options,o),i._assertStatus("DONE"),i._resolve(a)}catch(e){return s=e,i._onFailure(s,o,t,r,n)}}))()}doExpire(e,t,r){var n,i;return this._states.jobStatus("RUNNING"===this.options.id)&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),i={args:this.args,options:this.options,retryCount:this.retryCount},n=new BottleneckError$3(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(n,i,e,t,r)}_onFailure(e,t,r,n,i){var s=this;return _asyncToGenerator$7((function*(){var o,a;if(r())return null!=(o=yield s.Events.trigger("failed",e,t))?(a=~~o,s.Events.trigger("retry",`Retrying ${s.options.id} after ${a} ms`,t),s.retryCount++,n(a)):(s.doDone(t),yield i(s.options,t),s._assertStatus("DONE"),s._reject(e))}))()}doDone(e){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",e)}};var Job_1=Job$1,BottleneckError$2,LocalDatastore$1,parser$6;function asyncGeneratorStep$6(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$6(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$6(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$6(s,n,i,o,a,"throw",e)}o(void 0)}))}}parser$6=parser$8,BottleneckError$2=BottleneckError_1,LocalDatastore$1=class{constructor(e,t,r){this.instance=e,this.storeOptions=t,this.clientId=this.instance._randomIndex(),parser$6.load(r,r,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var e;return null==this.heartbeat&&(null!=this.storeOptions.reservoirRefreshInterval&&null!=this.storeOptions.reservoirRefreshAmount||null!=this.storeOptions.reservoirIncreaseInterval&&null!=this.storeOptions.reservoirIncreaseAmount)?"function"==typeof(e=this.heartbeat=setInterval((()=>{var e,t,r,n,i;if(n=Date.now(),null!=this.storeOptions.reservoirRefreshInterval&&n>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=n,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),null!=this.storeOptions.reservoirIncreaseInterval&&n>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval){var s=this.storeOptions;if(e=s.reservoirIncreaseAmount,r=s.reservoirIncreaseMaximum,i=s.reservoir,this._lastReservoirIncrease=n,(t=null!=r?Math.min(e,r-i):e)>0)return this.storeOptions.reservoir+=t,this.instance._drainAll(this.computeCapacity())}}),this.heartbeatInterval)).unref?e.unref():void 0:clearInterval(this.heartbeat)}__publish__(e){var t=this;return _asyncToGenerator$6((function*(){return yield t.yieldLoop(),t.instance.Events.trigger("message",e.toString())}))()}__disconnect__(e){var t=this;return _asyncToGenerator$6((function*(){return yield t.yieldLoop(),clearInterval(t.heartbeat),t.Promise.resolve()}))()}yieldLoop(e=0){return new this.Promise((function(t,r){return setTimeout(t,e)}))}computePenalty(){var e;return null!=(e=this.storeOptions.penalty)?e:15*this.storeOptions.minTime||5e3}__updateSettings__(e){var t=this;return _asyncToGenerator$6((function*(){return yield t.yieldLoop(),parser$6.overwrite(e,e,t.storeOptions),t._startHeartbeat(),t.instance._drainAll(t.computeCapacity()),!0}))()}__running__(){var e=this;return _asyncToGenerator$6((function*(){return yield e.yieldLoop(),e._running}))()}__queued__(){var e=this;return _asyncToGenerator$6((function*(){return yield e.yieldLoop(),e.instance.queued()}))()}__done__(){var e=this;return _asyncToGenerator$6((function*(){return yield e.yieldLoop(),e._done}))()}__groupCheck__(e){var t=this;return _asyncToGenerator$6((function*(){return yield t.yieldLoop(),t._nextRequest+t.timeout=e}check(e,t){return this.conditionsCheck(e)&&this._nextRequest-t<=0}__check__(e){var t=this;return _asyncToGenerator$6((function*(){var r;return yield t.yieldLoop(),r=Date.now(),t.check(e,r)}))()}__register__(e,t,r){var n=this;return _asyncToGenerator$6((function*(){var e,r;return yield n.yieldLoop(),e=Date.now(),n.conditionsCheck(t)?(n._running+=t,null!=n.storeOptions.reservoir&&(n.storeOptions.reservoir-=t),r=Math.max(n._nextRequest-e,0),n._nextRequest=e+r+n.storeOptions.minTime,{success:!0,wait:r,reservoir:n.storeOptions.reservoir}):{success:!1}}))()}strategyIsBlock(){return 3===this.storeOptions.strategy}__submit__(e,t){var r=this;return _asyncToGenerator$6((function*(){var n,i,s;if(yield r.yieldLoop(),null!=r.storeOptions.maxConcurrent&&t>r.storeOptions.maxConcurrent)throw new BottleneckError$2(`Impossible to add a job having a weight of ${t} to a limiter having a maxConcurrent setting of ${r.storeOptions.maxConcurrent}`);return i=Date.now(),s=null!=r.storeOptions.highWater&&e===r.storeOptions.highWater&&!r.check(t,i),(n=r.strategyIsBlock()&&(s||r.isBlocked(i)))&&(r._unblockTime=i+r.computePenalty(),r._nextRequest=r._unblockTime+r.storeOptions.minTime,r.instance._dropAllQueued()),{reachedHWM:s,blocked:n,strategy:r.storeOptions.strategy}}))()}__free__(e,t){var r=this;return _asyncToGenerator$6((function*(){return yield r.yieldLoop(),r._running-=t,r._done+=t,r.instance._drainAll(r.computeCapacity()),{running:r._running}}))()}};var LocalDatastore_1=LocalDatastore$1,require$$0$1={"blacklist_client.lua":"local blacklist = ARGV[num_static_argv + 1]\n\nif redis.call('zscore', client_last_seen_key, blacklist) then\n redis.call('zadd', client_last_seen_key, 0, blacklist)\nend\n\n\nreturn {}\n","check.lua":"local weight = tonumber(ARGV[num_static_argv + 1])\n\nlocal capacity = process_tick(now, false)['capacity']\nlocal nextRequest = tonumber(redis.call('hget', settings_key, 'nextRequest'))\n\nreturn conditions_check(capacity, weight) and nextRequest - now <= 0\n","conditions_check.lua":"local conditions_check = function (capacity, weight)\n return capacity == nil or weight <= capacity\nend\n","current_reservoir.lua":"return process_tick(now, false)['reservoir']\n","done.lua":"process_tick(now, false)\n\nreturn tonumber(redis.call('hget', settings_key, 'done'))\n","free.lua":"local index = ARGV[num_static_argv + 1]\n\nredis.call('zadd', job_expirations_key, 0, index)\n\nreturn process_tick(now, false)['running']\n","get_time.lua":"redis.replicate_commands()\n\nlocal get_time = function ()\n local time = redis.call('time')\n\n return tonumber(time[1]..string.sub(time[2], 1, 3))\nend\n","group_check.lua":"return not (redis.call('exists', settings_key) == 1)\n","heartbeat.lua":"process_tick(now, true)\n","increment_reservoir.lua":"local incr = tonumber(ARGV[num_static_argv + 1])\n\nredis.call('hincrby', settings_key, 'reservoir', incr)\n\nlocal reservoir = process_tick(now, true)['reservoir']\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn reservoir\n","init.lua":"local clear = tonumber(ARGV[num_static_argv + 1])\nlocal limiter_version = ARGV[num_static_argv + 2]\nlocal num_local_argv = num_static_argv + 2\n\nif clear == 1 then\n redis.call('del', unpack(KEYS))\nend\n\nif redis.call('exists', settings_key) == 0 then\n -- Create\n local args = {'hmset', settings_key}\n\n for i = num_local_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\n end\n\n redis.call(unpack(args))\n redis.call('hmset', settings_key,\n 'nextRequest', now,\n 'lastReservoirRefresh', now,\n 'lastReservoirIncrease', now,\n 'running', 0,\n 'done', 0,\n 'unblockTime', 0,\n 'capacityPriorityCounter', 0\n )\n\nelse\n -- Apply migrations\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'version'\n )\n local id = settings[1]\n local current_version = settings[2]\n\n if current_version ~= limiter_version then\n local version_digits = {}\n for k, v in string.gmatch(current_version, \"([^.]+)\") do\n table.insert(version_digits, tonumber(k))\n end\n\n -- 2.10.0\n if version_digits[2] < 10 then\n redis.call('hsetnx', settings_key, 'reservoirRefreshInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirRefreshAmount', '')\n redis.call('hsetnx', settings_key, 'lastReservoirRefresh', '')\n redis.call('hsetnx', settings_key, 'done', 0)\n redis.call('hset', settings_key, 'version', '2.10.0')\n end\n\n -- 2.11.1\n if version_digits[2] < 11 or (version_digits[2] == 11 and version_digits[3] < 1) then\n if redis.call('hstrlen', settings_key, 'lastReservoirRefresh') == 0 then\n redis.call('hmset', settings_key,\n 'lastReservoirRefresh', now,\n 'version', '2.11.1'\n )\n end\n end\n\n -- 2.14.0\n if version_digits[2] < 14 then\n local old_running_key = 'b_'..id..'_running'\n local old_executing_key = 'b_'..id..'_executing'\n\n if redis.call('exists', old_running_key) == 1 then\n redis.call('rename', old_running_key, job_weights_key)\n end\n if redis.call('exists', old_executing_key) == 1 then\n redis.call('rename', old_executing_key, job_expirations_key)\n end\n redis.call('hset', settings_key, 'version', '2.14.0')\n end\n\n -- 2.15.2\n if version_digits[2] < 15 or (version_digits[2] == 15 and version_digits[3] < 2) then\n redis.call('hsetnx', settings_key, 'capacityPriorityCounter', 0)\n redis.call('hset', settings_key, 'version', '2.15.2')\n end\n\n -- 2.17.0\n if version_digits[2] < 17 then\n redis.call('hsetnx', settings_key, 'clientTimeout', 10000)\n redis.call('hset', settings_key, 'version', '2.17.0')\n end\n\n -- 2.18.0\n if version_digits[2] < 18 then\n redis.call('hsetnx', settings_key, 'reservoirIncreaseInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseAmount', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseMaximum', '')\n redis.call('hsetnx', settings_key, 'lastReservoirIncrease', now)\n redis.call('hset', settings_key, 'version', '2.18.0')\n end\n\n end\n\n process_tick(now, false)\nend\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n","process_tick.lua":"local process_tick = function (now, always_publish)\n\n local compute_capacity = function (maxConcurrent, running, reservoir)\n if maxConcurrent ~= nil and reservoir ~= nil then\n return math.min((maxConcurrent - running), reservoir)\n elseif maxConcurrent ~= nil then\n return maxConcurrent - running\n elseif reservoir ~= nil then\n return reservoir\n else\n return nil\n end\n end\n\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'running',\n 'reservoir',\n 'reservoirRefreshInterval',\n 'reservoirRefreshAmount',\n 'lastReservoirRefresh',\n 'reservoirIncreaseInterval',\n 'reservoirIncreaseAmount',\n 'reservoirIncreaseMaximum',\n 'lastReservoirIncrease',\n 'capacityPriorityCounter',\n 'clientTimeout'\n )\n local id = settings[1]\n local maxConcurrent = tonumber(settings[2])\n local running = tonumber(settings[3])\n local reservoir = tonumber(settings[4])\n local reservoirRefreshInterval = tonumber(settings[5])\n local reservoirRefreshAmount = tonumber(settings[6])\n local lastReservoirRefresh = tonumber(settings[7])\n local reservoirIncreaseInterval = tonumber(settings[8])\n local reservoirIncreaseAmount = tonumber(settings[9])\n local reservoirIncreaseMaximum = tonumber(settings[10])\n local lastReservoirIncrease = tonumber(settings[11])\n local capacityPriorityCounter = tonumber(settings[12])\n local clientTimeout = tonumber(settings[13])\n\n local initial_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n --\n -- Process 'running' changes\n --\n local expired = redis.call('zrangebyscore', job_expirations_key, '-inf', '('..now)\n\n if #expired > 0 then\n redis.call('zremrangebyscore', job_expirations_key, '-inf', '('..now)\n\n local flush_batch = function (batch, acc)\n local weights = redis.call('hmget', job_weights_key, unpack(batch))\n redis.call('hdel', job_weights_key, unpack(batch))\n local clients = redis.call('hmget', job_clients_key, unpack(batch))\n redis.call('hdel', job_clients_key, unpack(batch))\n\n -- Calculate sum of removed weights\n for i = 1, #weights do\n acc['total'] = acc['total'] + (tonumber(weights[i]) or 0)\n end\n\n -- Calculate sum of removed weights by client\n local client_weights = {}\n for i = 1, #clients do\n local removed = tonumber(weights[i]) or 0\n if removed > 0 then\n acc['client_weights'][clients[i]] = (acc['client_weights'][clients[i]] or 0) + removed\n end\n end\n end\n\n local acc = {\n ['total'] = 0,\n ['client_weights'] = {}\n }\n local batch_size = 1000\n\n -- Compute changes to Zsets and apply changes to Hashes\n for i = 1, #expired, batch_size do\n local batch = {}\n for j = i, math.min(i + batch_size - 1, #expired) do\n table.insert(batch, expired[j])\n end\n\n flush_batch(batch, acc)\n end\n\n -- Apply changes to Zsets\n if acc['total'] > 0 then\n redis.call('hincrby', settings_key, 'done', acc['total'])\n running = tonumber(redis.call('hincrby', settings_key, 'running', -acc['total']))\n end\n\n for client, weight in pairs(acc['client_weights']) do\n redis.call('zincrby', client_running_key, -weight, client)\n end\n end\n\n --\n -- Process 'reservoir' changes\n --\n local reservoirRefreshActive = reservoirRefreshInterval ~= nil and reservoirRefreshAmount ~= nil\n if reservoirRefreshActive and now >= lastReservoirRefresh + reservoirRefreshInterval then\n reservoir = reservoirRefreshAmount\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirRefresh', now\n )\n end\n\n local reservoirIncreaseActive = reservoirIncreaseInterval ~= nil and reservoirIncreaseAmount ~= nil\n if reservoirIncreaseActive and now >= lastReservoirIncrease + reservoirIncreaseInterval then\n local num_intervals = math.floor((now - lastReservoirIncrease) / reservoirIncreaseInterval)\n local incr = reservoirIncreaseAmount * num_intervals\n if reservoirIncreaseMaximum ~= nil then\n incr = math.min(incr, reservoirIncreaseMaximum - (reservoir or 0))\n end\n if incr > 0 then\n reservoir = (reservoir or 0) + incr\n end\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirIncrease', lastReservoirIncrease + (num_intervals * reservoirIncreaseInterval)\n )\n end\n\n --\n -- Clear unresponsive clients\n --\n local unresponsive = redis.call('zrangebyscore', client_last_seen_key, '-inf', (now - clientTimeout))\n local unresponsive_lookup = {}\n local terminated_clients = {}\n for i = 1, #unresponsive do\n unresponsive_lookup[unresponsive[i]] = true\n if tonumber(redis.call('zscore', client_running_key, unresponsive[i])) == 0 then\n table.insert(terminated_clients, unresponsive[i])\n end\n end\n if #terminated_clients > 0 then\n redis.call('zrem', client_running_key, unpack(terminated_clients))\n redis.call('hdel', client_num_queued_key, unpack(terminated_clients))\n redis.call('zrem', client_last_registered_key, unpack(terminated_clients))\n redis.call('zrem', client_last_seen_key, unpack(terminated_clients))\n end\n\n --\n -- Broadcast capacity changes\n --\n local final_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n if always_publish or (initial_capacity ~= nil and final_capacity == nil) then\n -- always_publish or was not unlimited, now unlimited\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n\n elseif initial_capacity ~= nil and final_capacity ~= nil and final_capacity > initial_capacity then\n -- capacity was increased\n -- send the capacity message to the limiter having the lowest number of running jobs\n -- the tiebreaker is the limiter having not registered a job in the longest time\n\n local lowest_concurrency_value = nil\n local lowest_concurrency_clients = {}\n local lowest_concurrency_last_registered = {}\n local client_concurrencies = redis.call('zrange', client_running_key, 0, -1, 'withscores')\n\n for i = 1, #client_concurrencies, 2 do\n local client = client_concurrencies[i]\n local concurrency = tonumber(client_concurrencies[i+1])\n\n if (\n lowest_concurrency_value == nil or lowest_concurrency_value == concurrency\n ) and (\n not unresponsive_lookup[client]\n ) and (\n tonumber(redis.call('hget', client_num_queued_key, client)) > 0\n ) then\n lowest_concurrency_value = concurrency\n table.insert(lowest_concurrency_clients, client)\n local last_registered = tonumber(redis.call('zscore', client_last_registered_key, client))\n table.insert(lowest_concurrency_last_registered, last_registered)\n end\n end\n\n if #lowest_concurrency_clients > 0 then\n local position = 1\n local earliest = lowest_concurrency_last_registered[1]\n\n for i,v in ipairs(lowest_concurrency_last_registered) do\n if v < earliest then\n position = i\n earliest = v\n end\n end\n\n local next_client = lowest_concurrency_clients[position]\n redis.call('publish', 'b_'..id,\n 'capacity-priority:'..(final_capacity or '')..\n ':'..next_client..\n ':'..capacityPriorityCounter\n )\n redis.call('hincrby', settings_key, 'capacityPriorityCounter', '1')\n else\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n end\n end\n\n return {\n ['capacity'] = final_capacity,\n ['running'] = running,\n ['reservoir'] = reservoir\n }\nend\n","queued.lua":"local clientTimeout = tonumber(redis.call('hget', settings_key, 'clientTimeout'))\nlocal valid_clients = redis.call('zrangebyscore', client_last_seen_key, (now - clientTimeout), 'inf')\nlocal client_queued = redis.call('hmget', client_num_queued_key, unpack(valid_clients))\n\nlocal sum = 0\nfor i = 1, #client_queued do\n sum = sum + tonumber(client_queued[i])\nend\n\nreturn sum\n","refresh_expiration.lua":"local refresh_expiration = function (now, nextRequest, groupTimeout)\n\n if groupTimeout ~= nil then\n local ttl = (nextRequest + groupTimeout) - now\n\n for i = 1, #KEYS do\n redis.call('pexpire', KEYS[i], ttl)\n end\n end\n\nend\n","refs.lua":"local settings_key = KEYS[1]\nlocal job_weights_key = KEYS[2]\nlocal job_expirations_key = KEYS[3]\nlocal job_clients_key = KEYS[4]\nlocal client_running_key = KEYS[5]\nlocal client_num_queued_key = KEYS[6]\nlocal client_last_registered_key = KEYS[7]\nlocal client_last_seen_key = KEYS[8]\n\nlocal now = tonumber(ARGV[1])\nlocal client = ARGV[2]\n\nlocal num_static_argv = 2\n","register.lua":"local index = ARGV[num_static_argv + 1]\nlocal weight = tonumber(ARGV[num_static_argv + 2])\nlocal expiration = tonumber(ARGV[num_static_argv + 3])\n\nlocal state = process_tick(now, false)\nlocal capacity = state['capacity']\nlocal reservoir = state['reservoir']\n\nlocal settings = redis.call('hmget', settings_key,\n 'nextRequest',\n 'minTime',\n 'groupTimeout'\n)\nlocal nextRequest = tonumber(settings[1])\nlocal minTime = tonumber(settings[2])\nlocal groupTimeout = tonumber(settings[3])\n\nif conditions_check(capacity, weight) then\n\n redis.call('hincrby', settings_key, 'running', weight)\n redis.call('hset', job_weights_key, index, weight)\n if expiration ~= nil then\n redis.call('zadd', job_expirations_key, now + expiration, index)\n end\n redis.call('hset', job_clients_key, index, client)\n redis.call('zincrby', client_running_key, weight, client)\n redis.call('hincrby', client_num_queued_key, client, -1)\n redis.call('zadd', client_last_registered_key, now, client)\n\n local wait = math.max(nextRequest - now, 0)\n local newNextRequest = now + wait + minTime\n\n if reservoir == nil then\n redis.call('hset', settings_key,\n 'nextRequest', newNextRequest\n )\n else\n reservoir = reservoir - weight\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'nextRequest', newNextRequest\n )\n end\n\n refresh_expiration(now, newNextRequest, groupTimeout)\n\n return {true, wait, reservoir}\n\nelse\n return {false}\nend\n","register_client.lua":"local queued = tonumber(ARGV[num_static_argv + 1])\n\n-- Could have been re-registered concurrently\nif not redis.call('zscore', client_last_seen_key, client) then\n redis.call('zadd', client_running_key, 0, client)\n redis.call('hset', client_num_queued_key, client, queued)\n redis.call('zadd', client_last_registered_key, 0, client)\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n\nreturn {}\n","running.lua":"return process_tick(now, false)['running']\n","submit.lua":"local queueLength = tonumber(ARGV[num_static_argv + 1])\nlocal weight = tonumber(ARGV[num_static_argv + 2])\n\nlocal capacity = process_tick(now, false)['capacity']\n\nlocal settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'highWater',\n 'nextRequest',\n 'strategy',\n 'unblockTime',\n 'penalty',\n 'minTime',\n 'groupTimeout'\n)\nlocal id = settings[1]\nlocal maxConcurrent = tonumber(settings[2])\nlocal highWater = tonumber(settings[3])\nlocal nextRequest = tonumber(settings[4])\nlocal strategy = tonumber(settings[5])\nlocal unblockTime = tonumber(settings[6])\nlocal penalty = tonumber(settings[7])\nlocal minTime = tonumber(settings[8])\nlocal groupTimeout = tonumber(settings[9])\n\nif maxConcurrent ~= nil and weight > maxConcurrent then\n return redis.error_reply('OVERWEIGHT:'..weight..':'..maxConcurrent)\nend\n\nlocal reachedHWM = (highWater ~= nil and queueLength == highWater\n and not (\n conditions_check(capacity, weight)\n and nextRequest - now <= 0\n )\n)\n\nlocal blocked = strategy == 3 and (reachedHWM or unblockTime >= now)\n\nif blocked then\n local computedPenalty = penalty\n if computedPenalty == nil then\n if minTime == 0 then\n computedPenalty = 5000\n else\n computedPenalty = 15 * minTime\n end\n end\n\n local newNextRequest = now + computedPenalty + minTime\n\n redis.call('hmset', settings_key,\n 'unblockTime', now + computedPenalty,\n 'nextRequest', newNextRequest\n )\n\n local clients_queued_reset = redis.call('hkeys', client_num_queued_key)\n local queued_reset = {}\n for i = 1, #clients_queued_reset do\n table.insert(queued_reset, clients_queued_reset[i])\n table.insert(queued_reset, 0)\n end\n redis.call('hmset', client_num_queued_key, unpack(queued_reset))\n\n redis.call('publish', 'b_'..id, 'blocked:')\n\n refresh_expiration(now, newNextRequest, groupTimeout)\nend\n\nif not blocked and not reachedHWM then\n redis.call('hincrby', client_num_queued_key, client, 1)\nend\n\nreturn {reachedHWM, blocked, strategy}\n","update_settings.lua":"local args = {'hmset', settings_key}\n\nfor i = num_static_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\nend\n\nredis.call(unpack(args))\n\nprocess_tick(now, true)\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n","validate_client.lua":"if not redis.call('zscore', client_last_seen_key, client) then\n return redis.error_reply('UNKNOWN_CLIENT')\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n","validate_keys.lua":"if not (redis.call('exists', settings_key) == 1) then\n return redis.error_reply('SETTINGS_KEY_NOT_FOUND')\nend\n"},Scripts$3=createCommonjsModule((function(e,t){var r,n,i;r={refs:(n=require$$0$1)["refs.lua"],validate_keys:n["validate_keys.lua"],validate_client:n["validate_client.lua"],refresh_expiration:n["refresh_expiration.lua"],process_tick:n["process_tick.lua"],conditions_check:n["conditions_check.lua"],get_time:n["get_time.lua"]},t.allKeys=function(e){return[`b_${e}_settings`,`b_${e}_job_weights`,`b_${e}_job_expirations`,`b_${e}_job_clients`,`b_${e}_client_running`,`b_${e}_client_num_queued`,`b_${e}_client_last_registered`,`b_${e}_client_last_seen`]},i={init:{keys:t.allKeys,headers:["process_tick"],refresh_expiration:!0,code:n["init.lua"]},group_check:{keys:t.allKeys,headers:[],refresh_expiration:!1,code:n["group_check.lua"]},register_client:{keys:t.allKeys,headers:["validate_keys"],refresh_expiration:!1,code:n["register_client.lua"]},blacklist_client:{keys:t.allKeys,headers:["validate_keys","validate_client"],refresh_expiration:!1,code:n["blacklist_client.lua"]},heartbeat:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:n["heartbeat.lua"]},update_settings:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!0,code:n["update_settings.lua"]},running:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:n["running.lua"]},queued:{keys:t.allKeys,headers:["validate_keys","validate_client"],refresh_expiration:!1,code:n["queued.lua"]},done:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:n["done.lua"]},check:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick","conditions_check"],refresh_expiration:!1,code:n["check.lua"]},submit:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick","conditions_check"],refresh_expiration:!0,code:n["submit.lua"]},register:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick","conditions_check"],refresh_expiration:!0,code:n["register.lua"]},free:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!0,code:n["free.lua"]},current_reservoir:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:n["current_reservoir.lua"]},increment_reservoir:{keys:t.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!0,code:n["increment_reservoir.lua"]}},t.names=Object.keys(i),t.keys=function(e,t){return i[e].keys(t)},t.payload=function(e){var t;return t=i[e],Array.prototype.concat(r.refs,t.headers.map((function(e){return r[e]})),t.refresh_expiration?r.refresh_expiration:"",t.code).join("\n")}})),Events$4,RedisConnection$2,Scripts$2,parser$5;function asyncGeneratorStep$5(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$5(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$5(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$5(s,n,i,o,a,"throw",e)}o(void 0)}))}}parser$5=parser$8,Events$4=Events_1,Scripts$2=Scripts$3,RedisConnection$2=function(){class RedisConnection{constructor(options={}){parser$5.load(options,this.defaults,this),null==this.Redis&&(this.Redis=eval("require")("redis")),null==this.Events&&(this.Events=new Events$4(this)),this.terminated=!1,null==this.client&&(this.client=this.Redis.createClient(this.clientOptions)),this.subscriber=this.client.duplicate(),this.limiters={},this.shas={},this.ready=this.Promise.all([this._setup(this.client,!1),this._setup(this.subscriber,!0)]).then((()=>this._loadScripts())).then((()=>({client:this.client,subscriber:this.subscriber})))}_setup(e,t){return e.setMaxListeners(0),new this.Promise(((r,n)=>(e.on("error",(e=>this.Events.trigger("error",e))),t&&e.on("message",((e,t)=>{var r;return null!=(r=this.limiters[e])?r._store.onMessage(e,t):void 0})),e.ready?r():e.once("ready",r))))}_loadScript(e){return new this.Promise(((t,r)=>{var n;return n=Scripts$2.payload(e),this.client.multi([["script","load",n]]).exec(((n,i)=>null!=n?r(n):(this.shas[e]=i[0],t(i[0]))))}))}_loadScripts(){return this.Promise.all(Scripts$2.names.map((e=>this._loadScript(e))))}__runCommand__(e){var t=this;return _asyncToGenerator$5((function*(){return yield t.ready,new t.Promise(((r,n)=>t.client.multi([e]).exec_atomic((function(e,t){return null!=e?n(e):r(t[0])}))))}))()}__addLimiter__(e){return this.Promise.all([e.channel(),e.channel_client()].map((t=>new this.Promise(((r,n)=>{var i;return i=n=>{if(n===t)return this.subscriber.removeListener("subscribe",i),this.limiters[t]=e,r()},this.subscriber.on("subscribe",i),this.subscriber.subscribe(t)})))))}__removeLimiter__(e){var t=this;return this.Promise.all([e.channel(),e.channel_client()].map(function(){var e=_asyncToGenerator$5((function*(e){return t.terminated||(yield new t.Promise(((r,n)=>t.subscriber.unsubscribe(e,(function(t,i){return null!=t?n(t):i===e?r():void 0}))))),delete t.limiters[e]}));return function(t){return e.apply(this,arguments)}}()))}__scriptArgs__(e,t,r,n){var i;return i=Scripts$2.keys(e,t),[this.shas[e],i.length].concat(i,r,n)}__scriptFn__(e){return this.client.evalsha.bind(this.client)}disconnect(e=!0){var t,r,n,i;for(t=0,n=(i=Object.keys(this.limiters)).length;t(this._loadScripts(),{client:this.client,subscriber:this.subscriber})))}_setup(e,t){return e.setMaxListeners(0),new this.Promise(((r,n)=>(e.on("error",(e=>this.Events.trigger("error",e))),t&&e.on("message",((e,t)=>{var r;return null!=(r=this.limiters[e])?r._store.onMessage(e,t):void 0})),"ready"===e.status?r():e.once("ready",r))))}_loadScripts(){return Scripts$1.names.forEach((e=>this.client.defineCommand(e,{lua:Scripts$1.payload(e)})))}__runCommand__(e){var t=this;return _asyncToGenerator$4((function*(){yield t.ready;var r=_slicedToArray$3(yield t.client.pipeline([e]).exec(),1);return _slicedToArray$3(r[0],2)[1]}))()}__addLimiter__(e){return this.Promise.all([e.channel(),e.channel_client()].map((t=>new this.Promise(((r,n)=>this.subscriber.subscribe(t,(()=>(this.limiters[t]=e,r()))))))))}__removeLimiter__(e){var t=this;return[e.channel(),e.channel_client()].forEach(function(){var e=_asyncToGenerator$4((function*(e){return t.terminated||(yield t.subscriber.unsubscribe(e)),delete t.limiters[e]}));return function(t){return e.apply(this,arguments)}}())}__scriptArgs__(e,t,r,n){var i;return[(i=Scripts$1.keys(e,t)).length].concat(i,r,n)}__scriptFn__(e){return this.client[e].bind(this.client)}disconnect(e=!0){var t,r,n,i;for(t=0,n=(i=Object.keys(this.limiters)).length;t(this.clients=e,this.runScript("init",this.prepareInitSettings(this.clearDatastore))))).then((()=>this.connection.__addLimiter__(this.instance))).then((()=>this.runScript("register_client",[this.instance.queued()]))).then((()=>{var e;return"function"==typeof(e=this.heartbeat=setInterval((()=>this.runScript("heartbeat",[]).catch((e=>this.instance.Events.trigger("error",e)))),this.heartbeatInterval)).unref&&e.unref(),this.clients}))}__publish__(e){var t=this;return _asyncToGenerator$3((function*(){return(yield t.ready).client.publish(t.instance.channel(),`message:${e.toString()}`)}))()}onMessage(e,t){var r=this;return _asyncToGenerator$3((function*(){var e,n,i,s,o,a,c,l,u,p;try{c=t.indexOf(":");var d=[t.slice(0,c),t.slice(c+1)];if(i=d[1],"capacity"===(p=d[0]))return yield r.instance._drainAll(i.length>0?~~i:void 0);if("capacity-priority"===p){var h=_slicedToArray$2(i.split(":"),3);return u=h[0],l=h[1],n=h[2],e=u.length>0?~~u:void 0,l===r.clientId?(s=yield r.instance._drainAll(e),a=null!=e?e-(s||0):"",yield r.clients.client.publish(r.instance.channel(),`capacity-priority:${a}::${n}`)):""===l?(clearTimeout(r.capacityPriorityCounters[n]),delete r.capacityPriorityCounters[n],r.instance._drainAll(e)):r.capacityPriorityCounters[n]=setTimeout(_asyncToGenerator$3((function*(){var t;try{return delete r.capacityPriorityCounters[n],yield r.runScript("blacklist_client",[l]),yield r.instance._drainAll(e)}catch(e){return t=e,r.instance.Events.trigger("error",t)}})),1e3)}if("message"===p)return r.instance.Events.trigger("message",i);if("blocked"===p)return yield r.instance._dropAllQueued()}catch(e){return o=e,r.instance.Events.trigger("error",o)}}))()}__disconnect__(e){return clearInterval(this.heartbeat),this.sharedConnection?this.connection.__removeLimiter__(this.instance):this.connection.disconnect(e)}runScript(e,t){var r=this;return _asyncToGenerator$3((function*(){return"init"!==e&&"register_client"!==e&&(yield r.ready),new r.Promise(((n,i)=>{var s,o;return s=[Date.now(),r.clientId].concat(t),r.instance.Events.trigger("debug",`Calling Redis script: ${e}.lua`,s),o=r.connection.__scriptArgs__(e,r.originalId,s,(function(e,t){return null!=e?i(e):n(t)})),r.connection.__scriptFn__(e)(...o)})).catch((n=>"SETTINGS_KEY_NOT_FOUND"===n.message?"heartbeat"===e?r.Promise.resolve():r.runScript("init",r.prepareInitSettings(!1)).then((()=>r.runScript(e,t))):"UNKNOWN_CLIENT"===n.message?r.runScript("register_client",[r.instance.queued()]).then((()=>r.runScript(e,t))):r.Promise.reject(n)))}))()}prepareArray(e){var t,r,n,i;for(n=[],t=0,r=e.length;t(e[this.status[r]]=t,e)),{})}};var States_1=States$1,DLList,Sync$1;function asyncGeneratorStep$2(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$2(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$2(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$2(s,n,i,o,a,"throw",e)}o(void 0)}))}}DLList=DLList_1,Sync$1=class{constructor(e,t){this.schedule=this.schedule.bind(this),this.name=e,this.Promise=t,this._running=0,this._queue=new DLList}isEmpty(){return 0===this._queue.length}_tryToRun(){var e=this;return _asyncToGenerator$2((function*(){var t,r,n,i,s,o,a;if(e._running<1&&e._queue.length>0){e._running++;var c=e._queue.shift();return a=c.task,t=c.args,s=c.resolve,i=c.reject,r=yield _asyncToGenerator$2((function*(){try{return o=yield a(...t),function(){return s(o)}}catch(e){return n=e,function(){return i(n)}}}))(),e._running--,e._tryToRun(),r()}}))()}schedule(e,...t){var r,n,i;return i=n=null,r=new this.Promise((function(e,t){return i=e,n=t})),this._queue.push({task:e,args:t,resolve:i,reject:n}),this._tryToRun(),r}};var Sync_1=Sync$1,version="2.19.5",require$$8={version:version},require$$0=Bottleneck_1,Events$2,Group,IORedisConnection,RedisConnection,Scripts,parser$2;function _slicedToArray$1(e,t){return _arrayWithHoles$1(e)||_iterableToArrayLimit$1(e,t)||_nonIterableRest$1()}function _nonIterableRest$1(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArrayLimit$1(e,t){var r=[],n=!0,i=!1,s=void 0;try{for(var o,a=e[Symbol.iterator]();!(n=(o=a.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}return r}function _arrayWithHoles$1(e){if(Array.isArray(e))return e}function asyncGeneratorStep$1(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$1(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep$1(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep$1(s,n,i,o,a,"throw",e)}o(void 0)}))}}parser$2=parser$8,Events$2=Events_1,RedisConnection=RedisConnection_1,IORedisConnection=IORedisConnection_1,Scripts=Scripts$3,Group=function(){class e{constructor(e={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=e,parser$2.load(this.limiterOptions,this.defaults,this),this.Events=new Events$2(this),this.instances={},this.Bottleneck=require$$0,this._startAutoCleanup(),this.sharedConnection=null!=this.connection,null==this.connection&&("redis"===this.limiterOptions.datastore?this.connection=new RedisConnection(Object.assign({},this.limiterOptions,{Events:this.Events})):"ioredis"===this.limiterOptions.datastore&&(this.connection=new IORedisConnection(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(e=""){var t;return null!=(t=this.instances[e])?t:(()=>{var t;return t=this.instances[e]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${e}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",t,e),t})()}deleteKey(e=""){var t=this;return _asyncToGenerator$1((function*(){var r,n;return n=t.instances[e],t.connection&&(r=yield t.connection.__runCommand__(["del",...Scripts.allKeys(`${t.id}-${e}`)])),null!=n&&(delete t.instances[e],yield n.disconnect()),null!=n||r>0}))()}limiters(){var e,t,r,n;for(e in r=[],t=this.instances)n=t[e],r.push({key:e,limiter:n});return r}keys(){return Object.keys(this.instances)}clusterKeys(){var e=this;return _asyncToGenerator$1((function*(){var t,r,n,i,s,o,a,c;if(null==e.connection)return e.Promise.resolve(e.keys());for(o=[],t=null,c=`b_${e.id}-`.length,r="_settings".length;0!==t;){var l=_slicedToArray$1(yield e.connection.__runCommand__(["scan",null!=t?t:0,"match",`b_${e.id}-*_settings`,"count",1e4]),2);for(t=~~l[0],i=0,a=(n=l[1]).length;ithis._resolve=e))}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(e){var t;return this._arr.push(e),t=this._promise,this._arr.length===this.maxSize?this._flush():null!=this.maxTime&&1===this._arr.length&&(this._timeout=setTimeout((()=>this._flush()),this.maxTime)),t}}return e.prototype.defaults={maxTime:null,maxSize:null,Promise:Promise},e}.call(void 0);var Batcher_1=Batcher;function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_nonIterableRest()}function _iterableToArrayLimit(e,t){var r=[],n=!0,i=!1,s=void 0;try{for(var o,a=e[Symbol.iterator]();!(n=(o=a.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}return r}function _toArray(e){return _arrayWithHoles(e)||_iterableToArray(e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function _arrayWithHoles(e){if(Array.isArray(e))return e}function asyncGeneratorStep(e,t,r,n,i,s,o){try{var a=e[s](o),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function o(e){asyncGeneratorStep(s,n,i,o,a,"next",e)}function a(e){asyncGeneratorStep(s,n,i,o,a,"throw",e)}o(void 0)}))}}var Bottleneck,DEFAULT_PRIORITY,Events,Job,LocalDatastore,NUM_PRIORITIES,Queues,RedisDatastore,States,Sync,parser,splice=[].splice;NUM_PRIORITIES=10,DEFAULT_PRIORITY=5,parser=parser$8,Queues=Queues_1,Job=Job_1,LocalDatastore=LocalDatastore_1,RedisDatastore=RedisDatastore_1,Events=Events_1,States=States_1,Sync=Sync_1,Bottleneck=function(){class e{constructor(t={},...r){var n,i;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(t,r),parser.load(t,this.instanceDefaults,this),this._queues=new Queues(NUM_PRIORITIES),this._scheduled={},this._states=new States(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new Events(this),this._submitLock=new Sync("submit",this.Promise),this._registerLock=new Sync("register",this.Promise),i=parser.load(t,this.storeDefaults,{}),this._store=function(){if("redis"===this.datastore||"ioredis"===this.datastore||null!=this.connection)return n=parser.load(t,this.redisStoreDefaults,{}),new RedisDatastore(this,i,n);if("local"===this.datastore)return n=parser.load(t,this.localStoreDefaults,{}),new LocalDatastore(this,i,n);throw new e.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}.call(this),this._queues.on("leftzero",(()=>{var e;return null!=(e=this._store.heartbeat)&&"function"==typeof e.ref?e.ref():void 0})),this._queues.on("zero",(()=>{var e;return null!=(e=this._store.heartbeat)&&"function"==typeof e.unref?e.unref():void 0}))}_validateOptions(t,r){if(null==t||"object"!=typeof t||0!==r.length)throw new e.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(e){return this._store.__publish__(e)}disconnect(e=!0){return this._store.__disconnect__(e)}chain(e){return this._limiter=e,this}queued(e){return this._queues.queued(e)}clusterQueued(){return this._store.__queued__()}empty(){return 0===this.queued()&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(e){return this._states.jobStatus(e)}jobs(e){return this._states.statusJobs(e)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(e=1){return this._store.__check__(e)}_clearGlobalState(e){return null!=this._scheduled[e]&&(clearTimeout(this._scheduled[e].expiration),delete this._scheduled[e],!0)}_free(e,t,r,n){var i=this;return _asyncToGenerator((function*(){var t,s;try{if(s=(yield i._store.__free__(e,r.weight)).running,i.Events.trigger("debug",`Freed ${r.id}`,n),0===s&&i.empty())return i.Events.trigger("idle")}catch(e){return t=e,i.Events.trigger("error",t)}}))()}_run(e,t,r){var n,i,s;return t.doRun(),n=this._clearGlobalState.bind(this,e),s=this._run.bind(this,e,t),i=this._free.bind(this,e,t),this._scheduled[e]={timeout:setTimeout((()=>t.doExecute(this._limiter,n,s,i)),r),expiration:null!=t.options.expiration?setTimeout((function(){return t.doExpire(n,s,i)}),r+t.options.expiration):void 0,job:t}}_drainOne(e){return this._registerLock.schedule((()=>{var t,r,n,i,s;if(0===this.queued())return this.Promise.resolve(null);s=this._queues.getFirst();var o=n=s.first();return i=o.options,t=o.args,null!=e&&i.weight>e?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${i.id}`,{args:t,options:i}),r=this._randomIndex(),this._store.__register__(r,i.weight,i.expiration).then((({success:e,wait:o,reservoir:a})=>{var c;return this.Events.trigger("debug",`Drained ${i.id}`,{success:e,args:t,options:i}),e?(s.shift(),(c=this.empty())&&this.Events.trigger("empty"),0===a&&this.Events.trigger("depleted",c),this._run(r,n,o),this.Promise.resolve(i.weight)):this.Promise.resolve(null)})))}))}_drainAll(e,t=0){return this._drainOne(e).then((r=>{var n;return null!=r?(n=null!=e?e-r:e,this._drainAll(n,t+r)):this.Promise.resolve(t)})).catch((e=>this.Events.trigger("error",e)))}_dropAllQueued(e){return this._queues.shiftAll((function(t){return t.doDrop({message:e})}))}stop(t={}){var r,n;return t=parser.load(t,this.stopDefaults),n=e=>{var t;return t=()=>{var t;return(t=this._states.counts)[0]+t[1]+t[2]+t[3]===e},new this.Promise(((e,r)=>t()?e():this.on("done",(()=>{if(t())return this.removeAllListeners("done"),e()}))))},r=t.dropWaitingJobs?(this._run=function(e,r){return r.doDrop({message:t.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule((()=>this._submitLock.schedule((()=>{var e,r,i;for(e in r=this._scheduled)i=r[e],"RUNNING"===this.jobStatus(i.job.options.id)&&(clearTimeout(i.timeout),clearTimeout(i.expiration),i.job.doDrop({message:t.dropErrorMessage}));return this._dropAllQueued(t.dropErrorMessage),n(0)}))))):this.schedule({priority:NUM_PRIORITIES-1,weight:0},(()=>n(1))),this._receive=function(r){return r._reject(new e.prototype.BottleneckError(t.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new e.prototype.BottleneckError("stop() has already been called")),r}_addToQueue(t){var r=this;return _asyncToGenerator((function*(){var n,i,s,o,a,c,l;n=t.args,o=t.options;try{var u=yield r._store.__submit__(r.queued(),o.weight);a=u.reachedHWM,i=u.blocked,l=u.strategy}catch(e){return s=e,r.Events.trigger("debug",`Could not queue ${o.id}`,{args:n,options:o,error:s}),t.doDrop({error:s}),!1}return i?(t.doDrop(),!0):a&&(null!=(c=l===e.prototype.strategy.LEAK?r._queues.shiftLastFrom(o.priority):l===e.prototype.strategy.OVERFLOW_PRIORITY?r._queues.shiftLastFrom(o.priority+1):l===e.prototype.strategy.OVERFLOW?t:void 0)&&c.doDrop(),null==c||l===e.prototype.strategy.OVERFLOW)?(null==c&&t.doDrop(),a):(t.doQueue(a,i),r._queues.push(t),yield r._drainAll(),a)}))()}_receive(t){return null!=this._states.jobStatus(t.options.id)?(t._reject(new e.prototype.BottleneckError(`A job with the same id already exists (id=${t.options.id})`)),!1):(t.doReceive(),this._submitLock.schedule(this._addToQueue,t))}submit(...e){var t,r,n,i,s,o,a,c;"function"==typeof e[0]?(s=_toArray(e),r=s[0],e=s.slice(1),o=_slicedToArray(splice.call(e,-1),1),t=o[0],i=parser.load({},this.jobDefaults)):(i=(a=_toArray(e))[0],r=a[1],e=a.slice(2),c=_slicedToArray(splice.call(e,-1),1),t=c[0],i=parser.load(i,this.jobDefaults));return(n=new Job(((...e)=>new this.Promise((function(t,n){return r(...e,(function(...e){return(null!=e[0]?n:t)(e)}))}))),e,i,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise)).promise.then((function(e){return"function"==typeof t?t(...e):void 0})).catch((function(e){return Array.isArray(e)?"function"==typeof t?t(...e):void 0:"function"==typeof t?t(e):void 0})),this._receive(n)}schedule(...e){var t,r,n;if("function"==typeof e[0]){var i=_toArray(e);n=i[0],e=i.slice(1),r={}}else{var s=_toArray(e);r=s[0],n=s[1],e=s.slice(2)}return t=new Job(n,e,r,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(t),t.promise}wrap(e){var t,r;return t=this.schedule.bind(this),(r=function(...r){return t(e.bind(this),...r)}).withOptions=function(r,...n){return t(r,e,...n)},r}updateSettings(e={}){var t=this;return _asyncToGenerator((function*(){return yield t._store.__updateSettings__(parser.overwrite(e,t.storeDefaults)),parser.overwrite(e,t.instanceDefaults,t),t}))()}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(e=0){return this._store.__incrementReservoir__(e)}}return e.default=e,e.Events=Events,e.version=e.prototype.version=require$$8.version,e.strategy=e.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},e.BottleneckError=e.prototype.BottleneckError=BottleneckError_1,e.Group=e.prototype.Group=Group_1,e.RedisConnection=e.prototype.RedisConnection=RedisConnection_1,e.IORedisConnection=e.prototype.IORedisConnection=IORedisConnection_1,e.Batcher=e.prototype.Batcher=Batcher_1,e.prototype.jobDefaults={priority:DEFAULT_PRIORITY,weight:1,expiration:null,id:""},e.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:e.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},e.prototype.localStoreDefaults={Promise:Promise,timeout:null,heartbeatInterval:250},e.prototype.redisStoreDefaults={Promise:Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},e.prototype.instanceDefaults={datastore:"local",connection:null,id:"",rejectOnDrop:!0,trackDoneStatus:!1,Promise:Promise},e.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},e}.call(void 0);var Bottleneck_1=Bottleneck,lib=require$$0;const unifetch="undefined"!=typeof fetch?fetch:browser$1;class AlpacaClient{params;baseURLs=endpoints;limiter=new lib({reservoir:200,reservoirRefreshAmount:200,reservoirRefreshInterval:6e4,maxConcurrent:1,minTime:200});constructor(e){if(this.params=e,"endpoints"in e&&(this.baseURLs=Object.assign(endpoints,e.endpoints)),"paper"in e.credentials||"key"in e.credentials&&e.credentials.key.startsWith("A")||(e.credentials.paper=!0),"access_token"in e.credentials&&("key"in e.credentials||"secret"in e.credentials))throw new Error("can't create client with both default and oauth credentials")}async isAuthenticated(){try{return await this.getAccount(),!0}catch{return!1}}async getAccount(){return parse.account(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/account`}))}async getOrder(e){return parse.order(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/orders/${e.order_id||e.client_order_id}`,data:{nested:e.nested}}))}async getOrders(e={}){return parse.orders(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/orders`,data:{...e,symbols:e.symbols?e.symbols.join(","):void 0}}))}async placeOrder(e){return parse.order(await this.request({method:"POST",url:`${this.baseURLs.rest.account}/orders`,data:e}))}async replaceOrder(e){return parse.order(await this.request({method:"PATCH",url:`${this.baseURLs.rest.account}/orders/${e.order_id}`,data:e}))}cancelOrder(e){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/orders/${e.order_id}`,isJSON:!1})}async cancelOrders(){return parse.canceled_orders(await this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/orders`}))}async getPosition(e){return parse.position(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/positions/${e.symbol}`}))}async getPositions(){return parse.positions(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/positions`}))}async closePosition(e){return parse.order(await this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/positions/${e.symbol}`,data:e}))}async closePositions(e){return parse.orders(await this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify(e.cancel_orders??!1)}`}))}getAsset(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/assets/${e.asset_id_or_symbol}`})}getAssets(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/assets`,data:e})}getWatchlist(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`})}getWatchlists(){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/watchlists`})}createWatchlist(e){return this.request({method:"POST",url:`${this.baseURLs.rest.account}/watchlists`,data:e})}updateWatchlist(e){return this.request({method:"PUT",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`,data:e})}addToWatchlist(e){return this.request({method:"POST",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`,data:e})}removeFromWatchlist(e){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}/${e.symbol}`})}deleteWatchlist(e){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`})}getCalendar(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/calendar`,data:e})}getNews(e){return"symbols"in e&&Array.isArray(e.symbols)&&(e.symbols=e.symbols.join(",")),this.request({method:"GET",url:`${this.baseURLs.rest.beta}/news`,data:e})}async getClock(){return parse.clock(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/clock`}))}getAccountConfigurations(){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/configurations`})}updateAccountConfigurations(e){return this.request({method:"PATCH",url:`${this.baseURLs.rest.account}/account/configurations`,data:e})}async getAccountActivities(e){return e.activity_types&&Array.isArray(e.activity_types)&&(e.activity_types=e.activity_types.join(",")),parse.activities(await this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/activities${e.activity_type?"/".concat(e.activity_type):""}`,data:{...e,activity_type:void 0}}))}getPortfolioHistory(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/portfolio/history`,data:e})}async getBars_v1(e){const t={...e,symbols:e.symbols.join(",")};return await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/bars/${e.timeframe}`,data:t})}async getLastTrade_v1(e){return await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/last/stocks/${e.symbol}`})}async getLastQuote_v1(e){return await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${e.symbol}`})}async getTrades(e){return parse.pageOfTrades(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/trades`,data:{...e,symbol:void 0}}))}async getQuotes(e){return parse.pageOfQuotes(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/quotes`,data:{...e,symbol:void 0}}))}async getBars(e){return parse.pageOfBars(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/bars`,data:{...e,symbol:void 0}}))}async getLatestTrade({symbol:e,feed:t,limit:r}){let n="";return(t||r)&&(n="?".concat(lib$1.stringify({feed:t,limit:r}))),parse.latestTrade(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e}/trades/latest`.concat(n)}))}async getSnapshot(e){return parse.snapshot(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/snapshot`}))}async getSnapshots(e){return parse.snapshots(await this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${e.symbols.join(",")}`}))}async request(e){let t={};"access_token"in this.params.credentials?t.Authorization=`Bearer ${this.params.credentials.access_token}`:(t["APCA-API-KEY-ID"]=this.params.credentials.key,t["APCA-API-SECRET-KEY"]=this.params.credentials.secret),this.params.credentials.paper&&(e.url=e.url.replace("api.","paper-api."));let r="";if(e.data){for(let[t,r]of Object.entries(e.data))r instanceof Date&&(e.data[t]=r.toISOString());["POST","PATCH","PUT"].includes(e.method)||(r="?".concat(lib$1.stringify(e.data)),e.data=void 0)}const n=()=>unifetch(e.url.concat(r),{method:e.method,headers:t,body:JSON.stringify(e.data)}),i=this.params.rate_limit?()=>this.limiter.schedule(n):n;let s,o={};try{if(s=await i(),null!=e.isJSON&&!e.isJSON)return s.ok;o=await s.json()}catch(e){throw console.error(e),o}if("code"in o||"message"in o)throw o;return o}}var isBlob=e=>"undefined"!=typeof Blob&&(e instanceof Blob||"[object Blob]"===Object.prototype.toString.call(e)),ws=null;"undefined"!=typeof WebSocket?ws=WebSocket:"undefined"!=typeof MozWebSocket?ws=MozWebSocket:void 0!==commonjsGlobal?ws=commonjsGlobal.WebSocket||commonjsGlobal.MozWebSocket:"undefined"!=typeof window?ws=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(ws=self.WebSocket||self.MozWebSocket);var browser=ws,eventemitter3=createCommonjsModule((function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function i(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,n,s,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var a=new i(n,s||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,n,i=[];if(0===this._eventsCount)return i;for(n in e=this._events)t.call(e,n)&&i.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,o=new Array(s);i{let t={};switch(this.params.type){case"account":t={action:"authenticate",data:{key_id:e.credentials.key,secret_key:e.credentials.secret}};break;case"market_data":t={action:"auth",...e.credentials}}this.connection.send(JSON.stringify(t)),this.emit("open",this)},this.connection.onclose=()=>this.emit("close",this),this.connection.onmessage=async e=>{let t=e.data;isBlob(t)?t=await e.data.text():t instanceof ArrayBuffer&&(t=String.fromCharCode(...new Uint8Array(e.data)));let r=JSON.parse(t);("account"==this.params.type?[r]:r).forEach((e=>{this.emit("message",e),("T"in e&&"authenticated"==e.msg||"stream"in e&&"authorization"==e.stream&&"authorized"==e.data.status)&&(this.authenticated=!0,this.emit("authenticated",this)),"stream"in e&&"trade_updates"==e.stream&&this.emit("trade_updates",parse.trade_update(e.data));const t={success:"success",subscription:"subscription",error:"error",t:"trade",q:"quote",b:"bar"};"T"in e&&this.emit(t[e.T.split(".")[0]],e)}))},this.connection.onerror=e=>{this.emit("error",e)}}getConnection(){return this.connection}subscribe(e,t=[]){switch(this.params.type){case"account":this.send(JSON.stringify({action:"listen",data:{streams:[e]}}));break;case"market_data":let r={action:"subscribe"};r[e]=t,this.send(JSON.stringify(r))}return this}unsubscribe(e,t=[]){switch(this.params.type){case"account":this.send(JSON.stringify({action:"unlisten",data:{streams:[e]}}));break;case"market_data":let r={action:"unsubscribe"};r[e]=t,this.send(JSON.stringify(r))}return this}send(e){if(!this.authenticated)throw new Error("not authenticated");return"object"==typeof e&&(e=JSON.stringify(e)),this.connection.send(e),this}}var index={AlpacaClient:AlpacaClient,AlpacaStream:AlpacaStream};export{AlpacaClient,AlpacaStream,index as default}; diff --git a/dist/alpaca.bundle.js b/dist/alpaca.bundle.js deleted file mode 100644 index aea7eb9..0000000 --- a/dist/alpaca.bundle.js +++ /dev/null @@ -1,91980 +0,0 @@ -/*! - * alpaca@6.3.20 - * released under the permissive ISC license - */ - -import require$$0$3 from 'util'; -import Stream from 'stream'; -import http from 'http'; -import Url from 'url'; -import https from 'https'; -import zlib from 'zlib'; -import EventEmitter from 'events'; -import net from 'net'; -import tls from 'tls'; -import require$$0$4 from 'crypto'; -import fs from 'fs'; -import path from 'path'; -import os from 'os'; - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -/* eslint complexity: [2, 18], max-statements: [2, 33] */ -var shams = function hasSymbols() { - if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } - if (typeof Symbol.iterator === 'symbol') { return true; } - - var obj = {}; - var sym = Symbol('test'); - var symObj = Object(sym); - if (typeof sym === 'string') { return false; } - - if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } - if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } - - // temp disabled per https://github.com/ljharb/object.assign/issues/17 - // if (sym instanceof Symbol) { return false; } - // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 - // if (!(symObj instanceof Symbol)) { return false; } - - // if (typeof Symbol.prototype.toString !== 'function') { return false; } - // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } - - var symVal = 42; - obj[sym] = symVal; - for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop - if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } - - if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } - - var syms = Object.getOwnPropertySymbols(obj); - if (syms.length !== 1 || syms[0] !== sym) { return false; } - - if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } - - if (typeof Object.getOwnPropertyDescriptor === 'function') { - var descriptor = Object.getOwnPropertyDescriptor(obj, sym); - if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } - } - - return true; -}; - -var origSymbol = typeof Symbol !== 'undefined' && Symbol; - - -var hasSymbols$1 = function hasNativeSymbols() { - if (typeof origSymbol !== 'function') { return false; } - if (typeof Symbol !== 'function') { return false; } - if (typeof origSymbol('foo') !== 'symbol') { return false; } - if (typeof Symbol('bar') !== 'symbol') { return false; } - - return shams(); -}; - -/* eslint no-invalid-this: 1 */ - -var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var slice = Array.prototype.slice; -var toStr$1 = Object.prototype.toString; -var funcType = '[object Function]'; - -var implementation$1 = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr$1.call(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slice.call(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - } - }; - - var boundLength = Math.max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); - } - - bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; -}; - -var functionBind = Function.prototype.bind || implementation$1; - -var src = functionBind.call(Function.call, Object.prototype.hasOwnProperty); - -var undefined$1; - -var $SyntaxError = SyntaxError; -var $Function = Function; -var $TypeError$1 = TypeError; - -// eslint-disable-next-line consistent-return -var getEvalledConstructor = function (expressionSyntax) { - try { - return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); - } catch (e) {} -}; - -var $gOPD = Object.getOwnPropertyDescriptor; -if ($gOPD) { - try { - $gOPD({}, ''); - } catch (e) { - $gOPD = null; // this is IE 8, which has a broken gOPD - } -} - -var throwTypeError = function () { - throw new $TypeError$1(); -}; -var ThrowTypeError = $gOPD - ? (function () { - try { - // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties - arguments.callee; // IE 8 does not throw here - return throwTypeError; - } catch (calleeThrows) { - try { - // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') - return $gOPD(arguments, 'callee').get; - } catch (gOPDthrows) { - return throwTypeError; - } - } - }()) - : throwTypeError; - -var hasSymbols = hasSymbols$1(); - -var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto - -var needsEval = {}; - -var TypedArray = typeof Uint8Array === 'undefined' ? undefined$1 : getProto(Uint8Array); - -var INTRINSICS = { - '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError, - '%Array%': Array, - '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer, - '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined$1, - '%AsyncFromSyncIteratorPrototype%': undefined$1, - '%AsyncFunction%': needsEval, - '%AsyncGenerator%': needsEval, - '%AsyncGeneratorFunction%': needsEval, - '%AsyncIteratorPrototype%': needsEval, - '%Atomics%': typeof Atomics === 'undefined' ? undefined$1 : Atomics, - '%BigInt%': typeof BigInt === 'undefined' ? undefined$1 : BigInt, - '%Boolean%': Boolean, - '%DataView%': typeof DataView === 'undefined' ? undefined$1 : DataView, - '%Date%': Date, - '%decodeURI%': decodeURI, - '%decodeURIComponent%': decodeURIComponent, - '%encodeURI%': encodeURI, - '%encodeURIComponent%': encodeURIComponent, - '%Error%': Error, - '%eval%': eval, // eslint-disable-line no-eval - '%EvalError%': EvalError, - '%Float32Array%': typeof Float32Array === 'undefined' ? undefined$1 : Float32Array, - '%Float64Array%': typeof Float64Array === 'undefined' ? undefined$1 : Float64Array, - '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined$1 : FinalizationRegistry, - '%Function%': $Function, - '%GeneratorFunction%': needsEval, - '%Int8Array%': typeof Int8Array === 'undefined' ? undefined$1 : Int8Array, - '%Int16Array%': typeof Int16Array === 'undefined' ? undefined$1 : Int16Array, - '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array, - '%isFinite%': isFinite, - '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined$1, - '%JSON%': typeof JSON === 'object' ? JSON : undefined$1, - '%Map%': typeof Map === 'undefined' ? undefined$1 : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Map()[Symbol.iterator]()), - '%Math%': Math, - '%Number%': Number, - '%Object%': Object, - '%parseFloat%': parseFloat, - '%parseInt%': parseInt, - '%Promise%': typeof Promise === 'undefined' ? undefined$1 : Promise, - '%Proxy%': typeof Proxy === 'undefined' ? undefined$1 : Proxy, - '%RangeError%': RangeError, - '%ReferenceError%': ReferenceError, - '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect, - '%RegExp%': RegExp, - '%Set%': typeof Set === 'undefined' ? undefined$1 : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined$1 : getProto(new Set()[Symbol.iterator]()), - '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer, - '%String%': String, - '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined$1, - '%Symbol%': hasSymbols ? Symbol : undefined$1, - '%SyntaxError%': $SyntaxError, - '%ThrowTypeError%': ThrowTypeError, - '%TypedArray%': TypedArray, - '%TypeError%': $TypeError$1, - '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined$1 : Uint8Array, - '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined$1 : Uint8ClampedArray, - '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined$1 : Uint16Array, - '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined$1 : Uint32Array, - '%URIError%': URIError, - '%WeakMap%': typeof WeakMap === 'undefined' ? undefined$1 : WeakMap, - '%WeakRef%': typeof WeakRef === 'undefined' ? undefined$1 : WeakRef, - '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet -}; - -var doEval = function doEval(name) { - var value; - if (name === '%AsyncFunction%') { - value = getEvalledConstructor('async function () {}'); - } else if (name === '%GeneratorFunction%') { - value = getEvalledConstructor('function* () {}'); - } else if (name === '%AsyncGeneratorFunction%') { - value = getEvalledConstructor('async function* () {}'); - } else if (name === '%AsyncGenerator%') { - var fn = doEval('%AsyncGeneratorFunction%'); - if (fn) { - value = fn.prototype; - } - } else if (name === '%AsyncIteratorPrototype%') { - var gen = doEval('%AsyncGenerator%'); - if (gen) { - value = getProto(gen.prototype); - } - } - - INTRINSICS[name] = value; - - return value; -}; - -var LEGACY_ALIASES = { - '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], - '%ArrayPrototype%': ['Array', 'prototype'], - '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], - '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], - '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], - '%ArrayProto_values%': ['Array', 'prototype', 'values'], - '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], - '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], - '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], - '%BooleanPrototype%': ['Boolean', 'prototype'], - '%DataViewPrototype%': ['DataView', 'prototype'], - '%DatePrototype%': ['Date', 'prototype'], - '%ErrorPrototype%': ['Error', 'prototype'], - '%EvalErrorPrototype%': ['EvalError', 'prototype'], - '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], - '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], - '%FunctionPrototype%': ['Function', 'prototype'], - '%Generator%': ['GeneratorFunction', 'prototype'], - '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], - '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], - '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], - '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], - '%JSONParse%': ['JSON', 'parse'], - '%JSONStringify%': ['JSON', 'stringify'], - '%MapPrototype%': ['Map', 'prototype'], - '%NumberPrototype%': ['Number', 'prototype'], - '%ObjectPrototype%': ['Object', 'prototype'], - '%ObjProto_toString%': ['Object', 'prototype', 'toString'], - '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], - '%PromisePrototype%': ['Promise', 'prototype'], - '%PromiseProto_then%': ['Promise', 'prototype', 'then'], - '%Promise_all%': ['Promise', 'all'], - '%Promise_reject%': ['Promise', 'reject'], - '%Promise_resolve%': ['Promise', 'resolve'], - '%RangeErrorPrototype%': ['RangeError', 'prototype'], - '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], - '%RegExpPrototype%': ['RegExp', 'prototype'], - '%SetPrototype%': ['Set', 'prototype'], - '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], - '%StringPrototype%': ['String', 'prototype'], - '%SymbolPrototype%': ['Symbol', 'prototype'], - '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], - '%TypedArrayPrototype%': ['TypedArray', 'prototype'], - '%TypeErrorPrototype%': ['TypeError', 'prototype'], - '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], - '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], - '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], - '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], - '%URIErrorPrototype%': ['URIError', 'prototype'], - '%WeakMapPrototype%': ['WeakMap', 'prototype'], - '%WeakSetPrototype%': ['WeakSet', 'prototype'] -}; - - - -var $concat = functionBind.call(Function.call, Array.prototype.concat); -var $spliceApply = functionBind.call(Function.apply, Array.prototype.splice); -var $replace = functionBind.call(Function.call, String.prototype.replace); -var $strSlice = functionBind.call(Function.call, String.prototype.slice); - -/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ -var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; -var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ -var stringToPath = function stringToPath(string) { - var first = $strSlice(string, 0, 1); - var last = $strSlice(string, -1); - if (first === '%' && last !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); - } else if (last === '%' && first !== '%') { - throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); - } - var result = []; - $replace(string, rePropName, function (match, number, quote, subString) { - result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; - }); - return result; -}; -/* end adaptation */ - -var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { - var intrinsicName = name; - var alias; - if (src(LEGACY_ALIASES, intrinsicName)) { - alias = LEGACY_ALIASES[intrinsicName]; - intrinsicName = '%' + alias[0] + '%'; - } - - if (src(INTRINSICS, intrinsicName)) { - var value = INTRINSICS[intrinsicName]; - if (value === needsEval) { - value = doEval(intrinsicName); - } - if (typeof value === 'undefined' && !allowMissing) { - throw new $TypeError$1('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); - } - - return { - alias: alias, - name: intrinsicName, - value: value - }; - } - - throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); -}; - -var getIntrinsic = function GetIntrinsic(name, allowMissing) { - if (typeof name !== 'string' || name.length === 0) { - throw new $TypeError$1('intrinsic name must be a non-empty string'); - } - if (arguments.length > 1 && typeof allowMissing !== 'boolean') { - throw new $TypeError$1('"allowMissing" argument must be a boolean'); - } - - var parts = stringToPath(name); - var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; - - var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); - var intrinsicRealName = intrinsic.name; - var value = intrinsic.value; - var skipFurtherCaching = false; - - var alias = intrinsic.alias; - if (alias) { - intrinsicBaseName = alias[0]; - $spliceApply(parts, $concat([0, 1], alias)); - } - - for (var i = 1, isOwn = true; i < parts.length; i += 1) { - var part = parts[i]; - var first = $strSlice(part, 0, 1); - var last = $strSlice(part, -1); - if ( - ( - (first === '"' || first === "'" || first === '`') - || (last === '"' || last === "'" || last === '`') - ) - && first !== last - ) { - throw new $SyntaxError('property names with quotes must have matching quotes'); - } - if (part === 'constructor' || !isOwn) { - skipFurtherCaching = true; - } - - intrinsicBaseName += '.' + part; - intrinsicRealName = '%' + intrinsicBaseName + '%'; - - if (src(INTRINSICS, intrinsicRealName)) { - value = INTRINSICS[intrinsicRealName]; - } else if (value != null) { - if (!(part in value)) { - if (!allowMissing) { - throw new $TypeError$1('base intrinsic for ' + name + ' exists, but the property is not available.'); - } - return void undefined$1; - } - if ($gOPD && (i + 1) >= parts.length) { - var desc = $gOPD(value, part); - isOwn = !!desc; - - // By convention, when a data property is converted to an accessor - // property to emulate a data property that does not suffer from - // the override mistake, that accessor's getter is marked with - // an `originalValue` property. Here, when we detect this, we - // uphold the illusion by pretending to see that original data - // property, i.e., returning the value rather than the getter - // itself. - if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { - value = desc.get; - } else { - value = value[part]; - } - } else { - isOwn = src(value, part); - value = value[part]; - } - - if (isOwn && !skipFurtherCaching) { - INTRINSICS[intrinsicRealName] = value; - } - } - } - return value; -}; - -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var a = Object.defineProperty({}, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; -} - -function createCommonjsModule(fn) { - var module = { exports: {} }; - return fn(module, module.exports), module.exports; -} - -function commonjsRequire (target) { - throw new Error('Could not dynamically require "' + target + '". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.'); -} - -var callBind = createCommonjsModule(function (module) { - - - - -var $apply = getIntrinsic('%Function.prototype.apply%'); -var $call = getIntrinsic('%Function.prototype.call%'); -var $reflectApply = getIntrinsic('%Reflect.apply%', true) || functionBind.call($call, $apply); - -var $gOPD = getIntrinsic('%Object.getOwnPropertyDescriptor%', true); -var $defineProperty = getIntrinsic('%Object.defineProperty%', true); -var $max = getIntrinsic('%Math.max%'); - -if ($defineProperty) { - try { - $defineProperty({}, 'a', { value: 1 }); - } catch (e) { - // IE 8 has a broken defineProperty - $defineProperty = null; - } -} - -module.exports = function callBind(originalFunction) { - var func = $reflectApply(functionBind, $call, arguments); - if ($gOPD && $defineProperty) { - var desc = $gOPD(func, 'length'); - if (desc.configurable) { - // original length, plus the receiver, minus any additional arguments (after the receiver) - $defineProperty( - func, - 'length', - { value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } - ); - } - } - return func; -}; - -var applyBind = function applyBind() { - return $reflectApply(functionBind, $apply, arguments); -}; - -if ($defineProperty) { - $defineProperty(module.exports, 'apply', { value: applyBind }); -} else { - module.exports.apply = applyBind; -} -}); - -var $indexOf = callBind(getIntrinsic('String.prototype.indexOf')); - -var callBound = function callBoundIntrinsic(name, allowMissing) { - var intrinsic = getIntrinsic(name, !!allowMissing); - if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { - return callBind(intrinsic); - } - return intrinsic; -}; - -var util_inspect = require$$0$3.inspect; - -var hasMap = typeof Map === 'function' && Map.prototype; -var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; -var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; -var mapForEach = hasMap && Map.prototype.forEach; -var hasSet = typeof Set === 'function' && Set.prototype; -var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; -var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; -var setForEach = hasSet && Set.prototype.forEach; -var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; -var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; -var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; -var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; -var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; -var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; -var booleanValueOf = Boolean.prototype.valueOf; -var objectToString = Object.prototype.toString; -var functionToString = Function.prototype.toString; -var match = String.prototype.match; -var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; -var gOPS = Object.getOwnPropertySymbols; -var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; -var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; -var isEnumerable = Object.prototype.propertyIsEnumerable; - -var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( - [].__proto__ === Array.prototype // eslint-disable-line no-proto - ? function (O) { - return O.__proto__; // eslint-disable-line no-proto - } - : null -); - -var inspectCustom = util_inspect.custom; -var inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null; -var toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null; - -var objectInspect = function inspect_(obj, options, depth, seen) { - var opts = options || {}; - - if (has$3(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) { - throw new TypeError('option "quoteStyle" must be "single" or "double"'); - } - if ( - has$3(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' - ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity - : opts.maxStringLength !== null - ) - ) { - throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); - } - var customInspect = has$3(opts, 'customInspect') ? opts.customInspect : true; - if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { - throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); - } - - if ( - has$3(opts, 'indent') - && opts.indent !== null - && opts.indent !== '\t' - && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) - ) { - throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`'); - } - - if (typeof obj === 'undefined') { - return 'undefined'; - } - if (obj === null) { - return 'null'; - } - if (typeof obj === 'boolean') { - return obj ? 'true' : 'false'; - } - - if (typeof obj === 'string') { - return inspectString(obj, opts); - } - if (typeof obj === 'number') { - if (obj === 0) { - return Infinity / obj > 0 ? '0' : '-0'; - } - return String(obj); - } - if (typeof obj === 'bigint') { - return String(obj) + 'n'; - } - - var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; - if (typeof depth === 'undefined') { depth = 0; } - if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { - return isArray$3(obj) ? '[Array]' : '[Object]'; - } - - var indent = getIndent(opts, depth); - - if (typeof seen === 'undefined') { - seen = []; - } else if (indexOf(seen, obj) >= 0) { - return '[Circular]'; - } - - function inspect(value, from, noIndent) { - if (from) { - seen = seen.slice(); - seen.push(from); - } - if (noIndent) { - var newOpts = { - depth: opts.depth - }; - if (has$3(opts, 'quoteStyle')) { - newOpts.quoteStyle = opts.quoteStyle; - } - return inspect_(value, newOpts, depth + 1, seen); - } - return inspect_(value, opts, depth + 1, seen); - } - - if (typeof obj === 'function') { - var name = nameOf(obj); - var keys = arrObjKeys(obj, inspect); - return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : ''); - } - if (isSymbol(obj)) { - var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); - return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; - } - if (isElement(obj)) { - var s = '<' + String(obj.nodeName).toLowerCase(); - var attrs = obj.attributes || []; - for (var i = 0; i < attrs.length; i++) { - s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); - } - s += '>'; - if (obj.childNodes && obj.childNodes.length) { s += '...'; } - s += ''; - return s; - } - if (isArray$3(obj)) { - if (obj.length === 0) { return '[]'; } - var xs = arrObjKeys(obj, inspect); - if (indent && !singleLineValues(xs)) { - return '[' + indentedJoin(xs, indent) + ']'; - } - return '[ ' + xs.join(', ') + ' ]'; - } - if (isError(obj)) { - var parts = arrObjKeys(obj, inspect); - if (parts.length === 0) { return '[' + String(obj) + ']'; } - return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }'; - } - if (typeof obj === 'object' && customInspect) { - if (inspectSymbol && typeof obj[inspectSymbol] === 'function') { - return obj[inspectSymbol](); - } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { - return obj.inspect(); - } - } - if (isMap(obj)) { - var mapParts = []; - mapForEach.call(obj, function (value, key) { - mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); - }); - return collectionOf('Map', mapSize.call(obj), mapParts, indent); - } - if (isSet(obj)) { - var setParts = []; - setForEach.call(obj, function (value) { - setParts.push(inspect(value, obj)); - }); - return collectionOf('Set', setSize.call(obj), setParts, indent); - } - if (isWeakMap(obj)) { - return weakCollectionOf('WeakMap'); - } - if (isWeakSet(obj)) { - return weakCollectionOf('WeakSet'); - } - if (isWeakRef(obj)) { - return weakCollectionOf('WeakRef'); - } - if (isNumber(obj)) { - return markBoxed(inspect(Number(obj))); - } - if (isBigInt(obj)) { - return markBoxed(inspect(bigIntValueOf.call(obj))); - } - if (isBoolean(obj)) { - return markBoxed(booleanValueOf.call(obj)); - } - if (isString(obj)) { - return markBoxed(inspect(String(obj))); - } - if (!isDate(obj) && !isRegExp$1(obj)) { - var ys = arrObjKeys(obj, inspect); - var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; - var protoTag = obj instanceof Object ? '' : 'null prototype'; - var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : ''; - var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; - var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : ''); - if (ys.length === 0) { return tag + '{}'; } - if (indent) { - return tag + '{' + indentedJoin(ys, indent) + '}'; - } - return tag + '{ ' + ys.join(', ') + ' }'; - } - return String(obj); -}; - -function wrapQuotes(s, defaultStyle, opts) { - var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'"; - return quoteChar + s + quoteChar; -} - -function quote(s) { - return String(s).replace(/"/g, '"'); -} - -function isArray$3(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isRegExp$1(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } -function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } - -// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives -function isSymbol(obj) { - if (hasShammedSymbols) { - return obj && typeof obj === 'object' && obj instanceof Symbol; - } - if (typeof obj === 'symbol') { - return true; - } - if (!obj || typeof obj !== 'object' || !symToString) { - return false; - } - try { - symToString.call(obj); - return true; - } catch (e) {} - return false; -} - -function isBigInt(obj) { - if (!obj || typeof obj !== 'object' || !bigIntValueOf) { - return false; - } - try { - bigIntValueOf.call(obj); - return true; - } catch (e) {} - return false; -} - -var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; -function has$3(obj, key) { - return hasOwn.call(obj, key); -} - -function toStr(obj) { - return objectToString.call(obj); -} - -function nameOf(f) { - if (f.name) { return f.name; } - var m = match.call(functionToString.call(f), /^function\s*([\w$]+)/); - if (m) { return m[1]; } - return null; -} - -function indexOf(xs, x) { - if (xs.indexOf) { return xs.indexOf(x); } - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) { return i; } - } - return -1; -} - -function isMap(x) { - if (!mapSize || !x || typeof x !== 'object') { - return false; - } - try { - mapSize.call(x); - try { - setSize.call(x); - } catch (s) { - return true; - } - return x instanceof Map; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isWeakMap(x) { - if (!weakMapHas || !x || typeof x !== 'object') { - return false; - } - try { - weakMapHas.call(x, weakMapHas); - try { - weakSetHas.call(x, weakSetHas); - } catch (s) { - return true; - } - return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isWeakRef(x) { - if (!weakRefDeref || !x || typeof x !== 'object') { - return false; - } - try { - weakRefDeref.call(x); - return true; - } catch (e) {} - return false; -} - -function isSet(x) { - if (!setSize || !x || typeof x !== 'object') { - return false; - } - try { - setSize.call(x); - try { - mapSize.call(x); - } catch (m) { - return true; - } - return x instanceof Set; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isWeakSet(x) { - if (!weakSetHas || !x || typeof x !== 'object') { - return false; - } - try { - weakSetHas.call(x, weakSetHas); - try { - weakMapHas.call(x, weakMapHas); - } catch (s) { - return true; - } - return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 - } catch (e) {} - return false; -} - -function isElement(x) { - if (!x || typeof x !== 'object') { return false; } - if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { - return true; - } - return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; -} - -function inspectString(str, opts) { - if (str.length > opts.maxStringLength) { - var remaining = str.length - opts.maxStringLength; - var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); - return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer; - } - // eslint-disable-next-line no-control-regex - var s = str.replace(/(['\\])/g, '\\$1').replace(/[\x00-\x1f]/g, lowbyte); - return wrapQuotes(s, 'single', opts); -} - -function lowbyte(c) { - var n = c.charCodeAt(0); - var x = { - 8: 'b', - 9: 't', - 10: 'n', - 12: 'f', - 13: 'r' - }[n]; - if (x) { return '\\' + x; } - return '\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase(); -} - -function markBoxed(str) { - return 'Object(' + str + ')'; -} - -function weakCollectionOf(type) { - return type + ' { ? }'; -} - -function collectionOf(type, size, entries, indent) { - var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', '); - return type + ' (' + size + ') {' + joinedEntries + '}'; -} - -function singleLineValues(xs) { - for (var i = 0; i < xs.length; i++) { - if (indexOf(xs[i], '\n') >= 0) { - return false; - } - } - return true; -} - -function getIndent(opts, depth) { - var baseIndent; - if (opts.indent === '\t') { - baseIndent = '\t'; - } else if (typeof opts.indent === 'number' && opts.indent > 0) { - baseIndent = Array(opts.indent + 1).join(' '); - } else { - return null; - } - return { - base: baseIndent, - prev: Array(depth + 1).join(baseIndent) - }; -} - -function indentedJoin(xs, indent) { - if (xs.length === 0) { return ''; } - var lineJoiner = '\n' + indent.prev + indent.base; - return lineJoiner + xs.join(',' + lineJoiner) + '\n' + indent.prev; -} - -function arrObjKeys(obj, inspect) { - var isArr = isArray$3(obj); - var xs = []; - if (isArr) { - xs.length = obj.length; - for (var i = 0; i < obj.length; i++) { - xs[i] = has$3(obj, i) ? inspect(obj[i], obj) : ''; - } - } - var syms = typeof gOPS === 'function' ? gOPS(obj) : []; - var symMap; - if (hasShammedSymbols) { - symMap = {}; - for (var k = 0; k < syms.length; k++) { - symMap['$' + syms[k]] = syms[k]; - } - } - - for (var key in obj) { // eslint-disable-line no-restricted-syntax - if (!has$3(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue - if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { - // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section - continue; // eslint-disable-line no-restricted-syntax, no-continue - } else if ((/[^\w$]/).test(key)) { - xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); - } else { - xs.push(key + ': ' + inspect(obj[key], obj)); - } - } - if (typeof gOPS === 'function') { - for (var j = 0; j < syms.length; j++) { - if (isEnumerable.call(obj, syms[j])) { - xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); - } - } - } - return xs; -} - -var $TypeError = getIntrinsic('%TypeError%'); -var $WeakMap = getIntrinsic('%WeakMap%', true); -var $Map = getIntrinsic('%Map%', true); - -var $weakMapGet = callBound('WeakMap.prototype.get', true); -var $weakMapSet = callBound('WeakMap.prototype.set', true); -var $weakMapHas = callBound('WeakMap.prototype.has', true); -var $mapGet = callBound('Map.prototype.get', true); -var $mapSet = callBound('Map.prototype.set', true); -var $mapHas = callBound('Map.prototype.has', true); - -/* - * This function traverses the list returning the node corresponding to the - * given key. - * - * That node is also moved to the head of the list, so that if it's accessed - * again we don't need to traverse the whole list. By doing so, all the recently - * used nodes can be accessed relatively quickly. - */ -var listGetNode = function (list, key) { // eslint-disable-line consistent-return - for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { - if (curr.key === key) { - prev.next = curr.next; - curr.next = list.next; - list.next = curr; // eslint-disable-line no-param-reassign - return curr; - } - } -}; - -var listGet = function (objects, key) { - var node = listGetNode(objects, key); - return node && node.value; -}; -var listSet = function (objects, key, value) { - var node = listGetNode(objects, key); - if (node) { - node.value = value; - } else { - // Prepend the new node to the beginning of the list - objects.next = { // eslint-disable-line no-param-reassign - key: key, - next: objects.next, - value: value - }; - } -}; -var listHas = function (objects, key) { - return !!listGetNode(objects, key); -}; - -var sideChannel = function getSideChannel() { - var $wm; - var $m; - var $o; - var channel = { - assert: function (key) { - if (!channel.has(key)) { - throw new $TypeError('Side channel does not contain ' + objectInspect(key)); - } - }, - get: function (key) { // eslint-disable-line consistent-return - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapGet($wm, key); - } - } else if ($Map) { - if ($m) { - return $mapGet($m, key); - } - } else { - if ($o) { // eslint-disable-line no-lonely-if - return listGet($o, key); - } - } - }, - has: function (key) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if ($wm) { - return $weakMapHas($wm, key); - } - } else if ($Map) { - if ($m) { - return $mapHas($m, key); - } - } else { - if ($o) { // eslint-disable-line no-lonely-if - return listHas($o, key); - } - } - return false; - }, - set: function (key, value) { - if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { - if (!$wm) { - $wm = new $WeakMap(); - } - $weakMapSet($wm, key, value); - } else if ($Map) { - if (!$m) { - $m = new $Map(); - } - $mapSet($m, key, value); - } else { - if (!$o) { - /* - * Initialize the linked list as an empty node, so that we don't have - * to special-case handling of the first node: we can always refer to - * it as (previous node).next, instead of something like (list).head - */ - $o = { key: {}, next: null }; - } - listSet($o, key, value); - } - } - }; - return channel; -}; - -var replace = String.prototype.replace; -var percentTwenties = /%20/g; - -var Format = { - RFC1738: 'RFC1738', - RFC3986: 'RFC3986' -}; - -var formats = { - 'default': Format.RFC3986, - formatters: { - RFC1738: function (value) { - return replace.call(value, percentTwenties, '+'); - }, - RFC3986: function (value) { - return String(value); - } - }, - RFC1738: Format.RFC1738, - RFC3986: Format.RFC3986 -}; - -var has$2 = Object.prototype.hasOwnProperty; -var isArray$2 = Array.isArray; - -var hexTable = (function () { - var array = []; - for (var i = 0; i < 256; ++i) { - array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); - } - - return array; -}()); - -var compactQueue = function compactQueue(queue) { - while (queue.length > 1) { - var item = queue.pop(); - var obj = item.obj[item.prop]; - - if (isArray$2(obj)) { - var compacted = []; - - for (var j = 0; j < obj.length; ++j) { - if (typeof obj[j] !== 'undefined') { - compacted.push(obj[j]); - } - } - - item.obj[item.prop] = compacted; - } - } -}; - -var arrayToObject = function arrayToObject(source, options) { - var obj = options && options.plainObjects ? Object.create(null) : {}; - for (var i = 0; i < source.length; ++i) { - if (typeof source[i] !== 'undefined') { - obj[i] = source[i]; - } - } - - return obj; -}; - -var merge = function merge(target, source, options) { - /* eslint no-param-reassign: 0 */ - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (isArray$2(target)) { - target.push(source); - } else if (target && typeof target === 'object') { - if ((options && (options.plainObjects || options.allowPrototypes)) || !has$2.call(Object.prototype, source)) { - target[source] = true; - } - } else { - return [target, source]; - } - - return target; - } - - if (!target || typeof target !== 'object') { - return [target].concat(source); - } - - var mergeTarget = target; - if (isArray$2(target) && !isArray$2(source)) { - mergeTarget = arrayToObject(target, options); - } - - if (isArray$2(target) && isArray$2(source)) { - source.forEach(function (item, i) { - if (has$2.call(target, i)) { - var targetItem = target[i]; - if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { - target[i] = merge(targetItem, item, options); - } else { - target.push(item); - } - } else { - target[i] = item; - } - }); - return target; - } - - return Object.keys(source).reduce(function (acc, key) { - var value = source[key]; - - if (has$2.call(acc, key)) { - acc[key] = merge(acc[key], value, options); - } else { - acc[key] = value; - } - return acc; - }, mergeTarget); -}; - -var assign = function assignSingleSource(target, source) { - return Object.keys(source).reduce(function (acc, key) { - acc[key] = source[key]; - return acc; - }, target); -}; - -var decode$1 = function (str, decoder, charset) { - var strWithoutPlus = str.replace(/\+/g, ' '); - if (charset === 'iso-8859-1') { - // unescape never throws, no try...catch needed: - return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); - } - // utf-8 - try { - return decodeURIComponent(strWithoutPlus); - } catch (e) { - return strWithoutPlus; - } -}; - -var encode$1 = function encode(str, defaultEncoder, charset, kind, format) { - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - var string = str; - if (typeof str === 'symbol') { - string = Symbol.prototype.toString.call(str); - } else if (typeof str !== 'string') { - string = String(str); - } - - if (charset === 'iso-8859-1') { - return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { - return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; - }); - } - - var out = ''; - for (var i = 0; i < string.length; ++i) { - var c = string.charCodeAt(i); - - if ( - c === 0x2D // - - || c === 0x2E // . - || c === 0x5F // _ - || c === 0x7E // ~ - || (c >= 0x30 && c <= 0x39) // 0-9 - || (c >= 0x41 && c <= 0x5A) // a-z - || (c >= 0x61 && c <= 0x7A) // A-Z - || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) - ) { - out += string.charAt(i); - continue; - } - - if (c < 0x80) { - out = out + hexTable[c]; - continue; - } - - if (c < 0x800) { - out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); - continue; - } - - i += 1; - c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); - out += hexTable[0xF0 | (c >> 18)] - + hexTable[0x80 | ((c >> 12) & 0x3F)] - + hexTable[0x80 | ((c >> 6) & 0x3F)] - + hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -var compact = function compact(value) { - var queue = [{ obj: { o: value }, prop: 'o' }]; - var refs = []; - - for (var i = 0; i < queue.length; ++i) { - var item = queue[i]; - var obj = item.obj[item.prop]; - - var keys = Object.keys(obj); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - var val = obj[key]; - if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { - queue.push({ obj: obj, prop: key }); - refs.push(val); - } - } - } - - compactQueue(queue); - - return value; -}; - -var isRegExp = function isRegExp(obj) { - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - -var isBuffer = function isBuffer(obj) { - if (!obj || typeof obj !== 'object') { - return false; - } - - return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); -}; - -var combine = function combine(a, b) { - return [].concat(a, b); -}; - -var maybeMap = function maybeMap(val, fn) { - if (isArray$2(val)) { - var mapped = []; - for (var i = 0; i < val.length; i += 1) { - mapped.push(fn(val[i])); - } - return mapped; - } - return fn(val); -}; - -var utils$1 = { - arrayToObject: arrayToObject, - assign: assign, - combine: combine, - compact: compact, - decode: decode$1, - encode: encode$1, - isBuffer: isBuffer, - isRegExp: isRegExp, - maybeMap: maybeMap, - merge: merge -}; - -var has$1 = Object.prototype.hasOwnProperty; - -var arrayPrefixGenerators = { - brackets: function brackets(prefix) { - return prefix + '[]'; - }, - comma: 'comma', - indices: function indices(prefix, key) { - return prefix + '[' + key + ']'; - }, - repeat: function repeat(prefix) { - return prefix; - } -}; - -var isArray$1 = Array.isArray; -var push$1 = Array.prototype.push; -var pushToArray = function (arr, valueOrArray) { - push$1.apply(arr, isArray$1(valueOrArray) ? valueOrArray : [valueOrArray]); -}; - -var toISO = Date.prototype.toISOString; - -var defaultFormat = formats['default']; -var defaults$1 = { - addQueryPrefix: false, - allowDots: false, - charset: 'utf-8', - charsetSentinel: false, - delimiter: '&', - encode: true, - encoder: utils$1.encode, - encodeValuesOnly: false, - format: defaultFormat, - formatter: formats.formatters[defaultFormat], - // deprecated - indices: false, - serializeDate: function serializeDate(date) { - return toISO.call(date); - }, - skipNulls: false, - strictNullHandling: false -}; - -var isNonNullishPrimitive = function isNonNullishPrimitive(v) { - return typeof v === 'string' - || typeof v === 'number' - || typeof v === 'boolean' - || typeof v === 'symbol' - || typeof v === 'bigint'; -}; - -var stringify = function stringify( - object, - prefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - sideChannel$1 -) { - var obj = object; - - if (sideChannel$1.has(object)) { - throw new RangeError('Cyclic object value'); - } - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } else if (obj instanceof Date) { - obj = serializeDate(obj); - } else if (generateArrayPrefix === 'comma' && isArray$1(obj)) { - obj = utils$1.maybeMap(obj, function (value) { - if (value instanceof Date) { - return serializeDate(value); - } - return value; - }); - } - - if (obj === null) { - if (strictNullHandling) { - return encoder && !encodeValuesOnly ? encoder(prefix, defaults$1.encoder, charset, 'key', format) : prefix; - } - - obj = ''; - } - - if (isNonNullishPrimitive(obj) || utils$1.isBuffer(obj)) { - if (encoder) { - var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults$1.encoder, charset, 'key', format); - return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults$1.encoder, charset, 'value', format))]; - } - return [formatter(prefix) + '=' + formatter(String(obj))]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (generateArrayPrefix === 'comma' && isArray$1(obj)) { - // we need to join elements in - objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }]; - } else if (isArray$1(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key]; - - if (skipNulls && value === null) { - continue; - } - - var keyPrefix = isArray$1(obj) - ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix - : prefix + (allowDots ? '.' + key : '[' + key + ']'); - - sideChannel$1.set(object, true); - var valueSideChannel = sideChannel(); - pushToArray(values, stringify( - value, - keyPrefix, - generateArrayPrefix, - strictNullHandling, - skipNulls, - encoder, - filter, - sort, - allowDots, - serializeDate, - format, - formatter, - encodeValuesOnly, - charset, - valueSideChannel - )); - } - - return values; -}; - -var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { - if (!opts) { - return defaults$1; - } - - if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') { - throw new TypeError('Encoder has to be a function.'); - } - - var charset = opts.charset || defaults$1.charset; - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - - var format = formats['default']; - if (typeof opts.format !== 'undefined') { - if (!has$1.call(formats.formatters, opts.format)) { - throw new TypeError('Unknown format option provided.'); - } - format = opts.format; - } - var formatter = formats.formatters[format]; - - var filter = defaults$1.filter; - if (typeof opts.filter === 'function' || isArray$1(opts.filter)) { - filter = opts.filter; - } - - return { - addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults$1.addQueryPrefix, - allowDots: typeof opts.allowDots === 'undefined' ? defaults$1.allowDots : !!opts.allowDots, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults$1.charsetSentinel, - delimiter: typeof opts.delimiter === 'undefined' ? defaults$1.delimiter : opts.delimiter, - encode: typeof opts.encode === 'boolean' ? opts.encode : defaults$1.encode, - encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults$1.encoder, - encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults$1.encodeValuesOnly, - filter: filter, - format: format, - formatter: formatter, - serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults$1.serializeDate, - skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults$1.skipNulls, - sort: typeof opts.sort === 'function' ? opts.sort : null, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults$1.strictNullHandling - }; -}; - -var stringify_1 = function (object, opts) { - var obj = object; - var options = normalizeStringifyOptions(opts); - - var objKeys; - var filter; - - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } else if (isArray$1(options.filter)) { - filter = options.filter; - objKeys = filter; - } - - var keys = []; - - if (typeof obj !== 'object' || obj === null) { - return ''; - } - - var arrayFormat; - if (opts && opts.arrayFormat in arrayPrefixGenerators) { - arrayFormat = opts.arrayFormat; - } else if (opts && 'indices' in opts) { - arrayFormat = opts.indices ? 'indices' : 'repeat'; - } else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (options.sort) { - objKeys.sort(options.sort); - } - - var sideChannel$1 = sideChannel(); - for (var i = 0; i < objKeys.length; ++i) { - var key = objKeys[i]; - - if (options.skipNulls && obj[key] === null) { - continue; - } - pushToArray(keys, stringify( - obj[key], - key, - generateArrayPrefix, - options.strictNullHandling, - options.skipNulls, - options.encode ? options.encoder : null, - options.filter, - options.sort, - options.allowDots, - options.serializeDate, - options.format, - options.formatter, - options.encodeValuesOnly, - options.charset, - sideChannel$1 - )); - } - - var joined = keys.join(options.delimiter); - var prefix = options.addQueryPrefix === true ? '?' : ''; - - if (options.charsetSentinel) { - if (options.charset === 'iso-8859-1') { - // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark - prefix += 'utf8=%26%2310003%3B&'; - } else { - // encodeURIComponent('✓') - prefix += 'utf8=%E2%9C%93&'; - } - } - - return joined.length > 0 ? prefix + joined : ''; -}; - -var has = Object.prototype.hasOwnProperty; -var isArray = Array.isArray; - -var defaults = { - allowDots: false, - allowPrototypes: false, - allowSparse: false, - arrayLimit: 20, - charset: 'utf-8', - charsetSentinel: false, - comma: false, - decoder: utils$1.decode, - delimiter: '&', - depth: 5, - ignoreQueryPrefix: false, - interpretNumericEntities: false, - parameterLimit: 1000, - parseArrays: true, - plainObjects: false, - strictNullHandling: false -}; - -var interpretNumericEntities = function (str) { - return str.replace(/&#(\d+);/g, function ($0, numberStr) { - return String.fromCharCode(parseInt(numberStr, 10)); - }); -}; - -var parseArrayValue = function (val, options) { - if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { - return val.split(','); - } - - return val; -}; - -// This is what browsers will submit when the ✓ character occurs in an -// application/x-www-form-urlencoded body and the encoding of the page containing -// the form is iso-8859-1, or when the submitted form has an accept-charset -// attribute of iso-8859-1. Presumably also with other charsets that do not contain -// the ✓ character, such as us-ascii. -var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') - -// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. -var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') - -var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; - var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; - var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; - var parts = cleanStr.split(options.delimiter, limit); - var skipIndex = -1; // Keep track of where the utf8 sentinel was found - var i; - - var charset = options.charset; - if (options.charsetSentinel) { - for (i = 0; i < parts.length; ++i) { - if (parts[i].indexOf('utf8=') === 0) { - if (parts[i] === charsetSentinel) { - charset = 'utf-8'; - } else if (parts[i] === isoSentinel) { - charset = 'iso-8859-1'; - } - skipIndex = i; - i = parts.length; // The eslint settings do not allow break; - } - } - } - - for (i = 0; i < parts.length; ++i) { - if (i === skipIndex) { - continue; - } - var part = parts[i]; - - var bracketEqualsPos = part.indexOf(']='); - var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; - - var key, val; - if (pos === -1) { - key = options.decoder(part, defaults.decoder, charset, 'key'); - val = options.strictNullHandling ? null : ''; - } else { - key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); - val = utils$1.maybeMap( - parseArrayValue(part.slice(pos + 1), options), - function (encodedVal) { - return options.decoder(encodedVal, defaults.decoder, charset, 'value'); - } - ); - } - - if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { - val = interpretNumericEntities(val); - } - - if (part.indexOf('[]=') > -1) { - val = isArray(val) ? [val] : val; - } - - if (has.call(obj, key)) { - obj[key] = utils$1.combine(obj[key], val); - } else { - obj[key] = val; - } - } - - return obj; -}; - -var parseObject = function (chain, val, options, valuesParsed) { - var leaf = valuesParsed ? val : parseArrayValue(val, options); - - for (var i = chain.length - 1; i >= 0; --i) { - var obj; - var root = chain[i]; - - if (root === '[]' && options.parseArrays) { - obj = [].concat(leaf); - } else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; - var index = parseInt(cleanRoot, 10); - if (!options.parseArrays && cleanRoot === '') { - obj = { 0: leaf }; - } else if ( - !isNaN(index) - && root !== cleanRoot - && String(index) === cleanRoot - && index >= 0 - && (options.parseArrays && index <= options.arrayLimit) - ) { - obj = []; - obj[index] = leaf; - } else { - obj[cleanRoot] = leaf; - } - } - - leaf = obj; - } - - return leaf; -}; - -var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { - if (!givenKey) { - return; - } - - // Transform dot notation to bracket notation - var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; - - // The regex chunks - - var brackets = /(\[[^[\]]*])/; - var child = /(\[[^[\]]*])/g; - - // Get the parent - - var segment = options.depth > 0 && brackets.exec(key); - var parent = segment ? key.slice(0, segment.index) : key; - - // Stash the parent if it exists - - var keys = []; - if (parent) { - // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties - if (!options.plainObjects && has.call(Object.prototype, parent)) { - if (!options.allowPrototypes) { - return; - } - } - - keys.push(parent); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { - i += 1; - if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { - if (!options.allowPrototypes) { - return; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return parseObject(keys, val, options, valuesParsed); -}; - -var normalizeParseOptions = function normalizeParseOptions(opts) { - if (!opts) { - return defaults; - } - - if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') { - throw new TypeError('Decoder has to be a function.'); - } - - if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { - throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); - } - var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; - - return { - allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, - allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, - allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, - arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, - charset: charset, - charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, - comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, - decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, - delimiter: typeof opts.delimiter === 'string' || utils$1.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, - // eslint-disable-next-line no-implicit-coercion, no-extra-parens - depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, - ignoreQueryPrefix: opts.ignoreQueryPrefix === true, - interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, - parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, - parseArrays: opts.parseArrays !== false, - plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, - strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling - }; -}; - -var parse$4 = function (str, opts) { - var options = normalizeParseOptions(opts); - - if (str === '' || str === null || typeof str === 'undefined') { - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); - obj = utils$1.merge(obj, newObj, options); - } - - if (options.allowSparse === true) { - return obj; - } - - return utils$1.compact(obj); -}; - -var lib$3 = { - formats: formats, - parse: parse$4, - stringify: stringify_1 -}; - -function account(rawAccount) { - if (!rawAccount) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawAccount), { raw: () => rawAccount, buying_power: number(rawAccount.buying_power), regt_buying_power: number(rawAccount.regt_buying_power), daytrading_buying_power: number(rawAccount.daytrading_buying_power), cash: number(rawAccount.cash), created_at: new Date(rawAccount.created_at), portfolio_value: number(rawAccount.portfolio_value), multiplier: number(rawAccount.multiplier), equity: number(rawAccount.equity), last_equity: number(rawAccount.last_equity), long_market_value: number(rawAccount.long_market_value), short_market_value: number(rawAccount.short_market_value), initial_margin: number(rawAccount.initial_margin), maintenance_margin: number(rawAccount.maintenance_margin), last_maintenance_margin: number(rawAccount.last_maintenance_margin), sma: number(rawAccount.sma), status: rawAccount.status }); - } - catch (err) { - throw new Error(`Account parsing failed. ${err.message}`); - } -} -function clock(rawClock) { - if (!rawClock) { - return undefined; - } - try { - return { - raw: () => rawClock, - timestamp: new Date(rawClock.timestamp), - is_open: rawClock.is_open, - next_open: new Date(rawClock.next_open), - next_close: new Date(rawClock.next_close), - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function latestTrade(raw) { - if (!raw) { - return undefined; - } - try { - return Object.assign(Object.assign({}, raw), { raw: () => raw, trade: Object.assign(Object.assign({}, raw.trade), { t: new Date(raw.trade.t) }) }); - } - catch (err) { - throw new Error(`Latest trade parsing failed. ${err.message}`); - } -} -function order(rawOrder) { - if (!rawOrder) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawOrder), { raw: () => rawOrder, created_at: new Date(rawOrder.created_at), updated_at: new Date(rawOrder.updated_at), submitted_at: new Date(rawOrder.submitted_at), filled_at: new Date(rawOrder.filled_at), expired_at: new Date(rawOrder.expired_at), canceled_at: new Date(rawOrder.canceled_at), failed_at: new Date(rawOrder.failed_at), replaced_at: new Date(rawOrder.replaced_at), qty: number(rawOrder.qty), filled_qty: number(rawOrder.filled_qty), type: rawOrder.type, side: rawOrder.side, time_in_force: rawOrder.time_in_force, limit_price: number(rawOrder.limit_price), stop_price: number(rawOrder.stop_price), filled_avg_price: number(rawOrder.filled_avg_price), status: rawOrder.status, legs: orders(rawOrder.legs), trail_price: number(rawOrder.trail_price), trail_percent: number(rawOrder.trail_percent), hwm: number(rawOrder.hwm), order_class: rawOrder.order_class }); - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function orders(rawOrders) { - return rawOrders ? rawOrders.map((value) => order(value)) : undefined; -} -function canceled_order(input) { - if (!input) { - return undefined; - } - let order = input.body; - delete input.body; - try { - return Object.assign(Object.assign({}, input), { order: Object.assign(Object.assign({}, order), { raw: () => order, created_at: new Date(order.created_at), updated_at: new Date(order.updated_at), submitted_at: new Date(order.submitted_at), filled_at: new Date(order.filled_at), expired_at: new Date(order.expired_at), canceled_at: new Date(order.canceled_at), failed_at: new Date(order.failed_at), replaced_at: new Date(order.replaced_at), qty: number(order.qty), filled_qty: number(order.filled_qty), type: order.type, side: order.side, time_in_force: order.time_in_force, limit_price: number(order.limit_price), stop_price: number(order.stop_price), filled_avg_price: number(order.filled_avg_price), status: order.status, legs: orders(order.legs), trail_price: number(order.trail_price), trail_percent: number(order.trail_percent), hwm: number(order.hwm), order_class: order.order_class }) }); - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function canceled_orders(rawOrderCancelations) { - return rawOrderCancelations - ? rawOrderCancelations.map((value) => canceled_order(value)) - : undefined; -} -function position(rawPosition) { - if (!rawPosition) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawPosition), { raw: () => rawPosition, avg_entry_price: number(rawPosition.avg_entry_price), qty: number(rawPosition.qty), side: rawPosition.side, market_value: number(rawPosition.market_value), cost_basis: number(rawPosition.cost_basis), unrealized_pl: number(rawPosition.unrealized_pl), unrealized_plpc: number(rawPosition.unrealized_plpc), unrealized_intraday_pl: number(rawPosition.unrealized_intraday_pl), unrealized_intraday_plpc: number(rawPosition.unrealized_intraday_plpc), current_price: number(rawPosition.current_price), lastday_price: number(rawPosition.lastday_price), change_today: number(rawPosition.change_today) }); - } - catch (err) { - throw new Error(`Position parsing failed. ${err.message}`); - } -} -function positions(rawPositions) { - return rawPositions ? rawPositions.map((pos) => position(pos)) : undefined; -} -function tradeActivity(rawTradeActivity) { - if (!rawTradeActivity) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawTradeActivity), { raw: () => rawTradeActivity, cum_qty: number(rawTradeActivity.cum_qty), leaves_qty: number(rawTradeActivity.leaves_qty), price: number(rawTradeActivity.price), qty: number(rawTradeActivity.qty), side: rawTradeActivity.side, type: rawTradeActivity.type }); - } - catch (err) { - throw new Error(`TradeActivity parsing failed. ${err.message}`); - } -} -function nonTradeActivity(rawNonTradeActivity) { - if (!rawNonTradeActivity) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawNonTradeActivity), { raw: () => rawNonTradeActivity, net_amount: number(rawNonTradeActivity.net_amount), qty: number(rawNonTradeActivity.qty), per_share_amount: number(rawNonTradeActivity.per_share_amount) }); - } - catch (err) { - throw new Error(`NonTradeActivity parsing failed. ${err.message}`); - } -} -function activities(rawActivities) { - if (!rawActivities) { - return undefined; - } - try { - return rawActivities.map((rawActivity) => rawActivity.activity_type === 'FILL' - ? tradeActivity(rawActivity) - : nonTradeActivity(rawActivity)); - } - catch (err) { - throw new Error(`Activity parsing failed. ${err.message}`); - } -} -function pageOfTrades(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - trades: (page.trades == null ? [] : page.trades).map((trade) => (Object.assign(Object.assign({ raw: () => trade }, trade), { t: new Date(trade.t) }))), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfQuotes(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - quotes: (page.quotes == null ? [] : page.quotes).map((quote) => (Object.assign(Object.assign({ raw: () => quote }, quote), { t: new Date(quote.t) }))), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfBars(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - bars: (page.bars == null ? [] : page.bars).map((bar) => (Object.assign(Object.assign({ raw: () => bar }, bar), { t: new Date(bar.t) }))), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function snapshot(raw) { - if (!raw) { - return undefined; - } - try { - return Object.assign(Object.assign({}, raw), { raw: () => raw, latestTrade: raw.latestTrade - ? Object.assign(Object.assign({}, raw.latestTrade), { t: new Date(raw.latestTrade.t) }) : null, latestQuote: raw.latestQuote - ? Object.assign(Object.assign({}, raw.latestQuote), { t: new Date(raw.latestQuote.t) }) : null, minuteBar: raw.minuteBar - ? Object.assign(Object.assign({}, raw.minuteBar), { t: new Date(raw.minuteBar.t) }) : null, dailyBar: raw.dailyBar - ? Object.assign(Object.assign({}, raw.dailyBar), { t: new Date(raw.dailyBar.t) }) : null, prevDailyBar: raw.prevDailyBar - ? Object.assign(Object.assign({}, raw.prevDailyBar), { t: new Date(raw.prevDailyBar.t) }) : null }); - } - catch (err) { - throw new Error(`Snapshot parsing failed "${err.message}"`); - } -} -function snapshots(raw) { - let parsed = {}; - for (let [key, value] of Object.entries(raw)) { - parsed[key] = snapshot(value); - } - return parsed; -} -function number(numStr) { - if (typeof numStr === 'undefined' || numStr == null) { - return numStr; - } - const value = parseFloat(numStr); - if (Number.isNaN(value)) { - return null; - } - return value; -} -function trade_update(rawTradeUpdate) { - if (!rawTradeUpdate) - return undefined; - return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ raw: () => rawTradeUpdate, event: rawTradeUpdate.event, execution_id: rawTradeUpdate.execution_id, order: order(rawTradeUpdate.order) }, (rawTradeUpdate.event_id && { - event_id: number(rawTradeUpdate.event_id), - })), (rawTradeUpdate.at && { at: new Date(rawTradeUpdate.at) })), (rawTradeUpdate.timestamp && { - timestamp: new Date(rawTradeUpdate.timestamp), - })), (rawTradeUpdate.position_qty && { - position_qty: number(rawTradeUpdate.position_qty), - })), (rawTradeUpdate.price && { price: number(rawTradeUpdate.price) })), (rawTradeUpdate.qty && { qty: number(rawTradeUpdate.qty) })); -} -var parse$3 = { - account, - activities, - clock, - nonTradeActivity, - order, - orders, - canceled_orders, - position, - positions, - tradeActivity, - pageOfTrades, - pageOfQuotes, - pageOfBars, - snapshot, - snapshots, - trade_update, - latestTrade, -}; - -function unfetch_module(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return {ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||"get",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+","+t:t;}),t(a());},s.onerror=r,s.withCredentials="include"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null);})} - -var unfetch_module$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': unfetch_module -}); - -var conversions = {}; -var lib$2 = conversions; - -function sign(x) { - return x < 0 ? -1 : 1; -} - -function evenRound(x) { - // Round x to the nearest integer, choosing the even integer if it lies halfway between two. - if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor) - return Math.floor(x); - } else { - return Math.round(x); - } -} - -function createNumberConversion(bitLength, typeOpts) { - if (!typeOpts.unsigned) { - --bitLength; - } - const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); - const upperBound = Math.pow(2, bitLength) - 1; - - const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); - const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); - - return function(V, opts) { - if (!opts) opts = {}; - - let x = +V; - - if (opts.enforceRange) { - if (!Number.isFinite(x)) { - throw new TypeError("Argument is not a finite number"); - } - - x = sign(x) * Math.floor(Math.abs(x)); - if (x < lowerBound || x > upperBound) { - throw new TypeError("Argument is not in byte range"); - } - - return x; - } - - if (!isNaN(x) && opts.clamp) { - x = evenRound(x); - - if (x < lowerBound) x = lowerBound; - if (x > upperBound) x = upperBound; - return x; - } - - if (!Number.isFinite(x) || x === 0) { - return 0; - } - - x = sign(x) * Math.floor(Math.abs(x)); - x = x % moduloVal; - - if (!typeOpts.unsigned && x >= moduloBound) { - return x - moduloVal; - } else if (typeOpts.unsigned) { - if (x < 0) { - x += moduloVal; - } else if (x === -0) { // don't return negative zero - return 0; - } - } - - return x; - } -} - -conversions["void"] = function () { - return undefined; -}; - -conversions["boolean"] = function (val) { - return !!val; -}; - -conversions["byte"] = createNumberConversion(8, { unsigned: false }); -conversions["octet"] = createNumberConversion(8, { unsigned: true }); - -conversions["short"] = createNumberConversion(16, { unsigned: false }); -conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); - -conversions["long"] = createNumberConversion(32, { unsigned: false }); -conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); - -conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); -conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); - -conversions["double"] = function (V) { - const x = +V; - - if (!Number.isFinite(x)) { - throw new TypeError("Argument is not a finite floating-point value"); - } - - return x; -}; - -conversions["unrestricted double"] = function (V) { - const x = +V; - - if (isNaN(x)) { - throw new TypeError("Argument is NaN"); - } - - return x; -}; - -// not quite valid, but good enough for JS -conversions["float"] = conversions["double"]; -conversions["unrestricted float"] = conversions["unrestricted double"]; - -conversions["DOMString"] = function (V, opts) { - if (!opts) opts = {}; - - if (opts.treatNullAsEmptyString && V === null) { - return ""; - } - - return String(V); -}; - -conversions["ByteString"] = function (V, opts) { - const x = String(V); - let c = undefined; - for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) { - if (c > 255) { - throw new TypeError("Argument is not a valid bytestring"); - } - } - - return x; -}; - -conversions["USVString"] = function (V) { - const S = String(V); - const n = S.length; - const U = []; - for (let i = 0; i < n; ++i) { - const c = S.charCodeAt(i); - if (c < 0xD800 || c > 0xDFFF) { - U.push(String.fromCodePoint(c)); - } else if (0xDC00 <= c && c <= 0xDFFF) { - U.push(String.fromCodePoint(0xFFFD)); - } else { - if (i === n - 1) { - U.push(String.fromCodePoint(0xFFFD)); - } else { - const d = S.charCodeAt(i + 1); - if (0xDC00 <= d && d <= 0xDFFF) { - const a = c & 0x3FF; - const b = d & 0x3FF; - U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); - ++i; - } else { - U.push(String.fromCodePoint(0xFFFD)); - } - } - } - } - - return U.join(''); -}; - -conversions["Date"] = function (V, opts) { - if (!(V instanceof Date)) { - throw new TypeError("Argument is not a Date object"); - } - if (isNaN(V)) { - return undefined; - } - - return V; -}; - -conversions["RegExp"] = function (V, opts) { - if (!(V instanceof RegExp)) { - V = new RegExp(V); - } - - return V; -}; - -var utils = createCommonjsModule(function (module) { - -module.exports.mixin = function mixin(target, source) { - const keys = Object.getOwnPropertyNames(source); - for (let i = 0; i < keys.length; ++i) { - Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); - } -}; - -module.exports.wrapperSymbol = Symbol("wrapper"); -module.exports.implSymbol = Symbol("impl"); - -module.exports.wrapperForImpl = function (impl) { - return impl[module.exports.wrapperSymbol]; -}; - -module.exports.implForWrapper = function (wrapper) { - return wrapper[module.exports.implSymbol]; -}; -}); - -/** Highest positive signed 32-bit float value */ -const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 - -/** Bootstring parameters */ -const base = 36; -const tMin = 1; -const tMax = 26; -const skew = 38; -const damp = 700; -const initialBias = 72; -const initialN = 128; // 0x80 -const delimiter = '-'; // '\x2D' - -/** Regular expressions */ -const regexPunycode = /^xn--/; -const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars -const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators - -/** Error messages */ -const errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' -}; - -/** Convenience shortcuts */ -const baseMinusTMin = base - tMin; -const floor = Math.floor; -const stringFromCharCode = String.fromCharCode; - -/*--------------------------------------------------------------------------*/ - -/** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ -function error$1(type) { - throw new RangeError(errors[type]); -} - -/** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ -function map(array, fn) { - const result = []; - let length = array.length; - while (length--) { - result[length] = fn(array[length]); - } - return result; -} - -/** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ -function mapDomain(string, fn) { - const parts = string.split('@'); - let result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - const labels = string.split('.'); - const encoded = map(labels, fn).join('.'); - return result + encoded; -} - -/** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ -function ucs2decode(string) { - const output = []; - let counter = 0; - const length = string.length; - while (counter < length) { - const value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // It's a high surrogate, and there is a next character. - const extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // It's an unmatched surrogate; only append this code unit, in case the - // next code unit is the high surrogate of a surrogate pair. - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; -} - -/** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ -const ucs2encode = array => String.fromCodePoint(...array); - -/** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ -const basicToDigit = function(codePoint) { - if (codePoint - 0x30 < 0x0A) { - return codePoint - 0x16; - } - if (codePoint - 0x41 < 0x1A) { - return codePoint - 0x41; - } - if (codePoint - 0x61 < 0x1A) { - return codePoint - 0x61; - } - return base; -}; - -/** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ -const digitToBasic = function(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); -}; - -/** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ -const adapt = function(delta, numPoints, firstTime) { - let k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); -}; - -/** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ -const decode = function(input) { - // Don't use UCS-2. - const output = []; - const inputLength = input.length; - let i = 0; - let n = initialN; - let bias = initialBias; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - let basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (let j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error$1('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - let oldi = i; - for (let w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error$1('invalid-input'); - } - - const digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error$1('overflow'); - } - - i += digit * w; - const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - const baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error$1('overflow'); - } - - w *= baseMinusT; - - } - - const out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error$1('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output. - output.splice(i++, 0, n); - - } - - return String.fromCodePoint(...output); -}; - -/** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ -const encode = function(input) { - const output = []; - - // Convert the input in UCS-2 to an array of Unicode code points. - input = ucs2decode(input); - - // Cache the length. - let inputLength = input.length; - - // Initialize the state. - let n = initialN; - let delta = 0; - let bias = initialBias; - - // Handle the basic code points. - for (const currentValue of input) { - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - let basicLength = output.length; - let handledCPCount = basicLength; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string with a delimiter unless it's empty. - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - let m = maxInt; - for (const currentValue of input) { - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow. - const handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error$1('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (const currentValue of input) { - if (currentValue < n && ++delta > maxInt) { - error$1('overflow'); - } - if (currentValue == n) { - // Represent delta as a generalized variable-length integer. - let q = delta; - for (let k = base; /* no condition */; k += base) { - const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - const qMinusT = q - t; - const baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); -}; - -/** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ -const toUnicode$1 = function(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); -}; - -/** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ -const toASCII$1 = function(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); -}; - -/*--------------------------------------------------------------------------*/ - -/** Define the public API */ -const punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '2.1.0', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII$1, - 'toUnicode': toUnicode$1 -}; - -var punycode_1 = punycode; - -var mappingTable = [ - [ - [ - 0, - 44 - ], - "disallowed_STD3_valid" - ], - [ - [ - 45, - 46 - ], - "valid" - ], - [ - [ - 47, - 47 - ], - "disallowed_STD3_valid" - ], - [ - [ - 48, - 57 - ], - "valid" - ], - [ - [ - 58, - 64 - ], - "disallowed_STD3_valid" - ], - [ - [ - 65, - 65 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 66, - 66 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 67, - 67 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 68, - 68 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 69, - 69 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 70, - 70 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 71, - 71 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 72, - 72 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 73, - 73 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 74, - 74 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 75, - 75 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 76, - 76 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 77, - 77 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 78, - 78 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 79, - 79 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 80, - 80 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 81, - 81 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 82, - 82 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 83, - 83 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 84, - 84 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 85, - 85 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 86, - 86 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 87, - 87 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 88, - 88 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 89, - 89 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 90, - 90 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 91, - 96 - ], - "disallowed_STD3_valid" - ], - [ - [ - 97, - 122 - ], - "valid" - ], - [ - [ - 123, - 127 - ], - "disallowed_STD3_valid" - ], - [ - [ - 128, - 159 - ], - "disallowed" - ], - [ - [ - 160, - 160 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 161, - 167 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 168, - 168 - ], - "disallowed_STD3_mapped", - [ - 32, - 776 - ] - ], - [ - [ - 169, - 169 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 170, - 170 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 171, - 172 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 173, - 173 - ], - "ignored" - ], - [ - [ - 174, - 174 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 175, - 175 - ], - "disallowed_STD3_mapped", - [ - 32, - 772 - ] - ], - [ - [ - 176, - 177 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 178, - 178 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 179, - 179 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 180, - 180 - ], - "disallowed_STD3_mapped", - [ - 32, - 769 - ] - ], - [ - [ - 181, - 181 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 182, - 182 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 183, - 183 - ], - "valid" - ], - [ - [ - 184, - 184 - ], - "disallowed_STD3_mapped", - [ - 32, - 807 - ] - ], - [ - [ - 185, - 185 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 186, - 186 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 187, - 187 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 188, - 188 - ], - "mapped", - [ - 49, - 8260, - 52 - ] - ], - [ - [ - 189, - 189 - ], - "mapped", - [ - 49, - 8260, - 50 - ] - ], - [ - [ - 190, - 190 - ], - "mapped", - [ - 51, - 8260, - 52 - ] - ], - [ - [ - 191, - 191 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 192, - 192 - ], - "mapped", - [ - 224 - ] - ], - [ - [ - 193, - 193 - ], - "mapped", - [ - 225 - ] - ], - [ - [ - 194, - 194 - ], - "mapped", - [ - 226 - ] - ], - [ - [ - 195, - 195 - ], - "mapped", - [ - 227 - ] - ], - [ - [ - 196, - 196 - ], - "mapped", - [ - 228 - ] - ], - [ - [ - 197, - 197 - ], - "mapped", - [ - 229 - ] - ], - [ - [ - 198, - 198 - ], - "mapped", - [ - 230 - ] - ], - [ - [ - 199, - 199 - ], - "mapped", - [ - 231 - ] - ], - [ - [ - 200, - 200 - ], - "mapped", - [ - 232 - ] - ], - [ - [ - 201, - 201 - ], - "mapped", - [ - 233 - ] - ], - [ - [ - 202, - 202 - ], - "mapped", - [ - 234 - ] - ], - [ - [ - 203, - 203 - ], - "mapped", - [ - 235 - ] - ], - [ - [ - 204, - 204 - ], - "mapped", - [ - 236 - ] - ], - [ - [ - 205, - 205 - ], - "mapped", - [ - 237 - ] - ], - [ - [ - 206, - 206 - ], - "mapped", - [ - 238 - ] - ], - [ - [ - 207, - 207 - ], - "mapped", - [ - 239 - ] - ], - [ - [ - 208, - 208 - ], - "mapped", - [ - 240 - ] - ], - [ - [ - 209, - 209 - ], - "mapped", - [ - 241 - ] - ], - [ - [ - 210, - 210 - ], - "mapped", - [ - 242 - ] - ], - [ - [ - 211, - 211 - ], - "mapped", - [ - 243 - ] - ], - [ - [ - 212, - 212 - ], - "mapped", - [ - 244 - ] - ], - [ - [ - 213, - 213 - ], - "mapped", - [ - 245 - ] - ], - [ - [ - 214, - 214 - ], - "mapped", - [ - 246 - ] - ], - [ - [ - 215, - 215 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 216, - 216 - ], - "mapped", - [ - 248 - ] - ], - [ - [ - 217, - 217 - ], - "mapped", - [ - 249 - ] - ], - [ - [ - 218, - 218 - ], - "mapped", - [ - 250 - ] - ], - [ - [ - 219, - 219 - ], - "mapped", - [ - 251 - ] - ], - [ - [ - 220, - 220 - ], - "mapped", - [ - 252 - ] - ], - [ - [ - 221, - 221 - ], - "mapped", - [ - 253 - ] - ], - [ - [ - 222, - 222 - ], - "mapped", - [ - 254 - ] - ], - [ - [ - 223, - 223 - ], - "deviation", - [ - 115, - 115 - ] - ], - [ - [ - 224, - 246 - ], - "valid" - ], - [ - [ - 247, - 247 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 248, - 255 - ], - "valid" - ], - [ - [ - 256, - 256 - ], - "mapped", - [ - 257 - ] - ], - [ - [ - 257, - 257 - ], - "valid" - ], - [ - [ - 258, - 258 - ], - "mapped", - [ - 259 - ] - ], - [ - [ - 259, - 259 - ], - "valid" - ], - [ - [ - 260, - 260 - ], - "mapped", - [ - 261 - ] - ], - [ - [ - 261, - 261 - ], - "valid" - ], - [ - [ - 262, - 262 - ], - "mapped", - [ - 263 - ] - ], - [ - [ - 263, - 263 - ], - "valid" - ], - [ - [ - 264, - 264 - ], - "mapped", - [ - 265 - ] - ], - [ - [ - 265, - 265 - ], - "valid" - ], - [ - [ - 266, - 266 - ], - "mapped", - [ - 267 - ] - ], - [ - [ - 267, - 267 - ], - "valid" - ], - [ - [ - 268, - 268 - ], - "mapped", - [ - 269 - ] - ], - [ - [ - 269, - 269 - ], - "valid" - ], - [ - [ - 270, - 270 - ], - "mapped", - [ - 271 - ] - ], - [ - [ - 271, - 271 - ], - "valid" - ], - [ - [ - 272, - 272 - ], - "mapped", - [ - 273 - ] - ], - [ - [ - 273, - 273 - ], - "valid" - ], - [ - [ - 274, - 274 - ], - "mapped", - [ - 275 - ] - ], - [ - [ - 275, - 275 - ], - "valid" - ], - [ - [ - 276, - 276 - ], - "mapped", - [ - 277 - ] - ], - [ - [ - 277, - 277 - ], - "valid" - ], - [ - [ - 278, - 278 - ], - "mapped", - [ - 279 - ] - ], - [ - [ - 279, - 279 - ], - "valid" - ], - [ - [ - 280, - 280 - ], - "mapped", - [ - 281 - ] - ], - [ - [ - 281, - 281 - ], - "valid" - ], - [ - [ - 282, - 282 - ], - "mapped", - [ - 283 - ] - ], - [ - [ - 283, - 283 - ], - "valid" - ], - [ - [ - 284, - 284 - ], - "mapped", - [ - 285 - ] - ], - [ - [ - 285, - 285 - ], - "valid" - ], - [ - [ - 286, - 286 - ], - "mapped", - [ - 287 - ] - ], - [ - [ - 287, - 287 - ], - "valid" - ], - [ - [ - 288, - 288 - ], - "mapped", - [ - 289 - ] - ], - [ - [ - 289, - 289 - ], - "valid" - ], - [ - [ - 290, - 290 - ], - "mapped", - [ - 291 - ] - ], - [ - [ - 291, - 291 - ], - "valid" - ], - [ - [ - 292, - 292 - ], - "mapped", - [ - 293 - ] - ], - [ - [ - 293, - 293 - ], - "valid" - ], - [ - [ - 294, - 294 - ], - "mapped", - [ - 295 - ] - ], - [ - [ - 295, - 295 - ], - "valid" - ], - [ - [ - 296, - 296 - ], - "mapped", - [ - 297 - ] - ], - [ - [ - 297, - 297 - ], - "valid" - ], - [ - [ - 298, - 298 - ], - "mapped", - [ - 299 - ] - ], - [ - [ - 299, - 299 - ], - "valid" - ], - [ - [ - 300, - 300 - ], - "mapped", - [ - 301 - ] - ], - [ - [ - 301, - 301 - ], - "valid" - ], - [ - [ - 302, - 302 - ], - "mapped", - [ - 303 - ] - ], - [ - [ - 303, - 303 - ], - "valid" - ], - [ - [ - 304, - 304 - ], - "mapped", - [ - 105, - 775 - ] - ], - [ - [ - 305, - 305 - ], - "valid" - ], - [ - [ - 306, - 307 - ], - "mapped", - [ - 105, - 106 - ] - ], - [ - [ - 308, - 308 - ], - "mapped", - [ - 309 - ] - ], - [ - [ - 309, - 309 - ], - "valid" - ], - [ - [ - 310, - 310 - ], - "mapped", - [ - 311 - ] - ], - [ - [ - 311, - 312 - ], - "valid" - ], - [ - [ - 313, - 313 - ], - "mapped", - [ - 314 - ] - ], - [ - [ - 314, - 314 - ], - "valid" - ], - [ - [ - 315, - 315 - ], - "mapped", - [ - 316 - ] - ], - [ - [ - 316, - 316 - ], - "valid" - ], - [ - [ - 317, - 317 - ], - "mapped", - [ - 318 - ] - ], - [ - [ - 318, - 318 - ], - "valid" - ], - [ - [ - 319, - 320 - ], - "mapped", - [ - 108, - 183 - ] - ], - [ - [ - 321, - 321 - ], - "mapped", - [ - 322 - ] - ], - [ - [ - 322, - 322 - ], - "valid" - ], - [ - [ - 323, - 323 - ], - "mapped", - [ - 324 - ] - ], - [ - [ - 324, - 324 - ], - "valid" - ], - [ - [ - 325, - 325 - ], - "mapped", - [ - 326 - ] - ], - [ - [ - 326, - 326 - ], - "valid" - ], - [ - [ - 327, - 327 - ], - "mapped", - [ - 328 - ] - ], - [ - [ - 328, - 328 - ], - "valid" - ], - [ - [ - 329, - 329 - ], - "mapped", - [ - 700, - 110 - ] - ], - [ - [ - 330, - 330 - ], - "mapped", - [ - 331 - ] - ], - [ - [ - 331, - 331 - ], - "valid" - ], - [ - [ - 332, - 332 - ], - "mapped", - [ - 333 - ] - ], - [ - [ - 333, - 333 - ], - "valid" - ], - [ - [ - 334, - 334 - ], - "mapped", - [ - 335 - ] - ], - [ - [ - 335, - 335 - ], - "valid" - ], - [ - [ - 336, - 336 - ], - "mapped", - [ - 337 - ] - ], - [ - [ - 337, - 337 - ], - "valid" - ], - [ - [ - 338, - 338 - ], - "mapped", - [ - 339 - ] - ], - [ - [ - 339, - 339 - ], - "valid" - ], - [ - [ - 340, - 340 - ], - "mapped", - [ - 341 - ] - ], - [ - [ - 341, - 341 - ], - "valid" - ], - [ - [ - 342, - 342 - ], - "mapped", - [ - 343 - ] - ], - [ - [ - 343, - 343 - ], - "valid" - ], - [ - [ - 344, - 344 - ], - "mapped", - [ - 345 - ] - ], - [ - [ - 345, - 345 - ], - "valid" - ], - [ - [ - 346, - 346 - ], - "mapped", - [ - 347 - ] - ], - [ - [ - 347, - 347 - ], - "valid" - ], - [ - [ - 348, - 348 - ], - "mapped", - [ - 349 - ] - ], - [ - [ - 349, - 349 - ], - "valid" - ], - [ - [ - 350, - 350 - ], - "mapped", - [ - 351 - ] - ], - [ - [ - 351, - 351 - ], - "valid" - ], - [ - [ - 352, - 352 - ], - "mapped", - [ - 353 - ] - ], - [ - [ - 353, - 353 - ], - "valid" - ], - [ - [ - 354, - 354 - ], - "mapped", - [ - 355 - ] - ], - [ - [ - 355, - 355 - ], - "valid" - ], - [ - [ - 356, - 356 - ], - "mapped", - [ - 357 - ] - ], - [ - [ - 357, - 357 - ], - "valid" - ], - [ - [ - 358, - 358 - ], - "mapped", - [ - 359 - ] - ], - [ - [ - 359, - 359 - ], - "valid" - ], - [ - [ - 360, - 360 - ], - "mapped", - [ - 361 - ] - ], - [ - [ - 361, - 361 - ], - "valid" - ], - [ - [ - 362, - 362 - ], - "mapped", - [ - 363 - ] - ], - [ - [ - 363, - 363 - ], - "valid" - ], - [ - [ - 364, - 364 - ], - "mapped", - [ - 365 - ] - ], - [ - [ - 365, - 365 - ], - "valid" - ], - [ - [ - 366, - 366 - ], - "mapped", - [ - 367 - ] - ], - [ - [ - 367, - 367 - ], - "valid" - ], - [ - [ - 368, - 368 - ], - "mapped", - [ - 369 - ] - ], - [ - [ - 369, - 369 - ], - "valid" - ], - [ - [ - 370, - 370 - ], - "mapped", - [ - 371 - ] - ], - [ - [ - 371, - 371 - ], - "valid" - ], - [ - [ - 372, - 372 - ], - "mapped", - [ - 373 - ] - ], - [ - [ - 373, - 373 - ], - "valid" - ], - [ - [ - 374, - 374 - ], - "mapped", - [ - 375 - ] - ], - [ - [ - 375, - 375 - ], - "valid" - ], - [ - [ - 376, - 376 - ], - "mapped", - [ - 255 - ] - ], - [ - [ - 377, - 377 - ], - "mapped", - [ - 378 - ] - ], - [ - [ - 378, - 378 - ], - "valid" - ], - [ - [ - 379, - 379 - ], - "mapped", - [ - 380 - ] - ], - [ - [ - 380, - 380 - ], - "valid" - ], - [ - [ - 381, - 381 - ], - "mapped", - [ - 382 - ] - ], - [ - [ - 382, - 382 - ], - "valid" - ], - [ - [ - 383, - 383 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 384, - 384 - ], - "valid" - ], - [ - [ - 385, - 385 - ], - "mapped", - [ - 595 - ] - ], - [ - [ - 386, - 386 - ], - "mapped", - [ - 387 - ] - ], - [ - [ - 387, - 387 - ], - "valid" - ], - [ - [ - 388, - 388 - ], - "mapped", - [ - 389 - ] - ], - [ - [ - 389, - 389 - ], - "valid" - ], - [ - [ - 390, - 390 - ], - "mapped", - [ - 596 - ] - ], - [ - [ - 391, - 391 - ], - "mapped", - [ - 392 - ] - ], - [ - [ - 392, - 392 - ], - "valid" - ], - [ - [ - 393, - 393 - ], - "mapped", - [ - 598 - ] - ], - [ - [ - 394, - 394 - ], - "mapped", - [ - 599 - ] - ], - [ - [ - 395, - 395 - ], - "mapped", - [ - 396 - ] - ], - [ - [ - 396, - 397 - ], - "valid" - ], - [ - [ - 398, - 398 - ], - "mapped", - [ - 477 - ] - ], - [ - [ - 399, - 399 - ], - "mapped", - [ - 601 - ] - ], - [ - [ - 400, - 400 - ], - "mapped", - [ - 603 - ] - ], - [ - [ - 401, - 401 - ], - "mapped", - [ - 402 - ] - ], - [ - [ - 402, - 402 - ], - "valid" - ], - [ - [ - 403, - 403 - ], - "mapped", - [ - 608 - ] - ], - [ - [ - 404, - 404 - ], - "mapped", - [ - 611 - ] - ], - [ - [ - 405, - 405 - ], - "valid" - ], - [ - [ - 406, - 406 - ], - "mapped", - [ - 617 - ] - ], - [ - [ - 407, - 407 - ], - "mapped", - [ - 616 - ] - ], - [ - [ - 408, - 408 - ], - "mapped", - [ - 409 - ] - ], - [ - [ - 409, - 411 - ], - "valid" - ], - [ - [ - 412, - 412 - ], - "mapped", - [ - 623 - ] - ], - [ - [ - 413, - 413 - ], - "mapped", - [ - 626 - ] - ], - [ - [ - 414, - 414 - ], - "valid" - ], - [ - [ - 415, - 415 - ], - "mapped", - [ - 629 - ] - ], - [ - [ - 416, - 416 - ], - "mapped", - [ - 417 - ] - ], - [ - [ - 417, - 417 - ], - "valid" - ], - [ - [ - 418, - 418 - ], - "mapped", - [ - 419 - ] - ], - [ - [ - 419, - 419 - ], - "valid" - ], - [ - [ - 420, - 420 - ], - "mapped", - [ - 421 - ] - ], - [ - [ - 421, - 421 - ], - "valid" - ], - [ - [ - 422, - 422 - ], - "mapped", - [ - 640 - ] - ], - [ - [ - 423, - 423 - ], - "mapped", - [ - 424 - ] - ], - [ - [ - 424, - 424 - ], - "valid" - ], - [ - [ - 425, - 425 - ], - "mapped", - [ - 643 - ] - ], - [ - [ - 426, - 427 - ], - "valid" - ], - [ - [ - 428, - 428 - ], - "mapped", - [ - 429 - ] - ], - [ - [ - 429, - 429 - ], - "valid" - ], - [ - [ - 430, - 430 - ], - "mapped", - [ - 648 - ] - ], - [ - [ - 431, - 431 - ], - "mapped", - [ - 432 - ] - ], - [ - [ - 432, - 432 - ], - "valid" - ], - [ - [ - 433, - 433 - ], - "mapped", - [ - 650 - ] - ], - [ - [ - 434, - 434 - ], - "mapped", - [ - 651 - ] - ], - [ - [ - 435, - 435 - ], - "mapped", - [ - 436 - ] - ], - [ - [ - 436, - 436 - ], - "valid" - ], - [ - [ - 437, - 437 - ], - "mapped", - [ - 438 - ] - ], - [ - [ - 438, - 438 - ], - "valid" - ], - [ - [ - 439, - 439 - ], - "mapped", - [ - 658 - ] - ], - [ - [ - 440, - 440 - ], - "mapped", - [ - 441 - ] - ], - [ - [ - 441, - 443 - ], - "valid" - ], - [ - [ - 444, - 444 - ], - "mapped", - [ - 445 - ] - ], - [ - [ - 445, - 451 - ], - "valid" - ], - [ - [ - 452, - 454 - ], - "mapped", - [ - 100, - 382 - ] - ], - [ - [ - 455, - 457 - ], - "mapped", - [ - 108, - 106 - ] - ], - [ - [ - 458, - 460 - ], - "mapped", - [ - 110, - 106 - ] - ], - [ - [ - 461, - 461 - ], - "mapped", - [ - 462 - ] - ], - [ - [ - 462, - 462 - ], - "valid" - ], - [ - [ - 463, - 463 - ], - "mapped", - [ - 464 - ] - ], - [ - [ - 464, - 464 - ], - "valid" - ], - [ - [ - 465, - 465 - ], - "mapped", - [ - 466 - ] - ], - [ - [ - 466, - 466 - ], - "valid" - ], - [ - [ - 467, - 467 - ], - "mapped", - [ - 468 - ] - ], - [ - [ - 468, - 468 - ], - "valid" - ], - [ - [ - 469, - 469 - ], - "mapped", - [ - 470 - ] - ], - [ - [ - 470, - 470 - ], - "valid" - ], - [ - [ - 471, - 471 - ], - "mapped", - [ - 472 - ] - ], - [ - [ - 472, - 472 - ], - "valid" - ], - [ - [ - 473, - 473 - ], - "mapped", - [ - 474 - ] - ], - [ - [ - 474, - 474 - ], - "valid" - ], - [ - [ - 475, - 475 - ], - "mapped", - [ - 476 - ] - ], - [ - [ - 476, - 477 - ], - "valid" - ], - [ - [ - 478, - 478 - ], - "mapped", - [ - 479 - ] - ], - [ - [ - 479, - 479 - ], - "valid" - ], - [ - [ - 480, - 480 - ], - "mapped", - [ - 481 - ] - ], - [ - [ - 481, - 481 - ], - "valid" - ], - [ - [ - 482, - 482 - ], - "mapped", - [ - 483 - ] - ], - [ - [ - 483, - 483 - ], - "valid" - ], - [ - [ - 484, - 484 - ], - "mapped", - [ - 485 - ] - ], - [ - [ - 485, - 485 - ], - "valid" - ], - [ - [ - 486, - 486 - ], - "mapped", - [ - 487 - ] - ], - [ - [ - 487, - 487 - ], - "valid" - ], - [ - [ - 488, - 488 - ], - "mapped", - [ - 489 - ] - ], - [ - [ - 489, - 489 - ], - "valid" - ], - [ - [ - 490, - 490 - ], - "mapped", - [ - 491 - ] - ], - [ - [ - 491, - 491 - ], - "valid" - ], - [ - [ - 492, - 492 - ], - "mapped", - [ - 493 - ] - ], - [ - [ - 493, - 493 - ], - "valid" - ], - [ - [ - 494, - 494 - ], - "mapped", - [ - 495 - ] - ], - [ - [ - 495, - 496 - ], - "valid" - ], - [ - [ - 497, - 499 - ], - "mapped", - [ - 100, - 122 - ] - ], - [ - [ - 500, - 500 - ], - "mapped", - [ - 501 - ] - ], - [ - [ - 501, - 501 - ], - "valid" - ], - [ - [ - 502, - 502 - ], - "mapped", - [ - 405 - ] - ], - [ - [ - 503, - 503 - ], - "mapped", - [ - 447 - ] - ], - [ - [ - 504, - 504 - ], - "mapped", - [ - 505 - ] - ], - [ - [ - 505, - 505 - ], - "valid" - ], - [ - [ - 506, - 506 - ], - "mapped", - [ - 507 - ] - ], - [ - [ - 507, - 507 - ], - "valid" - ], - [ - [ - 508, - 508 - ], - "mapped", - [ - 509 - ] - ], - [ - [ - 509, - 509 - ], - "valid" - ], - [ - [ - 510, - 510 - ], - "mapped", - [ - 511 - ] - ], - [ - [ - 511, - 511 - ], - "valid" - ], - [ - [ - 512, - 512 - ], - "mapped", - [ - 513 - ] - ], - [ - [ - 513, - 513 - ], - "valid" - ], - [ - [ - 514, - 514 - ], - "mapped", - [ - 515 - ] - ], - [ - [ - 515, - 515 - ], - "valid" - ], - [ - [ - 516, - 516 - ], - "mapped", - [ - 517 - ] - ], - [ - [ - 517, - 517 - ], - "valid" - ], - [ - [ - 518, - 518 - ], - "mapped", - [ - 519 - ] - ], - [ - [ - 519, - 519 - ], - "valid" - ], - [ - [ - 520, - 520 - ], - "mapped", - [ - 521 - ] - ], - [ - [ - 521, - 521 - ], - "valid" - ], - [ - [ - 522, - 522 - ], - "mapped", - [ - 523 - ] - ], - [ - [ - 523, - 523 - ], - "valid" - ], - [ - [ - 524, - 524 - ], - "mapped", - [ - 525 - ] - ], - [ - [ - 525, - 525 - ], - "valid" - ], - [ - [ - 526, - 526 - ], - "mapped", - [ - 527 - ] - ], - [ - [ - 527, - 527 - ], - "valid" - ], - [ - [ - 528, - 528 - ], - "mapped", - [ - 529 - ] - ], - [ - [ - 529, - 529 - ], - "valid" - ], - [ - [ - 530, - 530 - ], - "mapped", - [ - 531 - ] - ], - [ - [ - 531, - 531 - ], - "valid" - ], - [ - [ - 532, - 532 - ], - "mapped", - [ - 533 - ] - ], - [ - [ - 533, - 533 - ], - "valid" - ], - [ - [ - 534, - 534 - ], - "mapped", - [ - 535 - ] - ], - [ - [ - 535, - 535 - ], - "valid" - ], - [ - [ - 536, - 536 - ], - "mapped", - [ - 537 - ] - ], - [ - [ - 537, - 537 - ], - "valid" - ], - [ - [ - 538, - 538 - ], - "mapped", - [ - 539 - ] - ], - [ - [ - 539, - 539 - ], - "valid" - ], - [ - [ - 540, - 540 - ], - "mapped", - [ - 541 - ] - ], - [ - [ - 541, - 541 - ], - "valid" - ], - [ - [ - 542, - 542 - ], - "mapped", - [ - 543 - ] - ], - [ - [ - 543, - 543 - ], - "valid" - ], - [ - [ - 544, - 544 - ], - "mapped", - [ - 414 - ] - ], - [ - [ - 545, - 545 - ], - "valid" - ], - [ - [ - 546, - 546 - ], - "mapped", - [ - 547 - ] - ], - [ - [ - 547, - 547 - ], - "valid" - ], - [ - [ - 548, - 548 - ], - "mapped", - [ - 549 - ] - ], - [ - [ - 549, - 549 - ], - "valid" - ], - [ - [ - 550, - 550 - ], - "mapped", - [ - 551 - ] - ], - [ - [ - 551, - 551 - ], - "valid" - ], - [ - [ - 552, - 552 - ], - "mapped", - [ - 553 - ] - ], - [ - [ - 553, - 553 - ], - "valid" - ], - [ - [ - 554, - 554 - ], - "mapped", - [ - 555 - ] - ], - [ - [ - 555, - 555 - ], - "valid" - ], - [ - [ - 556, - 556 - ], - "mapped", - [ - 557 - ] - ], - [ - [ - 557, - 557 - ], - "valid" - ], - [ - [ - 558, - 558 - ], - "mapped", - [ - 559 - ] - ], - [ - [ - 559, - 559 - ], - "valid" - ], - [ - [ - 560, - 560 - ], - "mapped", - [ - 561 - ] - ], - [ - [ - 561, - 561 - ], - "valid" - ], - [ - [ - 562, - 562 - ], - "mapped", - [ - 563 - ] - ], - [ - [ - 563, - 563 - ], - "valid" - ], - [ - [ - 564, - 566 - ], - "valid" - ], - [ - [ - 567, - 569 - ], - "valid" - ], - [ - [ - 570, - 570 - ], - "mapped", - [ - 11365 - ] - ], - [ - [ - 571, - 571 - ], - "mapped", - [ - 572 - ] - ], - [ - [ - 572, - 572 - ], - "valid" - ], - [ - [ - 573, - 573 - ], - "mapped", - [ - 410 - ] - ], - [ - [ - 574, - 574 - ], - "mapped", - [ - 11366 - ] - ], - [ - [ - 575, - 576 - ], - "valid" - ], - [ - [ - 577, - 577 - ], - "mapped", - [ - 578 - ] - ], - [ - [ - 578, - 578 - ], - "valid" - ], - [ - [ - 579, - 579 - ], - "mapped", - [ - 384 - ] - ], - [ - [ - 580, - 580 - ], - "mapped", - [ - 649 - ] - ], - [ - [ - 581, - 581 - ], - "mapped", - [ - 652 - ] - ], - [ - [ - 582, - 582 - ], - "mapped", - [ - 583 - ] - ], - [ - [ - 583, - 583 - ], - "valid" - ], - [ - [ - 584, - 584 - ], - "mapped", - [ - 585 - ] - ], - [ - [ - 585, - 585 - ], - "valid" - ], - [ - [ - 586, - 586 - ], - "mapped", - [ - 587 - ] - ], - [ - [ - 587, - 587 - ], - "valid" - ], - [ - [ - 588, - 588 - ], - "mapped", - [ - 589 - ] - ], - [ - [ - 589, - 589 - ], - "valid" - ], - [ - [ - 590, - 590 - ], - "mapped", - [ - 591 - ] - ], - [ - [ - 591, - 591 - ], - "valid" - ], - [ - [ - 592, - 680 - ], - "valid" - ], - [ - [ - 681, - 685 - ], - "valid" - ], - [ - [ - 686, - 687 - ], - "valid" - ], - [ - [ - 688, - 688 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 689, - 689 - ], - "mapped", - [ - 614 - ] - ], - [ - [ - 690, - 690 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 691, - 691 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 692, - 692 - ], - "mapped", - [ - 633 - ] - ], - [ - [ - 693, - 693 - ], - "mapped", - [ - 635 - ] - ], - [ - [ - 694, - 694 - ], - "mapped", - [ - 641 - ] - ], - [ - [ - 695, - 695 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 696, - 696 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 697, - 705 - ], - "valid" - ], - [ - [ - 706, - 709 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 710, - 721 - ], - "valid" - ], - [ - [ - 722, - 727 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 728, - 728 - ], - "disallowed_STD3_mapped", - [ - 32, - 774 - ] - ], - [ - [ - 729, - 729 - ], - "disallowed_STD3_mapped", - [ - 32, - 775 - ] - ], - [ - [ - 730, - 730 - ], - "disallowed_STD3_mapped", - [ - 32, - 778 - ] - ], - [ - [ - 731, - 731 - ], - "disallowed_STD3_mapped", - [ - 32, - 808 - ] - ], - [ - [ - 732, - 732 - ], - "disallowed_STD3_mapped", - [ - 32, - 771 - ] - ], - [ - [ - 733, - 733 - ], - "disallowed_STD3_mapped", - [ - 32, - 779 - ] - ], - [ - [ - 734, - 734 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 735, - 735 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 736, - 736 - ], - "mapped", - [ - 611 - ] - ], - [ - [ - 737, - 737 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 738, - 738 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 739, - 739 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 740, - 740 - ], - "mapped", - [ - 661 - ] - ], - [ - [ - 741, - 745 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 746, - 747 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 748, - 748 - ], - "valid" - ], - [ - [ - 749, - 749 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 750, - 750 - ], - "valid" - ], - [ - [ - 751, - 767 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 768, - 831 - ], - "valid" - ], - [ - [ - 832, - 832 - ], - "mapped", - [ - 768 - ] - ], - [ - [ - 833, - 833 - ], - "mapped", - [ - 769 - ] - ], - [ - [ - 834, - 834 - ], - "valid" - ], - [ - [ - 835, - 835 - ], - "mapped", - [ - 787 - ] - ], - [ - [ - 836, - 836 - ], - "mapped", - [ - 776, - 769 - ] - ], - [ - [ - 837, - 837 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 838, - 846 - ], - "valid" - ], - [ - [ - 847, - 847 - ], - "ignored" - ], - [ - [ - 848, - 855 - ], - "valid" - ], - [ - [ - 856, - 860 - ], - "valid" - ], - [ - [ - 861, - 863 - ], - "valid" - ], - [ - [ - 864, - 865 - ], - "valid" - ], - [ - [ - 866, - 866 - ], - "valid" - ], - [ - [ - 867, - 879 - ], - "valid" - ], - [ - [ - 880, - 880 - ], - "mapped", - [ - 881 - ] - ], - [ - [ - 881, - 881 - ], - "valid" - ], - [ - [ - 882, - 882 - ], - "mapped", - [ - 883 - ] - ], - [ - [ - 883, - 883 - ], - "valid" - ], - [ - [ - 884, - 884 - ], - "mapped", - [ - 697 - ] - ], - [ - [ - 885, - 885 - ], - "valid" - ], - [ - [ - 886, - 886 - ], - "mapped", - [ - 887 - ] - ], - [ - [ - 887, - 887 - ], - "valid" - ], - [ - [ - 888, - 889 - ], - "disallowed" - ], - [ - [ - 890, - 890 - ], - "disallowed_STD3_mapped", - [ - 32, - 953 - ] - ], - [ - [ - 891, - 893 - ], - "valid" - ], - [ - [ - 894, - 894 - ], - "disallowed_STD3_mapped", - [ - 59 - ] - ], - [ - [ - 895, - 895 - ], - "mapped", - [ - 1011 - ] - ], - [ - [ - 896, - 899 - ], - "disallowed" - ], - [ - [ - 900, - 900 - ], - "disallowed_STD3_mapped", - [ - 32, - 769 - ] - ], - [ - [ - 901, - 901 - ], - "disallowed_STD3_mapped", - [ - 32, - 776, - 769 - ] - ], - [ - [ - 902, - 902 - ], - "mapped", - [ - 940 - ] - ], - [ - [ - 903, - 903 - ], - "mapped", - [ - 183 - ] - ], - [ - [ - 904, - 904 - ], - "mapped", - [ - 941 - ] - ], - [ - [ - 905, - 905 - ], - "mapped", - [ - 942 - ] - ], - [ - [ - 906, - 906 - ], - "mapped", - [ - 943 - ] - ], - [ - [ - 907, - 907 - ], - "disallowed" - ], - [ - [ - 908, - 908 - ], - "mapped", - [ - 972 - ] - ], - [ - [ - 909, - 909 - ], - "disallowed" - ], - [ - [ - 910, - 910 - ], - "mapped", - [ - 973 - ] - ], - [ - [ - 911, - 911 - ], - "mapped", - [ - 974 - ] - ], - [ - [ - 912, - 912 - ], - "valid" - ], - [ - [ - 913, - 913 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 914, - 914 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 915, - 915 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 916, - 916 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 917, - 917 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 918, - 918 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 919, - 919 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 920, - 920 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 921, - 921 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 922, - 922 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 923, - 923 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 924, - 924 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 925, - 925 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 926, - 926 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 927, - 927 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 928, - 928 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 929, - 929 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 930, - 930 - ], - "disallowed" - ], - [ - [ - 931, - 931 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 932, - 932 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 933, - 933 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 934, - 934 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 935, - 935 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 936, - 936 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 937, - 937 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 938, - 938 - ], - "mapped", - [ - 970 - ] - ], - [ - [ - 939, - 939 - ], - "mapped", - [ - 971 - ] - ], - [ - [ - 940, - 961 - ], - "valid" - ], - [ - [ - 962, - 962 - ], - "deviation", - [ - 963 - ] - ], - [ - [ - 963, - 974 - ], - "valid" - ], - [ - [ - 975, - 975 - ], - "mapped", - [ - 983 - ] - ], - [ - [ - 976, - 976 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 977, - 977 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 978, - 978 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 979, - 979 - ], - "mapped", - [ - 973 - ] - ], - [ - [ - 980, - 980 - ], - "mapped", - [ - 971 - ] - ], - [ - [ - 981, - 981 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 982, - 982 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 983, - 983 - ], - "valid" - ], - [ - [ - 984, - 984 - ], - "mapped", - [ - 985 - ] - ], - [ - [ - 985, - 985 - ], - "valid" - ], - [ - [ - 986, - 986 - ], - "mapped", - [ - 987 - ] - ], - [ - [ - 987, - 987 - ], - "valid" - ], - [ - [ - 988, - 988 - ], - "mapped", - [ - 989 - ] - ], - [ - [ - 989, - 989 - ], - "valid" - ], - [ - [ - 990, - 990 - ], - "mapped", - [ - 991 - ] - ], - [ - [ - 991, - 991 - ], - "valid" - ], - [ - [ - 992, - 992 - ], - "mapped", - [ - 993 - ] - ], - [ - [ - 993, - 993 - ], - "valid" - ], - [ - [ - 994, - 994 - ], - "mapped", - [ - 995 - ] - ], - [ - [ - 995, - 995 - ], - "valid" - ], - [ - [ - 996, - 996 - ], - "mapped", - [ - 997 - ] - ], - [ - [ - 997, - 997 - ], - "valid" - ], - [ - [ - 998, - 998 - ], - "mapped", - [ - 999 - ] - ], - [ - [ - 999, - 999 - ], - "valid" - ], - [ - [ - 1000, - 1000 - ], - "mapped", - [ - 1001 - ] - ], - [ - [ - 1001, - 1001 - ], - "valid" - ], - [ - [ - 1002, - 1002 - ], - "mapped", - [ - 1003 - ] - ], - [ - [ - 1003, - 1003 - ], - "valid" - ], - [ - [ - 1004, - 1004 - ], - "mapped", - [ - 1005 - ] - ], - [ - [ - 1005, - 1005 - ], - "valid" - ], - [ - [ - 1006, - 1006 - ], - "mapped", - [ - 1007 - ] - ], - [ - [ - 1007, - 1007 - ], - "valid" - ], - [ - [ - 1008, - 1008 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 1009, - 1009 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 1010, - 1010 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 1011, - 1011 - ], - "valid" - ], - [ - [ - 1012, - 1012 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 1013, - 1013 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 1014, - 1014 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1015, - 1015 - ], - "mapped", - [ - 1016 - ] - ], - [ - [ - 1016, - 1016 - ], - "valid" - ], - [ - [ - 1017, - 1017 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 1018, - 1018 - ], - "mapped", - [ - 1019 - ] - ], - [ - [ - 1019, - 1019 - ], - "valid" - ], - [ - [ - 1020, - 1020 - ], - "valid" - ], - [ - [ - 1021, - 1021 - ], - "mapped", - [ - 891 - ] - ], - [ - [ - 1022, - 1022 - ], - "mapped", - [ - 892 - ] - ], - [ - [ - 1023, - 1023 - ], - "mapped", - [ - 893 - ] - ], - [ - [ - 1024, - 1024 - ], - "mapped", - [ - 1104 - ] - ], - [ - [ - 1025, - 1025 - ], - "mapped", - [ - 1105 - ] - ], - [ - [ - 1026, - 1026 - ], - "mapped", - [ - 1106 - ] - ], - [ - [ - 1027, - 1027 - ], - "mapped", - [ - 1107 - ] - ], - [ - [ - 1028, - 1028 - ], - "mapped", - [ - 1108 - ] - ], - [ - [ - 1029, - 1029 - ], - "mapped", - [ - 1109 - ] - ], - [ - [ - 1030, - 1030 - ], - "mapped", - [ - 1110 - ] - ], - [ - [ - 1031, - 1031 - ], - "mapped", - [ - 1111 - ] - ], - [ - [ - 1032, - 1032 - ], - "mapped", - [ - 1112 - ] - ], - [ - [ - 1033, - 1033 - ], - "mapped", - [ - 1113 - ] - ], - [ - [ - 1034, - 1034 - ], - "mapped", - [ - 1114 - ] - ], - [ - [ - 1035, - 1035 - ], - "mapped", - [ - 1115 - ] - ], - [ - [ - 1036, - 1036 - ], - "mapped", - [ - 1116 - ] - ], - [ - [ - 1037, - 1037 - ], - "mapped", - [ - 1117 - ] - ], - [ - [ - 1038, - 1038 - ], - "mapped", - [ - 1118 - ] - ], - [ - [ - 1039, - 1039 - ], - "mapped", - [ - 1119 - ] - ], - [ - [ - 1040, - 1040 - ], - "mapped", - [ - 1072 - ] - ], - [ - [ - 1041, - 1041 - ], - "mapped", - [ - 1073 - ] - ], - [ - [ - 1042, - 1042 - ], - "mapped", - [ - 1074 - ] - ], - [ - [ - 1043, - 1043 - ], - "mapped", - [ - 1075 - ] - ], - [ - [ - 1044, - 1044 - ], - "mapped", - [ - 1076 - ] - ], - [ - [ - 1045, - 1045 - ], - "mapped", - [ - 1077 - ] - ], - [ - [ - 1046, - 1046 - ], - "mapped", - [ - 1078 - ] - ], - [ - [ - 1047, - 1047 - ], - "mapped", - [ - 1079 - ] - ], - [ - [ - 1048, - 1048 - ], - "mapped", - [ - 1080 - ] - ], - [ - [ - 1049, - 1049 - ], - "mapped", - [ - 1081 - ] - ], - [ - [ - 1050, - 1050 - ], - "mapped", - [ - 1082 - ] - ], - [ - [ - 1051, - 1051 - ], - "mapped", - [ - 1083 - ] - ], - [ - [ - 1052, - 1052 - ], - "mapped", - [ - 1084 - ] - ], - [ - [ - 1053, - 1053 - ], - "mapped", - [ - 1085 - ] - ], - [ - [ - 1054, - 1054 - ], - "mapped", - [ - 1086 - ] - ], - [ - [ - 1055, - 1055 - ], - "mapped", - [ - 1087 - ] - ], - [ - [ - 1056, - 1056 - ], - "mapped", - [ - 1088 - ] - ], - [ - [ - 1057, - 1057 - ], - "mapped", - [ - 1089 - ] - ], - [ - [ - 1058, - 1058 - ], - "mapped", - [ - 1090 - ] - ], - [ - [ - 1059, - 1059 - ], - "mapped", - [ - 1091 - ] - ], - [ - [ - 1060, - 1060 - ], - "mapped", - [ - 1092 - ] - ], - [ - [ - 1061, - 1061 - ], - "mapped", - [ - 1093 - ] - ], - [ - [ - 1062, - 1062 - ], - "mapped", - [ - 1094 - ] - ], - [ - [ - 1063, - 1063 - ], - "mapped", - [ - 1095 - ] - ], - [ - [ - 1064, - 1064 - ], - "mapped", - [ - 1096 - ] - ], - [ - [ - 1065, - 1065 - ], - "mapped", - [ - 1097 - ] - ], - [ - [ - 1066, - 1066 - ], - "mapped", - [ - 1098 - ] - ], - [ - [ - 1067, - 1067 - ], - "mapped", - [ - 1099 - ] - ], - [ - [ - 1068, - 1068 - ], - "mapped", - [ - 1100 - ] - ], - [ - [ - 1069, - 1069 - ], - "mapped", - [ - 1101 - ] - ], - [ - [ - 1070, - 1070 - ], - "mapped", - [ - 1102 - ] - ], - [ - [ - 1071, - 1071 - ], - "mapped", - [ - 1103 - ] - ], - [ - [ - 1072, - 1103 - ], - "valid" - ], - [ - [ - 1104, - 1104 - ], - "valid" - ], - [ - [ - 1105, - 1116 - ], - "valid" - ], - [ - [ - 1117, - 1117 - ], - "valid" - ], - [ - [ - 1118, - 1119 - ], - "valid" - ], - [ - [ - 1120, - 1120 - ], - "mapped", - [ - 1121 - ] - ], - [ - [ - 1121, - 1121 - ], - "valid" - ], - [ - [ - 1122, - 1122 - ], - "mapped", - [ - 1123 - ] - ], - [ - [ - 1123, - 1123 - ], - "valid" - ], - [ - [ - 1124, - 1124 - ], - "mapped", - [ - 1125 - ] - ], - [ - [ - 1125, - 1125 - ], - "valid" - ], - [ - [ - 1126, - 1126 - ], - "mapped", - [ - 1127 - ] - ], - [ - [ - 1127, - 1127 - ], - "valid" - ], - [ - [ - 1128, - 1128 - ], - "mapped", - [ - 1129 - ] - ], - [ - [ - 1129, - 1129 - ], - "valid" - ], - [ - [ - 1130, - 1130 - ], - "mapped", - [ - 1131 - ] - ], - [ - [ - 1131, - 1131 - ], - "valid" - ], - [ - [ - 1132, - 1132 - ], - "mapped", - [ - 1133 - ] - ], - [ - [ - 1133, - 1133 - ], - "valid" - ], - [ - [ - 1134, - 1134 - ], - "mapped", - [ - 1135 - ] - ], - [ - [ - 1135, - 1135 - ], - "valid" - ], - [ - [ - 1136, - 1136 - ], - "mapped", - [ - 1137 - ] - ], - [ - [ - 1137, - 1137 - ], - "valid" - ], - [ - [ - 1138, - 1138 - ], - "mapped", - [ - 1139 - ] - ], - [ - [ - 1139, - 1139 - ], - "valid" - ], - [ - [ - 1140, - 1140 - ], - "mapped", - [ - 1141 - ] - ], - [ - [ - 1141, - 1141 - ], - "valid" - ], - [ - [ - 1142, - 1142 - ], - "mapped", - [ - 1143 - ] - ], - [ - [ - 1143, - 1143 - ], - "valid" - ], - [ - [ - 1144, - 1144 - ], - "mapped", - [ - 1145 - ] - ], - [ - [ - 1145, - 1145 - ], - "valid" - ], - [ - [ - 1146, - 1146 - ], - "mapped", - [ - 1147 - ] - ], - [ - [ - 1147, - 1147 - ], - "valid" - ], - [ - [ - 1148, - 1148 - ], - "mapped", - [ - 1149 - ] - ], - [ - [ - 1149, - 1149 - ], - "valid" - ], - [ - [ - 1150, - 1150 - ], - "mapped", - [ - 1151 - ] - ], - [ - [ - 1151, - 1151 - ], - "valid" - ], - [ - [ - 1152, - 1152 - ], - "mapped", - [ - 1153 - ] - ], - [ - [ - 1153, - 1153 - ], - "valid" - ], - [ - [ - 1154, - 1154 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1155, - 1158 - ], - "valid" - ], - [ - [ - 1159, - 1159 - ], - "valid" - ], - [ - [ - 1160, - 1161 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1162, - 1162 - ], - "mapped", - [ - 1163 - ] - ], - [ - [ - 1163, - 1163 - ], - "valid" - ], - [ - [ - 1164, - 1164 - ], - "mapped", - [ - 1165 - ] - ], - [ - [ - 1165, - 1165 - ], - "valid" - ], - [ - [ - 1166, - 1166 - ], - "mapped", - [ - 1167 - ] - ], - [ - [ - 1167, - 1167 - ], - "valid" - ], - [ - [ - 1168, - 1168 - ], - "mapped", - [ - 1169 - ] - ], - [ - [ - 1169, - 1169 - ], - "valid" - ], - [ - [ - 1170, - 1170 - ], - "mapped", - [ - 1171 - ] - ], - [ - [ - 1171, - 1171 - ], - "valid" - ], - [ - [ - 1172, - 1172 - ], - "mapped", - [ - 1173 - ] - ], - [ - [ - 1173, - 1173 - ], - "valid" - ], - [ - [ - 1174, - 1174 - ], - "mapped", - [ - 1175 - ] - ], - [ - [ - 1175, - 1175 - ], - "valid" - ], - [ - [ - 1176, - 1176 - ], - "mapped", - [ - 1177 - ] - ], - [ - [ - 1177, - 1177 - ], - "valid" - ], - [ - [ - 1178, - 1178 - ], - "mapped", - [ - 1179 - ] - ], - [ - [ - 1179, - 1179 - ], - "valid" - ], - [ - [ - 1180, - 1180 - ], - "mapped", - [ - 1181 - ] - ], - [ - [ - 1181, - 1181 - ], - "valid" - ], - [ - [ - 1182, - 1182 - ], - "mapped", - [ - 1183 - ] - ], - [ - [ - 1183, - 1183 - ], - "valid" - ], - [ - [ - 1184, - 1184 - ], - "mapped", - [ - 1185 - ] - ], - [ - [ - 1185, - 1185 - ], - "valid" - ], - [ - [ - 1186, - 1186 - ], - "mapped", - [ - 1187 - ] - ], - [ - [ - 1187, - 1187 - ], - "valid" - ], - [ - [ - 1188, - 1188 - ], - "mapped", - [ - 1189 - ] - ], - [ - [ - 1189, - 1189 - ], - "valid" - ], - [ - [ - 1190, - 1190 - ], - "mapped", - [ - 1191 - ] - ], - [ - [ - 1191, - 1191 - ], - "valid" - ], - [ - [ - 1192, - 1192 - ], - "mapped", - [ - 1193 - ] - ], - [ - [ - 1193, - 1193 - ], - "valid" - ], - [ - [ - 1194, - 1194 - ], - "mapped", - [ - 1195 - ] - ], - [ - [ - 1195, - 1195 - ], - "valid" - ], - [ - [ - 1196, - 1196 - ], - "mapped", - [ - 1197 - ] - ], - [ - [ - 1197, - 1197 - ], - "valid" - ], - [ - [ - 1198, - 1198 - ], - "mapped", - [ - 1199 - ] - ], - [ - [ - 1199, - 1199 - ], - "valid" - ], - [ - [ - 1200, - 1200 - ], - "mapped", - [ - 1201 - ] - ], - [ - [ - 1201, - 1201 - ], - "valid" - ], - [ - [ - 1202, - 1202 - ], - "mapped", - [ - 1203 - ] - ], - [ - [ - 1203, - 1203 - ], - "valid" - ], - [ - [ - 1204, - 1204 - ], - "mapped", - [ - 1205 - ] - ], - [ - [ - 1205, - 1205 - ], - "valid" - ], - [ - [ - 1206, - 1206 - ], - "mapped", - [ - 1207 - ] - ], - [ - [ - 1207, - 1207 - ], - "valid" - ], - [ - [ - 1208, - 1208 - ], - "mapped", - [ - 1209 - ] - ], - [ - [ - 1209, - 1209 - ], - "valid" - ], - [ - [ - 1210, - 1210 - ], - "mapped", - [ - 1211 - ] - ], - [ - [ - 1211, - 1211 - ], - "valid" - ], - [ - [ - 1212, - 1212 - ], - "mapped", - [ - 1213 - ] - ], - [ - [ - 1213, - 1213 - ], - "valid" - ], - [ - [ - 1214, - 1214 - ], - "mapped", - [ - 1215 - ] - ], - [ - [ - 1215, - 1215 - ], - "valid" - ], - [ - [ - 1216, - 1216 - ], - "disallowed" - ], - [ - [ - 1217, - 1217 - ], - "mapped", - [ - 1218 - ] - ], - [ - [ - 1218, - 1218 - ], - "valid" - ], - [ - [ - 1219, - 1219 - ], - "mapped", - [ - 1220 - ] - ], - [ - [ - 1220, - 1220 - ], - "valid" - ], - [ - [ - 1221, - 1221 - ], - "mapped", - [ - 1222 - ] - ], - [ - [ - 1222, - 1222 - ], - "valid" - ], - [ - [ - 1223, - 1223 - ], - "mapped", - [ - 1224 - ] - ], - [ - [ - 1224, - 1224 - ], - "valid" - ], - [ - [ - 1225, - 1225 - ], - "mapped", - [ - 1226 - ] - ], - [ - [ - 1226, - 1226 - ], - "valid" - ], - [ - [ - 1227, - 1227 - ], - "mapped", - [ - 1228 - ] - ], - [ - [ - 1228, - 1228 - ], - "valid" - ], - [ - [ - 1229, - 1229 - ], - "mapped", - [ - 1230 - ] - ], - [ - [ - 1230, - 1230 - ], - "valid" - ], - [ - [ - 1231, - 1231 - ], - "valid" - ], - [ - [ - 1232, - 1232 - ], - "mapped", - [ - 1233 - ] - ], - [ - [ - 1233, - 1233 - ], - "valid" - ], - [ - [ - 1234, - 1234 - ], - "mapped", - [ - 1235 - ] - ], - [ - [ - 1235, - 1235 - ], - "valid" - ], - [ - [ - 1236, - 1236 - ], - "mapped", - [ - 1237 - ] - ], - [ - [ - 1237, - 1237 - ], - "valid" - ], - [ - [ - 1238, - 1238 - ], - "mapped", - [ - 1239 - ] - ], - [ - [ - 1239, - 1239 - ], - "valid" - ], - [ - [ - 1240, - 1240 - ], - "mapped", - [ - 1241 - ] - ], - [ - [ - 1241, - 1241 - ], - "valid" - ], - [ - [ - 1242, - 1242 - ], - "mapped", - [ - 1243 - ] - ], - [ - [ - 1243, - 1243 - ], - "valid" - ], - [ - [ - 1244, - 1244 - ], - "mapped", - [ - 1245 - ] - ], - [ - [ - 1245, - 1245 - ], - "valid" - ], - [ - [ - 1246, - 1246 - ], - "mapped", - [ - 1247 - ] - ], - [ - [ - 1247, - 1247 - ], - "valid" - ], - [ - [ - 1248, - 1248 - ], - "mapped", - [ - 1249 - ] - ], - [ - [ - 1249, - 1249 - ], - "valid" - ], - [ - [ - 1250, - 1250 - ], - "mapped", - [ - 1251 - ] - ], - [ - [ - 1251, - 1251 - ], - "valid" - ], - [ - [ - 1252, - 1252 - ], - "mapped", - [ - 1253 - ] - ], - [ - [ - 1253, - 1253 - ], - "valid" - ], - [ - [ - 1254, - 1254 - ], - "mapped", - [ - 1255 - ] - ], - [ - [ - 1255, - 1255 - ], - "valid" - ], - [ - [ - 1256, - 1256 - ], - "mapped", - [ - 1257 - ] - ], - [ - [ - 1257, - 1257 - ], - "valid" - ], - [ - [ - 1258, - 1258 - ], - "mapped", - [ - 1259 - ] - ], - [ - [ - 1259, - 1259 - ], - "valid" - ], - [ - [ - 1260, - 1260 - ], - "mapped", - [ - 1261 - ] - ], - [ - [ - 1261, - 1261 - ], - "valid" - ], - [ - [ - 1262, - 1262 - ], - "mapped", - [ - 1263 - ] - ], - [ - [ - 1263, - 1263 - ], - "valid" - ], - [ - [ - 1264, - 1264 - ], - "mapped", - [ - 1265 - ] - ], - [ - [ - 1265, - 1265 - ], - "valid" - ], - [ - [ - 1266, - 1266 - ], - "mapped", - [ - 1267 - ] - ], - [ - [ - 1267, - 1267 - ], - "valid" - ], - [ - [ - 1268, - 1268 - ], - "mapped", - [ - 1269 - ] - ], - [ - [ - 1269, - 1269 - ], - "valid" - ], - [ - [ - 1270, - 1270 - ], - "mapped", - [ - 1271 - ] - ], - [ - [ - 1271, - 1271 - ], - "valid" - ], - [ - [ - 1272, - 1272 - ], - "mapped", - [ - 1273 - ] - ], - [ - [ - 1273, - 1273 - ], - "valid" - ], - [ - [ - 1274, - 1274 - ], - "mapped", - [ - 1275 - ] - ], - [ - [ - 1275, - 1275 - ], - "valid" - ], - [ - [ - 1276, - 1276 - ], - "mapped", - [ - 1277 - ] - ], - [ - [ - 1277, - 1277 - ], - "valid" - ], - [ - [ - 1278, - 1278 - ], - "mapped", - [ - 1279 - ] - ], - [ - [ - 1279, - 1279 - ], - "valid" - ], - [ - [ - 1280, - 1280 - ], - "mapped", - [ - 1281 - ] - ], - [ - [ - 1281, - 1281 - ], - "valid" - ], - [ - [ - 1282, - 1282 - ], - "mapped", - [ - 1283 - ] - ], - [ - [ - 1283, - 1283 - ], - "valid" - ], - [ - [ - 1284, - 1284 - ], - "mapped", - [ - 1285 - ] - ], - [ - [ - 1285, - 1285 - ], - "valid" - ], - [ - [ - 1286, - 1286 - ], - "mapped", - [ - 1287 - ] - ], - [ - [ - 1287, - 1287 - ], - "valid" - ], - [ - [ - 1288, - 1288 - ], - "mapped", - [ - 1289 - ] - ], - [ - [ - 1289, - 1289 - ], - "valid" - ], - [ - [ - 1290, - 1290 - ], - "mapped", - [ - 1291 - ] - ], - [ - [ - 1291, - 1291 - ], - "valid" - ], - [ - [ - 1292, - 1292 - ], - "mapped", - [ - 1293 - ] - ], - [ - [ - 1293, - 1293 - ], - "valid" - ], - [ - [ - 1294, - 1294 - ], - "mapped", - [ - 1295 - ] - ], - [ - [ - 1295, - 1295 - ], - "valid" - ], - [ - [ - 1296, - 1296 - ], - "mapped", - [ - 1297 - ] - ], - [ - [ - 1297, - 1297 - ], - "valid" - ], - [ - [ - 1298, - 1298 - ], - "mapped", - [ - 1299 - ] - ], - [ - [ - 1299, - 1299 - ], - "valid" - ], - [ - [ - 1300, - 1300 - ], - "mapped", - [ - 1301 - ] - ], - [ - [ - 1301, - 1301 - ], - "valid" - ], - [ - [ - 1302, - 1302 - ], - "mapped", - [ - 1303 - ] - ], - [ - [ - 1303, - 1303 - ], - "valid" - ], - [ - [ - 1304, - 1304 - ], - "mapped", - [ - 1305 - ] - ], - [ - [ - 1305, - 1305 - ], - "valid" - ], - [ - [ - 1306, - 1306 - ], - "mapped", - [ - 1307 - ] - ], - [ - [ - 1307, - 1307 - ], - "valid" - ], - [ - [ - 1308, - 1308 - ], - "mapped", - [ - 1309 - ] - ], - [ - [ - 1309, - 1309 - ], - "valid" - ], - [ - [ - 1310, - 1310 - ], - "mapped", - [ - 1311 - ] - ], - [ - [ - 1311, - 1311 - ], - "valid" - ], - [ - [ - 1312, - 1312 - ], - "mapped", - [ - 1313 - ] - ], - [ - [ - 1313, - 1313 - ], - "valid" - ], - [ - [ - 1314, - 1314 - ], - "mapped", - [ - 1315 - ] - ], - [ - [ - 1315, - 1315 - ], - "valid" - ], - [ - [ - 1316, - 1316 - ], - "mapped", - [ - 1317 - ] - ], - [ - [ - 1317, - 1317 - ], - "valid" - ], - [ - [ - 1318, - 1318 - ], - "mapped", - [ - 1319 - ] - ], - [ - [ - 1319, - 1319 - ], - "valid" - ], - [ - [ - 1320, - 1320 - ], - "mapped", - [ - 1321 - ] - ], - [ - [ - 1321, - 1321 - ], - "valid" - ], - [ - [ - 1322, - 1322 - ], - "mapped", - [ - 1323 - ] - ], - [ - [ - 1323, - 1323 - ], - "valid" - ], - [ - [ - 1324, - 1324 - ], - "mapped", - [ - 1325 - ] - ], - [ - [ - 1325, - 1325 - ], - "valid" - ], - [ - [ - 1326, - 1326 - ], - "mapped", - [ - 1327 - ] - ], - [ - [ - 1327, - 1327 - ], - "valid" - ], - [ - [ - 1328, - 1328 - ], - "disallowed" - ], - [ - [ - 1329, - 1329 - ], - "mapped", - [ - 1377 - ] - ], - [ - [ - 1330, - 1330 - ], - "mapped", - [ - 1378 - ] - ], - [ - [ - 1331, - 1331 - ], - "mapped", - [ - 1379 - ] - ], - [ - [ - 1332, - 1332 - ], - "mapped", - [ - 1380 - ] - ], - [ - [ - 1333, - 1333 - ], - "mapped", - [ - 1381 - ] - ], - [ - [ - 1334, - 1334 - ], - "mapped", - [ - 1382 - ] - ], - [ - [ - 1335, - 1335 - ], - "mapped", - [ - 1383 - ] - ], - [ - [ - 1336, - 1336 - ], - "mapped", - [ - 1384 - ] - ], - [ - [ - 1337, - 1337 - ], - "mapped", - [ - 1385 - ] - ], - [ - [ - 1338, - 1338 - ], - "mapped", - [ - 1386 - ] - ], - [ - [ - 1339, - 1339 - ], - "mapped", - [ - 1387 - ] - ], - [ - [ - 1340, - 1340 - ], - "mapped", - [ - 1388 - ] - ], - [ - [ - 1341, - 1341 - ], - "mapped", - [ - 1389 - ] - ], - [ - [ - 1342, - 1342 - ], - "mapped", - [ - 1390 - ] - ], - [ - [ - 1343, - 1343 - ], - "mapped", - [ - 1391 - ] - ], - [ - [ - 1344, - 1344 - ], - "mapped", - [ - 1392 - ] - ], - [ - [ - 1345, - 1345 - ], - "mapped", - [ - 1393 - ] - ], - [ - [ - 1346, - 1346 - ], - "mapped", - [ - 1394 - ] - ], - [ - [ - 1347, - 1347 - ], - "mapped", - [ - 1395 - ] - ], - [ - [ - 1348, - 1348 - ], - "mapped", - [ - 1396 - ] - ], - [ - [ - 1349, - 1349 - ], - "mapped", - [ - 1397 - ] - ], - [ - [ - 1350, - 1350 - ], - "mapped", - [ - 1398 - ] - ], - [ - [ - 1351, - 1351 - ], - "mapped", - [ - 1399 - ] - ], - [ - [ - 1352, - 1352 - ], - "mapped", - [ - 1400 - ] - ], - [ - [ - 1353, - 1353 - ], - "mapped", - [ - 1401 - ] - ], - [ - [ - 1354, - 1354 - ], - "mapped", - [ - 1402 - ] - ], - [ - [ - 1355, - 1355 - ], - "mapped", - [ - 1403 - ] - ], - [ - [ - 1356, - 1356 - ], - "mapped", - [ - 1404 - ] - ], - [ - [ - 1357, - 1357 - ], - "mapped", - [ - 1405 - ] - ], - [ - [ - 1358, - 1358 - ], - "mapped", - [ - 1406 - ] - ], - [ - [ - 1359, - 1359 - ], - "mapped", - [ - 1407 - ] - ], - [ - [ - 1360, - 1360 - ], - "mapped", - [ - 1408 - ] - ], - [ - [ - 1361, - 1361 - ], - "mapped", - [ - 1409 - ] - ], - [ - [ - 1362, - 1362 - ], - "mapped", - [ - 1410 - ] - ], - [ - [ - 1363, - 1363 - ], - "mapped", - [ - 1411 - ] - ], - [ - [ - 1364, - 1364 - ], - "mapped", - [ - 1412 - ] - ], - [ - [ - 1365, - 1365 - ], - "mapped", - [ - 1413 - ] - ], - [ - [ - 1366, - 1366 - ], - "mapped", - [ - 1414 - ] - ], - [ - [ - 1367, - 1368 - ], - "disallowed" - ], - [ - [ - 1369, - 1369 - ], - "valid" - ], - [ - [ - 1370, - 1375 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1376, - 1376 - ], - "disallowed" - ], - [ - [ - 1377, - 1414 - ], - "valid" - ], - [ - [ - 1415, - 1415 - ], - "mapped", - [ - 1381, - 1410 - ] - ], - [ - [ - 1416, - 1416 - ], - "disallowed" - ], - [ - [ - 1417, - 1417 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1418, - 1418 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1419, - 1420 - ], - "disallowed" - ], - [ - [ - 1421, - 1422 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1423, - 1423 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1424, - 1424 - ], - "disallowed" - ], - [ - [ - 1425, - 1441 - ], - "valid" - ], - [ - [ - 1442, - 1442 - ], - "valid" - ], - [ - [ - 1443, - 1455 - ], - "valid" - ], - [ - [ - 1456, - 1465 - ], - "valid" - ], - [ - [ - 1466, - 1466 - ], - "valid" - ], - [ - [ - 1467, - 1469 - ], - "valid" - ], - [ - [ - 1470, - 1470 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1471, - 1471 - ], - "valid" - ], - [ - [ - 1472, - 1472 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1473, - 1474 - ], - "valid" - ], - [ - [ - 1475, - 1475 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1476, - 1476 - ], - "valid" - ], - [ - [ - 1477, - 1477 - ], - "valid" - ], - [ - [ - 1478, - 1478 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1479, - 1479 - ], - "valid" - ], - [ - [ - 1480, - 1487 - ], - "disallowed" - ], - [ - [ - 1488, - 1514 - ], - "valid" - ], - [ - [ - 1515, - 1519 - ], - "disallowed" - ], - [ - [ - 1520, - 1524 - ], - "valid" - ], - [ - [ - 1525, - 1535 - ], - "disallowed" - ], - [ - [ - 1536, - 1539 - ], - "disallowed" - ], - [ - [ - 1540, - 1540 - ], - "disallowed" - ], - [ - [ - 1541, - 1541 - ], - "disallowed" - ], - [ - [ - 1542, - 1546 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1547, - 1547 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1548, - 1548 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1549, - 1551 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1552, - 1557 - ], - "valid" - ], - [ - [ - 1558, - 1562 - ], - "valid" - ], - [ - [ - 1563, - 1563 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1564, - 1564 - ], - "disallowed" - ], - [ - [ - 1565, - 1565 - ], - "disallowed" - ], - [ - [ - 1566, - 1566 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1567, - 1567 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1568, - 1568 - ], - "valid" - ], - [ - [ - 1569, - 1594 - ], - "valid" - ], - [ - [ - 1595, - 1599 - ], - "valid" - ], - [ - [ - 1600, - 1600 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1601, - 1618 - ], - "valid" - ], - [ - [ - 1619, - 1621 - ], - "valid" - ], - [ - [ - 1622, - 1624 - ], - "valid" - ], - [ - [ - 1625, - 1630 - ], - "valid" - ], - [ - [ - 1631, - 1631 - ], - "valid" - ], - [ - [ - 1632, - 1641 - ], - "valid" - ], - [ - [ - 1642, - 1645 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1646, - 1647 - ], - "valid" - ], - [ - [ - 1648, - 1652 - ], - "valid" - ], - [ - [ - 1653, - 1653 - ], - "mapped", - [ - 1575, - 1652 - ] - ], - [ - [ - 1654, - 1654 - ], - "mapped", - [ - 1608, - 1652 - ] - ], - [ - [ - 1655, - 1655 - ], - "mapped", - [ - 1735, - 1652 - ] - ], - [ - [ - 1656, - 1656 - ], - "mapped", - [ - 1610, - 1652 - ] - ], - [ - [ - 1657, - 1719 - ], - "valid" - ], - [ - [ - 1720, - 1721 - ], - "valid" - ], - [ - [ - 1722, - 1726 - ], - "valid" - ], - [ - [ - 1727, - 1727 - ], - "valid" - ], - [ - [ - 1728, - 1742 - ], - "valid" - ], - [ - [ - 1743, - 1743 - ], - "valid" - ], - [ - [ - 1744, - 1747 - ], - "valid" - ], - [ - [ - 1748, - 1748 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1749, - 1756 - ], - "valid" - ], - [ - [ - 1757, - 1757 - ], - "disallowed" - ], - [ - [ - 1758, - 1758 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1759, - 1768 - ], - "valid" - ], - [ - [ - 1769, - 1769 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1770, - 1773 - ], - "valid" - ], - [ - [ - 1774, - 1775 - ], - "valid" - ], - [ - [ - 1776, - 1785 - ], - "valid" - ], - [ - [ - 1786, - 1790 - ], - "valid" - ], - [ - [ - 1791, - 1791 - ], - "valid" - ], - [ - [ - 1792, - 1805 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 1806, - 1806 - ], - "disallowed" - ], - [ - [ - 1807, - 1807 - ], - "disallowed" - ], - [ - [ - 1808, - 1836 - ], - "valid" - ], - [ - [ - 1837, - 1839 - ], - "valid" - ], - [ - [ - 1840, - 1866 - ], - "valid" - ], - [ - [ - 1867, - 1868 - ], - "disallowed" - ], - [ - [ - 1869, - 1871 - ], - "valid" - ], - [ - [ - 1872, - 1901 - ], - "valid" - ], - [ - [ - 1902, - 1919 - ], - "valid" - ], - [ - [ - 1920, - 1968 - ], - "valid" - ], - [ - [ - 1969, - 1969 - ], - "valid" - ], - [ - [ - 1970, - 1983 - ], - "disallowed" - ], - [ - [ - 1984, - 2037 - ], - "valid" - ], - [ - [ - 2038, - 2042 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2043, - 2047 - ], - "disallowed" - ], - [ - [ - 2048, - 2093 - ], - "valid" - ], - [ - [ - 2094, - 2095 - ], - "disallowed" - ], - [ - [ - 2096, - 2110 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2111, - 2111 - ], - "disallowed" - ], - [ - [ - 2112, - 2139 - ], - "valid" - ], - [ - [ - 2140, - 2141 - ], - "disallowed" - ], - [ - [ - 2142, - 2142 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2143, - 2207 - ], - "disallowed" - ], - [ - [ - 2208, - 2208 - ], - "valid" - ], - [ - [ - 2209, - 2209 - ], - "valid" - ], - [ - [ - 2210, - 2220 - ], - "valid" - ], - [ - [ - 2221, - 2226 - ], - "valid" - ], - [ - [ - 2227, - 2228 - ], - "valid" - ], - [ - [ - 2229, - 2274 - ], - "disallowed" - ], - [ - [ - 2275, - 2275 - ], - "valid" - ], - [ - [ - 2276, - 2302 - ], - "valid" - ], - [ - [ - 2303, - 2303 - ], - "valid" - ], - [ - [ - 2304, - 2304 - ], - "valid" - ], - [ - [ - 2305, - 2307 - ], - "valid" - ], - [ - [ - 2308, - 2308 - ], - "valid" - ], - [ - [ - 2309, - 2361 - ], - "valid" - ], - [ - [ - 2362, - 2363 - ], - "valid" - ], - [ - [ - 2364, - 2381 - ], - "valid" - ], - [ - [ - 2382, - 2382 - ], - "valid" - ], - [ - [ - 2383, - 2383 - ], - "valid" - ], - [ - [ - 2384, - 2388 - ], - "valid" - ], - [ - [ - 2389, - 2389 - ], - "valid" - ], - [ - [ - 2390, - 2391 - ], - "valid" - ], - [ - [ - 2392, - 2392 - ], - "mapped", - [ - 2325, - 2364 - ] - ], - [ - [ - 2393, - 2393 - ], - "mapped", - [ - 2326, - 2364 - ] - ], - [ - [ - 2394, - 2394 - ], - "mapped", - [ - 2327, - 2364 - ] - ], - [ - [ - 2395, - 2395 - ], - "mapped", - [ - 2332, - 2364 - ] - ], - [ - [ - 2396, - 2396 - ], - "mapped", - [ - 2337, - 2364 - ] - ], - [ - [ - 2397, - 2397 - ], - "mapped", - [ - 2338, - 2364 - ] - ], - [ - [ - 2398, - 2398 - ], - "mapped", - [ - 2347, - 2364 - ] - ], - [ - [ - 2399, - 2399 - ], - "mapped", - [ - 2351, - 2364 - ] - ], - [ - [ - 2400, - 2403 - ], - "valid" - ], - [ - [ - 2404, - 2405 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2406, - 2415 - ], - "valid" - ], - [ - [ - 2416, - 2416 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2417, - 2418 - ], - "valid" - ], - [ - [ - 2419, - 2423 - ], - "valid" - ], - [ - [ - 2424, - 2424 - ], - "valid" - ], - [ - [ - 2425, - 2426 - ], - "valid" - ], - [ - [ - 2427, - 2428 - ], - "valid" - ], - [ - [ - 2429, - 2429 - ], - "valid" - ], - [ - [ - 2430, - 2431 - ], - "valid" - ], - [ - [ - 2432, - 2432 - ], - "valid" - ], - [ - [ - 2433, - 2435 - ], - "valid" - ], - [ - [ - 2436, - 2436 - ], - "disallowed" - ], - [ - [ - 2437, - 2444 - ], - "valid" - ], - [ - [ - 2445, - 2446 - ], - "disallowed" - ], - [ - [ - 2447, - 2448 - ], - "valid" - ], - [ - [ - 2449, - 2450 - ], - "disallowed" - ], - [ - [ - 2451, - 2472 - ], - "valid" - ], - [ - [ - 2473, - 2473 - ], - "disallowed" - ], - [ - [ - 2474, - 2480 - ], - "valid" - ], - [ - [ - 2481, - 2481 - ], - "disallowed" - ], - [ - [ - 2482, - 2482 - ], - "valid" - ], - [ - [ - 2483, - 2485 - ], - "disallowed" - ], - [ - [ - 2486, - 2489 - ], - "valid" - ], - [ - [ - 2490, - 2491 - ], - "disallowed" - ], - [ - [ - 2492, - 2492 - ], - "valid" - ], - [ - [ - 2493, - 2493 - ], - "valid" - ], - [ - [ - 2494, - 2500 - ], - "valid" - ], - [ - [ - 2501, - 2502 - ], - "disallowed" - ], - [ - [ - 2503, - 2504 - ], - "valid" - ], - [ - [ - 2505, - 2506 - ], - "disallowed" - ], - [ - [ - 2507, - 2509 - ], - "valid" - ], - [ - [ - 2510, - 2510 - ], - "valid" - ], - [ - [ - 2511, - 2518 - ], - "disallowed" - ], - [ - [ - 2519, - 2519 - ], - "valid" - ], - [ - [ - 2520, - 2523 - ], - "disallowed" - ], - [ - [ - 2524, - 2524 - ], - "mapped", - [ - 2465, - 2492 - ] - ], - [ - [ - 2525, - 2525 - ], - "mapped", - [ - 2466, - 2492 - ] - ], - [ - [ - 2526, - 2526 - ], - "disallowed" - ], - [ - [ - 2527, - 2527 - ], - "mapped", - [ - 2479, - 2492 - ] - ], - [ - [ - 2528, - 2531 - ], - "valid" - ], - [ - [ - 2532, - 2533 - ], - "disallowed" - ], - [ - [ - 2534, - 2545 - ], - "valid" - ], - [ - [ - 2546, - 2554 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2555, - 2555 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2556, - 2560 - ], - "disallowed" - ], - [ - [ - 2561, - 2561 - ], - "valid" - ], - [ - [ - 2562, - 2562 - ], - "valid" - ], - [ - [ - 2563, - 2563 - ], - "valid" - ], - [ - [ - 2564, - 2564 - ], - "disallowed" - ], - [ - [ - 2565, - 2570 - ], - "valid" - ], - [ - [ - 2571, - 2574 - ], - "disallowed" - ], - [ - [ - 2575, - 2576 - ], - "valid" - ], - [ - [ - 2577, - 2578 - ], - "disallowed" - ], - [ - [ - 2579, - 2600 - ], - "valid" - ], - [ - [ - 2601, - 2601 - ], - "disallowed" - ], - [ - [ - 2602, - 2608 - ], - "valid" - ], - [ - [ - 2609, - 2609 - ], - "disallowed" - ], - [ - [ - 2610, - 2610 - ], - "valid" - ], - [ - [ - 2611, - 2611 - ], - "mapped", - [ - 2610, - 2620 - ] - ], - [ - [ - 2612, - 2612 - ], - "disallowed" - ], - [ - [ - 2613, - 2613 - ], - "valid" - ], - [ - [ - 2614, - 2614 - ], - "mapped", - [ - 2616, - 2620 - ] - ], - [ - [ - 2615, - 2615 - ], - "disallowed" - ], - [ - [ - 2616, - 2617 - ], - "valid" - ], - [ - [ - 2618, - 2619 - ], - "disallowed" - ], - [ - [ - 2620, - 2620 - ], - "valid" - ], - [ - [ - 2621, - 2621 - ], - "disallowed" - ], - [ - [ - 2622, - 2626 - ], - "valid" - ], - [ - [ - 2627, - 2630 - ], - "disallowed" - ], - [ - [ - 2631, - 2632 - ], - "valid" - ], - [ - [ - 2633, - 2634 - ], - "disallowed" - ], - [ - [ - 2635, - 2637 - ], - "valid" - ], - [ - [ - 2638, - 2640 - ], - "disallowed" - ], - [ - [ - 2641, - 2641 - ], - "valid" - ], - [ - [ - 2642, - 2648 - ], - "disallowed" - ], - [ - [ - 2649, - 2649 - ], - "mapped", - [ - 2582, - 2620 - ] - ], - [ - [ - 2650, - 2650 - ], - "mapped", - [ - 2583, - 2620 - ] - ], - [ - [ - 2651, - 2651 - ], - "mapped", - [ - 2588, - 2620 - ] - ], - [ - [ - 2652, - 2652 - ], - "valid" - ], - [ - [ - 2653, - 2653 - ], - "disallowed" - ], - [ - [ - 2654, - 2654 - ], - "mapped", - [ - 2603, - 2620 - ] - ], - [ - [ - 2655, - 2661 - ], - "disallowed" - ], - [ - [ - 2662, - 2676 - ], - "valid" - ], - [ - [ - 2677, - 2677 - ], - "valid" - ], - [ - [ - 2678, - 2688 - ], - "disallowed" - ], - [ - [ - 2689, - 2691 - ], - "valid" - ], - [ - [ - 2692, - 2692 - ], - "disallowed" - ], - [ - [ - 2693, - 2699 - ], - "valid" - ], - [ - [ - 2700, - 2700 - ], - "valid" - ], - [ - [ - 2701, - 2701 - ], - "valid" - ], - [ - [ - 2702, - 2702 - ], - "disallowed" - ], - [ - [ - 2703, - 2705 - ], - "valid" - ], - [ - [ - 2706, - 2706 - ], - "disallowed" - ], - [ - [ - 2707, - 2728 - ], - "valid" - ], - [ - [ - 2729, - 2729 - ], - "disallowed" - ], - [ - [ - 2730, - 2736 - ], - "valid" - ], - [ - [ - 2737, - 2737 - ], - "disallowed" - ], - [ - [ - 2738, - 2739 - ], - "valid" - ], - [ - [ - 2740, - 2740 - ], - "disallowed" - ], - [ - [ - 2741, - 2745 - ], - "valid" - ], - [ - [ - 2746, - 2747 - ], - "disallowed" - ], - [ - [ - 2748, - 2757 - ], - "valid" - ], - [ - [ - 2758, - 2758 - ], - "disallowed" - ], - [ - [ - 2759, - 2761 - ], - "valid" - ], - [ - [ - 2762, - 2762 - ], - "disallowed" - ], - [ - [ - 2763, - 2765 - ], - "valid" - ], - [ - [ - 2766, - 2767 - ], - "disallowed" - ], - [ - [ - 2768, - 2768 - ], - "valid" - ], - [ - [ - 2769, - 2783 - ], - "disallowed" - ], - [ - [ - 2784, - 2784 - ], - "valid" - ], - [ - [ - 2785, - 2787 - ], - "valid" - ], - [ - [ - 2788, - 2789 - ], - "disallowed" - ], - [ - [ - 2790, - 2799 - ], - "valid" - ], - [ - [ - 2800, - 2800 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2801, - 2801 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2802, - 2808 - ], - "disallowed" - ], - [ - [ - 2809, - 2809 - ], - "valid" - ], - [ - [ - 2810, - 2816 - ], - "disallowed" - ], - [ - [ - 2817, - 2819 - ], - "valid" - ], - [ - [ - 2820, - 2820 - ], - "disallowed" - ], - [ - [ - 2821, - 2828 - ], - "valid" - ], - [ - [ - 2829, - 2830 - ], - "disallowed" - ], - [ - [ - 2831, - 2832 - ], - "valid" - ], - [ - [ - 2833, - 2834 - ], - "disallowed" - ], - [ - [ - 2835, - 2856 - ], - "valid" - ], - [ - [ - 2857, - 2857 - ], - "disallowed" - ], - [ - [ - 2858, - 2864 - ], - "valid" - ], - [ - [ - 2865, - 2865 - ], - "disallowed" - ], - [ - [ - 2866, - 2867 - ], - "valid" - ], - [ - [ - 2868, - 2868 - ], - "disallowed" - ], - [ - [ - 2869, - 2869 - ], - "valid" - ], - [ - [ - 2870, - 2873 - ], - "valid" - ], - [ - [ - 2874, - 2875 - ], - "disallowed" - ], - [ - [ - 2876, - 2883 - ], - "valid" - ], - [ - [ - 2884, - 2884 - ], - "valid" - ], - [ - [ - 2885, - 2886 - ], - "disallowed" - ], - [ - [ - 2887, - 2888 - ], - "valid" - ], - [ - [ - 2889, - 2890 - ], - "disallowed" - ], - [ - [ - 2891, - 2893 - ], - "valid" - ], - [ - [ - 2894, - 2901 - ], - "disallowed" - ], - [ - [ - 2902, - 2903 - ], - "valid" - ], - [ - [ - 2904, - 2907 - ], - "disallowed" - ], - [ - [ - 2908, - 2908 - ], - "mapped", - [ - 2849, - 2876 - ] - ], - [ - [ - 2909, - 2909 - ], - "mapped", - [ - 2850, - 2876 - ] - ], - [ - [ - 2910, - 2910 - ], - "disallowed" - ], - [ - [ - 2911, - 2913 - ], - "valid" - ], - [ - [ - 2914, - 2915 - ], - "valid" - ], - [ - [ - 2916, - 2917 - ], - "disallowed" - ], - [ - [ - 2918, - 2927 - ], - "valid" - ], - [ - [ - 2928, - 2928 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2929, - 2929 - ], - "valid" - ], - [ - [ - 2930, - 2935 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 2936, - 2945 - ], - "disallowed" - ], - [ - [ - 2946, - 2947 - ], - "valid" - ], - [ - [ - 2948, - 2948 - ], - "disallowed" - ], - [ - [ - 2949, - 2954 - ], - "valid" - ], - [ - [ - 2955, - 2957 - ], - "disallowed" - ], - [ - [ - 2958, - 2960 - ], - "valid" - ], - [ - [ - 2961, - 2961 - ], - "disallowed" - ], - [ - [ - 2962, - 2965 - ], - "valid" - ], - [ - [ - 2966, - 2968 - ], - "disallowed" - ], - [ - [ - 2969, - 2970 - ], - "valid" - ], - [ - [ - 2971, - 2971 - ], - "disallowed" - ], - [ - [ - 2972, - 2972 - ], - "valid" - ], - [ - [ - 2973, - 2973 - ], - "disallowed" - ], - [ - [ - 2974, - 2975 - ], - "valid" - ], - [ - [ - 2976, - 2978 - ], - "disallowed" - ], - [ - [ - 2979, - 2980 - ], - "valid" - ], - [ - [ - 2981, - 2983 - ], - "disallowed" - ], - [ - [ - 2984, - 2986 - ], - "valid" - ], - [ - [ - 2987, - 2989 - ], - "disallowed" - ], - [ - [ - 2990, - 2997 - ], - "valid" - ], - [ - [ - 2998, - 2998 - ], - "valid" - ], - [ - [ - 2999, - 3001 - ], - "valid" - ], - [ - [ - 3002, - 3005 - ], - "disallowed" - ], - [ - [ - 3006, - 3010 - ], - "valid" - ], - [ - [ - 3011, - 3013 - ], - "disallowed" - ], - [ - [ - 3014, - 3016 - ], - "valid" - ], - [ - [ - 3017, - 3017 - ], - "disallowed" - ], - [ - [ - 3018, - 3021 - ], - "valid" - ], - [ - [ - 3022, - 3023 - ], - "disallowed" - ], - [ - [ - 3024, - 3024 - ], - "valid" - ], - [ - [ - 3025, - 3030 - ], - "disallowed" - ], - [ - [ - 3031, - 3031 - ], - "valid" - ], - [ - [ - 3032, - 3045 - ], - "disallowed" - ], - [ - [ - 3046, - 3046 - ], - "valid" - ], - [ - [ - 3047, - 3055 - ], - "valid" - ], - [ - [ - 3056, - 3058 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3059, - 3066 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3067, - 3071 - ], - "disallowed" - ], - [ - [ - 3072, - 3072 - ], - "valid" - ], - [ - [ - 3073, - 3075 - ], - "valid" - ], - [ - [ - 3076, - 3076 - ], - "disallowed" - ], - [ - [ - 3077, - 3084 - ], - "valid" - ], - [ - [ - 3085, - 3085 - ], - "disallowed" - ], - [ - [ - 3086, - 3088 - ], - "valid" - ], - [ - [ - 3089, - 3089 - ], - "disallowed" - ], - [ - [ - 3090, - 3112 - ], - "valid" - ], - [ - [ - 3113, - 3113 - ], - "disallowed" - ], - [ - [ - 3114, - 3123 - ], - "valid" - ], - [ - [ - 3124, - 3124 - ], - "valid" - ], - [ - [ - 3125, - 3129 - ], - "valid" - ], - [ - [ - 3130, - 3132 - ], - "disallowed" - ], - [ - [ - 3133, - 3133 - ], - "valid" - ], - [ - [ - 3134, - 3140 - ], - "valid" - ], - [ - [ - 3141, - 3141 - ], - "disallowed" - ], - [ - [ - 3142, - 3144 - ], - "valid" - ], - [ - [ - 3145, - 3145 - ], - "disallowed" - ], - [ - [ - 3146, - 3149 - ], - "valid" - ], - [ - [ - 3150, - 3156 - ], - "disallowed" - ], - [ - [ - 3157, - 3158 - ], - "valid" - ], - [ - [ - 3159, - 3159 - ], - "disallowed" - ], - [ - [ - 3160, - 3161 - ], - "valid" - ], - [ - [ - 3162, - 3162 - ], - "valid" - ], - [ - [ - 3163, - 3167 - ], - "disallowed" - ], - [ - [ - 3168, - 3169 - ], - "valid" - ], - [ - [ - 3170, - 3171 - ], - "valid" - ], - [ - [ - 3172, - 3173 - ], - "disallowed" - ], - [ - [ - 3174, - 3183 - ], - "valid" - ], - [ - [ - 3184, - 3191 - ], - "disallowed" - ], - [ - [ - 3192, - 3199 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3200, - 3200 - ], - "disallowed" - ], - [ - [ - 3201, - 3201 - ], - "valid" - ], - [ - [ - 3202, - 3203 - ], - "valid" - ], - [ - [ - 3204, - 3204 - ], - "disallowed" - ], - [ - [ - 3205, - 3212 - ], - "valid" - ], - [ - [ - 3213, - 3213 - ], - "disallowed" - ], - [ - [ - 3214, - 3216 - ], - "valid" - ], - [ - [ - 3217, - 3217 - ], - "disallowed" - ], - [ - [ - 3218, - 3240 - ], - "valid" - ], - [ - [ - 3241, - 3241 - ], - "disallowed" - ], - [ - [ - 3242, - 3251 - ], - "valid" - ], - [ - [ - 3252, - 3252 - ], - "disallowed" - ], - [ - [ - 3253, - 3257 - ], - "valid" - ], - [ - [ - 3258, - 3259 - ], - "disallowed" - ], - [ - [ - 3260, - 3261 - ], - "valid" - ], - [ - [ - 3262, - 3268 - ], - "valid" - ], - [ - [ - 3269, - 3269 - ], - "disallowed" - ], - [ - [ - 3270, - 3272 - ], - "valid" - ], - [ - [ - 3273, - 3273 - ], - "disallowed" - ], - [ - [ - 3274, - 3277 - ], - "valid" - ], - [ - [ - 3278, - 3284 - ], - "disallowed" - ], - [ - [ - 3285, - 3286 - ], - "valid" - ], - [ - [ - 3287, - 3293 - ], - "disallowed" - ], - [ - [ - 3294, - 3294 - ], - "valid" - ], - [ - [ - 3295, - 3295 - ], - "disallowed" - ], - [ - [ - 3296, - 3297 - ], - "valid" - ], - [ - [ - 3298, - 3299 - ], - "valid" - ], - [ - [ - 3300, - 3301 - ], - "disallowed" - ], - [ - [ - 3302, - 3311 - ], - "valid" - ], - [ - [ - 3312, - 3312 - ], - "disallowed" - ], - [ - [ - 3313, - 3314 - ], - "valid" - ], - [ - [ - 3315, - 3328 - ], - "disallowed" - ], - [ - [ - 3329, - 3329 - ], - "valid" - ], - [ - [ - 3330, - 3331 - ], - "valid" - ], - [ - [ - 3332, - 3332 - ], - "disallowed" - ], - [ - [ - 3333, - 3340 - ], - "valid" - ], - [ - [ - 3341, - 3341 - ], - "disallowed" - ], - [ - [ - 3342, - 3344 - ], - "valid" - ], - [ - [ - 3345, - 3345 - ], - "disallowed" - ], - [ - [ - 3346, - 3368 - ], - "valid" - ], - [ - [ - 3369, - 3369 - ], - "valid" - ], - [ - [ - 3370, - 3385 - ], - "valid" - ], - [ - [ - 3386, - 3386 - ], - "valid" - ], - [ - [ - 3387, - 3388 - ], - "disallowed" - ], - [ - [ - 3389, - 3389 - ], - "valid" - ], - [ - [ - 3390, - 3395 - ], - "valid" - ], - [ - [ - 3396, - 3396 - ], - "valid" - ], - [ - [ - 3397, - 3397 - ], - "disallowed" - ], - [ - [ - 3398, - 3400 - ], - "valid" - ], - [ - [ - 3401, - 3401 - ], - "disallowed" - ], - [ - [ - 3402, - 3405 - ], - "valid" - ], - [ - [ - 3406, - 3406 - ], - "valid" - ], - [ - [ - 3407, - 3414 - ], - "disallowed" - ], - [ - [ - 3415, - 3415 - ], - "valid" - ], - [ - [ - 3416, - 3422 - ], - "disallowed" - ], - [ - [ - 3423, - 3423 - ], - "valid" - ], - [ - [ - 3424, - 3425 - ], - "valid" - ], - [ - [ - 3426, - 3427 - ], - "valid" - ], - [ - [ - 3428, - 3429 - ], - "disallowed" - ], - [ - [ - 3430, - 3439 - ], - "valid" - ], - [ - [ - 3440, - 3445 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3446, - 3448 - ], - "disallowed" - ], - [ - [ - 3449, - 3449 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3450, - 3455 - ], - "valid" - ], - [ - [ - 3456, - 3457 - ], - "disallowed" - ], - [ - [ - 3458, - 3459 - ], - "valid" - ], - [ - [ - 3460, - 3460 - ], - "disallowed" - ], - [ - [ - 3461, - 3478 - ], - "valid" - ], - [ - [ - 3479, - 3481 - ], - "disallowed" - ], - [ - [ - 3482, - 3505 - ], - "valid" - ], - [ - [ - 3506, - 3506 - ], - "disallowed" - ], - [ - [ - 3507, - 3515 - ], - "valid" - ], - [ - [ - 3516, - 3516 - ], - "disallowed" - ], - [ - [ - 3517, - 3517 - ], - "valid" - ], - [ - [ - 3518, - 3519 - ], - "disallowed" - ], - [ - [ - 3520, - 3526 - ], - "valid" - ], - [ - [ - 3527, - 3529 - ], - "disallowed" - ], - [ - [ - 3530, - 3530 - ], - "valid" - ], - [ - [ - 3531, - 3534 - ], - "disallowed" - ], - [ - [ - 3535, - 3540 - ], - "valid" - ], - [ - [ - 3541, - 3541 - ], - "disallowed" - ], - [ - [ - 3542, - 3542 - ], - "valid" - ], - [ - [ - 3543, - 3543 - ], - "disallowed" - ], - [ - [ - 3544, - 3551 - ], - "valid" - ], - [ - [ - 3552, - 3557 - ], - "disallowed" - ], - [ - [ - 3558, - 3567 - ], - "valid" - ], - [ - [ - 3568, - 3569 - ], - "disallowed" - ], - [ - [ - 3570, - 3571 - ], - "valid" - ], - [ - [ - 3572, - 3572 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3573, - 3584 - ], - "disallowed" - ], - [ - [ - 3585, - 3634 - ], - "valid" - ], - [ - [ - 3635, - 3635 - ], - "mapped", - [ - 3661, - 3634 - ] - ], - [ - [ - 3636, - 3642 - ], - "valid" - ], - [ - [ - 3643, - 3646 - ], - "disallowed" - ], - [ - [ - 3647, - 3647 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3648, - 3662 - ], - "valid" - ], - [ - [ - 3663, - 3663 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3664, - 3673 - ], - "valid" - ], - [ - [ - 3674, - 3675 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3676, - 3712 - ], - "disallowed" - ], - [ - [ - 3713, - 3714 - ], - "valid" - ], - [ - [ - 3715, - 3715 - ], - "disallowed" - ], - [ - [ - 3716, - 3716 - ], - "valid" - ], - [ - [ - 3717, - 3718 - ], - "disallowed" - ], - [ - [ - 3719, - 3720 - ], - "valid" - ], - [ - [ - 3721, - 3721 - ], - "disallowed" - ], - [ - [ - 3722, - 3722 - ], - "valid" - ], - [ - [ - 3723, - 3724 - ], - "disallowed" - ], - [ - [ - 3725, - 3725 - ], - "valid" - ], - [ - [ - 3726, - 3731 - ], - "disallowed" - ], - [ - [ - 3732, - 3735 - ], - "valid" - ], - [ - [ - 3736, - 3736 - ], - "disallowed" - ], - [ - [ - 3737, - 3743 - ], - "valid" - ], - [ - [ - 3744, - 3744 - ], - "disallowed" - ], - [ - [ - 3745, - 3747 - ], - "valid" - ], - [ - [ - 3748, - 3748 - ], - "disallowed" - ], - [ - [ - 3749, - 3749 - ], - "valid" - ], - [ - [ - 3750, - 3750 - ], - "disallowed" - ], - [ - [ - 3751, - 3751 - ], - "valid" - ], - [ - [ - 3752, - 3753 - ], - "disallowed" - ], - [ - [ - 3754, - 3755 - ], - "valid" - ], - [ - [ - 3756, - 3756 - ], - "disallowed" - ], - [ - [ - 3757, - 3762 - ], - "valid" - ], - [ - [ - 3763, - 3763 - ], - "mapped", - [ - 3789, - 3762 - ] - ], - [ - [ - 3764, - 3769 - ], - "valid" - ], - [ - [ - 3770, - 3770 - ], - "disallowed" - ], - [ - [ - 3771, - 3773 - ], - "valid" - ], - [ - [ - 3774, - 3775 - ], - "disallowed" - ], - [ - [ - 3776, - 3780 - ], - "valid" - ], - [ - [ - 3781, - 3781 - ], - "disallowed" - ], - [ - [ - 3782, - 3782 - ], - "valid" - ], - [ - [ - 3783, - 3783 - ], - "disallowed" - ], - [ - [ - 3784, - 3789 - ], - "valid" - ], - [ - [ - 3790, - 3791 - ], - "disallowed" - ], - [ - [ - 3792, - 3801 - ], - "valid" - ], - [ - [ - 3802, - 3803 - ], - "disallowed" - ], - [ - [ - 3804, - 3804 - ], - "mapped", - [ - 3755, - 3737 - ] - ], - [ - [ - 3805, - 3805 - ], - "mapped", - [ - 3755, - 3745 - ] - ], - [ - [ - 3806, - 3807 - ], - "valid" - ], - [ - [ - 3808, - 3839 - ], - "disallowed" - ], - [ - [ - 3840, - 3840 - ], - "valid" - ], - [ - [ - 3841, - 3850 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3851, - 3851 - ], - "valid" - ], - [ - [ - 3852, - 3852 - ], - "mapped", - [ - 3851 - ] - ], - [ - [ - 3853, - 3863 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3864, - 3865 - ], - "valid" - ], - [ - [ - 3866, - 3871 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3872, - 3881 - ], - "valid" - ], - [ - [ - 3882, - 3892 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3893, - 3893 - ], - "valid" - ], - [ - [ - 3894, - 3894 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3895, - 3895 - ], - "valid" - ], - [ - [ - 3896, - 3896 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3897, - 3897 - ], - "valid" - ], - [ - [ - 3898, - 3901 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3902, - 3906 - ], - "valid" - ], - [ - [ - 3907, - 3907 - ], - "mapped", - [ - 3906, - 4023 - ] - ], - [ - [ - 3908, - 3911 - ], - "valid" - ], - [ - [ - 3912, - 3912 - ], - "disallowed" - ], - [ - [ - 3913, - 3916 - ], - "valid" - ], - [ - [ - 3917, - 3917 - ], - "mapped", - [ - 3916, - 4023 - ] - ], - [ - [ - 3918, - 3921 - ], - "valid" - ], - [ - [ - 3922, - 3922 - ], - "mapped", - [ - 3921, - 4023 - ] - ], - [ - [ - 3923, - 3926 - ], - "valid" - ], - [ - [ - 3927, - 3927 - ], - "mapped", - [ - 3926, - 4023 - ] - ], - [ - [ - 3928, - 3931 - ], - "valid" - ], - [ - [ - 3932, - 3932 - ], - "mapped", - [ - 3931, - 4023 - ] - ], - [ - [ - 3933, - 3944 - ], - "valid" - ], - [ - [ - 3945, - 3945 - ], - "mapped", - [ - 3904, - 4021 - ] - ], - [ - [ - 3946, - 3946 - ], - "valid" - ], - [ - [ - 3947, - 3948 - ], - "valid" - ], - [ - [ - 3949, - 3952 - ], - "disallowed" - ], - [ - [ - 3953, - 3954 - ], - "valid" - ], - [ - [ - 3955, - 3955 - ], - "mapped", - [ - 3953, - 3954 - ] - ], - [ - [ - 3956, - 3956 - ], - "valid" - ], - [ - [ - 3957, - 3957 - ], - "mapped", - [ - 3953, - 3956 - ] - ], - [ - [ - 3958, - 3958 - ], - "mapped", - [ - 4018, - 3968 - ] - ], - [ - [ - 3959, - 3959 - ], - "mapped", - [ - 4018, - 3953, - 3968 - ] - ], - [ - [ - 3960, - 3960 - ], - "mapped", - [ - 4019, - 3968 - ] - ], - [ - [ - 3961, - 3961 - ], - "mapped", - [ - 4019, - 3953, - 3968 - ] - ], - [ - [ - 3962, - 3968 - ], - "valid" - ], - [ - [ - 3969, - 3969 - ], - "mapped", - [ - 3953, - 3968 - ] - ], - [ - [ - 3970, - 3972 - ], - "valid" - ], - [ - [ - 3973, - 3973 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 3974, - 3979 - ], - "valid" - ], - [ - [ - 3980, - 3983 - ], - "valid" - ], - [ - [ - 3984, - 3986 - ], - "valid" - ], - [ - [ - 3987, - 3987 - ], - "mapped", - [ - 3986, - 4023 - ] - ], - [ - [ - 3988, - 3989 - ], - "valid" - ], - [ - [ - 3990, - 3990 - ], - "valid" - ], - [ - [ - 3991, - 3991 - ], - "valid" - ], - [ - [ - 3992, - 3992 - ], - "disallowed" - ], - [ - [ - 3993, - 3996 - ], - "valid" - ], - [ - [ - 3997, - 3997 - ], - "mapped", - [ - 3996, - 4023 - ] - ], - [ - [ - 3998, - 4001 - ], - "valid" - ], - [ - [ - 4002, - 4002 - ], - "mapped", - [ - 4001, - 4023 - ] - ], - [ - [ - 4003, - 4006 - ], - "valid" - ], - [ - [ - 4007, - 4007 - ], - "mapped", - [ - 4006, - 4023 - ] - ], - [ - [ - 4008, - 4011 - ], - "valid" - ], - [ - [ - 4012, - 4012 - ], - "mapped", - [ - 4011, - 4023 - ] - ], - [ - [ - 4013, - 4013 - ], - "valid" - ], - [ - [ - 4014, - 4016 - ], - "valid" - ], - [ - [ - 4017, - 4023 - ], - "valid" - ], - [ - [ - 4024, - 4024 - ], - "valid" - ], - [ - [ - 4025, - 4025 - ], - "mapped", - [ - 3984, - 4021 - ] - ], - [ - [ - 4026, - 4028 - ], - "valid" - ], - [ - [ - 4029, - 4029 - ], - "disallowed" - ], - [ - [ - 4030, - 4037 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4038, - 4038 - ], - "valid" - ], - [ - [ - 4039, - 4044 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4045, - 4045 - ], - "disallowed" - ], - [ - [ - 4046, - 4046 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4047, - 4047 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4048, - 4049 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4050, - 4052 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4053, - 4056 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4057, - 4058 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4059, - 4095 - ], - "disallowed" - ], - [ - [ - 4096, - 4129 - ], - "valid" - ], - [ - [ - 4130, - 4130 - ], - "valid" - ], - [ - [ - 4131, - 4135 - ], - "valid" - ], - [ - [ - 4136, - 4136 - ], - "valid" - ], - [ - [ - 4137, - 4138 - ], - "valid" - ], - [ - [ - 4139, - 4139 - ], - "valid" - ], - [ - [ - 4140, - 4146 - ], - "valid" - ], - [ - [ - 4147, - 4149 - ], - "valid" - ], - [ - [ - 4150, - 4153 - ], - "valid" - ], - [ - [ - 4154, - 4159 - ], - "valid" - ], - [ - [ - 4160, - 4169 - ], - "valid" - ], - [ - [ - 4170, - 4175 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4176, - 4185 - ], - "valid" - ], - [ - [ - 4186, - 4249 - ], - "valid" - ], - [ - [ - 4250, - 4253 - ], - "valid" - ], - [ - [ - 4254, - 4255 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4256, - 4293 - ], - "disallowed" - ], - [ - [ - 4294, - 4294 - ], - "disallowed" - ], - [ - [ - 4295, - 4295 - ], - "mapped", - [ - 11559 - ] - ], - [ - [ - 4296, - 4300 - ], - "disallowed" - ], - [ - [ - 4301, - 4301 - ], - "mapped", - [ - 11565 - ] - ], - [ - [ - 4302, - 4303 - ], - "disallowed" - ], - [ - [ - 4304, - 4342 - ], - "valid" - ], - [ - [ - 4343, - 4344 - ], - "valid" - ], - [ - [ - 4345, - 4346 - ], - "valid" - ], - [ - [ - 4347, - 4347 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4348, - 4348 - ], - "mapped", - [ - 4316 - ] - ], - [ - [ - 4349, - 4351 - ], - "valid" - ], - [ - [ - 4352, - 4441 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4442, - 4446 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4447, - 4448 - ], - "disallowed" - ], - [ - [ - 4449, - 4514 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4515, - 4519 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4520, - 4601 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4602, - 4607 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4608, - 4614 - ], - "valid" - ], - [ - [ - 4615, - 4615 - ], - "valid" - ], - [ - [ - 4616, - 4678 - ], - "valid" - ], - [ - [ - 4679, - 4679 - ], - "valid" - ], - [ - [ - 4680, - 4680 - ], - "valid" - ], - [ - [ - 4681, - 4681 - ], - "disallowed" - ], - [ - [ - 4682, - 4685 - ], - "valid" - ], - [ - [ - 4686, - 4687 - ], - "disallowed" - ], - [ - [ - 4688, - 4694 - ], - "valid" - ], - [ - [ - 4695, - 4695 - ], - "disallowed" - ], - [ - [ - 4696, - 4696 - ], - "valid" - ], - [ - [ - 4697, - 4697 - ], - "disallowed" - ], - [ - [ - 4698, - 4701 - ], - "valid" - ], - [ - [ - 4702, - 4703 - ], - "disallowed" - ], - [ - [ - 4704, - 4742 - ], - "valid" - ], - [ - [ - 4743, - 4743 - ], - "valid" - ], - [ - [ - 4744, - 4744 - ], - "valid" - ], - [ - [ - 4745, - 4745 - ], - "disallowed" - ], - [ - [ - 4746, - 4749 - ], - "valid" - ], - [ - [ - 4750, - 4751 - ], - "disallowed" - ], - [ - [ - 4752, - 4782 - ], - "valid" - ], - [ - [ - 4783, - 4783 - ], - "valid" - ], - [ - [ - 4784, - 4784 - ], - "valid" - ], - [ - [ - 4785, - 4785 - ], - "disallowed" - ], - [ - [ - 4786, - 4789 - ], - "valid" - ], - [ - [ - 4790, - 4791 - ], - "disallowed" - ], - [ - [ - 4792, - 4798 - ], - "valid" - ], - [ - [ - 4799, - 4799 - ], - "disallowed" - ], - [ - [ - 4800, - 4800 - ], - "valid" - ], - [ - [ - 4801, - 4801 - ], - "disallowed" - ], - [ - [ - 4802, - 4805 - ], - "valid" - ], - [ - [ - 4806, - 4807 - ], - "disallowed" - ], - [ - [ - 4808, - 4814 - ], - "valid" - ], - [ - [ - 4815, - 4815 - ], - "valid" - ], - [ - [ - 4816, - 4822 - ], - "valid" - ], - [ - [ - 4823, - 4823 - ], - "disallowed" - ], - [ - [ - 4824, - 4846 - ], - "valid" - ], - [ - [ - 4847, - 4847 - ], - "valid" - ], - [ - [ - 4848, - 4878 - ], - "valid" - ], - [ - [ - 4879, - 4879 - ], - "valid" - ], - [ - [ - 4880, - 4880 - ], - "valid" - ], - [ - [ - 4881, - 4881 - ], - "disallowed" - ], - [ - [ - 4882, - 4885 - ], - "valid" - ], - [ - [ - 4886, - 4887 - ], - "disallowed" - ], - [ - [ - 4888, - 4894 - ], - "valid" - ], - [ - [ - 4895, - 4895 - ], - "valid" - ], - [ - [ - 4896, - 4934 - ], - "valid" - ], - [ - [ - 4935, - 4935 - ], - "valid" - ], - [ - [ - 4936, - 4954 - ], - "valid" - ], - [ - [ - 4955, - 4956 - ], - "disallowed" - ], - [ - [ - 4957, - 4958 - ], - "valid" - ], - [ - [ - 4959, - 4959 - ], - "valid" - ], - [ - [ - 4960, - 4960 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4961, - 4988 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 4989, - 4991 - ], - "disallowed" - ], - [ - [ - 4992, - 5007 - ], - "valid" - ], - [ - [ - 5008, - 5017 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5018, - 5023 - ], - "disallowed" - ], - [ - [ - 5024, - 5108 - ], - "valid" - ], - [ - [ - 5109, - 5109 - ], - "valid" - ], - [ - [ - 5110, - 5111 - ], - "disallowed" - ], - [ - [ - 5112, - 5112 - ], - "mapped", - [ - 5104 - ] - ], - [ - [ - 5113, - 5113 - ], - "mapped", - [ - 5105 - ] - ], - [ - [ - 5114, - 5114 - ], - "mapped", - [ - 5106 - ] - ], - [ - [ - 5115, - 5115 - ], - "mapped", - [ - 5107 - ] - ], - [ - [ - 5116, - 5116 - ], - "mapped", - [ - 5108 - ] - ], - [ - [ - 5117, - 5117 - ], - "mapped", - [ - 5109 - ] - ], - [ - [ - 5118, - 5119 - ], - "disallowed" - ], - [ - [ - 5120, - 5120 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5121, - 5740 - ], - "valid" - ], - [ - [ - 5741, - 5742 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5743, - 5750 - ], - "valid" - ], - [ - [ - 5751, - 5759 - ], - "valid" - ], - [ - [ - 5760, - 5760 - ], - "disallowed" - ], - [ - [ - 5761, - 5786 - ], - "valid" - ], - [ - [ - 5787, - 5788 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5789, - 5791 - ], - "disallowed" - ], - [ - [ - 5792, - 5866 - ], - "valid" - ], - [ - [ - 5867, - 5872 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5873, - 5880 - ], - "valid" - ], - [ - [ - 5881, - 5887 - ], - "disallowed" - ], - [ - [ - 5888, - 5900 - ], - "valid" - ], - [ - [ - 5901, - 5901 - ], - "disallowed" - ], - [ - [ - 5902, - 5908 - ], - "valid" - ], - [ - [ - 5909, - 5919 - ], - "disallowed" - ], - [ - [ - 5920, - 5940 - ], - "valid" - ], - [ - [ - 5941, - 5942 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 5943, - 5951 - ], - "disallowed" - ], - [ - [ - 5952, - 5971 - ], - "valid" - ], - [ - [ - 5972, - 5983 - ], - "disallowed" - ], - [ - [ - 5984, - 5996 - ], - "valid" - ], - [ - [ - 5997, - 5997 - ], - "disallowed" - ], - [ - [ - 5998, - 6000 - ], - "valid" - ], - [ - [ - 6001, - 6001 - ], - "disallowed" - ], - [ - [ - 6002, - 6003 - ], - "valid" - ], - [ - [ - 6004, - 6015 - ], - "disallowed" - ], - [ - [ - 6016, - 6067 - ], - "valid" - ], - [ - [ - 6068, - 6069 - ], - "disallowed" - ], - [ - [ - 6070, - 6099 - ], - "valid" - ], - [ - [ - 6100, - 6102 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6103, - 6103 - ], - "valid" - ], - [ - [ - 6104, - 6107 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6108, - 6108 - ], - "valid" - ], - [ - [ - 6109, - 6109 - ], - "valid" - ], - [ - [ - 6110, - 6111 - ], - "disallowed" - ], - [ - [ - 6112, - 6121 - ], - "valid" - ], - [ - [ - 6122, - 6127 - ], - "disallowed" - ], - [ - [ - 6128, - 6137 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6138, - 6143 - ], - "disallowed" - ], - [ - [ - 6144, - 6149 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6150, - 6150 - ], - "disallowed" - ], - [ - [ - 6151, - 6154 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6155, - 6157 - ], - "ignored" - ], - [ - [ - 6158, - 6158 - ], - "disallowed" - ], - [ - [ - 6159, - 6159 - ], - "disallowed" - ], - [ - [ - 6160, - 6169 - ], - "valid" - ], - [ - [ - 6170, - 6175 - ], - "disallowed" - ], - [ - [ - 6176, - 6263 - ], - "valid" - ], - [ - [ - 6264, - 6271 - ], - "disallowed" - ], - [ - [ - 6272, - 6313 - ], - "valid" - ], - [ - [ - 6314, - 6314 - ], - "valid" - ], - [ - [ - 6315, - 6319 - ], - "disallowed" - ], - [ - [ - 6320, - 6389 - ], - "valid" - ], - [ - [ - 6390, - 6399 - ], - "disallowed" - ], - [ - [ - 6400, - 6428 - ], - "valid" - ], - [ - [ - 6429, - 6430 - ], - "valid" - ], - [ - [ - 6431, - 6431 - ], - "disallowed" - ], - [ - [ - 6432, - 6443 - ], - "valid" - ], - [ - [ - 6444, - 6447 - ], - "disallowed" - ], - [ - [ - 6448, - 6459 - ], - "valid" - ], - [ - [ - 6460, - 6463 - ], - "disallowed" - ], - [ - [ - 6464, - 6464 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6465, - 6467 - ], - "disallowed" - ], - [ - [ - 6468, - 6469 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6470, - 6509 - ], - "valid" - ], - [ - [ - 6510, - 6511 - ], - "disallowed" - ], - [ - [ - 6512, - 6516 - ], - "valid" - ], - [ - [ - 6517, - 6527 - ], - "disallowed" - ], - [ - [ - 6528, - 6569 - ], - "valid" - ], - [ - [ - 6570, - 6571 - ], - "valid" - ], - [ - [ - 6572, - 6575 - ], - "disallowed" - ], - [ - [ - 6576, - 6601 - ], - "valid" - ], - [ - [ - 6602, - 6607 - ], - "disallowed" - ], - [ - [ - 6608, - 6617 - ], - "valid" - ], - [ - [ - 6618, - 6618 - ], - "valid", - [ - ], - "XV8" - ], - [ - [ - 6619, - 6621 - ], - "disallowed" - ], - [ - [ - 6622, - 6623 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6624, - 6655 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6656, - 6683 - ], - "valid" - ], - [ - [ - 6684, - 6685 - ], - "disallowed" - ], - [ - [ - 6686, - 6687 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6688, - 6750 - ], - "valid" - ], - [ - [ - 6751, - 6751 - ], - "disallowed" - ], - [ - [ - 6752, - 6780 - ], - "valid" - ], - [ - [ - 6781, - 6782 - ], - "disallowed" - ], - [ - [ - 6783, - 6793 - ], - "valid" - ], - [ - [ - 6794, - 6799 - ], - "disallowed" - ], - [ - [ - 6800, - 6809 - ], - "valid" - ], - [ - [ - 6810, - 6815 - ], - "disallowed" - ], - [ - [ - 6816, - 6822 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6823, - 6823 - ], - "valid" - ], - [ - [ - 6824, - 6829 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6830, - 6831 - ], - "disallowed" - ], - [ - [ - 6832, - 6845 - ], - "valid" - ], - [ - [ - 6846, - 6846 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 6847, - 6911 - ], - "disallowed" - ], - [ - [ - 6912, - 6987 - ], - "valid" - ], - [ - [ - 6988, - 6991 - ], - "disallowed" - ], - [ - [ - 6992, - 7001 - ], - "valid" - ], - [ - [ - 7002, - 7018 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7019, - 7027 - ], - "valid" - ], - [ - [ - 7028, - 7036 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7037, - 7039 - ], - "disallowed" - ], - [ - [ - 7040, - 7082 - ], - "valid" - ], - [ - [ - 7083, - 7085 - ], - "valid" - ], - [ - [ - 7086, - 7097 - ], - "valid" - ], - [ - [ - 7098, - 7103 - ], - "valid" - ], - [ - [ - 7104, - 7155 - ], - "valid" - ], - [ - [ - 7156, - 7163 - ], - "disallowed" - ], - [ - [ - 7164, - 7167 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7168, - 7223 - ], - "valid" - ], - [ - [ - 7224, - 7226 - ], - "disallowed" - ], - [ - [ - 7227, - 7231 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7232, - 7241 - ], - "valid" - ], - [ - [ - 7242, - 7244 - ], - "disallowed" - ], - [ - [ - 7245, - 7293 - ], - "valid" - ], - [ - [ - 7294, - 7295 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7296, - 7359 - ], - "disallowed" - ], - [ - [ - 7360, - 7367 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7368, - 7375 - ], - "disallowed" - ], - [ - [ - 7376, - 7378 - ], - "valid" - ], - [ - [ - 7379, - 7379 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 7380, - 7410 - ], - "valid" - ], - [ - [ - 7411, - 7414 - ], - "valid" - ], - [ - [ - 7415, - 7415 - ], - "disallowed" - ], - [ - [ - 7416, - 7417 - ], - "valid" - ], - [ - [ - 7418, - 7423 - ], - "disallowed" - ], - [ - [ - 7424, - 7467 - ], - "valid" - ], - [ - [ - 7468, - 7468 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 7469, - 7469 - ], - "mapped", - [ - 230 - ] - ], - [ - [ - 7470, - 7470 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 7471, - 7471 - ], - "valid" - ], - [ - [ - 7472, - 7472 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 7473, - 7473 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 7474, - 7474 - ], - "mapped", - [ - 477 - ] - ], - [ - [ - 7475, - 7475 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 7476, - 7476 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 7477, - 7477 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 7478, - 7478 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 7479, - 7479 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 7480, - 7480 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 7481, - 7481 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 7482, - 7482 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 7483, - 7483 - ], - "valid" - ], - [ - [ - 7484, - 7484 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 7485, - 7485 - ], - "mapped", - [ - 547 - ] - ], - [ - [ - 7486, - 7486 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 7487, - 7487 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 7488, - 7488 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 7489, - 7489 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 7490, - 7490 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 7491, - 7491 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 7492, - 7492 - ], - "mapped", - [ - 592 - ] - ], - [ - [ - 7493, - 7493 - ], - "mapped", - [ - 593 - ] - ], - [ - [ - 7494, - 7494 - ], - "mapped", - [ - 7426 - ] - ], - [ - [ - 7495, - 7495 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 7496, - 7496 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 7497, - 7497 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 7498, - 7498 - ], - "mapped", - [ - 601 - ] - ], - [ - [ - 7499, - 7499 - ], - "mapped", - [ - 603 - ] - ], - [ - [ - 7500, - 7500 - ], - "mapped", - [ - 604 - ] - ], - [ - [ - 7501, - 7501 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 7502, - 7502 - ], - "valid" - ], - [ - [ - 7503, - 7503 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 7504, - 7504 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 7505, - 7505 - ], - "mapped", - [ - 331 - ] - ], - [ - [ - 7506, - 7506 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 7507, - 7507 - ], - "mapped", - [ - 596 - ] - ], - [ - [ - 7508, - 7508 - ], - "mapped", - [ - 7446 - ] - ], - [ - [ - 7509, - 7509 - ], - "mapped", - [ - 7447 - ] - ], - [ - [ - 7510, - 7510 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 7511, - 7511 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 7512, - 7512 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 7513, - 7513 - ], - "mapped", - [ - 7453 - ] - ], - [ - [ - 7514, - 7514 - ], - "mapped", - [ - 623 - ] - ], - [ - [ - 7515, - 7515 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 7516, - 7516 - ], - "mapped", - [ - 7461 - ] - ], - [ - [ - 7517, - 7517 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 7518, - 7518 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 7519, - 7519 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 7520, - 7520 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 7521, - 7521 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 7522, - 7522 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 7523, - 7523 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 7524, - 7524 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 7525, - 7525 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 7526, - 7526 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 7527, - 7527 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 7528, - 7528 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 7529, - 7529 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 7530, - 7530 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 7531, - 7531 - ], - "valid" - ], - [ - [ - 7532, - 7543 - ], - "valid" - ], - [ - [ - 7544, - 7544 - ], - "mapped", - [ - 1085 - ] - ], - [ - [ - 7545, - 7578 - ], - "valid" - ], - [ - [ - 7579, - 7579 - ], - "mapped", - [ - 594 - ] - ], - [ - [ - 7580, - 7580 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 7581, - 7581 - ], - "mapped", - [ - 597 - ] - ], - [ - [ - 7582, - 7582 - ], - "mapped", - [ - 240 - ] - ], - [ - [ - 7583, - 7583 - ], - "mapped", - [ - 604 - ] - ], - [ - [ - 7584, - 7584 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 7585, - 7585 - ], - "mapped", - [ - 607 - ] - ], - [ - [ - 7586, - 7586 - ], - "mapped", - [ - 609 - ] - ], - [ - [ - 7587, - 7587 - ], - "mapped", - [ - 613 - ] - ], - [ - [ - 7588, - 7588 - ], - "mapped", - [ - 616 - ] - ], - [ - [ - 7589, - 7589 - ], - "mapped", - [ - 617 - ] - ], - [ - [ - 7590, - 7590 - ], - "mapped", - [ - 618 - ] - ], - [ - [ - 7591, - 7591 - ], - "mapped", - [ - 7547 - ] - ], - [ - [ - 7592, - 7592 - ], - "mapped", - [ - 669 - ] - ], - [ - [ - 7593, - 7593 - ], - "mapped", - [ - 621 - ] - ], - [ - [ - 7594, - 7594 - ], - "mapped", - [ - 7557 - ] - ], - [ - [ - 7595, - 7595 - ], - "mapped", - [ - 671 - ] - ], - [ - [ - 7596, - 7596 - ], - "mapped", - [ - 625 - ] - ], - [ - [ - 7597, - 7597 - ], - "mapped", - [ - 624 - ] - ], - [ - [ - 7598, - 7598 - ], - "mapped", - [ - 626 - ] - ], - [ - [ - 7599, - 7599 - ], - "mapped", - [ - 627 - ] - ], - [ - [ - 7600, - 7600 - ], - "mapped", - [ - 628 - ] - ], - [ - [ - 7601, - 7601 - ], - "mapped", - [ - 629 - ] - ], - [ - [ - 7602, - 7602 - ], - "mapped", - [ - 632 - ] - ], - [ - [ - 7603, - 7603 - ], - "mapped", - [ - 642 - ] - ], - [ - [ - 7604, - 7604 - ], - "mapped", - [ - 643 - ] - ], - [ - [ - 7605, - 7605 - ], - "mapped", - [ - 427 - ] - ], - [ - [ - 7606, - 7606 - ], - "mapped", - [ - 649 - ] - ], - [ - [ - 7607, - 7607 - ], - "mapped", - [ - 650 - ] - ], - [ - [ - 7608, - 7608 - ], - "mapped", - [ - 7452 - ] - ], - [ - [ - 7609, - 7609 - ], - "mapped", - [ - 651 - ] - ], - [ - [ - 7610, - 7610 - ], - "mapped", - [ - 652 - ] - ], - [ - [ - 7611, - 7611 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 7612, - 7612 - ], - "mapped", - [ - 656 - ] - ], - [ - [ - 7613, - 7613 - ], - "mapped", - [ - 657 - ] - ], - [ - [ - 7614, - 7614 - ], - "mapped", - [ - 658 - ] - ], - [ - [ - 7615, - 7615 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 7616, - 7619 - ], - "valid" - ], - [ - [ - 7620, - 7626 - ], - "valid" - ], - [ - [ - 7627, - 7654 - ], - "valid" - ], - [ - [ - 7655, - 7669 - ], - "valid" - ], - [ - [ - 7670, - 7675 - ], - "disallowed" - ], - [ - [ - 7676, - 7676 - ], - "valid" - ], - [ - [ - 7677, - 7677 - ], - "valid" - ], - [ - [ - 7678, - 7679 - ], - "valid" - ], - [ - [ - 7680, - 7680 - ], - "mapped", - [ - 7681 - ] - ], - [ - [ - 7681, - 7681 - ], - "valid" - ], - [ - [ - 7682, - 7682 - ], - "mapped", - [ - 7683 - ] - ], - [ - [ - 7683, - 7683 - ], - "valid" - ], - [ - [ - 7684, - 7684 - ], - "mapped", - [ - 7685 - ] - ], - [ - [ - 7685, - 7685 - ], - "valid" - ], - [ - [ - 7686, - 7686 - ], - "mapped", - [ - 7687 - ] - ], - [ - [ - 7687, - 7687 - ], - "valid" - ], - [ - [ - 7688, - 7688 - ], - "mapped", - [ - 7689 - ] - ], - [ - [ - 7689, - 7689 - ], - "valid" - ], - [ - [ - 7690, - 7690 - ], - "mapped", - [ - 7691 - ] - ], - [ - [ - 7691, - 7691 - ], - "valid" - ], - [ - [ - 7692, - 7692 - ], - "mapped", - [ - 7693 - ] - ], - [ - [ - 7693, - 7693 - ], - "valid" - ], - [ - [ - 7694, - 7694 - ], - "mapped", - [ - 7695 - ] - ], - [ - [ - 7695, - 7695 - ], - "valid" - ], - [ - [ - 7696, - 7696 - ], - "mapped", - [ - 7697 - ] - ], - [ - [ - 7697, - 7697 - ], - "valid" - ], - [ - [ - 7698, - 7698 - ], - "mapped", - [ - 7699 - ] - ], - [ - [ - 7699, - 7699 - ], - "valid" - ], - [ - [ - 7700, - 7700 - ], - "mapped", - [ - 7701 - ] - ], - [ - [ - 7701, - 7701 - ], - "valid" - ], - [ - [ - 7702, - 7702 - ], - "mapped", - [ - 7703 - ] - ], - [ - [ - 7703, - 7703 - ], - "valid" - ], - [ - [ - 7704, - 7704 - ], - "mapped", - [ - 7705 - ] - ], - [ - [ - 7705, - 7705 - ], - "valid" - ], - [ - [ - 7706, - 7706 - ], - "mapped", - [ - 7707 - ] - ], - [ - [ - 7707, - 7707 - ], - "valid" - ], - [ - [ - 7708, - 7708 - ], - "mapped", - [ - 7709 - ] - ], - [ - [ - 7709, - 7709 - ], - "valid" - ], - [ - [ - 7710, - 7710 - ], - "mapped", - [ - 7711 - ] - ], - [ - [ - 7711, - 7711 - ], - "valid" - ], - [ - [ - 7712, - 7712 - ], - "mapped", - [ - 7713 - ] - ], - [ - [ - 7713, - 7713 - ], - "valid" - ], - [ - [ - 7714, - 7714 - ], - "mapped", - [ - 7715 - ] - ], - [ - [ - 7715, - 7715 - ], - "valid" - ], - [ - [ - 7716, - 7716 - ], - "mapped", - [ - 7717 - ] - ], - [ - [ - 7717, - 7717 - ], - "valid" - ], - [ - [ - 7718, - 7718 - ], - "mapped", - [ - 7719 - ] - ], - [ - [ - 7719, - 7719 - ], - "valid" - ], - [ - [ - 7720, - 7720 - ], - "mapped", - [ - 7721 - ] - ], - [ - [ - 7721, - 7721 - ], - "valid" - ], - [ - [ - 7722, - 7722 - ], - "mapped", - [ - 7723 - ] - ], - [ - [ - 7723, - 7723 - ], - "valid" - ], - [ - [ - 7724, - 7724 - ], - "mapped", - [ - 7725 - ] - ], - [ - [ - 7725, - 7725 - ], - "valid" - ], - [ - [ - 7726, - 7726 - ], - "mapped", - [ - 7727 - ] - ], - [ - [ - 7727, - 7727 - ], - "valid" - ], - [ - [ - 7728, - 7728 - ], - "mapped", - [ - 7729 - ] - ], - [ - [ - 7729, - 7729 - ], - "valid" - ], - [ - [ - 7730, - 7730 - ], - "mapped", - [ - 7731 - ] - ], - [ - [ - 7731, - 7731 - ], - "valid" - ], - [ - [ - 7732, - 7732 - ], - "mapped", - [ - 7733 - ] - ], - [ - [ - 7733, - 7733 - ], - "valid" - ], - [ - [ - 7734, - 7734 - ], - "mapped", - [ - 7735 - ] - ], - [ - [ - 7735, - 7735 - ], - "valid" - ], - [ - [ - 7736, - 7736 - ], - "mapped", - [ - 7737 - ] - ], - [ - [ - 7737, - 7737 - ], - "valid" - ], - [ - [ - 7738, - 7738 - ], - "mapped", - [ - 7739 - ] - ], - [ - [ - 7739, - 7739 - ], - "valid" - ], - [ - [ - 7740, - 7740 - ], - "mapped", - [ - 7741 - ] - ], - [ - [ - 7741, - 7741 - ], - "valid" - ], - [ - [ - 7742, - 7742 - ], - "mapped", - [ - 7743 - ] - ], - [ - [ - 7743, - 7743 - ], - "valid" - ], - [ - [ - 7744, - 7744 - ], - "mapped", - [ - 7745 - ] - ], - [ - [ - 7745, - 7745 - ], - "valid" - ], - [ - [ - 7746, - 7746 - ], - "mapped", - [ - 7747 - ] - ], - [ - [ - 7747, - 7747 - ], - "valid" - ], - [ - [ - 7748, - 7748 - ], - "mapped", - [ - 7749 - ] - ], - [ - [ - 7749, - 7749 - ], - "valid" - ], - [ - [ - 7750, - 7750 - ], - "mapped", - [ - 7751 - ] - ], - [ - [ - 7751, - 7751 - ], - "valid" - ], - [ - [ - 7752, - 7752 - ], - "mapped", - [ - 7753 - ] - ], - [ - [ - 7753, - 7753 - ], - "valid" - ], - [ - [ - 7754, - 7754 - ], - "mapped", - [ - 7755 - ] - ], - [ - [ - 7755, - 7755 - ], - "valid" - ], - [ - [ - 7756, - 7756 - ], - "mapped", - [ - 7757 - ] - ], - [ - [ - 7757, - 7757 - ], - "valid" - ], - [ - [ - 7758, - 7758 - ], - "mapped", - [ - 7759 - ] - ], - [ - [ - 7759, - 7759 - ], - "valid" - ], - [ - [ - 7760, - 7760 - ], - "mapped", - [ - 7761 - ] - ], - [ - [ - 7761, - 7761 - ], - "valid" - ], - [ - [ - 7762, - 7762 - ], - "mapped", - [ - 7763 - ] - ], - [ - [ - 7763, - 7763 - ], - "valid" - ], - [ - [ - 7764, - 7764 - ], - "mapped", - [ - 7765 - ] - ], - [ - [ - 7765, - 7765 - ], - "valid" - ], - [ - [ - 7766, - 7766 - ], - "mapped", - [ - 7767 - ] - ], - [ - [ - 7767, - 7767 - ], - "valid" - ], - [ - [ - 7768, - 7768 - ], - "mapped", - [ - 7769 - ] - ], - [ - [ - 7769, - 7769 - ], - "valid" - ], - [ - [ - 7770, - 7770 - ], - "mapped", - [ - 7771 - ] - ], - [ - [ - 7771, - 7771 - ], - "valid" - ], - [ - [ - 7772, - 7772 - ], - "mapped", - [ - 7773 - ] - ], - [ - [ - 7773, - 7773 - ], - "valid" - ], - [ - [ - 7774, - 7774 - ], - "mapped", - [ - 7775 - ] - ], - [ - [ - 7775, - 7775 - ], - "valid" - ], - [ - [ - 7776, - 7776 - ], - "mapped", - [ - 7777 - ] - ], - [ - [ - 7777, - 7777 - ], - "valid" - ], - [ - [ - 7778, - 7778 - ], - "mapped", - [ - 7779 - ] - ], - [ - [ - 7779, - 7779 - ], - "valid" - ], - [ - [ - 7780, - 7780 - ], - "mapped", - [ - 7781 - ] - ], - [ - [ - 7781, - 7781 - ], - "valid" - ], - [ - [ - 7782, - 7782 - ], - "mapped", - [ - 7783 - ] - ], - [ - [ - 7783, - 7783 - ], - "valid" - ], - [ - [ - 7784, - 7784 - ], - "mapped", - [ - 7785 - ] - ], - [ - [ - 7785, - 7785 - ], - "valid" - ], - [ - [ - 7786, - 7786 - ], - "mapped", - [ - 7787 - ] - ], - [ - [ - 7787, - 7787 - ], - "valid" - ], - [ - [ - 7788, - 7788 - ], - "mapped", - [ - 7789 - ] - ], - [ - [ - 7789, - 7789 - ], - "valid" - ], - [ - [ - 7790, - 7790 - ], - "mapped", - [ - 7791 - ] - ], - [ - [ - 7791, - 7791 - ], - "valid" - ], - [ - [ - 7792, - 7792 - ], - "mapped", - [ - 7793 - ] - ], - [ - [ - 7793, - 7793 - ], - "valid" - ], - [ - [ - 7794, - 7794 - ], - "mapped", - [ - 7795 - ] - ], - [ - [ - 7795, - 7795 - ], - "valid" - ], - [ - [ - 7796, - 7796 - ], - "mapped", - [ - 7797 - ] - ], - [ - [ - 7797, - 7797 - ], - "valid" - ], - [ - [ - 7798, - 7798 - ], - "mapped", - [ - 7799 - ] - ], - [ - [ - 7799, - 7799 - ], - "valid" - ], - [ - [ - 7800, - 7800 - ], - "mapped", - [ - 7801 - ] - ], - [ - [ - 7801, - 7801 - ], - "valid" - ], - [ - [ - 7802, - 7802 - ], - "mapped", - [ - 7803 - ] - ], - [ - [ - 7803, - 7803 - ], - "valid" - ], - [ - [ - 7804, - 7804 - ], - "mapped", - [ - 7805 - ] - ], - [ - [ - 7805, - 7805 - ], - "valid" - ], - [ - [ - 7806, - 7806 - ], - "mapped", - [ - 7807 - ] - ], - [ - [ - 7807, - 7807 - ], - "valid" - ], - [ - [ - 7808, - 7808 - ], - "mapped", - [ - 7809 - ] - ], - [ - [ - 7809, - 7809 - ], - "valid" - ], - [ - [ - 7810, - 7810 - ], - "mapped", - [ - 7811 - ] - ], - [ - [ - 7811, - 7811 - ], - "valid" - ], - [ - [ - 7812, - 7812 - ], - "mapped", - [ - 7813 - ] - ], - [ - [ - 7813, - 7813 - ], - "valid" - ], - [ - [ - 7814, - 7814 - ], - "mapped", - [ - 7815 - ] - ], - [ - [ - 7815, - 7815 - ], - "valid" - ], - [ - [ - 7816, - 7816 - ], - "mapped", - [ - 7817 - ] - ], - [ - [ - 7817, - 7817 - ], - "valid" - ], - [ - [ - 7818, - 7818 - ], - "mapped", - [ - 7819 - ] - ], - [ - [ - 7819, - 7819 - ], - "valid" - ], - [ - [ - 7820, - 7820 - ], - "mapped", - [ - 7821 - ] - ], - [ - [ - 7821, - 7821 - ], - "valid" - ], - [ - [ - 7822, - 7822 - ], - "mapped", - [ - 7823 - ] - ], - [ - [ - 7823, - 7823 - ], - "valid" - ], - [ - [ - 7824, - 7824 - ], - "mapped", - [ - 7825 - ] - ], - [ - [ - 7825, - 7825 - ], - "valid" - ], - [ - [ - 7826, - 7826 - ], - "mapped", - [ - 7827 - ] - ], - [ - [ - 7827, - 7827 - ], - "valid" - ], - [ - [ - 7828, - 7828 - ], - "mapped", - [ - 7829 - ] - ], - [ - [ - 7829, - 7833 - ], - "valid" - ], - [ - [ - 7834, - 7834 - ], - "mapped", - [ - 97, - 702 - ] - ], - [ - [ - 7835, - 7835 - ], - "mapped", - [ - 7777 - ] - ], - [ - [ - 7836, - 7837 - ], - "valid" - ], - [ - [ - 7838, - 7838 - ], - "mapped", - [ - 115, - 115 - ] - ], - [ - [ - 7839, - 7839 - ], - "valid" - ], - [ - [ - 7840, - 7840 - ], - "mapped", - [ - 7841 - ] - ], - [ - [ - 7841, - 7841 - ], - "valid" - ], - [ - [ - 7842, - 7842 - ], - "mapped", - [ - 7843 - ] - ], - [ - [ - 7843, - 7843 - ], - "valid" - ], - [ - [ - 7844, - 7844 - ], - "mapped", - [ - 7845 - ] - ], - [ - [ - 7845, - 7845 - ], - "valid" - ], - [ - [ - 7846, - 7846 - ], - "mapped", - [ - 7847 - ] - ], - [ - [ - 7847, - 7847 - ], - "valid" - ], - [ - [ - 7848, - 7848 - ], - "mapped", - [ - 7849 - ] - ], - [ - [ - 7849, - 7849 - ], - "valid" - ], - [ - [ - 7850, - 7850 - ], - "mapped", - [ - 7851 - ] - ], - [ - [ - 7851, - 7851 - ], - "valid" - ], - [ - [ - 7852, - 7852 - ], - "mapped", - [ - 7853 - ] - ], - [ - [ - 7853, - 7853 - ], - "valid" - ], - [ - [ - 7854, - 7854 - ], - "mapped", - [ - 7855 - ] - ], - [ - [ - 7855, - 7855 - ], - "valid" - ], - [ - [ - 7856, - 7856 - ], - "mapped", - [ - 7857 - ] - ], - [ - [ - 7857, - 7857 - ], - "valid" - ], - [ - [ - 7858, - 7858 - ], - "mapped", - [ - 7859 - ] - ], - [ - [ - 7859, - 7859 - ], - "valid" - ], - [ - [ - 7860, - 7860 - ], - "mapped", - [ - 7861 - ] - ], - [ - [ - 7861, - 7861 - ], - "valid" - ], - [ - [ - 7862, - 7862 - ], - "mapped", - [ - 7863 - ] - ], - [ - [ - 7863, - 7863 - ], - "valid" - ], - [ - [ - 7864, - 7864 - ], - "mapped", - [ - 7865 - ] - ], - [ - [ - 7865, - 7865 - ], - "valid" - ], - [ - [ - 7866, - 7866 - ], - "mapped", - [ - 7867 - ] - ], - [ - [ - 7867, - 7867 - ], - "valid" - ], - [ - [ - 7868, - 7868 - ], - "mapped", - [ - 7869 - ] - ], - [ - [ - 7869, - 7869 - ], - "valid" - ], - [ - [ - 7870, - 7870 - ], - "mapped", - [ - 7871 - ] - ], - [ - [ - 7871, - 7871 - ], - "valid" - ], - [ - [ - 7872, - 7872 - ], - "mapped", - [ - 7873 - ] - ], - [ - [ - 7873, - 7873 - ], - "valid" - ], - [ - [ - 7874, - 7874 - ], - "mapped", - [ - 7875 - ] - ], - [ - [ - 7875, - 7875 - ], - "valid" - ], - [ - [ - 7876, - 7876 - ], - "mapped", - [ - 7877 - ] - ], - [ - [ - 7877, - 7877 - ], - "valid" - ], - [ - [ - 7878, - 7878 - ], - "mapped", - [ - 7879 - ] - ], - [ - [ - 7879, - 7879 - ], - "valid" - ], - [ - [ - 7880, - 7880 - ], - "mapped", - [ - 7881 - ] - ], - [ - [ - 7881, - 7881 - ], - "valid" - ], - [ - [ - 7882, - 7882 - ], - "mapped", - [ - 7883 - ] - ], - [ - [ - 7883, - 7883 - ], - "valid" - ], - [ - [ - 7884, - 7884 - ], - "mapped", - [ - 7885 - ] - ], - [ - [ - 7885, - 7885 - ], - "valid" - ], - [ - [ - 7886, - 7886 - ], - "mapped", - [ - 7887 - ] - ], - [ - [ - 7887, - 7887 - ], - "valid" - ], - [ - [ - 7888, - 7888 - ], - "mapped", - [ - 7889 - ] - ], - [ - [ - 7889, - 7889 - ], - "valid" - ], - [ - [ - 7890, - 7890 - ], - "mapped", - [ - 7891 - ] - ], - [ - [ - 7891, - 7891 - ], - "valid" - ], - [ - [ - 7892, - 7892 - ], - "mapped", - [ - 7893 - ] - ], - [ - [ - 7893, - 7893 - ], - "valid" - ], - [ - [ - 7894, - 7894 - ], - "mapped", - [ - 7895 - ] - ], - [ - [ - 7895, - 7895 - ], - "valid" - ], - [ - [ - 7896, - 7896 - ], - "mapped", - [ - 7897 - ] - ], - [ - [ - 7897, - 7897 - ], - "valid" - ], - [ - [ - 7898, - 7898 - ], - "mapped", - [ - 7899 - ] - ], - [ - [ - 7899, - 7899 - ], - "valid" - ], - [ - [ - 7900, - 7900 - ], - "mapped", - [ - 7901 - ] - ], - [ - [ - 7901, - 7901 - ], - "valid" - ], - [ - [ - 7902, - 7902 - ], - "mapped", - [ - 7903 - ] - ], - [ - [ - 7903, - 7903 - ], - "valid" - ], - [ - [ - 7904, - 7904 - ], - "mapped", - [ - 7905 - ] - ], - [ - [ - 7905, - 7905 - ], - "valid" - ], - [ - [ - 7906, - 7906 - ], - "mapped", - [ - 7907 - ] - ], - [ - [ - 7907, - 7907 - ], - "valid" - ], - [ - [ - 7908, - 7908 - ], - "mapped", - [ - 7909 - ] - ], - [ - [ - 7909, - 7909 - ], - "valid" - ], - [ - [ - 7910, - 7910 - ], - "mapped", - [ - 7911 - ] - ], - [ - [ - 7911, - 7911 - ], - "valid" - ], - [ - [ - 7912, - 7912 - ], - "mapped", - [ - 7913 - ] - ], - [ - [ - 7913, - 7913 - ], - "valid" - ], - [ - [ - 7914, - 7914 - ], - "mapped", - [ - 7915 - ] - ], - [ - [ - 7915, - 7915 - ], - "valid" - ], - [ - [ - 7916, - 7916 - ], - "mapped", - [ - 7917 - ] - ], - [ - [ - 7917, - 7917 - ], - "valid" - ], - [ - [ - 7918, - 7918 - ], - "mapped", - [ - 7919 - ] - ], - [ - [ - 7919, - 7919 - ], - "valid" - ], - [ - [ - 7920, - 7920 - ], - "mapped", - [ - 7921 - ] - ], - [ - [ - 7921, - 7921 - ], - "valid" - ], - [ - [ - 7922, - 7922 - ], - "mapped", - [ - 7923 - ] - ], - [ - [ - 7923, - 7923 - ], - "valid" - ], - [ - [ - 7924, - 7924 - ], - "mapped", - [ - 7925 - ] - ], - [ - [ - 7925, - 7925 - ], - "valid" - ], - [ - [ - 7926, - 7926 - ], - "mapped", - [ - 7927 - ] - ], - [ - [ - 7927, - 7927 - ], - "valid" - ], - [ - [ - 7928, - 7928 - ], - "mapped", - [ - 7929 - ] - ], - [ - [ - 7929, - 7929 - ], - "valid" - ], - [ - [ - 7930, - 7930 - ], - "mapped", - [ - 7931 - ] - ], - [ - [ - 7931, - 7931 - ], - "valid" - ], - [ - [ - 7932, - 7932 - ], - "mapped", - [ - 7933 - ] - ], - [ - [ - 7933, - 7933 - ], - "valid" - ], - [ - [ - 7934, - 7934 - ], - "mapped", - [ - 7935 - ] - ], - [ - [ - 7935, - 7935 - ], - "valid" - ], - [ - [ - 7936, - 7943 - ], - "valid" - ], - [ - [ - 7944, - 7944 - ], - "mapped", - [ - 7936 - ] - ], - [ - [ - 7945, - 7945 - ], - "mapped", - [ - 7937 - ] - ], - [ - [ - 7946, - 7946 - ], - "mapped", - [ - 7938 - ] - ], - [ - [ - 7947, - 7947 - ], - "mapped", - [ - 7939 - ] - ], - [ - [ - 7948, - 7948 - ], - "mapped", - [ - 7940 - ] - ], - [ - [ - 7949, - 7949 - ], - "mapped", - [ - 7941 - ] - ], - [ - [ - 7950, - 7950 - ], - "mapped", - [ - 7942 - ] - ], - [ - [ - 7951, - 7951 - ], - "mapped", - [ - 7943 - ] - ], - [ - [ - 7952, - 7957 - ], - "valid" - ], - [ - [ - 7958, - 7959 - ], - "disallowed" - ], - [ - [ - 7960, - 7960 - ], - "mapped", - [ - 7952 - ] - ], - [ - [ - 7961, - 7961 - ], - "mapped", - [ - 7953 - ] - ], - [ - [ - 7962, - 7962 - ], - "mapped", - [ - 7954 - ] - ], - [ - [ - 7963, - 7963 - ], - "mapped", - [ - 7955 - ] - ], - [ - [ - 7964, - 7964 - ], - "mapped", - [ - 7956 - ] - ], - [ - [ - 7965, - 7965 - ], - "mapped", - [ - 7957 - ] - ], - [ - [ - 7966, - 7967 - ], - "disallowed" - ], - [ - [ - 7968, - 7975 - ], - "valid" - ], - [ - [ - 7976, - 7976 - ], - "mapped", - [ - 7968 - ] - ], - [ - [ - 7977, - 7977 - ], - "mapped", - [ - 7969 - ] - ], - [ - [ - 7978, - 7978 - ], - "mapped", - [ - 7970 - ] - ], - [ - [ - 7979, - 7979 - ], - "mapped", - [ - 7971 - ] - ], - [ - [ - 7980, - 7980 - ], - "mapped", - [ - 7972 - ] - ], - [ - [ - 7981, - 7981 - ], - "mapped", - [ - 7973 - ] - ], - [ - [ - 7982, - 7982 - ], - "mapped", - [ - 7974 - ] - ], - [ - [ - 7983, - 7983 - ], - "mapped", - [ - 7975 - ] - ], - [ - [ - 7984, - 7991 - ], - "valid" - ], - [ - [ - 7992, - 7992 - ], - "mapped", - [ - 7984 - ] - ], - [ - [ - 7993, - 7993 - ], - "mapped", - [ - 7985 - ] - ], - [ - [ - 7994, - 7994 - ], - "mapped", - [ - 7986 - ] - ], - [ - [ - 7995, - 7995 - ], - "mapped", - [ - 7987 - ] - ], - [ - [ - 7996, - 7996 - ], - "mapped", - [ - 7988 - ] - ], - [ - [ - 7997, - 7997 - ], - "mapped", - [ - 7989 - ] - ], - [ - [ - 7998, - 7998 - ], - "mapped", - [ - 7990 - ] - ], - [ - [ - 7999, - 7999 - ], - "mapped", - [ - 7991 - ] - ], - [ - [ - 8000, - 8005 - ], - "valid" - ], - [ - [ - 8006, - 8007 - ], - "disallowed" - ], - [ - [ - 8008, - 8008 - ], - "mapped", - [ - 8000 - ] - ], - [ - [ - 8009, - 8009 - ], - "mapped", - [ - 8001 - ] - ], - [ - [ - 8010, - 8010 - ], - "mapped", - [ - 8002 - ] - ], - [ - [ - 8011, - 8011 - ], - "mapped", - [ - 8003 - ] - ], - [ - [ - 8012, - 8012 - ], - "mapped", - [ - 8004 - ] - ], - [ - [ - 8013, - 8013 - ], - "mapped", - [ - 8005 - ] - ], - [ - [ - 8014, - 8015 - ], - "disallowed" - ], - [ - [ - 8016, - 8023 - ], - "valid" - ], - [ - [ - 8024, - 8024 - ], - "disallowed" - ], - [ - [ - 8025, - 8025 - ], - "mapped", - [ - 8017 - ] - ], - [ - [ - 8026, - 8026 - ], - "disallowed" - ], - [ - [ - 8027, - 8027 - ], - "mapped", - [ - 8019 - ] - ], - [ - [ - 8028, - 8028 - ], - "disallowed" - ], - [ - [ - 8029, - 8029 - ], - "mapped", - [ - 8021 - ] - ], - [ - [ - 8030, - 8030 - ], - "disallowed" - ], - [ - [ - 8031, - 8031 - ], - "mapped", - [ - 8023 - ] - ], - [ - [ - 8032, - 8039 - ], - "valid" - ], - [ - [ - 8040, - 8040 - ], - "mapped", - [ - 8032 - ] - ], - [ - [ - 8041, - 8041 - ], - "mapped", - [ - 8033 - ] - ], - [ - [ - 8042, - 8042 - ], - "mapped", - [ - 8034 - ] - ], - [ - [ - 8043, - 8043 - ], - "mapped", - [ - 8035 - ] - ], - [ - [ - 8044, - 8044 - ], - "mapped", - [ - 8036 - ] - ], - [ - [ - 8045, - 8045 - ], - "mapped", - [ - 8037 - ] - ], - [ - [ - 8046, - 8046 - ], - "mapped", - [ - 8038 - ] - ], - [ - [ - 8047, - 8047 - ], - "mapped", - [ - 8039 - ] - ], - [ - [ - 8048, - 8048 - ], - "valid" - ], - [ - [ - 8049, - 8049 - ], - "mapped", - [ - 940 - ] - ], - [ - [ - 8050, - 8050 - ], - "valid" - ], - [ - [ - 8051, - 8051 - ], - "mapped", - [ - 941 - ] - ], - [ - [ - 8052, - 8052 - ], - "valid" - ], - [ - [ - 8053, - 8053 - ], - "mapped", - [ - 942 - ] - ], - [ - [ - 8054, - 8054 - ], - "valid" - ], - [ - [ - 8055, - 8055 - ], - "mapped", - [ - 943 - ] - ], - [ - [ - 8056, - 8056 - ], - "valid" - ], - [ - [ - 8057, - 8057 - ], - "mapped", - [ - 972 - ] - ], - [ - [ - 8058, - 8058 - ], - "valid" - ], - [ - [ - 8059, - 8059 - ], - "mapped", - [ - 973 - ] - ], - [ - [ - 8060, - 8060 - ], - "valid" - ], - [ - [ - 8061, - 8061 - ], - "mapped", - [ - 974 - ] - ], - [ - [ - 8062, - 8063 - ], - "disallowed" - ], - [ - [ - 8064, - 8064 - ], - "mapped", - [ - 7936, - 953 - ] - ], - [ - [ - 8065, - 8065 - ], - "mapped", - [ - 7937, - 953 - ] - ], - [ - [ - 8066, - 8066 - ], - "mapped", - [ - 7938, - 953 - ] - ], - [ - [ - 8067, - 8067 - ], - "mapped", - [ - 7939, - 953 - ] - ], - [ - [ - 8068, - 8068 - ], - "mapped", - [ - 7940, - 953 - ] - ], - [ - [ - 8069, - 8069 - ], - "mapped", - [ - 7941, - 953 - ] - ], - [ - [ - 8070, - 8070 - ], - "mapped", - [ - 7942, - 953 - ] - ], - [ - [ - 8071, - 8071 - ], - "mapped", - [ - 7943, - 953 - ] - ], - [ - [ - 8072, - 8072 - ], - "mapped", - [ - 7936, - 953 - ] - ], - [ - [ - 8073, - 8073 - ], - "mapped", - [ - 7937, - 953 - ] - ], - [ - [ - 8074, - 8074 - ], - "mapped", - [ - 7938, - 953 - ] - ], - [ - [ - 8075, - 8075 - ], - "mapped", - [ - 7939, - 953 - ] - ], - [ - [ - 8076, - 8076 - ], - "mapped", - [ - 7940, - 953 - ] - ], - [ - [ - 8077, - 8077 - ], - "mapped", - [ - 7941, - 953 - ] - ], - [ - [ - 8078, - 8078 - ], - "mapped", - [ - 7942, - 953 - ] - ], - [ - [ - 8079, - 8079 - ], - "mapped", - [ - 7943, - 953 - ] - ], - [ - [ - 8080, - 8080 - ], - "mapped", - [ - 7968, - 953 - ] - ], - [ - [ - 8081, - 8081 - ], - "mapped", - [ - 7969, - 953 - ] - ], - [ - [ - 8082, - 8082 - ], - "mapped", - [ - 7970, - 953 - ] - ], - [ - [ - 8083, - 8083 - ], - "mapped", - [ - 7971, - 953 - ] - ], - [ - [ - 8084, - 8084 - ], - "mapped", - [ - 7972, - 953 - ] - ], - [ - [ - 8085, - 8085 - ], - "mapped", - [ - 7973, - 953 - ] - ], - [ - [ - 8086, - 8086 - ], - "mapped", - [ - 7974, - 953 - ] - ], - [ - [ - 8087, - 8087 - ], - "mapped", - [ - 7975, - 953 - ] - ], - [ - [ - 8088, - 8088 - ], - "mapped", - [ - 7968, - 953 - ] - ], - [ - [ - 8089, - 8089 - ], - "mapped", - [ - 7969, - 953 - ] - ], - [ - [ - 8090, - 8090 - ], - "mapped", - [ - 7970, - 953 - ] - ], - [ - [ - 8091, - 8091 - ], - "mapped", - [ - 7971, - 953 - ] - ], - [ - [ - 8092, - 8092 - ], - "mapped", - [ - 7972, - 953 - ] - ], - [ - [ - 8093, - 8093 - ], - "mapped", - [ - 7973, - 953 - ] - ], - [ - [ - 8094, - 8094 - ], - "mapped", - [ - 7974, - 953 - ] - ], - [ - [ - 8095, - 8095 - ], - "mapped", - [ - 7975, - 953 - ] - ], - [ - [ - 8096, - 8096 - ], - "mapped", - [ - 8032, - 953 - ] - ], - [ - [ - 8097, - 8097 - ], - "mapped", - [ - 8033, - 953 - ] - ], - [ - [ - 8098, - 8098 - ], - "mapped", - [ - 8034, - 953 - ] - ], - [ - [ - 8099, - 8099 - ], - "mapped", - [ - 8035, - 953 - ] - ], - [ - [ - 8100, - 8100 - ], - "mapped", - [ - 8036, - 953 - ] - ], - [ - [ - 8101, - 8101 - ], - "mapped", - [ - 8037, - 953 - ] - ], - [ - [ - 8102, - 8102 - ], - "mapped", - [ - 8038, - 953 - ] - ], - [ - [ - 8103, - 8103 - ], - "mapped", - [ - 8039, - 953 - ] - ], - [ - [ - 8104, - 8104 - ], - "mapped", - [ - 8032, - 953 - ] - ], - [ - [ - 8105, - 8105 - ], - "mapped", - [ - 8033, - 953 - ] - ], - [ - [ - 8106, - 8106 - ], - "mapped", - [ - 8034, - 953 - ] - ], - [ - [ - 8107, - 8107 - ], - "mapped", - [ - 8035, - 953 - ] - ], - [ - [ - 8108, - 8108 - ], - "mapped", - [ - 8036, - 953 - ] - ], - [ - [ - 8109, - 8109 - ], - "mapped", - [ - 8037, - 953 - ] - ], - [ - [ - 8110, - 8110 - ], - "mapped", - [ - 8038, - 953 - ] - ], - [ - [ - 8111, - 8111 - ], - "mapped", - [ - 8039, - 953 - ] - ], - [ - [ - 8112, - 8113 - ], - "valid" - ], - [ - [ - 8114, - 8114 - ], - "mapped", - [ - 8048, - 953 - ] - ], - [ - [ - 8115, - 8115 - ], - "mapped", - [ - 945, - 953 - ] - ], - [ - [ - 8116, - 8116 - ], - "mapped", - [ - 940, - 953 - ] - ], - [ - [ - 8117, - 8117 - ], - "disallowed" - ], - [ - [ - 8118, - 8118 - ], - "valid" - ], - [ - [ - 8119, - 8119 - ], - "mapped", - [ - 8118, - 953 - ] - ], - [ - [ - 8120, - 8120 - ], - "mapped", - [ - 8112 - ] - ], - [ - [ - 8121, - 8121 - ], - "mapped", - [ - 8113 - ] - ], - [ - [ - 8122, - 8122 - ], - "mapped", - [ - 8048 - ] - ], - [ - [ - 8123, - 8123 - ], - "mapped", - [ - 940 - ] - ], - [ - [ - 8124, - 8124 - ], - "mapped", - [ - 945, - 953 - ] - ], - [ - [ - 8125, - 8125 - ], - "disallowed_STD3_mapped", - [ - 32, - 787 - ] - ], - [ - [ - 8126, - 8126 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 8127, - 8127 - ], - "disallowed_STD3_mapped", - [ - 32, - 787 - ] - ], - [ - [ - 8128, - 8128 - ], - "disallowed_STD3_mapped", - [ - 32, - 834 - ] - ], - [ - [ - 8129, - 8129 - ], - "disallowed_STD3_mapped", - [ - 32, - 776, - 834 - ] - ], - [ - [ - 8130, - 8130 - ], - "mapped", - [ - 8052, - 953 - ] - ], - [ - [ - 8131, - 8131 - ], - "mapped", - [ - 951, - 953 - ] - ], - [ - [ - 8132, - 8132 - ], - "mapped", - [ - 942, - 953 - ] - ], - [ - [ - 8133, - 8133 - ], - "disallowed" - ], - [ - [ - 8134, - 8134 - ], - "valid" - ], - [ - [ - 8135, - 8135 - ], - "mapped", - [ - 8134, - 953 - ] - ], - [ - [ - 8136, - 8136 - ], - "mapped", - [ - 8050 - ] - ], - [ - [ - 8137, - 8137 - ], - "mapped", - [ - 941 - ] - ], - [ - [ - 8138, - 8138 - ], - "mapped", - [ - 8052 - ] - ], - [ - [ - 8139, - 8139 - ], - "mapped", - [ - 942 - ] - ], - [ - [ - 8140, - 8140 - ], - "mapped", - [ - 951, - 953 - ] - ], - [ - [ - 8141, - 8141 - ], - "disallowed_STD3_mapped", - [ - 32, - 787, - 768 - ] - ], - [ - [ - 8142, - 8142 - ], - "disallowed_STD3_mapped", - [ - 32, - 787, - 769 - ] - ], - [ - [ - 8143, - 8143 - ], - "disallowed_STD3_mapped", - [ - 32, - 787, - 834 - ] - ], - [ - [ - 8144, - 8146 - ], - "valid" - ], - [ - [ - 8147, - 8147 - ], - "mapped", - [ - 912 - ] - ], - [ - [ - 8148, - 8149 - ], - "disallowed" - ], - [ - [ - 8150, - 8151 - ], - "valid" - ], - [ - [ - 8152, - 8152 - ], - "mapped", - [ - 8144 - ] - ], - [ - [ - 8153, - 8153 - ], - "mapped", - [ - 8145 - ] - ], - [ - [ - 8154, - 8154 - ], - "mapped", - [ - 8054 - ] - ], - [ - [ - 8155, - 8155 - ], - "mapped", - [ - 943 - ] - ], - [ - [ - 8156, - 8156 - ], - "disallowed" - ], - [ - [ - 8157, - 8157 - ], - "disallowed_STD3_mapped", - [ - 32, - 788, - 768 - ] - ], - [ - [ - 8158, - 8158 - ], - "disallowed_STD3_mapped", - [ - 32, - 788, - 769 - ] - ], - [ - [ - 8159, - 8159 - ], - "disallowed_STD3_mapped", - [ - 32, - 788, - 834 - ] - ], - [ - [ - 8160, - 8162 - ], - "valid" - ], - [ - [ - 8163, - 8163 - ], - "mapped", - [ - 944 - ] - ], - [ - [ - 8164, - 8167 - ], - "valid" - ], - [ - [ - 8168, - 8168 - ], - "mapped", - [ - 8160 - ] - ], - [ - [ - 8169, - 8169 - ], - "mapped", - [ - 8161 - ] - ], - [ - [ - 8170, - 8170 - ], - "mapped", - [ - 8058 - ] - ], - [ - [ - 8171, - 8171 - ], - "mapped", - [ - 973 - ] - ], - [ - [ - 8172, - 8172 - ], - "mapped", - [ - 8165 - ] - ], - [ - [ - 8173, - 8173 - ], - "disallowed_STD3_mapped", - [ - 32, - 776, - 768 - ] - ], - [ - [ - 8174, - 8174 - ], - "disallowed_STD3_mapped", - [ - 32, - 776, - 769 - ] - ], - [ - [ - 8175, - 8175 - ], - "disallowed_STD3_mapped", - [ - 96 - ] - ], - [ - [ - 8176, - 8177 - ], - "disallowed" - ], - [ - [ - 8178, - 8178 - ], - "mapped", - [ - 8060, - 953 - ] - ], - [ - [ - 8179, - 8179 - ], - "mapped", - [ - 969, - 953 - ] - ], - [ - [ - 8180, - 8180 - ], - "mapped", - [ - 974, - 953 - ] - ], - [ - [ - 8181, - 8181 - ], - "disallowed" - ], - [ - [ - 8182, - 8182 - ], - "valid" - ], - [ - [ - 8183, - 8183 - ], - "mapped", - [ - 8182, - 953 - ] - ], - [ - [ - 8184, - 8184 - ], - "mapped", - [ - 8056 - ] - ], - [ - [ - 8185, - 8185 - ], - "mapped", - [ - 972 - ] - ], - [ - [ - 8186, - 8186 - ], - "mapped", - [ - 8060 - ] - ], - [ - [ - 8187, - 8187 - ], - "mapped", - [ - 974 - ] - ], - [ - [ - 8188, - 8188 - ], - "mapped", - [ - 969, - 953 - ] - ], - [ - [ - 8189, - 8189 - ], - "disallowed_STD3_mapped", - [ - 32, - 769 - ] - ], - [ - [ - 8190, - 8190 - ], - "disallowed_STD3_mapped", - [ - 32, - 788 - ] - ], - [ - [ - 8191, - 8191 - ], - "disallowed" - ], - [ - [ - 8192, - 8202 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 8203, - 8203 - ], - "ignored" - ], - [ - [ - 8204, - 8205 - ], - "deviation", - [ - ] - ], - [ - [ - 8206, - 8207 - ], - "disallowed" - ], - [ - [ - 8208, - 8208 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8209, - 8209 - ], - "mapped", - [ - 8208 - ] - ], - [ - [ - 8210, - 8214 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8215, - 8215 - ], - "disallowed_STD3_mapped", - [ - 32, - 819 - ] - ], - [ - [ - 8216, - 8227 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8228, - 8230 - ], - "disallowed" - ], - [ - [ - 8231, - 8231 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8232, - 8238 - ], - "disallowed" - ], - [ - [ - 8239, - 8239 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 8240, - 8242 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8243, - 8243 - ], - "mapped", - [ - 8242, - 8242 - ] - ], - [ - [ - 8244, - 8244 - ], - "mapped", - [ - 8242, - 8242, - 8242 - ] - ], - [ - [ - 8245, - 8245 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8246, - 8246 - ], - "mapped", - [ - 8245, - 8245 - ] - ], - [ - [ - 8247, - 8247 - ], - "mapped", - [ - 8245, - 8245, - 8245 - ] - ], - [ - [ - 8248, - 8251 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8252, - 8252 - ], - "disallowed_STD3_mapped", - [ - 33, - 33 - ] - ], - [ - [ - 8253, - 8253 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8254, - 8254 - ], - "disallowed_STD3_mapped", - [ - 32, - 773 - ] - ], - [ - [ - 8255, - 8262 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8263, - 8263 - ], - "disallowed_STD3_mapped", - [ - 63, - 63 - ] - ], - [ - [ - 8264, - 8264 - ], - "disallowed_STD3_mapped", - [ - 63, - 33 - ] - ], - [ - [ - 8265, - 8265 - ], - "disallowed_STD3_mapped", - [ - 33, - 63 - ] - ], - [ - [ - 8266, - 8269 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8270, - 8274 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8275, - 8276 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8277, - 8278 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8279, - 8279 - ], - "mapped", - [ - 8242, - 8242, - 8242, - 8242 - ] - ], - [ - [ - 8280, - 8286 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8287, - 8287 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 8288, - 8288 - ], - "ignored" - ], - [ - [ - 8289, - 8291 - ], - "disallowed" - ], - [ - [ - 8292, - 8292 - ], - "ignored" - ], - [ - [ - 8293, - 8293 - ], - "disallowed" - ], - [ - [ - 8294, - 8297 - ], - "disallowed" - ], - [ - [ - 8298, - 8303 - ], - "disallowed" - ], - [ - [ - 8304, - 8304 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 8305, - 8305 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8306, - 8307 - ], - "disallowed" - ], - [ - [ - 8308, - 8308 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 8309, - 8309 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 8310, - 8310 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 8311, - 8311 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 8312, - 8312 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 8313, - 8313 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 8314, - 8314 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 8315, - 8315 - ], - "mapped", - [ - 8722 - ] - ], - [ - [ - 8316, - 8316 - ], - "disallowed_STD3_mapped", - [ - 61 - ] - ], - [ - [ - 8317, - 8317 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 8318, - 8318 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 8319, - 8319 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 8320, - 8320 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 8321, - 8321 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 8322, - 8322 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 8323, - 8323 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 8324, - 8324 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 8325, - 8325 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 8326, - 8326 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 8327, - 8327 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 8328, - 8328 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 8329, - 8329 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 8330, - 8330 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 8331, - 8331 - ], - "mapped", - [ - 8722 - ] - ], - [ - [ - 8332, - 8332 - ], - "disallowed_STD3_mapped", - [ - 61 - ] - ], - [ - [ - 8333, - 8333 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 8334, - 8334 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 8335, - 8335 - ], - "disallowed" - ], - [ - [ - 8336, - 8336 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 8337, - 8337 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 8338, - 8338 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 8339, - 8339 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 8340, - 8340 - ], - "mapped", - [ - 601 - ] - ], - [ - [ - 8341, - 8341 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 8342, - 8342 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 8343, - 8343 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 8344, - 8344 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 8345, - 8345 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 8346, - 8346 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 8347, - 8347 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 8348, - 8348 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 8349, - 8351 - ], - "disallowed" - ], - [ - [ - 8352, - 8359 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8360, - 8360 - ], - "mapped", - [ - 114, - 115 - ] - ], - [ - [ - 8361, - 8362 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8363, - 8363 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8364, - 8364 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8365, - 8367 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8368, - 8369 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8370, - 8373 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8374, - 8376 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8377, - 8377 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8378, - 8378 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8379, - 8381 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8382, - 8382 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8383, - 8399 - ], - "disallowed" - ], - [ - [ - 8400, - 8417 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8418, - 8419 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8420, - 8426 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8427, - 8427 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8428, - 8431 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8432, - 8432 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8433, - 8447 - ], - "disallowed" - ], - [ - [ - 8448, - 8448 - ], - "disallowed_STD3_mapped", - [ - 97, - 47, - 99 - ] - ], - [ - [ - 8449, - 8449 - ], - "disallowed_STD3_mapped", - [ - 97, - 47, - 115 - ] - ], - [ - [ - 8450, - 8450 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 8451, - 8451 - ], - "mapped", - [ - 176, - 99 - ] - ], - [ - [ - 8452, - 8452 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8453, - 8453 - ], - "disallowed_STD3_mapped", - [ - 99, - 47, - 111 - ] - ], - [ - [ - 8454, - 8454 - ], - "disallowed_STD3_mapped", - [ - 99, - 47, - 117 - ] - ], - [ - [ - 8455, - 8455 - ], - "mapped", - [ - 603 - ] - ], - [ - [ - 8456, - 8456 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8457, - 8457 - ], - "mapped", - [ - 176, - 102 - ] - ], - [ - [ - 8458, - 8458 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 8459, - 8462 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 8463, - 8463 - ], - "mapped", - [ - 295 - ] - ], - [ - [ - 8464, - 8465 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8466, - 8467 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 8468, - 8468 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8469, - 8469 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 8470, - 8470 - ], - "mapped", - [ - 110, - 111 - ] - ], - [ - [ - 8471, - 8472 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8473, - 8473 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 8474, - 8474 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 8475, - 8477 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 8478, - 8479 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8480, - 8480 - ], - "mapped", - [ - 115, - 109 - ] - ], - [ - [ - 8481, - 8481 - ], - "mapped", - [ - 116, - 101, - 108 - ] - ], - [ - [ - 8482, - 8482 - ], - "mapped", - [ - 116, - 109 - ] - ], - [ - [ - 8483, - 8483 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8484, - 8484 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 8485, - 8485 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8486, - 8486 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 8487, - 8487 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8488, - 8488 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 8489, - 8489 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8490, - 8490 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 8491, - 8491 - ], - "mapped", - [ - 229 - ] - ], - [ - [ - 8492, - 8492 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 8493, - 8493 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 8494, - 8494 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8495, - 8496 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 8497, - 8497 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 8498, - 8498 - ], - "disallowed" - ], - [ - [ - 8499, - 8499 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 8500, - 8500 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 8501, - 8501 - ], - "mapped", - [ - 1488 - ] - ], - [ - [ - 8502, - 8502 - ], - "mapped", - [ - 1489 - ] - ], - [ - [ - 8503, - 8503 - ], - "mapped", - [ - 1490 - ] - ], - [ - [ - 8504, - 8504 - ], - "mapped", - [ - 1491 - ] - ], - [ - [ - 8505, - 8505 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8506, - 8506 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8507, - 8507 - ], - "mapped", - [ - 102, - 97, - 120 - ] - ], - [ - [ - 8508, - 8508 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 8509, - 8510 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 8511, - 8511 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 8512, - 8512 - ], - "mapped", - [ - 8721 - ] - ], - [ - [ - 8513, - 8516 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8517, - 8518 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 8519, - 8519 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 8520, - 8520 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8521, - 8521 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 8522, - 8523 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8524, - 8524 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8525, - 8525 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8526, - 8526 - ], - "valid" - ], - [ - [ - 8527, - 8527 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8528, - 8528 - ], - "mapped", - [ - 49, - 8260, - 55 - ] - ], - [ - [ - 8529, - 8529 - ], - "mapped", - [ - 49, - 8260, - 57 - ] - ], - [ - [ - 8530, - 8530 - ], - "mapped", - [ - 49, - 8260, - 49, - 48 - ] - ], - [ - [ - 8531, - 8531 - ], - "mapped", - [ - 49, - 8260, - 51 - ] - ], - [ - [ - 8532, - 8532 - ], - "mapped", - [ - 50, - 8260, - 51 - ] - ], - [ - [ - 8533, - 8533 - ], - "mapped", - [ - 49, - 8260, - 53 - ] - ], - [ - [ - 8534, - 8534 - ], - "mapped", - [ - 50, - 8260, - 53 - ] - ], - [ - [ - 8535, - 8535 - ], - "mapped", - [ - 51, - 8260, - 53 - ] - ], - [ - [ - 8536, - 8536 - ], - "mapped", - [ - 52, - 8260, - 53 - ] - ], - [ - [ - 8537, - 8537 - ], - "mapped", - [ - 49, - 8260, - 54 - ] - ], - [ - [ - 8538, - 8538 - ], - "mapped", - [ - 53, - 8260, - 54 - ] - ], - [ - [ - 8539, - 8539 - ], - "mapped", - [ - 49, - 8260, - 56 - ] - ], - [ - [ - 8540, - 8540 - ], - "mapped", - [ - 51, - 8260, - 56 - ] - ], - [ - [ - 8541, - 8541 - ], - "mapped", - [ - 53, - 8260, - 56 - ] - ], - [ - [ - 8542, - 8542 - ], - "mapped", - [ - 55, - 8260, - 56 - ] - ], - [ - [ - 8543, - 8543 - ], - "mapped", - [ - 49, - 8260 - ] - ], - [ - [ - 8544, - 8544 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8545, - 8545 - ], - "mapped", - [ - 105, - 105 - ] - ], - [ - [ - 8546, - 8546 - ], - "mapped", - [ - 105, - 105, - 105 - ] - ], - [ - [ - 8547, - 8547 - ], - "mapped", - [ - 105, - 118 - ] - ], - [ - [ - 8548, - 8548 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 8549, - 8549 - ], - "mapped", - [ - 118, - 105 - ] - ], - [ - [ - 8550, - 8550 - ], - "mapped", - [ - 118, - 105, - 105 - ] - ], - [ - [ - 8551, - 8551 - ], - "mapped", - [ - 118, - 105, - 105, - 105 - ] - ], - [ - [ - 8552, - 8552 - ], - "mapped", - [ - 105, - 120 - ] - ], - [ - [ - 8553, - 8553 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 8554, - 8554 - ], - "mapped", - [ - 120, - 105 - ] - ], - [ - [ - 8555, - 8555 - ], - "mapped", - [ - 120, - 105, - 105 - ] - ], - [ - [ - 8556, - 8556 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 8557, - 8557 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 8558, - 8558 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 8559, - 8559 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 8560, - 8560 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 8561, - 8561 - ], - "mapped", - [ - 105, - 105 - ] - ], - [ - [ - 8562, - 8562 - ], - "mapped", - [ - 105, - 105, - 105 - ] - ], - [ - [ - 8563, - 8563 - ], - "mapped", - [ - 105, - 118 - ] - ], - [ - [ - 8564, - 8564 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 8565, - 8565 - ], - "mapped", - [ - 118, - 105 - ] - ], - [ - [ - 8566, - 8566 - ], - "mapped", - [ - 118, - 105, - 105 - ] - ], - [ - [ - 8567, - 8567 - ], - "mapped", - [ - 118, - 105, - 105, - 105 - ] - ], - [ - [ - 8568, - 8568 - ], - "mapped", - [ - 105, - 120 - ] - ], - [ - [ - 8569, - 8569 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 8570, - 8570 - ], - "mapped", - [ - 120, - 105 - ] - ], - [ - [ - 8571, - 8571 - ], - "mapped", - [ - 120, - 105, - 105 - ] - ], - [ - [ - 8572, - 8572 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 8573, - 8573 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 8574, - 8574 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 8575, - 8575 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 8576, - 8578 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8579, - 8579 - ], - "disallowed" - ], - [ - [ - 8580, - 8580 - ], - "valid" - ], - [ - [ - 8581, - 8584 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8585, - 8585 - ], - "mapped", - [ - 48, - 8260, - 51 - ] - ], - [ - [ - 8586, - 8587 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8588, - 8591 - ], - "disallowed" - ], - [ - [ - 8592, - 8682 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8683, - 8691 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8692, - 8703 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8704, - 8747 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8748, - 8748 - ], - "mapped", - [ - 8747, - 8747 - ] - ], - [ - [ - 8749, - 8749 - ], - "mapped", - [ - 8747, - 8747, - 8747 - ] - ], - [ - [ - 8750, - 8750 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8751, - 8751 - ], - "mapped", - [ - 8750, - 8750 - ] - ], - [ - [ - 8752, - 8752 - ], - "mapped", - [ - 8750, - 8750, - 8750 - ] - ], - [ - [ - 8753, - 8799 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8800, - 8800 - ], - "disallowed_STD3_valid" - ], - [ - [ - 8801, - 8813 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8814, - 8815 - ], - "disallowed_STD3_valid" - ], - [ - [ - 8816, - 8945 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8946, - 8959 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8960, - 8960 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8961, - 8961 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 8962, - 9000 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9001, - 9001 - ], - "mapped", - [ - 12296 - ] - ], - [ - [ - 9002, - 9002 - ], - "mapped", - [ - 12297 - ] - ], - [ - [ - 9003, - 9082 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9083, - 9083 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9084, - 9084 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9085, - 9114 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9115, - 9166 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9167, - 9168 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9169, - 9179 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9180, - 9191 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9192, - 9192 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9193, - 9203 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9204, - 9210 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9211, - 9215 - ], - "disallowed" - ], - [ - [ - 9216, - 9252 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9253, - 9254 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9255, - 9279 - ], - "disallowed" - ], - [ - [ - 9280, - 9290 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9291, - 9311 - ], - "disallowed" - ], - [ - [ - 9312, - 9312 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 9313, - 9313 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 9314, - 9314 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 9315, - 9315 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 9316, - 9316 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 9317, - 9317 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 9318, - 9318 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 9319, - 9319 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 9320, - 9320 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 9321, - 9321 - ], - "mapped", - [ - 49, - 48 - ] - ], - [ - [ - 9322, - 9322 - ], - "mapped", - [ - 49, - 49 - ] - ], - [ - [ - 9323, - 9323 - ], - "mapped", - [ - 49, - 50 - ] - ], - [ - [ - 9324, - 9324 - ], - "mapped", - [ - 49, - 51 - ] - ], - [ - [ - 9325, - 9325 - ], - "mapped", - [ - 49, - 52 - ] - ], - [ - [ - 9326, - 9326 - ], - "mapped", - [ - 49, - 53 - ] - ], - [ - [ - 9327, - 9327 - ], - "mapped", - [ - 49, - 54 - ] - ], - [ - [ - 9328, - 9328 - ], - "mapped", - [ - 49, - 55 - ] - ], - [ - [ - 9329, - 9329 - ], - "mapped", - [ - 49, - 56 - ] - ], - [ - [ - 9330, - 9330 - ], - "mapped", - [ - 49, - 57 - ] - ], - [ - [ - 9331, - 9331 - ], - "mapped", - [ - 50, - 48 - ] - ], - [ - [ - 9332, - 9332 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 41 - ] - ], - [ - [ - 9333, - 9333 - ], - "disallowed_STD3_mapped", - [ - 40, - 50, - 41 - ] - ], - [ - [ - 9334, - 9334 - ], - "disallowed_STD3_mapped", - [ - 40, - 51, - 41 - ] - ], - [ - [ - 9335, - 9335 - ], - "disallowed_STD3_mapped", - [ - 40, - 52, - 41 - ] - ], - [ - [ - 9336, - 9336 - ], - "disallowed_STD3_mapped", - [ - 40, - 53, - 41 - ] - ], - [ - [ - 9337, - 9337 - ], - "disallowed_STD3_mapped", - [ - 40, - 54, - 41 - ] - ], - [ - [ - 9338, - 9338 - ], - "disallowed_STD3_mapped", - [ - 40, - 55, - 41 - ] - ], - [ - [ - 9339, - 9339 - ], - "disallowed_STD3_mapped", - [ - 40, - 56, - 41 - ] - ], - [ - [ - 9340, - 9340 - ], - "disallowed_STD3_mapped", - [ - 40, - 57, - 41 - ] - ], - [ - [ - 9341, - 9341 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 48, - 41 - ] - ], - [ - [ - 9342, - 9342 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 49, - 41 - ] - ], - [ - [ - 9343, - 9343 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 50, - 41 - ] - ], - [ - [ - 9344, - 9344 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 51, - 41 - ] - ], - [ - [ - 9345, - 9345 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 52, - 41 - ] - ], - [ - [ - 9346, - 9346 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 53, - 41 - ] - ], - [ - [ - 9347, - 9347 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 54, - 41 - ] - ], - [ - [ - 9348, - 9348 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 55, - 41 - ] - ], - [ - [ - 9349, - 9349 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 56, - 41 - ] - ], - [ - [ - 9350, - 9350 - ], - "disallowed_STD3_mapped", - [ - 40, - 49, - 57, - 41 - ] - ], - [ - [ - 9351, - 9351 - ], - "disallowed_STD3_mapped", - [ - 40, - 50, - 48, - 41 - ] - ], - [ - [ - 9352, - 9371 - ], - "disallowed" - ], - [ - [ - 9372, - 9372 - ], - "disallowed_STD3_mapped", - [ - 40, - 97, - 41 - ] - ], - [ - [ - 9373, - 9373 - ], - "disallowed_STD3_mapped", - [ - 40, - 98, - 41 - ] - ], - [ - [ - 9374, - 9374 - ], - "disallowed_STD3_mapped", - [ - 40, - 99, - 41 - ] - ], - [ - [ - 9375, - 9375 - ], - "disallowed_STD3_mapped", - [ - 40, - 100, - 41 - ] - ], - [ - [ - 9376, - 9376 - ], - "disallowed_STD3_mapped", - [ - 40, - 101, - 41 - ] - ], - [ - [ - 9377, - 9377 - ], - "disallowed_STD3_mapped", - [ - 40, - 102, - 41 - ] - ], - [ - [ - 9378, - 9378 - ], - "disallowed_STD3_mapped", - [ - 40, - 103, - 41 - ] - ], - [ - [ - 9379, - 9379 - ], - "disallowed_STD3_mapped", - [ - 40, - 104, - 41 - ] - ], - [ - [ - 9380, - 9380 - ], - "disallowed_STD3_mapped", - [ - 40, - 105, - 41 - ] - ], - [ - [ - 9381, - 9381 - ], - "disallowed_STD3_mapped", - [ - 40, - 106, - 41 - ] - ], - [ - [ - 9382, - 9382 - ], - "disallowed_STD3_mapped", - [ - 40, - 107, - 41 - ] - ], - [ - [ - 9383, - 9383 - ], - "disallowed_STD3_mapped", - [ - 40, - 108, - 41 - ] - ], - [ - [ - 9384, - 9384 - ], - "disallowed_STD3_mapped", - [ - 40, - 109, - 41 - ] - ], - [ - [ - 9385, - 9385 - ], - "disallowed_STD3_mapped", - [ - 40, - 110, - 41 - ] - ], - [ - [ - 9386, - 9386 - ], - "disallowed_STD3_mapped", - [ - 40, - 111, - 41 - ] - ], - [ - [ - 9387, - 9387 - ], - "disallowed_STD3_mapped", - [ - 40, - 112, - 41 - ] - ], - [ - [ - 9388, - 9388 - ], - "disallowed_STD3_mapped", - [ - 40, - 113, - 41 - ] - ], - [ - [ - 9389, - 9389 - ], - "disallowed_STD3_mapped", - [ - 40, - 114, - 41 - ] - ], - [ - [ - 9390, - 9390 - ], - "disallowed_STD3_mapped", - [ - 40, - 115, - 41 - ] - ], - [ - [ - 9391, - 9391 - ], - "disallowed_STD3_mapped", - [ - 40, - 116, - 41 - ] - ], - [ - [ - 9392, - 9392 - ], - "disallowed_STD3_mapped", - [ - 40, - 117, - 41 - ] - ], - [ - [ - 9393, - 9393 - ], - "disallowed_STD3_mapped", - [ - 40, - 118, - 41 - ] - ], - [ - [ - 9394, - 9394 - ], - "disallowed_STD3_mapped", - [ - 40, - 119, - 41 - ] - ], - [ - [ - 9395, - 9395 - ], - "disallowed_STD3_mapped", - [ - 40, - 120, - 41 - ] - ], - [ - [ - 9396, - 9396 - ], - "disallowed_STD3_mapped", - [ - 40, - 121, - 41 - ] - ], - [ - [ - 9397, - 9397 - ], - "disallowed_STD3_mapped", - [ - 40, - 122, - 41 - ] - ], - [ - [ - 9398, - 9398 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 9399, - 9399 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 9400, - 9400 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 9401, - 9401 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 9402, - 9402 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 9403, - 9403 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 9404, - 9404 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 9405, - 9405 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 9406, - 9406 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 9407, - 9407 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 9408, - 9408 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 9409, - 9409 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 9410, - 9410 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 9411, - 9411 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 9412, - 9412 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 9413, - 9413 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 9414, - 9414 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 9415, - 9415 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 9416, - 9416 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 9417, - 9417 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 9418, - 9418 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 9419, - 9419 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 9420, - 9420 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 9421, - 9421 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 9422, - 9422 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 9423, - 9423 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 9424, - 9424 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 9425, - 9425 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 9426, - 9426 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 9427, - 9427 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 9428, - 9428 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 9429, - 9429 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 9430, - 9430 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 9431, - 9431 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 9432, - 9432 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 9433, - 9433 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 9434, - 9434 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 9435, - 9435 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 9436, - 9436 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 9437, - 9437 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 9438, - 9438 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 9439, - 9439 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 9440, - 9440 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 9441, - 9441 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 9442, - 9442 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 9443, - 9443 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 9444, - 9444 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 9445, - 9445 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 9446, - 9446 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 9447, - 9447 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 9448, - 9448 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 9449, - 9449 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 9450, - 9450 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 9451, - 9470 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9471, - 9471 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9472, - 9621 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9622, - 9631 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9632, - 9711 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9712, - 9719 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9720, - 9727 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9728, - 9747 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9748, - 9749 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9750, - 9751 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9752, - 9752 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9753, - 9753 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9754, - 9839 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9840, - 9841 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9842, - 9853 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9854, - 9855 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9856, - 9865 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9866, - 9873 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9874, - 9884 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9885, - 9885 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9886, - 9887 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9888, - 9889 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9890, - 9905 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9906, - 9906 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9907, - 9916 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9917, - 9919 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9920, - 9923 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9924, - 9933 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9934, - 9934 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9935, - 9953 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9954, - 9954 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9955, - 9955 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9956, - 9959 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9960, - 9983 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9984, - 9984 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9985, - 9988 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9989, - 9989 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9990, - 9993 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9994, - 9995 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 9996, - 10023 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10024, - 10024 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10025, - 10059 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10060, - 10060 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10061, - 10061 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10062, - 10062 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10063, - 10066 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10067, - 10069 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10070, - 10070 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10071, - 10071 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10072, - 10078 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10079, - 10080 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10081, - 10087 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10088, - 10101 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10102, - 10132 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10133, - 10135 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10136, - 10159 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10160, - 10160 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10161, - 10174 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10175, - 10175 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10176, - 10182 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10183, - 10186 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10187, - 10187 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10188, - 10188 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10189, - 10189 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10190, - 10191 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10192, - 10219 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10220, - 10223 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10224, - 10239 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10240, - 10495 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10496, - 10763 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10764, - 10764 - ], - "mapped", - [ - 8747, - 8747, - 8747, - 8747 - ] - ], - [ - [ - 10765, - 10867 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10868, - 10868 - ], - "disallowed_STD3_mapped", - [ - 58, - 58, - 61 - ] - ], - [ - [ - 10869, - 10869 - ], - "disallowed_STD3_mapped", - [ - 61, - 61 - ] - ], - [ - [ - 10870, - 10870 - ], - "disallowed_STD3_mapped", - [ - 61, - 61, - 61 - ] - ], - [ - [ - 10871, - 10971 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 10972, - 10972 - ], - "mapped", - [ - 10973, - 824 - ] - ], - [ - [ - 10973, - 11007 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11008, - 11021 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11022, - 11027 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11028, - 11034 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11035, - 11039 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11040, - 11043 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11044, - 11084 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11085, - 11087 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11088, - 11092 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11093, - 11097 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11098, - 11123 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11124, - 11125 - ], - "disallowed" - ], - [ - [ - 11126, - 11157 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11158, - 11159 - ], - "disallowed" - ], - [ - [ - 11160, - 11193 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11194, - 11196 - ], - "disallowed" - ], - [ - [ - 11197, - 11208 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11209, - 11209 - ], - "disallowed" - ], - [ - [ - 11210, - 11217 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11218, - 11243 - ], - "disallowed" - ], - [ - [ - 11244, - 11247 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11248, - 11263 - ], - "disallowed" - ], - [ - [ - 11264, - 11264 - ], - "mapped", - [ - 11312 - ] - ], - [ - [ - 11265, - 11265 - ], - "mapped", - [ - 11313 - ] - ], - [ - [ - 11266, - 11266 - ], - "mapped", - [ - 11314 - ] - ], - [ - [ - 11267, - 11267 - ], - "mapped", - [ - 11315 - ] - ], - [ - [ - 11268, - 11268 - ], - "mapped", - [ - 11316 - ] - ], - [ - [ - 11269, - 11269 - ], - "mapped", - [ - 11317 - ] - ], - [ - [ - 11270, - 11270 - ], - "mapped", - [ - 11318 - ] - ], - [ - [ - 11271, - 11271 - ], - "mapped", - [ - 11319 - ] - ], - [ - [ - 11272, - 11272 - ], - "mapped", - [ - 11320 - ] - ], - [ - [ - 11273, - 11273 - ], - "mapped", - [ - 11321 - ] - ], - [ - [ - 11274, - 11274 - ], - "mapped", - [ - 11322 - ] - ], - [ - [ - 11275, - 11275 - ], - "mapped", - [ - 11323 - ] - ], - [ - [ - 11276, - 11276 - ], - "mapped", - [ - 11324 - ] - ], - [ - [ - 11277, - 11277 - ], - "mapped", - [ - 11325 - ] - ], - [ - [ - 11278, - 11278 - ], - "mapped", - [ - 11326 - ] - ], - [ - [ - 11279, - 11279 - ], - "mapped", - [ - 11327 - ] - ], - [ - [ - 11280, - 11280 - ], - "mapped", - [ - 11328 - ] - ], - [ - [ - 11281, - 11281 - ], - "mapped", - [ - 11329 - ] - ], - [ - [ - 11282, - 11282 - ], - "mapped", - [ - 11330 - ] - ], - [ - [ - 11283, - 11283 - ], - "mapped", - [ - 11331 - ] - ], - [ - [ - 11284, - 11284 - ], - "mapped", - [ - 11332 - ] - ], - [ - [ - 11285, - 11285 - ], - "mapped", - [ - 11333 - ] - ], - [ - [ - 11286, - 11286 - ], - "mapped", - [ - 11334 - ] - ], - [ - [ - 11287, - 11287 - ], - "mapped", - [ - 11335 - ] - ], - [ - [ - 11288, - 11288 - ], - "mapped", - [ - 11336 - ] - ], - [ - [ - 11289, - 11289 - ], - "mapped", - [ - 11337 - ] - ], - [ - [ - 11290, - 11290 - ], - "mapped", - [ - 11338 - ] - ], - [ - [ - 11291, - 11291 - ], - "mapped", - [ - 11339 - ] - ], - [ - [ - 11292, - 11292 - ], - "mapped", - [ - 11340 - ] - ], - [ - [ - 11293, - 11293 - ], - "mapped", - [ - 11341 - ] - ], - [ - [ - 11294, - 11294 - ], - "mapped", - [ - 11342 - ] - ], - [ - [ - 11295, - 11295 - ], - "mapped", - [ - 11343 - ] - ], - [ - [ - 11296, - 11296 - ], - "mapped", - [ - 11344 - ] - ], - [ - [ - 11297, - 11297 - ], - "mapped", - [ - 11345 - ] - ], - [ - [ - 11298, - 11298 - ], - "mapped", - [ - 11346 - ] - ], - [ - [ - 11299, - 11299 - ], - "mapped", - [ - 11347 - ] - ], - [ - [ - 11300, - 11300 - ], - "mapped", - [ - 11348 - ] - ], - [ - [ - 11301, - 11301 - ], - "mapped", - [ - 11349 - ] - ], - [ - [ - 11302, - 11302 - ], - "mapped", - [ - 11350 - ] - ], - [ - [ - 11303, - 11303 - ], - "mapped", - [ - 11351 - ] - ], - [ - [ - 11304, - 11304 - ], - "mapped", - [ - 11352 - ] - ], - [ - [ - 11305, - 11305 - ], - "mapped", - [ - 11353 - ] - ], - [ - [ - 11306, - 11306 - ], - "mapped", - [ - 11354 - ] - ], - [ - [ - 11307, - 11307 - ], - "mapped", - [ - 11355 - ] - ], - [ - [ - 11308, - 11308 - ], - "mapped", - [ - 11356 - ] - ], - [ - [ - 11309, - 11309 - ], - "mapped", - [ - 11357 - ] - ], - [ - [ - 11310, - 11310 - ], - "mapped", - [ - 11358 - ] - ], - [ - [ - 11311, - 11311 - ], - "disallowed" - ], - [ - [ - 11312, - 11358 - ], - "valid" - ], - [ - [ - 11359, - 11359 - ], - "disallowed" - ], - [ - [ - 11360, - 11360 - ], - "mapped", - [ - 11361 - ] - ], - [ - [ - 11361, - 11361 - ], - "valid" - ], - [ - [ - 11362, - 11362 - ], - "mapped", - [ - 619 - ] - ], - [ - [ - 11363, - 11363 - ], - "mapped", - [ - 7549 - ] - ], - [ - [ - 11364, - 11364 - ], - "mapped", - [ - 637 - ] - ], - [ - [ - 11365, - 11366 - ], - "valid" - ], - [ - [ - 11367, - 11367 - ], - "mapped", - [ - 11368 - ] - ], - [ - [ - 11368, - 11368 - ], - "valid" - ], - [ - [ - 11369, - 11369 - ], - "mapped", - [ - 11370 - ] - ], - [ - [ - 11370, - 11370 - ], - "valid" - ], - [ - [ - 11371, - 11371 - ], - "mapped", - [ - 11372 - ] - ], - [ - [ - 11372, - 11372 - ], - "valid" - ], - [ - [ - 11373, - 11373 - ], - "mapped", - [ - 593 - ] - ], - [ - [ - 11374, - 11374 - ], - "mapped", - [ - 625 - ] - ], - [ - [ - 11375, - 11375 - ], - "mapped", - [ - 592 - ] - ], - [ - [ - 11376, - 11376 - ], - "mapped", - [ - 594 - ] - ], - [ - [ - 11377, - 11377 - ], - "valid" - ], - [ - [ - 11378, - 11378 - ], - "mapped", - [ - 11379 - ] - ], - [ - [ - 11379, - 11379 - ], - "valid" - ], - [ - [ - 11380, - 11380 - ], - "valid" - ], - [ - [ - 11381, - 11381 - ], - "mapped", - [ - 11382 - ] - ], - [ - [ - 11382, - 11383 - ], - "valid" - ], - [ - [ - 11384, - 11387 - ], - "valid" - ], - [ - [ - 11388, - 11388 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 11389, - 11389 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 11390, - 11390 - ], - "mapped", - [ - 575 - ] - ], - [ - [ - 11391, - 11391 - ], - "mapped", - [ - 576 - ] - ], - [ - [ - 11392, - 11392 - ], - "mapped", - [ - 11393 - ] - ], - [ - [ - 11393, - 11393 - ], - "valid" - ], - [ - [ - 11394, - 11394 - ], - "mapped", - [ - 11395 - ] - ], - [ - [ - 11395, - 11395 - ], - "valid" - ], - [ - [ - 11396, - 11396 - ], - "mapped", - [ - 11397 - ] - ], - [ - [ - 11397, - 11397 - ], - "valid" - ], - [ - [ - 11398, - 11398 - ], - "mapped", - [ - 11399 - ] - ], - [ - [ - 11399, - 11399 - ], - "valid" - ], - [ - [ - 11400, - 11400 - ], - "mapped", - [ - 11401 - ] - ], - [ - [ - 11401, - 11401 - ], - "valid" - ], - [ - [ - 11402, - 11402 - ], - "mapped", - [ - 11403 - ] - ], - [ - [ - 11403, - 11403 - ], - "valid" - ], - [ - [ - 11404, - 11404 - ], - "mapped", - [ - 11405 - ] - ], - [ - [ - 11405, - 11405 - ], - "valid" - ], - [ - [ - 11406, - 11406 - ], - "mapped", - [ - 11407 - ] - ], - [ - [ - 11407, - 11407 - ], - "valid" - ], - [ - [ - 11408, - 11408 - ], - "mapped", - [ - 11409 - ] - ], - [ - [ - 11409, - 11409 - ], - "valid" - ], - [ - [ - 11410, - 11410 - ], - "mapped", - [ - 11411 - ] - ], - [ - [ - 11411, - 11411 - ], - "valid" - ], - [ - [ - 11412, - 11412 - ], - "mapped", - [ - 11413 - ] - ], - [ - [ - 11413, - 11413 - ], - "valid" - ], - [ - [ - 11414, - 11414 - ], - "mapped", - [ - 11415 - ] - ], - [ - [ - 11415, - 11415 - ], - "valid" - ], - [ - [ - 11416, - 11416 - ], - "mapped", - [ - 11417 - ] - ], - [ - [ - 11417, - 11417 - ], - "valid" - ], - [ - [ - 11418, - 11418 - ], - "mapped", - [ - 11419 - ] - ], - [ - [ - 11419, - 11419 - ], - "valid" - ], - [ - [ - 11420, - 11420 - ], - "mapped", - [ - 11421 - ] - ], - [ - [ - 11421, - 11421 - ], - "valid" - ], - [ - [ - 11422, - 11422 - ], - "mapped", - [ - 11423 - ] - ], - [ - [ - 11423, - 11423 - ], - "valid" - ], - [ - [ - 11424, - 11424 - ], - "mapped", - [ - 11425 - ] - ], - [ - [ - 11425, - 11425 - ], - "valid" - ], - [ - [ - 11426, - 11426 - ], - "mapped", - [ - 11427 - ] - ], - [ - [ - 11427, - 11427 - ], - "valid" - ], - [ - [ - 11428, - 11428 - ], - "mapped", - [ - 11429 - ] - ], - [ - [ - 11429, - 11429 - ], - "valid" - ], - [ - [ - 11430, - 11430 - ], - "mapped", - [ - 11431 - ] - ], - [ - [ - 11431, - 11431 - ], - "valid" - ], - [ - [ - 11432, - 11432 - ], - "mapped", - [ - 11433 - ] - ], - [ - [ - 11433, - 11433 - ], - "valid" - ], - [ - [ - 11434, - 11434 - ], - "mapped", - [ - 11435 - ] - ], - [ - [ - 11435, - 11435 - ], - "valid" - ], - [ - [ - 11436, - 11436 - ], - "mapped", - [ - 11437 - ] - ], - [ - [ - 11437, - 11437 - ], - "valid" - ], - [ - [ - 11438, - 11438 - ], - "mapped", - [ - 11439 - ] - ], - [ - [ - 11439, - 11439 - ], - "valid" - ], - [ - [ - 11440, - 11440 - ], - "mapped", - [ - 11441 - ] - ], - [ - [ - 11441, - 11441 - ], - "valid" - ], - [ - [ - 11442, - 11442 - ], - "mapped", - [ - 11443 - ] - ], - [ - [ - 11443, - 11443 - ], - "valid" - ], - [ - [ - 11444, - 11444 - ], - "mapped", - [ - 11445 - ] - ], - [ - [ - 11445, - 11445 - ], - "valid" - ], - [ - [ - 11446, - 11446 - ], - "mapped", - [ - 11447 - ] - ], - [ - [ - 11447, - 11447 - ], - "valid" - ], - [ - [ - 11448, - 11448 - ], - "mapped", - [ - 11449 - ] - ], - [ - [ - 11449, - 11449 - ], - "valid" - ], - [ - [ - 11450, - 11450 - ], - "mapped", - [ - 11451 - ] - ], - [ - [ - 11451, - 11451 - ], - "valid" - ], - [ - [ - 11452, - 11452 - ], - "mapped", - [ - 11453 - ] - ], - [ - [ - 11453, - 11453 - ], - "valid" - ], - [ - [ - 11454, - 11454 - ], - "mapped", - [ - 11455 - ] - ], - [ - [ - 11455, - 11455 - ], - "valid" - ], - [ - [ - 11456, - 11456 - ], - "mapped", - [ - 11457 - ] - ], - [ - [ - 11457, - 11457 - ], - "valid" - ], - [ - [ - 11458, - 11458 - ], - "mapped", - [ - 11459 - ] - ], - [ - [ - 11459, - 11459 - ], - "valid" - ], - [ - [ - 11460, - 11460 - ], - "mapped", - [ - 11461 - ] - ], - [ - [ - 11461, - 11461 - ], - "valid" - ], - [ - [ - 11462, - 11462 - ], - "mapped", - [ - 11463 - ] - ], - [ - [ - 11463, - 11463 - ], - "valid" - ], - [ - [ - 11464, - 11464 - ], - "mapped", - [ - 11465 - ] - ], - [ - [ - 11465, - 11465 - ], - "valid" - ], - [ - [ - 11466, - 11466 - ], - "mapped", - [ - 11467 - ] - ], - [ - [ - 11467, - 11467 - ], - "valid" - ], - [ - [ - 11468, - 11468 - ], - "mapped", - [ - 11469 - ] - ], - [ - [ - 11469, - 11469 - ], - "valid" - ], - [ - [ - 11470, - 11470 - ], - "mapped", - [ - 11471 - ] - ], - [ - [ - 11471, - 11471 - ], - "valid" - ], - [ - [ - 11472, - 11472 - ], - "mapped", - [ - 11473 - ] - ], - [ - [ - 11473, - 11473 - ], - "valid" - ], - [ - [ - 11474, - 11474 - ], - "mapped", - [ - 11475 - ] - ], - [ - [ - 11475, - 11475 - ], - "valid" - ], - [ - [ - 11476, - 11476 - ], - "mapped", - [ - 11477 - ] - ], - [ - [ - 11477, - 11477 - ], - "valid" - ], - [ - [ - 11478, - 11478 - ], - "mapped", - [ - 11479 - ] - ], - [ - [ - 11479, - 11479 - ], - "valid" - ], - [ - [ - 11480, - 11480 - ], - "mapped", - [ - 11481 - ] - ], - [ - [ - 11481, - 11481 - ], - "valid" - ], - [ - [ - 11482, - 11482 - ], - "mapped", - [ - 11483 - ] - ], - [ - [ - 11483, - 11483 - ], - "valid" - ], - [ - [ - 11484, - 11484 - ], - "mapped", - [ - 11485 - ] - ], - [ - [ - 11485, - 11485 - ], - "valid" - ], - [ - [ - 11486, - 11486 - ], - "mapped", - [ - 11487 - ] - ], - [ - [ - 11487, - 11487 - ], - "valid" - ], - [ - [ - 11488, - 11488 - ], - "mapped", - [ - 11489 - ] - ], - [ - [ - 11489, - 11489 - ], - "valid" - ], - [ - [ - 11490, - 11490 - ], - "mapped", - [ - 11491 - ] - ], - [ - [ - 11491, - 11492 - ], - "valid" - ], - [ - [ - 11493, - 11498 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11499, - 11499 - ], - "mapped", - [ - 11500 - ] - ], - [ - [ - 11500, - 11500 - ], - "valid" - ], - [ - [ - 11501, - 11501 - ], - "mapped", - [ - 11502 - ] - ], - [ - [ - 11502, - 11505 - ], - "valid" - ], - [ - [ - 11506, - 11506 - ], - "mapped", - [ - 11507 - ] - ], - [ - [ - 11507, - 11507 - ], - "valid" - ], - [ - [ - 11508, - 11512 - ], - "disallowed" - ], - [ - [ - 11513, - 11519 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11520, - 11557 - ], - "valid" - ], - [ - [ - 11558, - 11558 - ], - "disallowed" - ], - [ - [ - 11559, - 11559 - ], - "valid" - ], - [ - [ - 11560, - 11564 - ], - "disallowed" - ], - [ - [ - 11565, - 11565 - ], - "valid" - ], - [ - [ - 11566, - 11567 - ], - "disallowed" - ], - [ - [ - 11568, - 11621 - ], - "valid" - ], - [ - [ - 11622, - 11623 - ], - "valid" - ], - [ - [ - 11624, - 11630 - ], - "disallowed" - ], - [ - [ - 11631, - 11631 - ], - "mapped", - [ - 11617 - ] - ], - [ - [ - 11632, - 11632 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11633, - 11646 - ], - "disallowed" - ], - [ - [ - 11647, - 11647 - ], - "valid" - ], - [ - [ - 11648, - 11670 - ], - "valid" - ], - [ - [ - 11671, - 11679 - ], - "disallowed" - ], - [ - [ - 11680, - 11686 - ], - "valid" - ], - [ - [ - 11687, - 11687 - ], - "disallowed" - ], - [ - [ - 11688, - 11694 - ], - "valid" - ], - [ - [ - 11695, - 11695 - ], - "disallowed" - ], - [ - [ - 11696, - 11702 - ], - "valid" - ], - [ - [ - 11703, - 11703 - ], - "disallowed" - ], - [ - [ - 11704, - 11710 - ], - "valid" - ], - [ - [ - 11711, - 11711 - ], - "disallowed" - ], - [ - [ - 11712, - 11718 - ], - "valid" - ], - [ - [ - 11719, - 11719 - ], - "disallowed" - ], - [ - [ - 11720, - 11726 - ], - "valid" - ], - [ - [ - 11727, - 11727 - ], - "disallowed" - ], - [ - [ - 11728, - 11734 - ], - "valid" - ], - [ - [ - 11735, - 11735 - ], - "disallowed" - ], - [ - [ - 11736, - 11742 - ], - "valid" - ], - [ - [ - 11743, - 11743 - ], - "disallowed" - ], - [ - [ - 11744, - 11775 - ], - "valid" - ], - [ - [ - 11776, - 11799 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11800, - 11803 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11804, - 11805 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11806, - 11822 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11823, - 11823 - ], - "valid" - ], - [ - [ - 11824, - 11824 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11825, - 11825 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11826, - 11835 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11836, - 11842 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11843, - 11903 - ], - "disallowed" - ], - [ - [ - 11904, - 11929 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11930, - 11930 - ], - "disallowed" - ], - [ - [ - 11931, - 11934 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 11935, - 11935 - ], - "mapped", - [ - 27597 - ] - ], - [ - [ - 11936, - 12018 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12019, - 12019 - ], - "mapped", - [ - 40863 - ] - ], - [ - [ - 12020, - 12031 - ], - "disallowed" - ], - [ - [ - 12032, - 12032 - ], - "mapped", - [ - 19968 - ] - ], - [ - [ - 12033, - 12033 - ], - "mapped", - [ - 20008 - ] - ], - [ - [ - 12034, - 12034 - ], - "mapped", - [ - 20022 - ] - ], - [ - [ - 12035, - 12035 - ], - "mapped", - [ - 20031 - ] - ], - [ - [ - 12036, - 12036 - ], - "mapped", - [ - 20057 - ] - ], - [ - [ - 12037, - 12037 - ], - "mapped", - [ - 20101 - ] - ], - [ - [ - 12038, - 12038 - ], - "mapped", - [ - 20108 - ] - ], - [ - [ - 12039, - 12039 - ], - "mapped", - [ - 20128 - ] - ], - [ - [ - 12040, - 12040 - ], - "mapped", - [ - 20154 - ] - ], - [ - [ - 12041, - 12041 - ], - "mapped", - [ - 20799 - ] - ], - [ - [ - 12042, - 12042 - ], - "mapped", - [ - 20837 - ] - ], - [ - [ - 12043, - 12043 - ], - "mapped", - [ - 20843 - ] - ], - [ - [ - 12044, - 12044 - ], - "mapped", - [ - 20866 - ] - ], - [ - [ - 12045, - 12045 - ], - "mapped", - [ - 20886 - ] - ], - [ - [ - 12046, - 12046 - ], - "mapped", - [ - 20907 - ] - ], - [ - [ - 12047, - 12047 - ], - "mapped", - [ - 20960 - ] - ], - [ - [ - 12048, - 12048 - ], - "mapped", - [ - 20981 - ] - ], - [ - [ - 12049, - 12049 - ], - "mapped", - [ - 20992 - ] - ], - [ - [ - 12050, - 12050 - ], - "mapped", - [ - 21147 - ] - ], - [ - [ - 12051, - 12051 - ], - "mapped", - [ - 21241 - ] - ], - [ - [ - 12052, - 12052 - ], - "mapped", - [ - 21269 - ] - ], - [ - [ - 12053, - 12053 - ], - "mapped", - [ - 21274 - ] - ], - [ - [ - 12054, - 12054 - ], - "mapped", - [ - 21304 - ] - ], - [ - [ - 12055, - 12055 - ], - "mapped", - [ - 21313 - ] - ], - [ - [ - 12056, - 12056 - ], - "mapped", - [ - 21340 - ] - ], - [ - [ - 12057, - 12057 - ], - "mapped", - [ - 21353 - ] - ], - [ - [ - 12058, - 12058 - ], - "mapped", - [ - 21378 - ] - ], - [ - [ - 12059, - 12059 - ], - "mapped", - [ - 21430 - ] - ], - [ - [ - 12060, - 12060 - ], - "mapped", - [ - 21448 - ] - ], - [ - [ - 12061, - 12061 - ], - "mapped", - [ - 21475 - ] - ], - [ - [ - 12062, - 12062 - ], - "mapped", - [ - 22231 - ] - ], - [ - [ - 12063, - 12063 - ], - "mapped", - [ - 22303 - ] - ], - [ - [ - 12064, - 12064 - ], - "mapped", - [ - 22763 - ] - ], - [ - [ - 12065, - 12065 - ], - "mapped", - [ - 22786 - ] - ], - [ - [ - 12066, - 12066 - ], - "mapped", - [ - 22794 - ] - ], - [ - [ - 12067, - 12067 - ], - "mapped", - [ - 22805 - ] - ], - [ - [ - 12068, - 12068 - ], - "mapped", - [ - 22823 - ] - ], - [ - [ - 12069, - 12069 - ], - "mapped", - [ - 22899 - ] - ], - [ - [ - 12070, - 12070 - ], - "mapped", - [ - 23376 - ] - ], - [ - [ - 12071, - 12071 - ], - "mapped", - [ - 23424 - ] - ], - [ - [ - 12072, - 12072 - ], - "mapped", - [ - 23544 - ] - ], - [ - [ - 12073, - 12073 - ], - "mapped", - [ - 23567 - ] - ], - [ - [ - 12074, - 12074 - ], - "mapped", - [ - 23586 - ] - ], - [ - [ - 12075, - 12075 - ], - "mapped", - [ - 23608 - ] - ], - [ - [ - 12076, - 12076 - ], - "mapped", - [ - 23662 - ] - ], - [ - [ - 12077, - 12077 - ], - "mapped", - [ - 23665 - ] - ], - [ - [ - 12078, - 12078 - ], - "mapped", - [ - 24027 - ] - ], - [ - [ - 12079, - 12079 - ], - "mapped", - [ - 24037 - ] - ], - [ - [ - 12080, - 12080 - ], - "mapped", - [ - 24049 - ] - ], - [ - [ - 12081, - 12081 - ], - "mapped", - [ - 24062 - ] - ], - [ - [ - 12082, - 12082 - ], - "mapped", - [ - 24178 - ] - ], - [ - [ - 12083, - 12083 - ], - "mapped", - [ - 24186 - ] - ], - [ - [ - 12084, - 12084 - ], - "mapped", - [ - 24191 - ] - ], - [ - [ - 12085, - 12085 - ], - "mapped", - [ - 24308 - ] - ], - [ - [ - 12086, - 12086 - ], - "mapped", - [ - 24318 - ] - ], - [ - [ - 12087, - 12087 - ], - "mapped", - [ - 24331 - ] - ], - [ - [ - 12088, - 12088 - ], - "mapped", - [ - 24339 - ] - ], - [ - [ - 12089, - 12089 - ], - "mapped", - [ - 24400 - ] - ], - [ - [ - 12090, - 12090 - ], - "mapped", - [ - 24417 - ] - ], - [ - [ - 12091, - 12091 - ], - "mapped", - [ - 24435 - ] - ], - [ - [ - 12092, - 12092 - ], - "mapped", - [ - 24515 - ] - ], - [ - [ - 12093, - 12093 - ], - "mapped", - [ - 25096 - ] - ], - [ - [ - 12094, - 12094 - ], - "mapped", - [ - 25142 - ] - ], - [ - [ - 12095, - 12095 - ], - "mapped", - [ - 25163 - ] - ], - [ - [ - 12096, - 12096 - ], - "mapped", - [ - 25903 - ] - ], - [ - [ - 12097, - 12097 - ], - "mapped", - [ - 25908 - ] - ], - [ - [ - 12098, - 12098 - ], - "mapped", - [ - 25991 - ] - ], - [ - [ - 12099, - 12099 - ], - "mapped", - [ - 26007 - ] - ], - [ - [ - 12100, - 12100 - ], - "mapped", - [ - 26020 - ] - ], - [ - [ - 12101, - 12101 - ], - "mapped", - [ - 26041 - ] - ], - [ - [ - 12102, - 12102 - ], - "mapped", - [ - 26080 - ] - ], - [ - [ - 12103, - 12103 - ], - "mapped", - [ - 26085 - ] - ], - [ - [ - 12104, - 12104 - ], - "mapped", - [ - 26352 - ] - ], - [ - [ - 12105, - 12105 - ], - "mapped", - [ - 26376 - ] - ], - [ - [ - 12106, - 12106 - ], - "mapped", - [ - 26408 - ] - ], - [ - [ - 12107, - 12107 - ], - "mapped", - [ - 27424 - ] - ], - [ - [ - 12108, - 12108 - ], - "mapped", - [ - 27490 - ] - ], - [ - [ - 12109, - 12109 - ], - "mapped", - [ - 27513 - ] - ], - [ - [ - 12110, - 12110 - ], - "mapped", - [ - 27571 - ] - ], - [ - [ - 12111, - 12111 - ], - "mapped", - [ - 27595 - ] - ], - [ - [ - 12112, - 12112 - ], - "mapped", - [ - 27604 - ] - ], - [ - [ - 12113, - 12113 - ], - "mapped", - [ - 27611 - ] - ], - [ - [ - 12114, - 12114 - ], - "mapped", - [ - 27663 - ] - ], - [ - [ - 12115, - 12115 - ], - "mapped", - [ - 27668 - ] - ], - [ - [ - 12116, - 12116 - ], - "mapped", - [ - 27700 - ] - ], - [ - [ - 12117, - 12117 - ], - "mapped", - [ - 28779 - ] - ], - [ - [ - 12118, - 12118 - ], - "mapped", - [ - 29226 - ] - ], - [ - [ - 12119, - 12119 - ], - "mapped", - [ - 29238 - ] - ], - [ - [ - 12120, - 12120 - ], - "mapped", - [ - 29243 - ] - ], - [ - [ - 12121, - 12121 - ], - "mapped", - [ - 29247 - ] - ], - [ - [ - 12122, - 12122 - ], - "mapped", - [ - 29255 - ] - ], - [ - [ - 12123, - 12123 - ], - "mapped", - [ - 29273 - ] - ], - [ - [ - 12124, - 12124 - ], - "mapped", - [ - 29275 - ] - ], - [ - [ - 12125, - 12125 - ], - "mapped", - [ - 29356 - ] - ], - [ - [ - 12126, - 12126 - ], - "mapped", - [ - 29572 - ] - ], - [ - [ - 12127, - 12127 - ], - "mapped", - [ - 29577 - ] - ], - [ - [ - 12128, - 12128 - ], - "mapped", - [ - 29916 - ] - ], - [ - [ - 12129, - 12129 - ], - "mapped", - [ - 29926 - ] - ], - [ - [ - 12130, - 12130 - ], - "mapped", - [ - 29976 - ] - ], - [ - [ - 12131, - 12131 - ], - "mapped", - [ - 29983 - ] - ], - [ - [ - 12132, - 12132 - ], - "mapped", - [ - 29992 - ] - ], - [ - [ - 12133, - 12133 - ], - "mapped", - [ - 30000 - ] - ], - [ - [ - 12134, - 12134 - ], - "mapped", - [ - 30091 - ] - ], - [ - [ - 12135, - 12135 - ], - "mapped", - [ - 30098 - ] - ], - [ - [ - 12136, - 12136 - ], - "mapped", - [ - 30326 - ] - ], - [ - [ - 12137, - 12137 - ], - "mapped", - [ - 30333 - ] - ], - [ - [ - 12138, - 12138 - ], - "mapped", - [ - 30382 - ] - ], - [ - [ - 12139, - 12139 - ], - "mapped", - [ - 30399 - ] - ], - [ - [ - 12140, - 12140 - ], - "mapped", - [ - 30446 - ] - ], - [ - [ - 12141, - 12141 - ], - "mapped", - [ - 30683 - ] - ], - [ - [ - 12142, - 12142 - ], - "mapped", - [ - 30690 - ] - ], - [ - [ - 12143, - 12143 - ], - "mapped", - [ - 30707 - ] - ], - [ - [ - 12144, - 12144 - ], - "mapped", - [ - 31034 - ] - ], - [ - [ - 12145, - 12145 - ], - "mapped", - [ - 31160 - ] - ], - [ - [ - 12146, - 12146 - ], - "mapped", - [ - 31166 - ] - ], - [ - [ - 12147, - 12147 - ], - "mapped", - [ - 31348 - ] - ], - [ - [ - 12148, - 12148 - ], - "mapped", - [ - 31435 - ] - ], - [ - [ - 12149, - 12149 - ], - "mapped", - [ - 31481 - ] - ], - [ - [ - 12150, - 12150 - ], - "mapped", - [ - 31859 - ] - ], - [ - [ - 12151, - 12151 - ], - "mapped", - [ - 31992 - ] - ], - [ - [ - 12152, - 12152 - ], - "mapped", - [ - 32566 - ] - ], - [ - [ - 12153, - 12153 - ], - "mapped", - [ - 32593 - ] - ], - [ - [ - 12154, - 12154 - ], - "mapped", - [ - 32650 - ] - ], - [ - [ - 12155, - 12155 - ], - "mapped", - [ - 32701 - ] - ], - [ - [ - 12156, - 12156 - ], - "mapped", - [ - 32769 - ] - ], - [ - [ - 12157, - 12157 - ], - "mapped", - [ - 32780 - ] - ], - [ - [ - 12158, - 12158 - ], - "mapped", - [ - 32786 - ] - ], - [ - [ - 12159, - 12159 - ], - "mapped", - [ - 32819 - ] - ], - [ - [ - 12160, - 12160 - ], - "mapped", - [ - 32895 - ] - ], - [ - [ - 12161, - 12161 - ], - "mapped", - [ - 32905 - ] - ], - [ - [ - 12162, - 12162 - ], - "mapped", - [ - 33251 - ] - ], - [ - [ - 12163, - 12163 - ], - "mapped", - [ - 33258 - ] - ], - [ - [ - 12164, - 12164 - ], - "mapped", - [ - 33267 - ] - ], - [ - [ - 12165, - 12165 - ], - "mapped", - [ - 33276 - ] - ], - [ - [ - 12166, - 12166 - ], - "mapped", - [ - 33292 - ] - ], - [ - [ - 12167, - 12167 - ], - "mapped", - [ - 33307 - ] - ], - [ - [ - 12168, - 12168 - ], - "mapped", - [ - 33311 - ] - ], - [ - [ - 12169, - 12169 - ], - "mapped", - [ - 33390 - ] - ], - [ - [ - 12170, - 12170 - ], - "mapped", - [ - 33394 - ] - ], - [ - [ - 12171, - 12171 - ], - "mapped", - [ - 33400 - ] - ], - [ - [ - 12172, - 12172 - ], - "mapped", - [ - 34381 - ] - ], - [ - [ - 12173, - 12173 - ], - "mapped", - [ - 34411 - ] - ], - [ - [ - 12174, - 12174 - ], - "mapped", - [ - 34880 - ] - ], - [ - [ - 12175, - 12175 - ], - "mapped", - [ - 34892 - ] - ], - [ - [ - 12176, - 12176 - ], - "mapped", - [ - 34915 - ] - ], - [ - [ - 12177, - 12177 - ], - "mapped", - [ - 35198 - ] - ], - [ - [ - 12178, - 12178 - ], - "mapped", - [ - 35211 - ] - ], - [ - [ - 12179, - 12179 - ], - "mapped", - [ - 35282 - ] - ], - [ - [ - 12180, - 12180 - ], - "mapped", - [ - 35328 - ] - ], - [ - [ - 12181, - 12181 - ], - "mapped", - [ - 35895 - ] - ], - [ - [ - 12182, - 12182 - ], - "mapped", - [ - 35910 - ] - ], - [ - [ - 12183, - 12183 - ], - "mapped", - [ - 35925 - ] - ], - [ - [ - 12184, - 12184 - ], - "mapped", - [ - 35960 - ] - ], - [ - [ - 12185, - 12185 - ], - "mapped", - [ - 35997 - ] - ], - [ - [ - 12186, - 12186 - ], - "mapped", - [ - 36196 - ] - ], - [ - [ - 12187, - 12187 - ], - "mapped", - [ - 36208 - ] - ], - [ - [ - 12188, - 12188 - ], - "mapped", - [ - 36275 - ] - ], - [ - [ - 12189, - 12189 - ], - "mapped", - [ - 36523 - ] - ], - [ - [ - 12190, - 12190 - ], - "mapped", - [ - 36554 - ] - ], - [ - [ - 12191, - 12191 - ], - "mapped", - [ - 36763 - ] - ], - [ - [ - 12192, - 12192 - ], - "mapped", - [ - 36784 - ] - ], - [ - [ - 12193, - 12193 - ], - "mapped", - [ - 36789 - ] - ], - [ - [ - 12194, - 12194 - ], - "mapped", - [ - 37009 - ] - ], - [ - [ - 12195, - 12195 - ], - "mapped", - [ - 37193 - ] - ], - [ - [ - 12196, - 12196 - ], - "mapped", - [ - 37318 - ] - ], - [ - [ - 12197, - 12197 - ], - "mapped", - [ - 37324 - ] - ], - [ - [ - 12198, - 12198 - ], - "mapped", - [ - 37329 - ] - ], - [ - [ - 12199, - 12199 - ], - "mapped", - [ - 38263 - ] - ], - [ - [ - 12200, - 12200 - ], - "mapped", - [ - 38272 - ] - ], - [ - [ - 12201, - 12201 - ], - "mapped", - [ - 38428 - ] - ], - [ - [ - 12202, - 12202 - ], - "mapped", - [ - 38582 - ] - ], - [ - [ - 12203, - 12203 - ], - "mapped", - [ - 38585 - ] - ], - [ - [ - 12204, - 12204 - ], - "mapped", - [ - 38632 - ] - ], - [ - [ - 12205, - 12205 - ], - "mapped", - [ - 38737 - ] - ], - [ - [ - 12206, - 12206 - ], - "mapped", - [ - 38750 - ] - ], - [ - [ - 12207, - 12207 - ], - "mapped", - [ - 38754 - ] - ], - [ - [ - 12208, - 12208 - ], - "mapped", - [ - 38761 - ] - ], - [ - [ - 12209, - 12209 - ], - "mapped", - [ - 38859 - ] - ], - [ - [ - 12210, - 12210 - ], - "mapped", - [ - 38893 - ] - ], - [ - [ - 12211, - 12211 - ], - "mapped", - [ - 38899 - ] - ], - [ - [ - 12212, - 12212 - ], - "mapped", - [ - 38913 - ] - ], - [ - [ - 12213, - 12213 - ], - "mapped", - [ - 39080 - ] - ], - [ - [ - 12214, - 12214 - ], - "mapped", - [ - 39131 - ] - ], - [ - [ - 12215, - 12215 - ], - "mapped", - [ - 39135 - ] - ], - [ - [ - 12216, - 12216 - ], - "mapped", - [ - 39318 - ] - ], - [ - [ - 12217, - 12217 - ], - "mapped", - [ - 39321 - ] - ], - [ - [ - 12218, - 12218 - ], - "mapped", - [ - 39340 - ] - ], - [ - [ - 12219, - 12219 - ], - "mapped", - [ - 39592 - ] - ], - [ - [ - 12220, - 12220 - ], - "mapped", - [ - 39640 - ] - ], - [ - [ - 12221, - 12221 - ], - "mapped", - [ - 39647 - ] - ], - [ - [ - 12222, - 12222 - ], - "mapped", - [ - 39717 - ] - ], - [ - [ - 12223, - 12223 - ], - "mapped", - [ - 39727 - ] - ], - [ - [ - 12224, - 12224 - ], - "mapped", - [ - 39730 - ] - ], - [ - [ - 12225, - 12225 - ], - "mapped", - [ - 39740 - ] - ], - [ - [ - 12226, - 12226 - ], - "mapped", - [ - 39770 - ] - ], - [ - [ - 12227, - 12227 - ], - "mapped", - [ - 40165 - ] - ], - [ - [ - 12228, - 12228 - ], - "mapped", - [ - 40565 - ] - ], - [ - [ - 12229, - 12229 - ], - "mapped", - [ - 40575 - ] - ], - [ - [ - 12230, - 12230 - ], - "mapped", - [ - 40613 - ] - ], - [ - [ - 12231, - 12231 - ], - "mapped", - [ - 40635 - ] - ], - [ - [ - 12232, - 12232 - ], - "mapped", - [ - 40643 - ] - ], - [ - [ - 12233, - 12233 - ], - "mapped", - [ - 40653 - ] - ], - [ - [ - 12234, - 12234 - ], - "mapped", - [ - 40657 - ] - ], - [ - [ - 12235, - 12235 - ], - "mapped", - [ - 40697 - ] - ], - [ - [ - 12236, - 12236 - ], - "mapped", - [ - 40701 - ] - ], - [ - [ - 12237, - 12237 - ], - "mapped", - [ - 40718 - ] - ], - [ - [ - 12238, - 12238 - ], - "mapped", - [ - 40723 - ] - ], - [ - [ - 12239, - 12239 - ], - "mapped", - [ - 40736 - ] - ], - [ - [ - 12240, - 12240 - ], - "mapped", - [ - 40763 - ] - ], - [ - [ - 12241, - 12241 - ], - "mapped", - [ - 40778 - ] - ], - [ - [ - 12242, - 12242 - ], - "mapped", - [ - 40786 - ] - ], - [ - [ - 12243, - 12243 - ], - "mapped", - [ - 40845 - ] - ], - [ - [ - 12244, - 12244 - ], - "mapped", - [ - 40860 - ] - ], - [ - [ - 12245, - 12245 - ], - "mapped", - [ - 40864 - ] - ], - [ - [ - 12246, - 12271 - ], - "disallowed" - ], - [ - [ - 12272, - 12283 - ], - "disallowed" - ], - [ - [ - 12284, - 12287 - ], - "disallowed" - ], - [ - [ - 12288, - 12288 - ], - "disallowed_STD3_mapped", - [ - 32 - ] - ], - [ - [ - 12289, - 12289 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12290, - 12290 - ], - "mapped", - [ - 46 - ] - ], - [ - [ - 12291, - 12292 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12293, - 12295 - ], - "valid" - ], - [ - [ - 12296, - 12329 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12330, - 12333 - ], - "valid" - ], - [ - [ - 12334, - 12341 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12342, - 12342 - ], - "mapped", - [ - 12306 - ] - ], - [ - [ - 12343, - 12343 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12344, - 12344 - ], - "mapped", - [ - 21313 - ] - ], - [ - [ - 12345, - 12345 - ], - "mapped", - [ - 21316 - ] - ], - [ - [ - 12346, - 12346 - ], - "mapped", - [ - 21317 - ] - ], - [ - [ - 12347, - 12347 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12348, - 12348 - ], - "valid" - ], - [ - [ - 12349, - 12349 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12350, - 12350 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12351, - 12351 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12352, - 12352 - ], - "disallowed" - ], - [ - [ - 12353, - 12436 - ], - "valid" - ], - [ - [ - 12437, - 12438 - ], - "valid" - ], - [ - [ - 12439, - 12440 - ], - "disallowed" - ], - [ - [ - 12441, - 12442 - ], - "valid" - ], - [ - [ - 12443, - 12443 - ], - "disallowed_STD3_mapped", - [ - 32, - 12441 - ] - ], - [ - [ - 12444, - 12444 - ], - "disallowed_STD3_mapped", - [ - 32, - 12442 - ] - ], - [ - [ - 12445, - 12446 - ], - "valid" - ], - [ - [ - 12447, - 12447 - ], - "mapped", - [ - 12424, - 12426 - ] - ], - [ - [ - 12448, - 12448 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12449, - 12542 - ], - "valid" - ], - [ - [ - 12543, - 12543 - ], - "mapped", - [ - 12467, - 12488 - ] - ], - [ - [ - 12544, - 12548 - ], - "disallowed" - ], - [ - [ - 12549, - 12588 - ], - "valid" - ], - [ - [ - 12589, - 12589 - ], - "valid" - ], - [ - [ - 12590, - 12592 - ], - "disallowed" - ], - [ - [ - 12593, - 12593 - ], - "mapped", - [ - 4352 - ] - ], - [ - [ - 12594, - 12594 - ], - "mapped", - [ - 4353 - ] - ], - [ - [ - 12595, - 12595 - ], - "mapped", - [ - 4522 - ] - ], - [ - [ - 12596, - 12596 - ], - "mapped", - [ - 4354 - ] - ], - [ - [ - 12597, - 12597 - ], - "mapped", - [ - 4524 - ] - ], - [ - [ - 12598, - 12598 - ], - "mapped", - [ - 4525 - ] - ], - [ - [ - 12599, - 12599 - ], - "mapped", - [ - 4355 - ] - ], - [ - [ - 12600, - 12600 - ], - "mapped", - [ - 4356 - ] - ], - [ - [ - 12601, - 12601 - ], - "mapped", - [ - 4357 - ] - ], - [ - [ - 12602, - 12602 - ], - "mapped", - [ - 4528 - ] - ], - [ - [ - 12603, - 12603 - ], - "mapped", - [ - 4529 - ] - ], - [ - [ - 12604, - 12604 - ], - "mapped", - [ - 4530 - ] - ], - [ - [ - 12605, - 12605 - ], - "mapped", - [ - 4531 - ] - ], - [ - [ - 12606, - 12606 - ], - "mapped", - [ - 4532 - ] - ], - [ - [ - 12607, - 12607 - ], - "mapped", - [ - 4533 - ] - ], - [ - [ - 12608, - 12608 - ], - "mapped", - [ - 4378 - ] - ], - [ - [ - 12609, - 12609 - ], - "mapped", - [ - 4358 - ] - ], - [ - [ - 12610, - 12610 - ], - "mapped", - [ - 4359 - ] - ], - [ - [ - 12611, - 12611 - ], - "mapped", - [ - 4360 - ] - ], - [ - [ - 12612, - 12612 - ], - "mapped", - [ - 4385 - ] - ], - [ - [ - 12613, - 12613 - ], - "mapped", - [ - 4361 - ] - ], - [ - [ - 12614, - 12614 - ], - "mapped", - [ - 4362 - ] - ], - [ - [ - 12615, - 12615 - ], - "mapped", - [ - 4363 - ] - ], - [ - [ - 12616, - 12616 - ], - "mapped", - [ - 4364 - ] - ], - [ - [ - 12617, - 12617 - ], - "mapped", - [ - 4365 - ] - ], - [ - [ - 12618, - 12618 - ], - "mapped", - [ - 4366 - ] - ], - [ - [ - 12619, - 12619 - ], - "mapped", - [ - 4367 - ] - ], - [ - [ - 12620, - 12620 - ], - "mapped", - [ - 4368 - ] - ], - [ - [ - 12621, - 12621 - ], - "mapped", - [ - 4369 - ] - ], - [ - [ - 12622, - 12622 - ], - "mapped", - [ - 4370 - ] - ], - [ - [ - 12623, - 12623 - ], - "mapped", - [ - 4449 - ] - ], - [ - [ - 12624, - 12624 - ], - "mapped", - [ - 4450 - ] - ], - [ - [ - 12625, - 12625 - ], - "mapped", - [ - 4451 - ] - ], - [ - [ - 12626, - 12626 - ], - "mapped", - [ - 4452 - ] - ], - [ - [ - 12627, - 12627 - ], - "mapped", - [ - 4453 - ] - ], - [ - [ - 12628, - 12628 - ], - "mapped", - [ - 4454 - ] - ], - [ - [ - 12629, - 12629 - ], - "mapped", - [ - 4455 - ] - ], - [ - [ - 12630, - 12630 - ], - "mapped", - [ - 4456 - ] - ], - [ - [ - 12631, - 12631 - ], - "mapped", - [ - 4457 - ] - ], - [ - [ - 12632, - 12632 - ], - "mapped", - [ - 4458 - ] - ], - [ - [ - 12633, - 12633 - ], - "mapped", - [ - 4459 - ] - ], - [ - [ - 12634, - 12634 - ], - "mapped", - [ - 4460 - ] - ], - [ - [ - 12635, - 12635 - ], - "mapped", - [ - 4461 - ] - ], - [ - [ - 12636, - 12636 - ], - "mapped", - [ - 4462 - ] - ], - [ - [ - 12637, - 12637 - ], - "mapped", - [ - 4463 - ] - ], - [ - [ - 12638, - 12638 - ], - "mapped", - [ - 4464 - ] - ], - [ - [ - 12639, - 12639 - ], - "mapped", - [ - 4465 - ] - ], - [ - [ - 12640, - 12640 - ], - "mapped", - [ - 4466 - ] - ], - [ - [ - 12641, - 12641 - ], - "mapped", - [ - 4467 - ] - ], - [ - [ - 12642, - 12642 - ], - "mapped", - [ - 4468 - ] - ], - [ - [ - 12643, - 12643 - ], - "mapped", - [ - 4469 - ] - ], - [ - [ - 12644, - 12644 - ], - "disallowed" - ], - [ - [ - 12645, - 12645 - ], - "mapped", - [ - 4372 - ] - ], - [ - [ - 12646, - 12646 - ], - "mapped", - [ - 4373 - ] - ], - [ - [ - 12647, - 12647 - ], - "mapped", - [ - 4551 - ] - ], - [ - [ - 12648, - 12648 - ], - "mapped", - [ - 4552 - ] - ], - [ - [ - 12649, - 12649 - ], - "mapped", - [ - 4556 - ] - ], - [ - [ - 12650, - 12650 - ], - "mapped", - [ - 4558 - ] - ], - [ - [ - 12651, - 12651 - ], - "mapped", - [ - 4563 - ] - ], - [ - [ - 12652, - 12652 - ], - "mapped", - [ - 4567 - ] - ], - [ - [ - 12653, - 12653 - ], - "mapped", - [ - 4569 - ] - ], - [ - [ - 12654, - 12654 - ], - "mapped", - [ - 4380 - ] - ], - [ - [ - 12655, - 12655 - ], - "mapped", - [ - 4573 - ] - ], - [ - [ - 12656, - 12656 - ], - "mapped", - [ - 4575 - ] - ], - [ - [ - 12657, - 12657 - ], - "mapped", - [ - 4381 - ] - ], - [ - [ - 12658, - 12658 - ], - "mapped", - [ - 4382 - ] - ], - [ - [ - 12659, - 12659 - ], - "mapped", - [ - 4384 - ] - ], - [ - [ - 12660, - 12660 - ], - "mapped", - [ - 4386 - ] - ], - [ - [ - 12661, - 12661 - ], - "mapped", - [ - 4387 - ] - ], - [ - [ - 12662, - 12662 - ], - "mapped", - [ - 4391 - ] - ], - [ - [ - 12663, - 12663 - ], - "mapped", - [ - 4393 - ] - ], - [ - [ - 12664, - 12664 - ], - "mapped", - [ - 4395 - ] - ], - [ - [ - 12665, - 12665 - ], - "mapped", - [ - 4396 - ] - ], - [ - [ - 12666, - 12666 - ], - "mapped", - [ - 4397 - ] - ], - [ - [ - 12667, - 12667 - ], - "mapped", - [ - 4398 - ] - ], - [ - [ - 12668, - 12668 - ], - "mapped", - [ - 4399 - ] - ], - [ - [ - 12669, - 12669 - ], - "mapped", - [ - 4402 - ] - ], - [ - [ - 12670, - 12670 - ], - "mapped", - [ - 4406 - ] - ], - [ - [ - 12671, - 12671 - ], - "mapped", - [ - 4416 - ] - ], - [ - [ - 12672, - 12672 - ], - "mapped", - [ - 4423 - ] - ], - [ - [ - 12673, - 12673 - ], - "mapped", - [ - 4428 - ] - ], - [ - [ - 12674, - 12674 - ], - "mapped", - [ - 4593 - ] - ], - [ - [ - 12675, - 12675 - ], - "mapped", - [ - 4594 - ] - ], - [ - [ - 12676, - 12676 - ], - "mapped", - [ - 4439 - ] - ], - [ - [ - 12677, - 12677 - ], - "mapped", - [ - 4440 - ] - ], - [ - [ - 12678, - 12678 - ], - "mapped", - [ - 4441 - ] - ], - [ - [ - 12679, - 12679 - ], - "mapped", - [ - 4484 - ] - ], - [ - [ - 12680, - 12680 - ], - "mapped", - [ - 4485 - ] - ], - [ - [ - 12681, - 12681 - ], - "mapped", - [ - 4488 - ] - ], - [ - [ - 12682, - 12682 - ], - "mapped", - [ - 4497 - ] - ], - [ - [ - 12683, - 12683 - ], - "mapped", - [ - 4498 - ] - ], - [ - [ - 12684, - 12684 - ], - "mapped", - [ - 4500 - ] - ], - [ - [ - 12685, - 12685 - ], - "mapped", - [ - 4510 - ] - ], - [ - [ - 12686, - 12686 - ], - "mapped", - [ - 4513 - ] - ], - [ - [ - 12687, - 12687 - ], - "disallowed" - ], - [ - [ - 12688, - 12689 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12690, - 12690 - ], - "mapped", - [ - 19968 - ] - ], - [ - [ - 12691, - 12691 - ], - "mapped", - [ - 20108 - ] - ], - [ - [ - 12692, - 12692 - ], - "mapped", - [ - 19977 - ] - ], - [ - [ - 12693, - 12693 - ], - "mapped", - [ - 22235 - ] - ], - [ - [ - 12694, - 12694 - ], - "mapped", - [ - 19978 - ] - ], - [ - [ - 12695, - 12695 - ], - "mapped", - [ - 20013 - ] - ], - [ - [ - 12696, - 12696 - ], - "mapped", - [ - 19979 - ] - ], - [ - [ - 12697, - 12697 - ], - "mapped", - [ - 30002 - ] - ], - [ - [ - 12698, - 12698 - ], - "mapped", - [ - 20057 - ] - ], - [ - [ - 12699, - 12699 - ], - "mapped", - [ - 19993 - ] - ], - [ - [ - 12700, - 12700 - ], - "mapped", - [ - 19969 - ] - ], - [ - [ - 12701, - 12701 - ], - "mapped", - [ - 22825 - ] - ], - [ - [ - 12702, - 12702 - ], - "mapped", - [ - 22320 - ] - ], - [ - [ - 12703, - 12703 - ], - "mapped", - [ - 20154 - ] - ], - [ - [ - 12704, - 12727 - ], - "valid" - ], - [ - [ - 12728, - 12730 - ], - "valid" - ], - [ - [ - 12731, - 12735 - ], - "disallowed" - ], - [ - [ - 12736, - 12751 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12752, - 12771 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12772, - 12783 - ], - "disallowed" - ], - [ - [ - 12784, - 12799 - ], - "valid" - ], - [ - [ - 12800, - 12800 - ], - "disallowed_STD3_mapped", - [ - 40, - 4352, - 41 - ] - ], - [ - [ - 12801, - 12801 - ], - "disallowed_STD3_mapped", - [ - 40, - 4354, - 41 - ] - ], - [ - [ - 12802, - 12802 - ], - "disallowed_STD3_mapped", - [ - 40, - 4355, - 41 - ] - ], - [ - [ - 12803, - 12803 - ], - "disallowed_STD3_mapped", - [ - 40, - 4357, - 41 - ] - ], - [ - [ - 12804, - 12804 - ], - "disallowed_STD3_mapped", - [ - 40, - 4358, - 41 - ] - ], - [ - [ - 12805, - 12805 - ], - "disallowed_STD3_mapped", - [ - 40, - 4359, - 41 - ] - ], - [ - [ - 12806, - 12806 - ], - "disallowed_STD3_mapped", - [ - 40, - 4361, - 41 - ] - ], - [ - [ - 12807, - 12807 - ], - "disallowed_STD3_mapped", - [ - 40, - 4363, - 41 - ] - ], - [ - [ - 12808, - 12808 - ], - "disallowed_STD3_mapped", - [ - 40, - 4364, - 41 - ] - ], - [ - [ - 12809, - 12809 - ], - "disallowed_STD3_mapped", - [ - 40, - 4366, - 41 - ] - ], - [ - [ - 12810, - 12810 - ], - "disallowed_STD3_mapped", - [ - 40, - 4367, - 41 - ] - ], - [ - [ - 12811, - 12811 - ], - "disallowed_STD3_mapped", - [ - 40, - 4368, - 41 - ] - ], - [ - [ - 12812, - 12812 - ], - "disallowed_STD3_mapped", - [ - 40, - 4369, - 41 - ] - ], - [ - [ - 12813, - 12813 - ], - "disallowed_STD3_mapped", - [ - 40, - 4370, - 41 - ] - ], - [ - [ - 12814, - 12814 - ], - "disallowed_STD3_mapped", - [ - 40, - 44032, - 41 - ] - ], - [ - [ - 12815, - 12815 - ], - "disallowed_STD3_mapped", - [ - 40, - 45208, - 41 - ] - ], - [ - [ - 12816, - 12816 - ], - "disallowed_STD3_mapped", - [ - 40, - 45796, - 41 - ] - ], - [ - [ - 12817, - 12817 - ], - "disallowed_STD3_mapped", - [ - 40, - 46972, - 41 - ] - ], - [ - [ - 12818, - 12818 - ], - "disallowed_STD3_mapped", - [ - 40, - 47560, - 41 - ] - ], - [ - [ - 12819, - 12819 - ], - "disallowed_STD3_mapped", - [ - 40, - 48148, - 41 - ] - ], - [ - [ - 12820, - 12820 - ], - "disallowed_STD3_mapped", - [ - 40, - 49324, - 41 - ] - ], - [ - [ - 12821, - 12821 - ], - "disallowed_STD3_mapped", - [ - 40, - 50500, - 41 - ] - ], - [ - [ - 12822, - 12822 - ], - "disallowed_STD3_mapped", - [ - 40, - 51088, - 41 - ] - ], - [ - [ - 12823, - 12823 - ], - "disallowed_STD3_mapped", - [ - 40, - 52264, - 41 - ] - ], - [ - [ - 12824, - 12824 - ], - "disallowed_STD3_mapped", - [ - 40, - 52852, - 41 - ] - ], - [ - [ - 12825, - 12825 - ], - "disallowed_STD3_mapped", - [ - 40, - 53440, - 41 - ] - ], - [ - [ - 12826, - 12826 - ], - "disallowed_STD3_mapped", - [ - 40, - 54028, - 41 - ] - ], - [ - [ - 12827, - 12827 - ], - "disallowed_STD3_mapped", - [ - 40, - 54616, - 41 - ] - ], - [ - [ - 12828, - 12828 - ], - "disallowed_STD3_mapped", - [ - 40, - 51452, - 41 - ] - ], - [ - [ - 12829, - 12829 - ], - "disallowed_STD3_mapped", - [ - 40, - 50724, - 51204, - 41 - ] - ], - [ - [ - 12830, - 12830 - ], - "disallowed_STD3_mapped", - [ - 40, - 50724, - 54980, - 41 - ] - ], - [ - [ - 12831, - 12831 - ], - "disallowed" - ], - [ - [ - 12832, - 12832 - ], - "disallowed_STD3_mapped", - [ - 40, - 19968, - 41 - ] - ], - [ - [ - 12833, - 12833 - ], - "disallowed_STD3_mapped", - [ - 40, - 20108, - 41 - ] - ], - [ - [ - 12834, - 12834 - ], - "disallowed_STD3_mapped", - [ - 40, - 19977, - 41 - ] - ], - [ - [ - 12835, - 12835 - ], - "disallowed_STD3_mapped", - [ - 40, - 22235, - 41 - ] - ], - [ - [ - 12836, - 12836 - ], - "disallowed_STD3_mapped", - [ - 40, - 20116, - 41 - ] - ], - [ - [ - 12837, - 12837 - ], - "disallowed_STD3_mapped", - [ - 40, - 20845, - 41 - ] - ], - [ - [ - 12838, - 12838 - ], - "disallowed_STD3_mapped", - [ - 40, - 19971, - 41 - ] - ], - [ - [ - 12839, - 12839 - ], - "disallowed_STD3_mapped", - [ - 40, - 20843, - 41 - ] - ], - [ - [ - 12840, - 12840 - ], - "disallowed_STD3_mapped", - [ - 40, - 20061, - 41 - ] - ], - [ - [ - 12841, - 12841 - ], - "disallowed_STD3_mapped", - [ - 40, - 21313, - 41 - ] - ], - [ - [ - 12842, - 12842 - ], - "disallowed_STD3_mapped", - [ - 40, - 26376, - 41 - ] - ], - [ - [ - 12843, - 12843 - ], - "disallowed_STD3_mapped", - [ - 40, - 28779, - 41 - ] - ], - [ - [ - 12844, - 12844 - ], - "disallowed_STD3_mapped", - [ - 40, - 27700, - 41 - ] - ], - [ - [ - 12845, - 12845 - ], - "disallowed_STD3_mapped", - [ - 40, - 26408, - 41 - ] - ], - [ - [ - 12846, - 12846 - ], - "disallowed_STD3_mapped", - [ - 40, - 37329, - 41 - ] - ], - [ - [ - 12847, - 12847 - ], - "disallowed_STD3_mapped", - [ - 40, - 22303, - 41 - ] - ], - [ - [ - 12848, - 12848 - ], - "disallowed_STD3_mapped", - [ - 40, - 26085, - 41 - ] - ], - [ - [ - 12849, - 12849 - ], - "disallowed_STD3_mapped", - [ - 40, - 26666, - 41 - ] - ], - [ - [ - 12850, - 12850 - ], - "disallowed_STD3_mapped", - [ - 40, - 26377, - 41 - ] - ], - [ - [ - 12851, - 12851 - ], - "disallowed_STD3_mapped", - [ - 40, - 31038, - 41 - ] - ], - [ - [ - 12852, - 12852 - ], - "disallowed_STD3_mapped", - [ - 40, - 21517, - 41 - ] - ], - [ - [ - 12853, - 12853 - ], - "disallowed_STD3_mapped", - [ - 40, - 29305, - 41 - ] - ], - [ - [ - 12854, - 12854 - ], - "disallowed_STD3_mapped", - [ - 40, - 36001, - 41 - ] - ], - [ - [ - 12855, - 12855 - ], - "disallowed_STD3_mapped", - [ - 40, - 31069, - 41 - ] - ], - [ - [ - 12856, - 12856 - ], - "disallowed_STD3_mapped", - [ - 40, - 21172, - 41 - ] - ], - [ - [ - 12857, - 12857 - ], - "disallowed_STD3_mapped", - [ - 40, - 20195, - 41 - ] - ], - [ - [ - 12858, - 12858 - ], - "disallowed_STD3_mapped", - [ - 40, - 21628, - 41 - ] - ], - [ - [ - 12859, - 12859 - ], - "disallowed_STD3_mapped", - [ - 40, - 23398, - 41 - ] - ], - [ - [ - 12860, - 12860 - ], - "disallowed_STD3_mapped", - [ - 40, - 30435, - 41 - ] - ], - [ - [ - 12861, - 12861 - ], - "disallowed_STD3_mapped", - [ - 40, - 20225, - 41 - ] - ], - [ - [ - 12862, - 12862 - ], - "disallowed_STD3_mapped", - [ - 40, - 36039, - 41 - ] - ], - [ - [ - 12863, - 12863 - ], - "disallowed_STD3_mapped", - [ - 40, - 21332, - 41 - ] - ], - [ - [ - 12864, - 12864 - ], - "disallowed_STD3_mapped", - [ - 40, - 31085, - 41 - ] - ], - [ - [ - 12865, - 12865 - ], - "disallowed_STD3_mapped", - [ - 40, - 20241, - 41 - ] - ], - [ - [ - 12866, - 12866 - ], - "disallowed_STD3_mapped", - [ - 40, - 33258, - 41 - ] - ], - [ - [ - 12867, - 12867 - ], - "disallowed_STD3_mapped", - [ - 40, - 33267, - 41 - ] - ], - [ - [ - 12868, - 12868 - ], - "mapped", - [ - 21839 - ] - ], - [ - [ - 12869, - 12869 - ], - "mapped", - [ - 24188 - ] - ], - [ - [ - 12870, - 12870 - ], - "mapped", - [ - 25991 - ] - ], - [ - [ - 12871, - 12871 - ], - "mapped", - [ - 31631 - ] - ], - [ - [ - 12872, - 12879 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12880, - 12880 - ], - "mapped", - [ - 112, - 116, - 101 - ] - ], - [ - [ - 12881, - 12881 - ], - "mapped", - [ - 50, - 49 - ] - ], - [ - [ - 12882, - 12882 - ], - "mapped", - [ - 50, - 50 - ] - ], - [ - [ - 12883, - 12883 - ], - "mapped", - [ - 50, - 51 - ] - ], - [ - [ - 12884, - 12884 - ], - "mapped", - [ - 50, - 52 - ] - ], - [ - [ - 12885, - 12885 - ], - "mapped", - [ - 50, - 53 - ] - ], - [ - [ - 12886, - 12886 - ], - "mapped", - [ - 50, - 54 - ] - ], - [ - [ - 12887, - 12887 - ], - "mapped", - [ - 50, - 55 - ] - ], - [ - [ - 12888, - 12888 - ], - "mapped", - [ - 50, - 56 - ] - ], - [ - [ - 12889, - 12889 - ], - "mapped", - [ - 50, - 57 - ] - ], - [ - [ - 12890, - 12890 - ], - "mapped", - [ - 51, - 48 - ] - ], - [ - [ - 12891, - 12891 - ], - "mapped", - [ - 51, - 49 - ] - ], - [ - [ - 12892, - 12892 - ], - "mapped", - [ - 51, - 50 - ] - ], - [ - [ - 12893, - 12893 - ], - "mapped", - [ - 51, - 51 - ] - ], - [ - [ - 12894, - 12894 - ], - "mapped", - [ - 51, - 52 - ] - ], - [ - [ - 12895, - 12895 - ], - "mapped", - [ - 51, - 53 - ] - ], - [ - [ - 12896, - 12896 - ], - "mapped", - [ - 4352 - ] - ], - [ - [ - 12897, - 12897 - ], - "mapped", - [ - 4354 - ] - ], - [ - [ - 12898, - 12898 - ], - "mapped", - [ - 4355 - ] - ], - [ - [ - 12899, - 12899 - ], - "mapped", - [ - 4357 - ] - ], - [ - [ - 12900, - 12900 - ], - "mapped", - [ - 4358 - ] - ], - [ - [ - 12901, - 12901 - ], - "mapped", - [ - 4359 - ] - ], - [ - [ - 12902, - 12902 - ], - "mapped", - [ - 4361 - ] - ], - [ - [ - 12903, - 12903 - ], - "mapped", - [ - 4363 - ] - ], - [ - [ - 12904, - 12904 - ], - "mapped", - [ - 4364 - ] - ], - [ - [ - 12905, - 12905 - ], - "mapped", - [ - 4366 - ] - ], - [ - [ - 12906, - 12906 - ], - "mapped", - [ - 4367 - ] - ], - [ - [ - 12907, - 12907 - ], - "mapped", - [ - 4368 - ] - ], - [ - [ - 12908, - 12908 - ], - "mapped", - [ - 4369 - ] - ], - [ - [ - 12909, - 12909 - ], - "mapped", - [ - 4370 - ] - ], - [ - [ - 12910, - 12910 - ], - "mapped", - [ - 44032 - ] - ], - [ - [ - 12911, - 12911 - ], - "mapped", - [ - 45208 - ] - ], - [ - [ - 12912, - 12912 - ], - "mapped", - [ - 45796 - ] - ], - [ - [ - 12913, - 12913 - ], - "mapped", - [ - 46972 - ] - ], - [ - [ - 12914, - 12914 - ], - "mapped", - [ - 47560 - ] - ], - [ - [ - 12915, - 12915 - ], - "mapped", - [ - 48148 - ] - ], - [ - [ - 12916, - 12916 - ], - "mapped", - [ - 49324 - ] - ], - [ - [ - 12917, - 12917 - ], - "mapped", - [ - 50500 - ] - ], - [ - [ - 12918, - 12918 - ], - "mapped", - [ - 51088 - ] - ], - [ - [ - 12919, - 12919 - ], - "mapped", - [ - 52264 - ] - ], - [ - [ - 12920, - 12920 - ], - "mapped", - [ - 52852 - ] - ], - [ - [ - 12921, - 12921 - ], - "mapped", - [ - 53440 - ] - ], - [ - [ - 12922, - 12922 - ], - "mapped", - [ - 54028 - ] - ], - [ - [ - 12923, - 12923 - ], - "mapped", - [ - 54616 - ] - ], - [ - [ - 12924, - 12924 - ], - "mapped", - [ - 52280, - 44256 - ] - ], - [ - [ - 12925, - 12925 - ], - "mapped", - [ - 51452, - 51032 - ] - ], - [ - [ - 12926, - 12926 - ], - "mapped", - [ - 50864 - ] - ], - [ - [ - 12927, - 12927 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 12928, - 12928 - ], - "mapped", - [ - 19968 - ] - ], - [ - [ - 12929, - 12929 - ], - "mapped", - [ - 20108 - ] - ], - [ - [ - 12930, - 12930 - ], - "mapped", - [ - 19977 - ] - ], - [ - [ - 12931, - 12931 - ], - "mapped", - [ - 22235 - ] - ], - [ - [ - 12932, - 12932 - ], - "mapped", - [ - 20116 - ] - ], - [ - [ - 12933, - 12933 - ], - "mapped", - [ - 20845 - ] - ], - [ - [ - 12934, - 12934 - ], - "mapped", - [ - 19971 - ] - ], - [ - [ - 12935, - 12935 - ], - "mapped", - [ - 20843 - ] - ], - [ - [ - 12936, - 12936 - ], - "mapped", - [ - 20061 - ] - ], - [ - [ - 12937, - 12937 - ], - "mapped", - [ - 21313 - ] - ], - [ - [ - 12938, - 12938 - ], - "mapped", - [ - 26376 - ] - ], - [ - [ - 12939, - 12939 - ], - "mapped", - [ - 28779 - ] - ], - [ - [ - 12940, - 12940 - ], - "mapped", - [ - 27700 - ] - ], - [ - [ - 12941, - 12941 - ], - "mapped", - [ - 26408 - ] - ], - [ - [ - 12942, - 12942 - ], - "mapped", - [ - 37329 - ] - ], - [ - [ - 12943, - 12943 - ], - "mapped", - [ - 22303 - ] - ], - [ - [ - 12944, - 12944 - ], - "mapped", - [ - 26085 - ] - ], - [ - [ - 12945, - 12945 - ], - "mapped", - [ - 26666 - ] - ], - [ - [ - 12946, - 12946 - ], - "mapped", - [ - 26377 - ] - ], - [ - [ - 12947, - 12947 - ], - "mapped", - [ - 31038 - ] - ], - [ - [ - 12948, - 12948 - ], - "mapped", - [ - 21517 - ] - ], - [ - [ - 12949, - 12949 - ], - "mapped", - [ - 29305 - ] - ], - [ - [ - 12950, - 12950 - ], - "mapped", - [ - 36001 - ] - ], - [ - [ - 12951, - 12951 - ], - "mapped", - [ - 31069 - ] - ], - [ - [ - 12952, - 12952 - ], - "mapped", - [ - 21172 - ] - ], - [ - [ - 12953, - 12953 - ], - "mapped", - [ - 31192 - ] - ], - [ - [ - 12954, - 12954 - ], - "mapped", - [ - 30007 - ] - ], - [ - [ - 12955, - 12955 - ], - "mapped", - [ - 22899 - ] - ], - [ - [ - 12956, - 12956 - ], - "mapped", - [ - 36969 - ] - ], - [ - [ - 12957, - 12957 - ], - "mapped", - [ - 20778 - ] - ], - [ - [ - 12958, - 12958 - ], - "mapped", - [ - 21360 - ] - ], - [ - [ - 12959, - 12959 - ], - "mapped", - [ - 27880 - ] - ], - [ - [ - 12960, - 12960 - ], - "mapped", - [ - 38917 - ] - ], - [ - [ - 12961, - 12961 - ], - "mapped", - [ - 20241 - ] - ], - [ - [ - 12962, - 12962 - ], - "mapped", - [ - 20889 - ] - ], - [ - [ - 12963, - 12963 - ], - "mapped", - [ - 27491 - ] - ], - [ - [ - 12964, - 12964 - ], - "mapped", - [ - 19978 - ] - ], - [ - [ - 12965, - 12965 - ], - "mapped", - [ - 20013 - ] - ], - [ - [ - 12966, - 12966 - ], - "mapped", - [ - 19979 - ] - ], - [ - [ - 12967, - 12967 - ], - "mapped", - [ - 24038 - ] - ], - [ - [ - 12968, - 12968 - ], - "mapped", - [ - 21491 - ] - ], - [ - [ - 12969, - 12969 - ], - "mapped", - [ - 21307 - ] - ], - [ - [ - 12970, - 12970 - ], - "mapped", - [ - 23447 - ] - ], - [ - [ - 12971, - 12971 - ], - "mapped", - [ - 23398 - ] - ], - [ - [ - 12972, - 12972 - ], - "mapped", - [ - 30435 - ] - ], - [ - [ - 12973, - 12973 - ], - "mapped", - [ - 20225 - ] - ], - [ - [ - 12974, - 12974 - ], - "mapped", - [ - 36039 - ] - ], - [ - [ - 12975, - 12975 - ], - "mapped", - [ - 21332 - ] - ], - [ - [ - 12976, - 12976 - ], - "mapped", - [ - 22812 - ] - ], - [ - [ - 12977, - 12977 - ], - "mapped", - [ - 51, - 54 - ] - ], - [ - [ - 12978, - 12978 - ], - "mapped", - [ - 51, - 55 - ] - ], - [ - [ - 12979, - 12979 - ], - "mapped", - [ - 51, - 56 - ] - ], - [ - [ - 12980, - 12980 - ], - "mapped", - [ - 51, - 57 - ] - ], - [ - [ - 12981, - 12981 - ], - "mapped", - [ - 52, - 48 - ] - ], - [ - [ - 12982, - 12982 - ], - "mapped", - [ - 52, - 49 - ] - ], - [ - [ - 12983, - 12983 - ], - "mapped", - [ - 52, - 50 - ] - ], - [ - [ - 12984, - 12984 - ], - "mapped", - [ - 52, - 51 - ] - ], - [ - [ - 12985, - 12985 - ], - "mapped", - [ - 52, - 52 - ] - ], - [ - [ - 12986, - 12986 - ], - "mapped", - [ - 52, - 53 - ] - ], - [ - [ - 12987, - 12987 - ], - "mapped", - [ - 52, - 54 - ] - ], - [ - [ - 12988, - 12988 - ], - "mapped", - [ - 52, - 55 - ] - ], - [ - [ - 12989, - 12989 - ], - "mapped", - [ - 52, - 56 - ] - ], - [ - [ - 12990, - 12990 - ], - "mapped", - [ - 52, - 57 - ] - ], - [ - [ - 12991, - 12991 - ], - "mapped", - [ - 53, - 48 - ] - ], - [ - [ - 12992, - 12992 - ], - "mapped", - [ - 49, - 26376 - ] - ], - [ - [ - 12993, - 12993 - ], - "mapped", - [ - 50, - 26376 - ] - ], - [ - [ - 12994, - 12994 - ], - "mapped", - [ - 51, - 26376 - ] - ], - [ - [ - 12995, - 12995 - ], - "mapped", - [ - 52, - 26376 - ] - ], - [ - [ - 12996, - 12996 - ], - "mapped", - [ - 53, - 26376 - ] - ], - [ - [ - 12997, - 12997 - ], - "mapped", - [ - 54, - 26376 - ] - ], - [ - [ - 12998, - 12998 - ], - "mapped", - [ - 55, - 26376 - ] - ], - [ - [ - 12999, - 12999 - ], - "mapped", - [ - 56, - 26376 - ] - ], - [ - [ - 13000, - 13000 - ], - "mapped", - [ - 57, - 26376 - ] - ], - [ - [ - 13001, - 13001 - ], - "mapped", - [ - 49, - 48, - 26376 - ] - ], - [ - [ - 13002, - 13002 - ], - "mapped", - [ - 49, - 49, - 26376 - ] - ], - [ - [ - 13003, - 13003 - ], - "mapped", - [ - 49, - 50, - 26376 - ] - ], - [ - [ - 13004, - 13004 - ], - "mapped", - [ - 104, - 103 - ] - ], - [ - [ - 13005, - 13005 - ], - "mapped", - [ - 101, - 114, - 103 - ] - ], - [ - [ - 13006, - 13006 - ], - "mapped", - [ - 101, - 118 - ] - ], - [ - [ - 13007, - 13007 - ], - "mapped", - [ - 108, - 116, - 100 - ] - ], - [ - [ - 13008, - 13008 - ], - "mapped", - [ - 12450 - ] - ], - [ - [ - 13009, - 13009 - ], - "mapped", - [ - 12452 - ] - ], - [ - [ - 13010, - 13010 - ], - "mapped", - [ - 12454 - ] - ], - [ - [ - 13011, - 13011 - ], - "mapped", - [ - 12456 - ] - ], - [ - [ - 13012, - 13012 - ], - "mapped", - [ - 12458 - ] - ], - [ - [ - 13013, - 13013 - ], - "mapped", - [ - 12459 - ] - ], - [ - [ - 13014, - 13014 - ], - "mapped", - [ - 12461 - ] - ], - [ - [ - 13015, - 13015 - ], - "mapped", - [ - 12463 - ] - ], - [ - [ - 13016, - 13016 - ], - "mapped", - [ - 12465 - ] - ], - [ - [ - 13017, - 13017 - ], - "mapped", - [ - 12467 - ] - ], - [ - [ - 13018, - 13018 - ], - "mapped", - [ - 12469 - ] - ], - [ - [ - 13019, - 13019 - ], - "mapped", - [ - 12471 - ] - ], - [ - [ - 13020, - 13020 - ], - "mapped", - [ - 12473 - ] - ], - [ - [ - 13021, - 13021 - ], - "mapped", - [ - 12475 - ] - ], - [ - [ - 13022, - 13022 - ], - "mapped", - [ - 12477 - ] - ], - [ - [ - 13023, - 13023 - ], - "mapped", - [ - 12479 - ] - ], - [ - [ - 13024, - 13024 - ], - "mapped", - [ - 12481 - ] - ], - [ - [ - 13025, - 13025 - ], - "mapped", - [ - 12484 - ] - ], - [ - [ - 13026, - 13026 - ], - "mapped", - [ - 12486 - ] - ], - [ - [ - 13027, - 13027 - ], - "mapped", - [ - 12488 - ] - ], - [ - [ - 13028, - 13028 - ], - "mapped", - [ - 12490 - ] - ], - [ - [ - 13029, - 13029 - ], - "mapped", - [ - 12491 - ] - ], - [ - [ - 13030, - 13030 - ], - "mapped", - [ - 12492 - ] - ], - [ - [ - 13031, - 13031 - ], - "mapped", - [ - 12493 - ] - ], - [ - [ - 13032, - 13032 - ], - "mapped", - [ - 12494 - ] - ], - [ - [ - 13033, - 13033 - ], - "mapped", - [ - 12495 - ] - ], - [ - [ - 13034, - 13034 - ], - "mapped", - [ - 12498 - ] - ], - [ - [ - 13035, - 13035 - ], - "mapped", - [ - 12501 - ] - ], - [ - [ - 13036, - 13036 - ], - "mapped", - [ - 12504 - ] - ], - [ - [ - 13037, - 13037 - ], - "mapped", - [ - 12507 - ] - ], - [ - [ - 13038, - 13038 - ], - "mapped", - [ - 12510 - ] - ], - [ - [ - 13039, - 13039 - ], - "mapped", - [ - 12511 - ] - ], - [ - [ - 13040, - 13040 - ], - "mapped", - [ - 12512 - ] - ], - [ - [ - 13041, - 13041 - ], - "mapped", - [ - 12513 - ] - ], - [ - [ - 13042, - 13042 - ], - "mapped", - [ - 12514 - ] - ], - [ - [ - 13043, - 13043 - ], - "mapped", - [ - 12516 - ] - ], - [ - [ - 13044, - 13044 - ], - "mapped", - [ - 12518 - ] - ], - [ - [ - 13045, - 13045 - ], - "mapped", - [ - 12520 - ] - ], - [ - [ - 13046, - 13046 - ], - "mapped", - [ - 12521 - ] - ], - [ - [ - 13047, - 13047 - ], - "mapped", - [ - 12522 - ] - ], - [ - [ - 13048, - 13048 - ], - "mapped", - [ - 12523 - ] - ], - [ - [ - 13049, - 13049 - ], - "mapped", - [ - 12524 - ] - ], - [ - [ - 13050, - 13050 - ], - "mapped", - [ - 12525 - ] - ], - [ - [ - 13051, - 13051 - ], - "mapped", - [ - 12527 - ] - ], - [ - [ - 13052, - 13052 - ], - "mapped", - [ - 12528 - ] - ], - [ - [ - 13053, - 13053 - ], - "mapped", - [ - 12529 - ] - ], - [ - [ - 13054, - 13054 - ], - "mapped", - [ - 12530 - ] - ], - [ - [ - 13055, - 13055 - ], - "disallowed" - ], - [ - [ - 13056, - 13056 - ], - "mapped", - [ - 12450, - 12497, - 12540, - 12488 - ] - ], - [ - [ - 13057, - 13057 - ], - "mapped", - [ - 12450, - 12523, - 12501, - 12449 - ] - ], - [ - [ - 13058, - 13058 - ], - "mapped", - [ - 12450, - 12531, - 12506, - 12450 - ] - ], - [ - [ - 13059, - 13059 - ], - "mapped", - [ - 12450, - 12540, - 12523 - ] - ], - [ - [ - 13060, - 13060 - ], - "mapped", - [ - 12452, - 12491, - 12531, - 12464 - ] - ], - [ - [ - 13061, - 13061 - ], - "mapped", - [ - 12452, - 12531, - 12481 - ] - ], - [ - [ - 13062, - 13062 - ], - "mapped", - [ - 12454, - 12457, - 12531 - ] - ], - [ - [ - 13063, - 13063 - ], - "mapped", - [ - 12456, - 12473, - 12463, - 12540, - 12489 - ] - ], - [ - [ - 13064, - 13064 - ], - "mapped", - [ - 12456, - 12540, - 12459, - 12540 - ] - ], - [ - [ - 13065, - 13065 - ], - "mapped", - [ - 12458, - 12531, - 12473 - ] - ], - [ - [ - 13066, - 13066 - ], - "mapped", - [ - 12458, - 12540, - 12512 - ] - ], - [ - [ - 13067, - 13067 - ], - "mapped", - [ - 12459, - 12452, - 12522 - ] - ], - [ - [ - 13068, - 13068 - ], - "mapped", - [ - 12459, - 12521, - 12483, - 12488 - ] - ], - [ - [ - 13069, - 13069 - ], - "mapped", - [ - 12459, - 12525, - 12522, - 12540 - ] - ], - [ - [ - 13070, - 13070 - ], - "mapped", - [ - 12460, - 12525, - 12531 - ] - ], - [ - [ - 13071, - 13071 - ], - "mapped", - [ - 12460, - 12531, - 12510 - ] - ], - [ - [ - 13072, - 13072 - ], - "mapped", - [ - 12462, - 12460 - ] - ], - [ - [ - 13073, - 13073 - ], - "mapped", - [ - 12462, - 12491, - 12540 - ] - ], - [ - [ - 13074, - 13074 - ], - "mapped", - [ - 12461, - 12517, - 12522, - 12540 - ] - ], - [ - [ - 13075, - 13075 - ], - "mapped", - [ - 12462, - 12523, - 12480, - 12540 - ] - ], - [ - [ - 13076, - 13076 - ], - "mapped", - [ - 12461, - 12525 - ] - ], - [ - [ - 13077, - 13077 - ], - "mapped", - [ - 12461, - 12525, - 12464, - 12521, - 12512 - ] - ], - [ - [ - 13078, - 13078 - ], - "mapped", - [ - 12461, - 12525, - 12513, - 12540, - 12488, - 12523 - ] - ], - [ - [ - 13079, - 13079 - ], - "mapped", - [ - 12461, - 12525, - 12527, - 12483, - 12488 - ] - ], - [ - [ - 13080, - 13080 - ], - "mapped", - [ - 12464, - 12521, - 12512 - ] - ], - [ - [ - 13081, - 13081 - ], - "mapped", - [ - 12464, - 12521, - 12512, - 12488, - 12531 - ] - ], - [ - [ - 13082, - 13082 - ], - "mapped", - [ - 12463, - 12523, - 12476, - 12452, - 12525 - ] - ], - [ - [ - 13083, - 13083 - ], - "mapped", - [ - 12463, - 12525, - 12540, - 12493 - ] - ], - [ - [ - 13084, - 13084 - ], - "mapped", - [ - 12465, - 12540, - 12473 - ] - ], - [ - [ - 13085, - 13085 - ], - "mapped", - [ - 12467, - 12523, - 12490 - ] - ], - [ - [ - 13086, - 13086 - ], - "mapped", - [ - 12467, - 12540, - 12509 - ] - ], - [ - [ - 13087, - 13087 - ], - "mapped", - [ - 12469, - 12452, - 12463, - 12523 - ] - ], - [ - [ - 13088, - 13088 - ], - "mapped", - [ - 12469, - 12531, - 12481, - 12540, - 12512 - ] - ], - [ - [ - 13089, - 13089 - ], - "mapped", - [ - 12471, - 12522, - 12531, - 12464 - ] - ], - [ - [ - 13090, - 13090 - ], - "mapped", - [ - 12475, - 12531, - 12481 - ] - ], - [ - [ - 13091, - 13091 - ], - "mapped", - [ - 12475, - 12531, - 12488 - ] - ], - [ - [ - 13092, - 13092 - ], - "mapped", - [ - 12480, - 12540, - 12473 - ] - ], - [ - [ - 13093, - 13093 - ], - "mapped", - [ - 12487, - 12471 - ] - ], - [ - [ - 13094, - 13094 - ], - "mapped", - [ - 12489, - 12523 - ] - ], - [ - [ - 13095, - 13095 - ], - "mapped", - [ - 12488, - 12531 - ] - ], - [ - [ - 13096, - 13096 - ], - "mapped", - [ - 12490, - 12494 - ] - ], - [ - [ - 13097, - 13097 - ], - "mapped", - [ - 12494, - 12483, - 12488 - ] - ], - [ - [ - 13098, - 13098 - ], - "mapped", - [ - 12495, - 12452, - 12484 - ] - ], - [ - [ - 13099, - 13099 - ], - "mapped", - [ - 12497, - 12540, - 12475, - 12531, - 12488 - ] - ], - [ - [ - 13100, - 13100 - ], - "mapped", - [ - 12497, - 12540, - 12484 - ] - ], - [ - [ - 13101, - 13101 - ], - "mapped", - [ - 12496, - 12540, - 12524, - 12523 - ] - ], - [ - [ - 13102, - 13102 - ], - "mapped", - [ - 12500, - 12450, - 12473, - 12488, - 12523 - ] - ], - [ - [ - 13103, - 13103 - ], - "mapped", - [ - 12500, - 12463, - 12523 - ] - ], - [ - [ - 13104, - 13104 - ], - "mapped", - [ - 12500, - 12467 - ] - ], - [ - [ - 13105, - 13105 - ], - "mapped", - [ - 12499, - 12523 - ] - ], - [ - [ - 13106, - 13106 - ], - "mapped", - [ - 12501, - 12449, - 12521, - 12483, - 12489 - ] - ], - [ - [ - 13107, - 13107 - ], - "mapped", - [ - 12501, - 12451, - 12540, - 12488 - ] - ], - [ - [ - 13108, - 13108 - ], - "mapped", - [ - 12502, - 12483, - 12471, - 12455, - 12523 - ] - ], - [ - [ - 13109, - 13109 - ], - "mapped", - [ - 12501, - 12521, - 12531 - ] - ], - [ - [ - 13110, - 13110 - ], - "mapped", - [ - 12504, - 12463, - 12479, - 12540, - 12523 - ] - ], - [ - [ - 13111, - 13111 - ], - "mapped", - [ - 12506, - 12477 - ] - ], - [ - [ - 13112, - 13112 - ], - "mapped", - [ - 12506, - 12491, - 12498 - ] - ], - [ - [ - 13113, - 13113 - ], - "mapped", - [ - 12504, - 12523, - 12484 - ] - ], - [ - [ - 13114, - 13114 - ], - "mapped", - [ - 12506, - 12531, - 12473 - ] - ], - [ - [ - 13115, - 13115 - ], - "mapped", - [ - 12506, - 12540, - 12472 - ] - ], - [ - [ - 13116, - 13116 - ], - "mapped", - [ - 12505, - 12540, - 12479 - ] - ], - [ - [ - 13117, - 13117 - ], - "mapped", - [ - 12509, - 12452, - 12531, - 12488 - ] - ], - [ - [ - 13118, - 13118 - ], - "mapped", - [ - 12508, - 12523, - 12488 - ] - ], - [ - [ - 13119, - 13119 - ], - "mapped", - [ - 12507, - 12531 - ] - ], - [ - [ - 13120, - 13120 - ], - "mapped", - [ - 12509, - 12531, - 12489 - ] - ], - [ - [ - 13121, - 13121 - ], - "mapped", - [ - 12507, - 12540, - 12523 - ] - ], - [ - [ - 13122, - 13122 - ], - "mapped", - [ - 12507, - 12540, - 12531 - ] - ], - [ - [ - 13123, - 13123 - ], - "mapped", - [ - 12510, - 12452, - 12463, - 12525 - ] - ], - [ - [ - 13124, - 13124 - ], - "mapped", - [ - 12510, - 12452, - 12523 - ] - ], - [ - [ - 13125, - 13125 - ], - "mapped", - [ - 12510, - 12483, - 12495 - ] - ], - [ - [ - 13126, - 13126 - ], - "mapped", - [ - 12510, - 12523, - 12463 - ] - ], - [ - [ - 13127, - 13127 - ], - "mapped", - [ - 12510, - 12531, - 12471, - 12519, - 12531 - ] - ], - [ - [ - 13128, - 13128 - ], - "mapped", - [ - 12511, - 12463, - 12525, - 12531 - ] - ], - [ - [ - 13129, - 13129 - ], - "mapped", - [ - 12511, - 12522 - ] - ], - [ - [ - 13130, - 13130 - ], - "mapped", - [ - 12511, - 12522, - 12496, - 12540, - 12523 - ] - ], - [ - [ - 13131, - 13131 - ], - "mapped", - [ - 12513, - 12460 - ] - ], - [ - [ - 13132, - 13132 - ], - "mapped", - [ - 12513, - 12460, - 12488, - 12531 - ] - ], - [ - [ - 13133, - 13133 - ], - "mapped", - [ - 12513, - 12540, - 12488, - 12523 - ] - ], - [ - [ - 13134, - 13134 - ], - "mapped", - [ - 12516, - 12540, - 12489 - ] - ], - [ - [ - 13135, - 13135 - ], - "mapped", - [ - 12516, - 12540, - 12523 - ] - ], - [ - [ - 13136, - 13136 - ], - "mapped", - [ - 12518, - 12450, - 12531 - ] - ], - [ - [ - 13137, - 13137 - ], - "mapped", - [ - 12522, - 12483, - 12488, - 12523 - ] - ], - [ - [ - 13138, - 13138 - ], - "mapped", - [ - 12522, - 12521 - ] - ], - [ - [ - 13139, - 13139 - ], - "mapped", - [ - 12523, - 12500, - 12540 - ] - ], - [ - [ - 13140, - 13140 - ], - "mapped", - [ - 12523, - 12540, - 12502, - 12523 - ] - ], - [ - [ - 13141, - 13141 - ], - "mapped", - [ - 12524, - 12512 - ] - ], - [ - [ - 13142, - 13142 - ], - "mapped", - [ - 12524, - 12531, - 12488, - 12466, - 12531 - ] - ], - [ - [ - 13143, - 13143 - ], - "mapped", - [ - 12527, - 12483, - 12488 - ] - ], - [ - [ - 13144, - 13144 - ], - "mapped", - [ - 48, - 28857 - ] - ], - [ - [ - 13145, - 13145 - ], - "mapped", - [ - 49, - 28857 - ] - ], - [ - [ - 13146, - 13146 - ], - "mapped", - [ - 50, - 28857 - ] - ], - [ - [ - 13147, - 13147 - ], - "mapped", - [ - 51, - 28857 - ] - ], - [ - [ - 13148, - 13148 - ], - "mapped", - [ - 52, - 28857 - ] - ], - [ - [ - 13149, - 13149 - ], - "mapped", - [ - 53, - 28857 - ] - ], - [ - [ - 13150, - 13150 - ], - "mapped", - [ - 54, - 28857 - ] - ], - [ - [ - 13151, - 13151 - ], - "mapped", - [ - 55, - 28857 - ] - ], - [ - [ - 13152, - 13152 - ], - "mapped", - [ - 56, - 28857 - ] - ], - [ - [ - 13153, - 13153 - ], - "mapped", - [ - 57, - 28857 - ] - ], - [ - [ - 13154, - 13154 - ], - "mapped", - [ - 49, - 48, - 28857 - ] - ], - [ - [ - 13155, - 13155 - ], - "mapped", - [ - 49, - 49, - 28857 - ] - ], - [ - [ - 13156, - 13156 - ], - "mapped", - [ - 49, - 50, - 28857 - ] - ], - [ - [ - 13157, - 13157 - ], - "mapped", - [ - 49, - 51, - 28857 - ] - ], - [ - [ - 13158, - 13158 - ], - "mapped", - [ - 49, - 52, - 28857 - ] - ], - [ - [ - 13159, - 13159 - ], - "mapped", - [ - 49, - 53, - 28857 - ] - ], - [ - [ - 13160, - 13160 - ], - "mapped", - [ - 49, - 54, - 28857 - ] - ], - [ - [ - 13161, - 13161 - ], - "mapped", - [ - 49, - 55, - 28857 - ] - ], - [ - [ - 13162, - 13162 - ], - "mapped", - [ - 49, - 56, - 28857 - ] - ], - [ - [ - 13163, - 13163 - ], - "mapped", - [ - 49, - 57, - 28857 - ] - ], - [ - [ - 13164, - 13164 - ], - "mapped", - [ - 50, - 48, - 28857 - ] - ], - [ - [ - 13165, - 13165 - ], - "mapped", - [ - 50, - 49, - 28857 - ] - ], - [ - [ - 13166, - 13166 - ], - "mapped", - [ - 50, - 50, - 28857 - ] - ], - [ - [ - 13167, - 13167 - ], - "mapped", - [ - 50, - 51, - 28857 - ] - ], - [ - [ - 13168, - 13168 - ], - "mapped", - [ - 50, - 52, - 28857 - ] - ], - [ - [ - 13169, - 13169 - ], - "mapped", - [ - 104, - 112, - 97 - ] - ], - [ - [ - 13170, - 13170 - ], - "mapped", - [ - 100, - 97 - ] - ], - [ - [ - 13171, - 13171 - ], - "mapped", - [ - 97, - 117 - ] - ], - [ - [ - 13172, - 13172 - ], - "mapped", - [ - 98, - 97, - 114 - ] - ], - [ - [ - 13173, - 13173 - ], - "mapped", - [ - 111, - 118 - ] - ], - [ - [ - 13174, - 13174 - ], - "mapped", - [ - 112, - 99 - ] - ], - [ - [ - 13175, - 13175 - ], - "mapped", - [ - 100, - 109 - ] - ], - [ - [ - 13176, - 13176 - ], - "mapped", - [ - 100, - 109, - 50 - ] - ], - [ - [ - 13177, - 13177 - ], - "mapped", - [ - 100, - 109, - 51 - ] - ], - [ - [ - 13178, - 13178 - ], - "mapped", - [ - 105, - 117 - ] - ], - [ - [ - 13179, - 13179 - ], - "mapped", - [ - 24179, - 25104 - ] - ], - [ - [ - 13180, - 13180 - ], - "mapped", - [ - 26157, - 21644 - ] - ], - [ - [ - 13181, - 13181 - ], - "mapped", - [ - 22823, - 27491 - ] - ], - [ - [ - 13182, - 13182 - ], - "mapped", - [ - 26126, - 27835 - ] - ], - [ - [ - 13183, - 13183 - ], - "mapped", - [ - 26666, - 24335, - 20250, - 31038 - ] - ], - [ - [ - 13184, - 13184 - ], - "mapped", - [ - 112, - 97 - ] - ], - [ - [ - 13185, - 13185 - ], - "mapped", - [ - 110, - 97 - ] - ], - [ - [ - 13186, - 13186 - ], - "mapped", - [ - 956, - 97 - ] - ], - [ - [ - 13187, - 13187 - ], - "mapped", - [ - 109, - 97 - ] - ], - [ - [ - 13188, - 13188 - ], - "mapped", - [ - 107, - 97 - ] - ], - [ - [ - 13189, - 13189 - ], - "mapped", - [ - 107, - 98 - ] - ], - [ - [ - 13190, - 13190 - ], - "mapped", - [ - 109, - 98 - ] - ], - [ - [ - 13191, - 13191 - ], - "mapped", - [ - 103, - 98 - ] - ], - [ - [ - 13192, - 13192 - ], - "mapped", - [ - 99, - 97, - 108 - ] - ], - [ - [ - 13193, - 13193 - ], - "mapped", - [ - 107, - 99, - 97, - 108 - ] - ], - [ - [ - 13194, - 13194 - ], - "mapped", - [ - 112, - 102 - ] - ], - [ - [ - 13195, - 13195 - ], - "mapped", - [ - 110, - 102 - ] - ], - [ - [ - 13196, - 13196 - ], - "mapped", - [ - 956, - 102 - ] - ], - [ - [ - 13197, - 13197 - ], - "mapped", - [ - 956, - 103 - ] - ], - [ - [ - 13198, - 13198 - ], - "mapped", - [ - 109, - 103 - ] - ], - [ - [ - 13199, - 13199 - ], - "mapped", - [ - 107, - 103 - ] - ], - [ - [ - 13200, - 13200 - ], - "mapped", - [ - 104, - 122 - ] - ], - [ - [ - 13201, - 13201 - ], - "mapped", - [ - 107, - 104, - 122 - ] - ], - [ - [ - 13202, - 13202 - ], - "mapped", - [ - 109, - 104, - 122 - ] - ], - [ - [ - 13203, - 13203 - ], - "mapped", - [ - 103, - 104, - 122 - ] - ], - [ - [ - 13204, - 13204 - ], - "mapped", - [ - 116, - 104, - 122 - ] - ], - [ - [ - 13205, - 13205 - ], - "mapped", - [ - 956, - 108 - ] - ], - [ - [ - 13206, - 13206 - ], - "mapped", - [ - 109, - 108 - ] - ], - [ - [ - 13207, - 13207 - ], - "mapped", - [ - 100, - 108 - ] - ], - [ - [ - 13208, - 13208 - ], - "mapped", - [ - 107, - 108 - ] - ], - [ - [ - 13209, - 13209 - ], - "mapped", - [ - 102, - 109 - ] - ], - [ - [ - 13210, - 13210 - ], - "mapped", - [ - 110, - 109 - ] - ], - [ - [ - 13211, - 13211 - ], - "mapped", - [ - 956, - 109 - ] - ], - [ - [ - 13212, - 13212 - ], - "mapped", - [ - 109, - 109 - ] - ], - [ - [ - 13213, - 13213 - ], - "mapped", - [ - 99, - 109 - ] - ], - [ - [ - 13214, - 13214 - ], - "mapped", - [ - 107, - 109 - ] - ], - [ - [ - 13215, - 13215 - ], - "mapped", - [ - 109, - 109, - 50 - ] - ], - [ - [ - 13216, - 13216 - ], - "mapped", - [ - 99, - 109, - 50 - ] - ], - [ - [ - 13217, - 13217 - ], - "mapped", - [ - 109, - 50 - ] - ], - [ - [ - 13218, - 13218 - ], - "mapped", - [ - 107, - 109, - 50 - ] - ], - [ - [ - 13219, - 13219 - ], - "mapped", - [ - 109, - 109, - 51 - ] - ], - [ - [ - 13220, - 13220 - ], - "mapped", - [ - 99, - 109, - 51 - ] - ], - [ - [ - 13221, - 13221 - ], - "mapped", - [ - 109, - 51 - ] - ], - [ - [ - 13222, - 13222 - ], - "mapped", - [ - 107, - 109, - 51 - ] - ], - [ - [ - 13223, - 13223 - ], - "mapped", - [ - 109, - 8725, - 115 - ] - ], - [ - [ - 13224, - 13224 - ], - "mapped", - [ - 109, - 8725, - 115, - 50 - ] - ], - [ - [ - 13225, - 13225 - ], - "mapped", - [ - 112, - 97 - ] - ], - [ - [ - 13226, - 13226 - ], - "mapped", - [ - 107, - 112, - 97 - ] - ], - [ - [ - 13227, - 13227 - ], - "mapped", - [ - 109, - 112, - 97 - ] - ], - [ - [ - 13228, - 13228 - ], - "mapped", - [ - 103, - 112, - 97 - ] - ], - [ - [ - 13229, - 13229 - ], - "mapped", - [ - 114, - 97, - 100 - ] - ], - [ - [ - 13230, - 13230 - ], - "mapped", - [ - 114, - 97, - 100, - 8725, - 115 - ] - ], - [ - [ - 13231, - 13231 - ], - "mapped", - [ - 114, - 97, - 100, - 8725, - 115, - 50 - ] - ], - [ - [ - 13232, - 13232 - ], - "mapped", - [ - 112, - 115 - ] - ], - [ - [ - 13233, - 13233 - ], - "mapped", - [ - 110, - 115 - ] - ], - [ - [ - 13234, - 13234 - ], - "mapped", - [ - 956, - 115 - ] - ], - [ - [ - 13235, - 13235 - ], - "mapped", - [ - 109, - 115 - ] - ], - [ - [ - 13236, - 13236 - ], - "mapped", - [ - 112, - 118 - ] - ], - [ - [ - 13237, - 13237 - ], - "mapped", - [ - 110, - 118 - ] - ], - [ - [ - 13238, - 13238 - ], - "mapped", - [ - 956, - 118 - ] - ], - [ - [ - 13239, - 13239 - ], - "mapped", - [ - 109, - 118 - ] - ], - [ - [ - 13240, - 13240 - ], - "mapped", - [ - 107, - 118 - ] - ], - [ - [ - 13241, - 13241 - ], - "mapped", - [ - 109, - 118 - ] - ], - [ - [ - 13242, - 13242 - ], - "mapped", - [ - 112, - 119 - ] - ], - [ - [ - 13243, - 13243 - ], - "mapped", - [ - 110, - 119 - ] - ], - [ - [ - 13244, - 13244 - ], - "mapped", - [ - 956, - 119 - ] - ], - [ - [ - 13245, - 13245 - ], - "mapped", - [ - 109, - 119 - ] - ], - [ - [ - 13246, - 13246 - ], - "mapped", - [ - 107, - 119 - ] - ], - [ - [ - 13247, - 13247 - ], - "mapped", - [ - 109, - 119 - ] - ], - [ - [ - 13248, - 13248 - ], - "mapped", - [ - 107, - 969 - ] - ], - [ - [ - 13249, - 13249 - ], - "mapped", - [ - 109, - 969 - ] - ], - [ - [ - 13250, - 13250 - ], - "disallowed" - ], - [ - [ - 13251, - 13251 - ], - "mapped", - [ - 98, - 113 - ] - ], - [ - [ - 13252, - 13252 - ], - "mapped", - [ - 99, - 99 - ] - ], - [ - [ - 13253, - 13253 - ], - "mapped", - [ - 99, - 100 - ] - ], - [ - [ - 13254, - 13254 - ], - "mapped", - [ - 99, - 8725, - 107, - 103 - ] - ], - [ - [ - 13255, - 13255 - ], - "disallowed" - ], - [ - [ - 13256, - 13256 - ], - "mapped", - [ - 100, - 98 - ] - ], - [ - [ - 13257, - 13257 - ], - "mapped", - [ - 103, - 121 - ] - ], - [ - [ - 13258, - 13258 - ], - "mapped", - [ - 104, - 97 - ] - ], - [ - [ - 13259, - 13259 - ], - "mapped", - [ - 104, - 112 - ] - ], - [ - [ - 13260, - 13260 - ], - "mapped", - [ - 105, - 110 - ] - ], - [ - [ - 13261, - 13261 - ], - "mapped", - [ - 107, - 107 - ] - ], - [ - [ - 13262, - 13262 - ], - "mapped", - [ - 107, - 109 - ] - ], - [ - [ - 13263, - 13263 - ], - "mapped", - [ - 107, - 116 - ] - ], - [ - [ - 13264, - 13264 - ], - "mapped", - [ - 108, - 109 - ] - ], - [ - [ - 13265, - 13265 - ], - "mapped", - [ - 108, - 110 - ] - ], - [ - [ - 13266, - 13266 - ], - "mapped", - [ - 108, - 111, - 103 - ] - ], - [ - [ - 13267, - 13267 - ], - "mapped", - [ - 108, - 120 - ] - ], - [ - [ - 13268, - 13268 - ], - "mapped", - [ - 109, - 98 - ] - ], - [ - [ - 13269, - 13269 - ], - "mapped", - [ - 109, - 105, - 108 - ] - ], - [ - [ - 13270, - 13270 - ], - "mapped", - [ - 109, - 111, - 108 - ] - ], - [ - [ - 13271, - 13271 - ], - "mapped", - [ - 112, - 104 - ] - ], - [ - [ - 13272, - 13272 - ], - "disallowed" - ], - [ - [ - 13273, - 13273 - ], - "mapped", - [ - 112, - 112, - 109 - ] - ], - [ - [ - 13274, - 13274 - ], - "mapped", - [ - 112, - 114 - ] - ], - [ - [ - 13275, - 13275 - ], - "mapped", - [ - 115, - 114 - ] - ], - [ - [ - 13276, - 13276 - ], - "mapped", - [ - 115, - 118 - ] - ], - [ - [ - 13277, - 13277 - ], - "mapped", - [ - 119, - 98 - ] - ], - [ - [ - 13278, - 13278 - ], - "mapped", - [ - 118, - 8725, - 109 - ] - ], - [ - [ - 13279, - 13279 - ], - "mapped", - [ - 97, - 8725, - 109 - ] - ], - [ - [ - 13280, - 13280 - ], - "mapped", - [ - 49, - 26085 - ] - ], - [ - [ - 13281, - 13281 - ], - "mapped", - [ - 50, - 26085 - ] - ], - [ - [ - 13282, - 13282 - ], - "mapped", - [ - 51, - 26085 - ] - ], - [ - [ - 13283, - 13283 - ], - "mapped", - [ - 52, - 26085 - ] - ], - [ - [ - 13284, - 13284 - ], - "mapped", - [ - 53, - 26085 - ] - ], - [ - [ - 13285, - 13285 - ], - "mapped", - [ - 54, - 26085 - ] - ], - [ - [ - 13286, - 13286 - ], - "mapped", - [ - 55, - 26085 - ] - ], - [ - [ - 13287, - 13287 - ], - "mapped", - [ - 56, - 26085 - ] - ], - [ - [ - 13288, - 13288 - ], - "mapped", - [ - 57, - 26085 - ] - ], - [ - [ - 13289, - 13289 - ], - "mapped", - [ - 49, - 48, - 26085 - ] - ], - [ - [ - 13290, - 13290 - ], - "mapped", - [ - 49, - 49, - 26085 - ] - ], - [ - [ - 13291, - 13291 - ], - "mapped", - [ - 49, - 50, - 26085 - ] - ], - [ - [ - 13292, - 13292 - ], - "mapped", - [ - 49, - 51, - 26085 - ] - ], - [ - [ - 13293, - 13293 - ], - "mapped", - [ - 49, - 52, - 26085 - ] - ], - [ - [ - 13294, - 13294 - ], - "mapped", - [ - 49, - 53, - 26085 - ] - ], - [ - [ - 13295, - 13295 - ], - "mapped", - [ - 49, - 54, - 26085 - ] - ], - [ - [ - 13296, - 13296 - ], - "mapped", - [ - 49, - 55, - 26085 - ] - ], - [ - [ - 13297, - 13297 - ], - "mapped", - [ - 49, - 56, - 26085 - ] - ], - [ - [ - 13298, - 13298 - ], - "mapped", - [ - 49, - 57, - 26085 - ] - ], - [ - [ - 13299, - 13299 - ], - "mapped", - [ - 50, - 48, - 26085 - ] - ], - [ - [ - 13300, - 13300 - ], - "mapped", - [ - 50, - 49, - 26085 - ] - ], - [ - [ - 13301, - 13301 - ], - "mapped", - [ - 50, - 50, - 26085 - ] - ], - [ - [ - 13302, - 13302 - ], - "mapped", - [ - 50, - 51, - 26085 - ] - ], - [ - [ - 13303, - 13303 - ], - "mapped", - [ - 50, - 52, - 26085 - ] - ], - [ - [ - 13304, - 13304 - ], - "mapped", - [ - 50, - 53, - 26085 - ] - ], - [ - [ - 13305, - 13305 - ], - "mapped", - [ - 50, - 54, - 26085 - ] - ], - [ - [ - 13306, - 13306 - ], - "mapped", - [ - 50, - 55, - 26085 - ] - ], - [ - [ - 13307, - 13307 - ], - "mapped", - [ - 50, - 56, - 26085 - ] - ], - [ - [ - 13308, - 13308 - ], - "mapped", - [ - 50, - 57, - 26085 - ] - ], - [ - [ - 13309, - 13309 - ], - "mapped", - [ - 51, - 48, - 26085 - ] - ], - [ - [ - 13310, - 13310 - ], - "mapped", - [ - 51, - 49, - 26085 - ] - ], - [ - [ - 13311, - 13311 - ], - "mapped", - [ - 103, - 97, - 108 - ] - ], - [ - [ - 13312, - 19893 - ], - "valid" - ], - [ - [ - 19894, - 19903 - ], - "disallowed" - ], - [ - [ - 19904, - 19967 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 19968, - 40869 - ], - "valid" - ], - [ - [ - 40870, - 40891 - ], - "valid" - ], - [ - [ - 40892, - 40899 - ], - "valid" - ], - [ - [ - 40900, - 40907 - ], - "valid" - ], - [ - [ - 40908, - 40908 - ], - "valid" - ], - [ - [ - 40909, - 40917 - ], - "valid" - ], - [ - [ - 40918, - 40959 - ], - "disallowed" - ], - [ - [ - 40960, - 42124 - ], - "valid" - ], - [ - [ - 42125, - 42127 - ], - "disallowed" - ], - [ - [ - 42128, - 42145 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42146, - 42147 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42148, - 42163 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42164, - 42164 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42165, - 42176 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42177, - 42177 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42178, - 42180 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42181, - 42181 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42182, - 42182 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42183, - 42191 - ], - "disallowed" - ], - [ - [ - 42192, - 42237 - ], - "valid" - ], - [ - [ - 42238, - 42239 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42240, - 42508 - ], - "valid" - ], - [ - [ - 42509, - 42511 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42512, - 42539 - ], - "valid" - ], - [ - [ - 42540, - 42559 - ], - "disallowed" - ], - [ - [ - 42560, - 42560 - ], - "mapped", - [ - 42561 - ] - ], - [ - [ - 42561, - 42561 - ], - "valid" - ], - [ - [ - 42562, - 42562 - ], - "mapped", - [ - 42563 - ] - ], - [ - [ - 42563, - 42563 - ], - "valid" - ], - [ - [ - 42564, - 42564 - ], - "mapped", - [ - 42565 - ] - ], - [ - [ - 42565, - 42565 - ], - "valid" - ], - [ - [ - 42566, - 42566 - ], - "mapped", - [ - 42567 - ] - ], - [ - [ - 42567, - 42567 - ], - "valid" - ], - [ - [ - 42568, - 42568 - ], - "mapped", - [ - 42569 - ] - ], - [ - [ - 42569, - 42569 - ], - "valid" - ], - [ - [ - 42570, - 42570 - ], - "mapped", - [ - 42571 - ] - ], - [ - [ - 42571, - 42571 - ], - "valid" - ], - [ - [ - 42572, - 42572 - ], - "mapped", - [ - 42573 - ] - ], - [ - [ - 42573, - 42573 - ], - "valid" - ], - [ - [ - 42574, - 42574 - ], - "mapped", - [ - 42575 - ] - ], - [ - [ - 42575, - 42575 - ], - "valid" - ], - [ - [ - 42576, - 42576 - ], - "mapped", - [ - 42577 - ] - ], - [ - [ - 42577, - 42577 - ], - "valid" - ], - [ - [ - 42578, - 42578 - ], - "mapped", - [ - 42579 - ] - ], - [ - [ - 42579, - 42579 - ], - "valid" - ], - [ - [ - 42580, - 42580 - ], - "mapped", - [ - 42581 - ] - ], - [ - [ - 42581, - 42581 - ], - "valid" - ], - [ - [ - 42582, - 42582 - ], - "mapped", - [ - 42583 - ] - ], - [ - [ - 42583, - 42583 - ], - "valid" - ], - [ - [ - 42584, - 42584 - ], - "mapped", - [ - 42585 - ] - ], - [ - [ - 42585, - 42585 - ], - "valid" - ], - [ - [ - 42586, - 42586 - ], - "mapped", - [ - 42587 - ] - ], - [ - [ - 42587, - 42587 - ], - "valid" - ], - [ - [ - 42588, - 42588 - ], - "mapped", - [ - 42589 - ] - ], - [ - [ - 42589, - 42589 - ], - "valid" - ], - [ - [ - 42590, - 42590 - ], - "mapped", - [ - 42591 - ] - ], - [ - [ - 42591, - 42591 - ], - "valid" - ], - [ - [ - 42592, - 42592 - ], - "mapped", - [ - 42593 - ] - ], - [ - [ - 42593, - 42593 - ], - "valid" - ], - [ - [ - 42594, - 42594 - ], - "mapped", - [ - 42595 - ] - ], - [ - [ - 42595, - 42595 - ], - "valid" - ], - [ - [ - 42596, - 42596 - ], - "mapped", - [ - 42597 - ] - ], - [ - [ - 42597, - 42597 - ], - "valid" - ], - [ - [ - 42598, - 42598 - ], - "mapped", - [ - 42599 - ] - ], - [ - [ - 42599, - 42599 - ], - "valid" - ], - [ - [ - 42600, - 42600 - ], - "mapped", - [ - 42601 - ] - ], - [ - [ - 42601, - 42601 - ], - "valid" - ], - [ - [ - 42602, - 42602 - ], - "mapped", - [ - 42603 - ] - ], - [ - [ - 42603, - 42603 - ], - "valid" - ], - [ - [ - 42604, - 42604 - ], - "mapped", - [ - 42605 - ] - ], - [ - [ - 42605, - 42607 - ], - "valid" - ], - [ - [ - 42608, - 42611 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42612, - 42619 - ], - "valid" - ], - [ - [ - 42620, - 42621 - ], - "valid" - ], - [ - [ - 42622, - 42622 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42623, - 42623 - ], - "valid" - ], - [ - [ - 42624, - 42624 - ], - "mapped", - [ - 42625 - ] - ], - [ - [ - 42625, - 42625 - ], - "valid" - ], - [ - [ - 42626, - 42626 - ], - "mapped", - [ - 42627 - ] - ], - [ - [ - 42627, - 42627 - ], - "valid" - ], - [ - [ - 42628, - 42628 - ], - "mapped", - [ - 42629 - ] - ], - [ - [ - 42629, - 42629 - ], - "valid" - ], - [ - [ - 42630, - 42630 - ], - "mapped", - [ - 42631 - ] - ], - [ - [ - 42631, - 42631 - ], - "valid" - ], - [ - [ - 42632, - 42632 - ], - "mapped", - [ - 42633 - ] - ], - [ - [ - 42633, - 42633 - ], - "valid" - ], - [ - [ - 42634, - 42634 - ], - "mapped", - [ - 42635 - ] - ], - [ - [ - 42635, - 42635 - ], - "valid" - ], - [ - [ - 42636, - 42636 - ], - "mapped", - [ - 42637 - ] - ], - [ - [ - 42637, - 42637 - ], - "valid" - ], - [ - [ - 42638, - 42638 - ], - "mapped", - [ - 42639 - ] - ], - [ - [ - 42639, - 42639 - ], - "valid" - ], - [ - [ - 42640, - 42640 - ], - "mapped", - [ - 42641 - ] - ], - [ - [ - 42641, - 42641 - ], - "valid" - ], - [ - [ - 42642, - 42642 - ], - "mapped", - [ - 42643 - ] - ], - [ - [ - 42643, - 42643 - ], - "valid" - ], - [ - [ - 42644, - 42644 - ], - "mapped", - [ - 42645 - ] - ], - [ - [ - 42645, - 42645 - ], - "valid" - ], - [ - [ - 42646, - 42646 - ], - "mapped", - [ - 42647 - ] - ], - [ - [ - 42647, - 42647 - ], - "valid" - ], - [ - [ - 42648, - 42648 - ], - "mapped", - [ - 42649 - ] - ], - [ - [ - 42649, - 42649 - ], - "valid" - ], - [ - [ - 42650, - 42650 - ], - "mapped", - [ - 42651 - ] - ], - [ - [ - 42651, - 42651 - ], - "valid" - ], - [ - [ - 42652, - 42652 - ], - "mapped", - [ - 1098 - ] - ], - [ - [ - 42653, - 42653 - ], - "mapped", - [ - 1100 - ] - ], - [ - [ - 42654, - 42654 - ], - "valid" - ], - [ - [ - 42655, - 42655 - ], - "valid" - ], - [ - [ - 42656, - 42725 - ], - "valid" - ], - [ - [ - 42726, - 42735 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42736, - 42737 - ], - "valid" - ], - [ - [ - 42738, - 42743 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42744, - 42751 - ], - "disallowed" - ], - [ - [ - 42752, - 42774 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42775, - 42778 - ], - "valid" - ], - [ - [ - 42779, - 42783 - ], - "valid" - ], - [ - [ - 42784, - 42785 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42786, - 42786 - ], - "mapped", - [ - 42787 - ] - ], - [ - [ - 42787, - 42787 - ], - "valid" - ], - [ - [ - 42788, - 42788 - ], - "mapped", - [ - 42789 - ] - ], - [ - [ - 42789, - 42789 - ], - "valid" - ], - [ - [ - 42790, - 42790 - ], - "mapped", - [ - 42791 - ] - ], - [ - [ - 42791, - 42791 - ], - "valid" - ], - [ - [ - 42792, - 42792 - ], - "mapped", - [ - 42793 - ] - ], - [ - [ - 42793, - 42793 - ], - "valid" - ], - [ - [ - 42794, - 42794 - ], - "mapped", - [ - 42795 - ] - ], - [ - [ - 42795, - 42795 - ], - "valid" - ], - [ - [ - 42796, - 42796 - ], - "mapped", - [ - 42797 - ] - ], - [ - [ - 42797, - 42797 - ], - "valid" - ], - [ - [ - 42798, - 42798 - ], - "mapped", - [ - 42799 - ] - ], - [ - [ - 42799, - 42801 - ], - "valid" - ], - [ - [ - 42802, - 42802 - ], - "mapped", - [ - 42803 - ] - ], - [ - [ - 42803, - 42803 - ], - "valid" - ], - [ - [ - 42804, - 42804 - ], - "mapped", - [ - 42805 - ] - ], - [ - [ - 42805, - 42805 - ], - "valid" - ], - [ - [ - 42806, - 42806 - ], - "mapped", - [ - 42807 - ] - ], - [ - [ - 42807, - 42807 - ], - "valid" - ], - [ - [ - 42808, - 42808 - ], - "mapped", - [ - 42809 - ] - ], - [ - [ - 42809, - 42809 - ], - "valid" - ], - [ - [ - 42810, - 42810 - ], - "mapped", - [ - 42811 - ] - ], - [ - [ - 42811, - 42811 - ], - "valid" - ], - [ - [ - 42812, - 42812 - ], - "mapped", - [ - 42813 - ] - ], - [ - [ - 42813, - 42813 - ], - "valid" - ], - [ - [ - 42814, - 42814 - ], - "mapped", - [ - 42815 - ] - ], - [ - [ - 42815, - 42815 - ], - "valid" - ], - [ - [ - 42816, - 42816 - ], - "mapped", - [ - 42817 - ] - ], - [ - [ - 42817, - 42817 - ], - "valid" - ], - [ - [ - 42818, - 42818 - ], - "mapped", - [ - 42819 - ] - ], - [ - [ - 42819, - 42819 - ], - "valid" - ], - [ - [ - 42820, - 42820 - ], - "mapped", - [ - 42821 - ] - ], - [ - [ - 42821, - 42821 - ], - "valid" - ], - [ - [ - 42822, - 42822 - ], - "mapped", - [ - 42823 - ] - ], - [ - [ - 42823, - 42823 - ], - "valid" - ], - [ - [ - 42824, - 42824 - ], - "mapped", - [ - 42825 - ] - ], - [ - [ - 42825, - 42825 - ], - "valid" - ], - [ - [ - 42826, - 42826 - ], - "mapped", - [ - 42827 - ] - ], - [ - [ - 42827, - 42827 - ], - "valid" - ], - [ - [ - 42828, - 42828 - ], - "mapped", - [ - 42829 - ] - ], - [ - [ - 42829, - 42829 - ], - "valid" - ], - [ - [ - 42830, - 42830 - ], - "mapped", - [ - 42831 - ] - ], - [ - [ - 42831, - 42831 - ], - "valid" - ], - [ - [ - 42832, - 42832 - ], - "mapped", - [ - 42833 - ] - ], - [ - [ - 42833, - 42833 - ], - "valid" - ], - [ - [ - 42834, - 42834 - ], - "mapped", - [ - 42835 - ] - ], - [ - [ - 42835, - 42835 - ], - "valid" - ], - [ - [ - 42836, - 42836 - ], - "mapped", - [ - 42837 - ] - ], - [ - [ - 42837, - 42837 - ], - "valid" - ], - [ - [ - 42838, - 42838 - ], - "mapped", - [ - 42839 - ] - ], - [ - [ - 42839, - 42839 - ], - "valid" - ], - [ - [ - 42840, - 42840 - ], - "mapped", - [ - 42841 - ] - ], - [ - [ - 42841, - 42841 - ], - "valid" - ], - [ - [ - 42842, - 42842 - ], - "mapped", - [ - 42843 - ] - ], - [ - [ - 42843, - 42843 - ], - "valid" - ], - [ - [ - 42844, - 42844 - ], - "mapped", - [ - 42845 - ] - ], - [ - [ - 42845, - 42845 - ], - "valid" - ], - [ - [ - 42846, - 42846 - ], - "mapped", - [ - 42847 - ] - ], - [ - [ - 42847, - 42847 - ], - "valid" - ], - [ - [ - 42848, - 42848 - ], - "mapped", - [ - 42849 - ] - ], - [ - [ - 42849, - 42849 - ], - "valid" - ], - [ - [ - 42850, - 42850 - ], - "mapped", - [ - 42851 - ] - ], - [ - [ - 42851, - 42851 - ], - "valid" - ], - [ - [ - 42852, - 42852 - ], - "mapped", - [ - 42853 - ] - ], - [ - [ - 42853, - 42853 - ], - "valid" - ], - [ - [ - 42854, - 42854 - ], - "mapped", - [ - 42855 - ] - ], - [ - [ - 42855, - 42855 - ], - "valid" - ], - [ - [ - 42856, - 42856 - ], - "mapped", - [ - 42857 - ] - ], - [ - [ - 42857, - 42857 - ], - "valid" - ], - [ - [ - 42858, - 42858 - ], - "mapped", - [ - 42859 - ] - ], - [ - [ - 42859, - 42859 - ], - "valid" - ], - [ - [ - 42860, - 42860 - ], - "mapped", - [ - 42861 - ] - ], - [ - [ - 42861, - 42861 - ], - "valid" - ], - [ - [ - 42862, - 42862 - ], - "mapped", - [ - 42863 - ] - ], - [ - [ - 42863, - 42863 - ], - "valid" - ], - [ - [ - 42864, - 42864 - ], - "mapped", - [ - 42863 - ] - ], - [ - [ - 42865, - 42872 - ], - "valid" - ], - [ - [ - 42873, - 42873 - ], - "mapped", - [ - 42874 - ] - ], - [ - [ - 42874, - 42874 - ], - "valid" - ], - [ - [ - 42875, - 42875 - ], - "mapped", - [ - 42876 - ] - ], - [ - [ - 42876, - 42876 - ], - "valid" - ], - [ - [ - 42877, - 42877 - ], - "mapped", - [ - 7545 - ] - ], - [ - [ - 42878, - 42878 - ], - "mapped", - [ - 42879 - ] - ], - [ - [ - 42879, - 42879 - ], - "valid" - ], - [ - [ - 42880, - 42880 - ], - "mapped", - [ - 42881 - ] - ], - [ - [ - 42881, - 42881 - ], - "valid" - ], - [ - [ - 42882, - 42882 - ], - "mapped", - [ - 42883 - ] - ], - [ - [ - 42883, - 42883 - ], - "valid" - ], - [ - [ - 42884, - 42884 - ], - "mapped", - [ - 42885 - ] - ], - [ - [ - 42885, - 42885 - ], - "valid" - ], - [ - [ - 42886, - 42886 - ], - "mapped", - [ - 42887 - ] - ], - [ - [ - 42887, - 42888 - ], - "valid" - ], - [ - [ - 42889, - 42890 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 42891, - 42891 - ], - "mapped", - [ - 42892 - ] - ], - [ - [ - 42892, - 42892 - ], - "valid" - ], - [ - [ - 42893, - 42893 - ], - "mapped", - [ - 613 - ] - ], - [ - [ - 42894, - 42894 - ], - "valid" - ], - [ - [ - 42895, - 42895 - ], - "valid" - ], - [ - [ - 42896, - 42896 - ], - "mapped", - [ - 42897 - ] - ], - [ - [ - 42897, - 42897 - ], - "valid" - ], - [ - [ - 42898, - 42898 - ], - "mapped", - [ - 42899 - ] - ], - [ - [ - 42899, - 42899 - ], - "valid" - ], - [ - [ - 42900, - 42901 - ], - "valid" - ], - [ - [ - 42902, - 42902 - ], - "mapped", - [ - 42903 - ] - ], - [ - [ - 42903, - 42903 - ], - "valid" - ], - [ - [ - 42904, - 42904 - ], - "mapped", - [ - 42905 - ] - ], - [ - [ - 42905, - 42905 - ], - "valid" - ], - [ - [ - 42906, - 42906 - ], - "mapped", - [ - 42907 - ] - ], - [ - [ - 42907, - 42907 - ], - "valid" - ], - [ - [ - 42908, - 42908 - ], - "mapped", - [ - 42909 - ] - ], - [ - [ - 42909, - 42909 - ], - "valid" - ], - [ - [ - 42910, - 42910 - ], - "mapped", - [ - 42911 - ] - ], - [ - [ - 42911, - 42911 - ], - "valid" - ], - [ - [ - 42912, - 42912 - ], - "mapped", - [ - 42913 - ] - ], - [ - [ - 42913, - 42913 - ], - "valid" - ], - [ - [ - 42914, - 42914 - ], - "mapped", - [ - 42915 - ] - ], - [ - [ - 42915, - 42915 - ], - "valid" - ], - [ - [ - 42916, - 42916 - ], - "mapped", - [ - 42917 - ] - ], - [ - [ - 42917, - 42917 - ], - "valid" - ], - [ - [ - 42918, - 42918 - ], - "mapped", - [ - 42919 - ] - ], - [ - [ - 42919, - 42919 - ], - "valid" - ], - [ - [ - 42920, - 42920 - ], - "mapped", - [ - 42921 - ] - ], - [ - [ - 42921, - 42921 - ], - "valid" - ], - [ - [ - 42922, - 42922 - ], - "mapped", - [ - 614 - ] - ], - [ - [ - 42923, - 42923 - ], - "mapped", - [ - 604 - ] - ], - [ - [ - 42924, - 42924 - ], - "mapped", - [ - 609 - ] - ], - [ - [ - 42925, - 42925 - ], - "mapped", - [ - 620 - ] - ], - [ - [ - 42926, - 42927 - ], - "disallowed" - ], - [ - [ - 42928, - 42928 - ], - "mapped", - [ - 670 - ] - ], - [ - [ - 42929, - 42929 - ], - "mapped", - [ - 647 - ] - ], - [ - [ - 42930, - 42930 - ], - "mapped", - [ - 669 - ] - ], - [ - [ - 42931, - 42931 - ], - "mapped", - [ - 43859 - ] - ], - [ - [ - 42932, - 42932 - ], - "mapped", - [ - 42933 - ] - ], - [ - [ - 42933, - 42933 - ], - "valid" - ], - [ - [ - 42934, - 42934 - ], - "mapped", - [ - 42935 - ] - ], - [ - [ - 42935, - 42935 - ], - "valid" - ], - [ - [ - 42936, - 42998 - ], - "disallowed" - ], - [ - [ - 42999, - 42999 - ], - "valid" - ], - [ - [ - 43000, - 43000 - ], - "mapped", - [ - 295 - ] - ], - [ - [ - 43001, - 43001 - ], - "mapped", - [ - 339 - ] - ], - [ - [ - 43002, - 43002 - ], - "valid" - ], - [ - [ - 43003, - 43007 - ], - "valid" - ], - [ - [ - 43008, - 43047 - ], - "valid" - ], - [ - [ - 43048, - 43051 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43052, - 43055 - ], - "disallowed" - ], - [ - [ - 43056, - 43065 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43066, - 43071 - ], - "disallowed" - ], - [ - [ - 43072, - 43123 - ], - "valid" - ], - [ - [ - 43124, - 43127 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43128, - 43135 - ], - "disallowed" - ], - [ - [ - 43136, - 43204 - ], - "valid" - ], - [ - [ - 43205, - 43213 - ], - "disallowed" - ], - [ - [ - 43214, - 43215 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43216, - 43225 - ], - "valid" - ], - [ - [ - 43226, - 43231 - ], - "disallowed" - ], - [ - [ - 43232, - 43255 - ], - "valid" - ], - [ - [ - 43256, - 43258 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43259, - 43259 - ], - "valid" - ], - [ - [ - 43260, - 43260 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43261, - 43261 - ], - "valid" - ], - [ - [ - 43262, - 43263 - ], - "disallowed" - ], - [ - [ - 43264, - 43309 - ], - "valid" - ], - [ - [ - 43310, - 43311 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43312, - 43347 - ], - "valid" - ], - [ - [ - 43348, - 43358 - ], - "disallowed" - ], - [ - [ - 43359, - 43359 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43360, - 43388 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43389, - 43391 - ], - "disallowed" - ], - [ - [ - 43392, - 43456 - ], - "valid" - ], - [ - [ - 43457, - 43469 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43470, - 43470 - ], - "disallowed" - ], - [ - [ - 43471, - 43481 - ], - "valid" - ], - [ - [ - 43482, - 43485 - ], - "disallowed" - ], - [ - [ - 43486, - 43487 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43488, - 43518 - ], - "valid" - ], - [ - [ - 43519, - 43519 - ], - "disallowed" - ], - [ - [ - 43520, - 43574 - ], - "valid" - ], - [ - [ - 43575, - 43583 - ], - "disallowed" - ], - [ - [ - 43584, - 43597 - ], - "valid" - ], - [ - [ - 43598, - 43599 - ], - "disallowed" - ], - [ - [ - 43600, - 43609 - ], - "valid" - ], - [ - [ - 43610, - 43611 - ], - "disallowed" - ], - [ - [ - 43612, - 43615 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43616, - 43638 - ], - "valid" - ], - [ - [ - 43639, - 43641 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43642, - 43643 - ], - "valid" - ], - [ - [ - 43644, - 43647 - ], - "valid" - ], - [ - [ - 43648, - 43714 - ], - "valid" - ], - [ - [ - 43715, - 43738 - ], - "disallowed" - ], - [ - [ - 43739, - 43741 - ], - "valid" - ], - [ - [ - 43742, - 43743 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43744, - 43759 - ], - "valid" - ], - [ - [ - 43760, - 43761 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43762, - 43766 - ], - "valid" - ], - [ - [ - 43767, - 43776 - ], - "disallowed" - ], - [ - [ - 43777, - 43782 - ], - "valid" - ], - [ - [ - 43783, - 43784 - ], - "disallowed" - ], - [ - [ - 43785, - 43790 - ], - "valid" - ], - [ - [ - 43791, - 43792 - ], - "disallowed" - ], - [ - [ - 43793, - 43798 - ], - "valid" - ], - [ - [ - 43799, - 43807 - ], - "disallowed" - ], - [ - [ - 43808, - 43814 - ], - "valid" - ], - [ - [ - 43815, - 43815 - ], - "disallowed" - ], - [ - [ - 43816, - 43822 - ], - "valid" - ], - [ - [ - 43823, - 43823 - ], - "disallowed" - ], - [ - [ - 43824, - 43866 - ], - "valid" - ], - [ - [ - 43867, - 43867 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 43868, - 43868 - ], - "mapped", - [ - 42791 - ] - ], - [ - [ - 43869, - 43869 - ], - "mapped", - [ - 43831 - ] - ], - [ - [ - 43870, - 43870 - ], - "mapped", - [ - 619 - ] - ], - [ - [ - 43871, - 43871 - ], - "mapped", - [ - 43858 - ] - ], - [ - [ - 43872, - 43875 - ], - "valid" - ], - [ - [ - 43876, - 43877 - ], - "valid" - ], - [ - [ - 43878, - 43887 - ], - "disallowed" - ], - [ - [ - 43888, - 43888 - ], - "mapped", - [ - 5024 - ] - ], - [ - [ - 43889, - 43889 - ], - "mapped", - [ - 5025 - ] - ], - [ - [ - 43890, - 43890 - ], - "mapped", - [ - 5026 - ] - ], - [ - [ - 43891, - 43891 - ], - "mapped", - [ - 5027 - ] - ], - [ - [ - 43892, - 43892 - ], - "mapped", - [ - 5028 - ] - ], - [ - [ - 43893, - 43893 - ], - "mapped", - [ - 5029 - ] - ], - [ - [ - 43894, - 43894 - ], - "mapped", - [ - 5030 - ] - ], - [ - [ - 43895, - 43895 - ], - "mapped", - [ - 5031 - ] - ], - [ - [ - 43896, - 43896 - ], - "mapped", - [ - 5032 - ] - ], - [ - [ - 43897, - 43897 - ], - "mapped", - [ - 5033 - ] - ], - [ - [ - 43898, - 43898 - ], - "mapped", - [ - 5034 - ] - ], - [ - [ - 43899, - 43899 - ], - "mapped", - [ - 5035 - ] - ], - [ - [ - 43900, - 43900 - ], - "mapped", - [ - 5036 - ] - ], - [ - [ - 43901, - 43901 - ], - "mapped", - [ - 5037 - ] - ], - [ - [ - 43902, - 43902 - ], - "mapped", - [ - 5038 - ] - ], - [ - [ - 43903, - 43903 - ], - "mapped", - [ - 5039 - ] - ], - [ - [ - 43904, - 43904 - ], - "mapped", - [ - 5040 - ] - ], - [ - [ - 43905, - 43905 - ], - "mapped", - [ - 5041 - ] - ], - [ - [ - 43906, - 43906 - ], - "mapped", - [ - 5042 - ] - ], - [ - [ - 43907, - 43907 - ], - "mapped", - [ - 5043 - ] - ], - [ - [ - 43908, - 43908 - ], - "mapped", - [ - 5044 - ] - ], - [ - [ - 43909, - 43909 - ], - "mapped", - [ - 5045 - ] - ], - [ - [ - 43910, - 43910 - ], - "mapped", - [ - 5046 - ] - ], - [ - [ - 43911, - 43911 - ], - "mapped", - [ - 5047 - ] - ], - [ - [ - 43912, - 43912 - ], - "mapped", - [ - 5048 - ] - ], - [ - [ - 43913, - 43913 - ], - "mapped", - [ - 5049 - ] - ], - [ - [ - 43914, - 43914 - ], - "mapped", - [ - 5050 - ] - ], - [ - [ - 43915, - 43915 - ], - "mapped", - [ - 5051 - ] - ], - [ - [ - 43916, - 43916 - ], - "mapped", - [ - 5052 - ] - ], - [ - [ - 43917, - 43917 - ], - "mapped", - [ - 5053 - ] - ], - [ - [ - 43918, - 43918 - ], - "mapped", - [ - 5054 - ] - ], - [ - [ - 43919, - 43919 - ], - "mapped", - [ - 5055 - ] - ], - [ - [ - 43920, - 43920 - ], - "mapped", - [ - 5056 - ] - ], - [ - [ - 43921, - 43921 - ], - "mapped", - [ - 5057 - ] - ], - [ - [ - 43922, - 43922 - ], - "mapped", - [ - 5058 - ] - ], - [ - [ - 43923, - 43923 - ], - "mapped", - [ - 5059 - ] - ], - [ - [ - 43924, - 43924 - ], - "mapped", - [ - 5060 - ] - ], - [ - [ - 43925, - 43925 - ], - "mapped", - [ - 5061 - ] - ], - [ - [ - 43926, - 43926 - ], - "mapped", - [ - 5062 - ] - ], - [ - [ - 43927, - 43927 - ], - "mapped", - [ - 5063 - ] - ], - [ - [ - 43928, - 43928 - ], - "mapped", - [ - 5064 - ] - ], - [ - [ - 43929, - 43929 - ], - "mapped", - [ - 5065 - ] - ], - [ - [ - 43930, - 43930 - ], - "mapped", - [ - 5066 - ] - ], - [ - [ - 43931, - 43931 - ], - "mapped", - [ - 5067 - ] - ], - [ - [ - 43932, - 43932 - ], - "mapped", - [ - 5068 - ] - ], - [ - [ - 43933, - 43933 - ], - "mapped", - [ - 5069 - ] - ], - [ - [ - 43934, - 43934 - ], - "mapped", - [ - 5070 - ] - ], - [ - [ - 43935, - 43935 - ], - "mapped", - [ - 5071 - ] - ], - [ - [ - 43936, - 43936 - ], - "mapped", - [ - 5072 - ] - ], - [ - [ - 43937, - 43937 - ], - "mapped", - [ - 5073 - ] - ], - [ - [ - 43938, - 43938 - ], - "mapped", - [ - 5074 - ] - ], - [ - [ - 43939, - 43939 - ], - "mapped", - [ - 5075 - ] - ], - [ - [ - 43940, - 43940 - ], - "mapped", - [ - 5076 - ] - ], - [ - [ - 43941, - 43941 - ], - "mapped", - [ - 5077 - ] - ], - [ - [ - 43942, - 43942 - ], - "mapped", - [ - 5078 - ] - ], - [ - [ - 43943, - 43943 - ], - "mapped", - [ - 5079 - ] - ], - [ - [ - 43944, - 43944 - ], - "mapped", - [ - 5080 - ] - ], - [ - [ - 43945, - 43945 - ], - "mapped", - [ - 5081 - ] - ], - [ - [ - 43946, - 43946 - ], - "mapped", - [ - 5082 - ] - ], - [ - [ - 43947, - 43947 - ], - "mapped", - [ - 5083 - ] - ], - [ - [ - 43948, - 43948 - ], - "mapped", - [ - 5084 - ] - ], - [ - [ - 43949, - 43949 - ], - "mapped", - [ - 5085 - ] - ], - [ - [ - 43950, - 43950 - ], - "mapped", - [ - 5086 - ] - ], - [ - [ - 43951, - 43951 - ], - "mapped", - [ - 5087 - ] - ], - [ - [ - 43952, - 43952 - ], - "mapped", - [ - 5088 - ] - ], - [ - [ - 43953, - 43953 - ], - "mapped", - [ - 5089 - ] - ], - [ - [ - 43954, - 43954 - ], - "mapped", - [ - 5090 - ] - ], - [ - [ - 43955, - 43955 - ], - "mapped", - [ - 5091 - ] - ], - [ - [ - 43956, - 43956 - ], - "mapped", - [ - 5092 - ] - ], - [ - [ - 43957, - 43957 - ], - "mapped", - [ - 5093 - ] - ], - [ - [ - 43958, - 43958 - ], - "mapped", - [ - 5094 - ] - ], - [ - [ - 43959, - 43959 - ], - "mapped", - [ - 5095 - ] - ], - [ - [ - 43960, - 43960 - ], - "mapped", - [ - 5096 - ] - ], - [ - [ - 43961, - 43961 - ], - "mapped", - [ - 5097 - ] - ], - [ - [ - 43962, - 43962 - ], - "mapped", - [ - 5098 - ] - ], - [ - [ - 43963, - 43963 - ], - "mapped", - [ - 5099 - ] - ], - [ - [ - 43964, - 43964 - ], - "mapped", - [ - 5100 - ] - ], - [ - [ - 43965, - 43965 - ], - "mapped", - [ - 5101 - ] - ], - [ - [ - 43966, - 43966 - ], - "mapped", - [ - 5102 - ] - ], - [ - [ - 43967, - 43967 - ], - "mapped", - [ - 5103 - ] - ], - [ - [ - 43968, - 44010 - ], - "valid" - ], - [ - [ - 44011, - 44011 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 44012, - 44013 - ], - "valid" - ], - [ - [ - 44014, - 44015 - ], - "disallowed" - ], - [ - [ - 44016, - 44025 - ], - "valid" - ], - [ - [ - 44026, - 44031 - ], - "disallowed" - ], - [ - [ - 44032, - 55203 - ], - "valid" - ], - [ - [ - 55204, - 55215 - ], - "disallowed" - ], - [ - [ - 55216, - 55238 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 55239, - 55242 - ], - "disallowed" - ], - [ - [ - 55243, - 55291 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 55292, - 55295 - ], - "disallowed" - ], - [ - [ - 55296, - 57343 - ], - "disallowed" - ], - [ - [ - 57344, - 63743 - ], - "disallowed" - ], - [ - [ - 63744, - 63744 - ], - "mapped", - [ - 35912 - ] - ], - [ - [ - 63745, - 63745 - ], - "mapped", - [ - 26356 - ] - ], - [ - [ - 63746, - 63746 - ], - "mapped", - [ - 36554 - ] - ], - [ - [ - 63747, - 63747 - ], - "mapped", - [ - 36040 - ] - ], - [ - [ - 63748, - 63748 - ], - "mapped", - [ - 28369 - ] - ], - [ - [ - 63749, - 63749 - ], - "mapped", - [ - 20018 - ] - ], - [ - [ - 63750, - 63750 - ], - "mapped", - [ - 21477 - ] - ], - [ - [ - 63751, - 63752 - ], - "mapped", - [ - 40860 - ] - ], - [ - [ - 63753, - 63753 - ], - "mapped", - [ - 22865 - ] - ], - [ - [ - 63754, - 63754 - ], - "mapped", - [ - 37329 - ] - ], - [ - [ - 63755, - 63755 - ], - "mapped", - [ - 21895 - ] - ], - [ - [ - 63756, - 63756 - ], - "mapped", - [ - 22856 - ] - ], - [ - [ - 63757, - 63757 - ], - "mapped", - [ - 25078 - ] - ], - [ - [ - 63758, - 63758 - ], - "mapped", - [ - 30313 - ] - ], - [ - [ - 63759, - 63759 - ], - "mapped", - [ - 32645 - ] - ], - [ - [ - 63760, - 63760 - ], - "mapped", - [ - 34367 - ] - ], - [ - [ - 63761, - 63761 - ], - "mapped", - [ - 34746 - ] - ], - [ - [ - 63762, - 63762 - ], - "mapped", - [ - 35064 - ] - ], - [ - [ - 63763, - 63763 - ], - "mapped", - [ - 37007 - ] - ], - [ - [ - 63764, - 63764 - ], - "mapped", - [ - 27138 - ] - ], - [ - [ - 63765, - 63765 - ], - "mapped", - [ - 27931 - ] - ], - [ - [ - 63766, - 63766 - ], - "mapped", - [ - 28889 - ] - ], - [ - [ - 63767, - 63767 - ], - "mapped", - [ - 29662 - ] - ], - [ - [ - 63768, - 63768 - ], - "mapped", - [ - 33853 - ] - ], - [ - [ - 63769, - 63769 - ], - "mapped", - [ - 37226 - ] - ], - [ - [ - 63770, - 63770 - ], - "mapped", - [ - 39409 - ] - ], - [ - [ - 63771, - 63771 - ], - "mapped", - [ - 20098 - ] - ], - [ - [ - 63772, - 63772 - ], - "mapped", - [ - 21365 - ] - ], - [ - [ - 63773, - 63773 - ], - "mapped", - [ - 27396 - ] - ], - [ - [ - 63774, - 63774 - ], - "mapped", - [ - 29211 - ] - ], - [ - [ - 63775, - 63775 - ], - "mapped", - [ - 34349 - ] - ], - [ - [ - 63776, - 63776 - ], - "mapped", - [ - 40478 - ] - ], - [ - [ - 63777, - 63777 - ], - "mapped", - [ - 23888 - ] - ], - [ - [ - 63778, - 63778 - ], - "mapped", - [ - 28651 - ] - ], - [ - [ - 63779, - 63779 - ], - "mapped", - [ - 34253 - ] - ], - [ - [ - 63780, - 63780 - ], - "mapped", - [ - 35172 - ] - ], - [ - [ - 63781, - 63781 - ], - "mapped", - [ - 25289 - ] - ], - [ - [ - 63782, - 63782 - ], - "mapped", - [ - 33240 - ] - ], - [ - [ - 63783, - 63783 - ], - "mapped", - [ - 34847 - ] - ], - [ - [ - 63784, - 63784 - ], - "mapped", - [ - 24266 - ] - ], - [ - [ - 63785, - 63785 - ], - "mapped", - [ - 26391 - ] - ], - [ - [ - 63786, - 63786 - ], - "mapped", - [ - 28010 - ] - ], - [ - [ - 63787, - 63787 - ], - "mapped", - [ - 29436 - ] - ], - [ - [ - 63788, - 63788 - ], - "mapped", - [ - 37070 - ] - ], - [ - [ - 63789, - 63789 - ], - "mapped", - [ - 20358 - ] - ], - [ - [ - 63790, - 63790 - ], - "mapped", - [ - 20919 - ] - ], - [ - [ - 63791, - 63791 - ], - "mapped", - [ - 21214 - ] - ], - [ - [ - 63792, - 63792 - ], - "mapped", - [ - 25796 - ] - ], - [ - [ - 63793, - 63793 - ], - "mapped", - [ - 27347 - ] - ], - [ - [ - 63794, - 63794 - ], - "mapped", - [ - 29200 - ] - ], - [ - [ - 63795, - 63795 - ], - "mapped", - [ - 30439 - ] - ], - [ - [ - 63796, - 63796 - ], - "mapped", - [ - 32769 - ] - ], - [ - [ - 63797, - 63797 - ], - "mapped", - [ - 34310 - ] - ], - [ - [ - 63798, - 63798 - ], - "mapped", - [ - 34396 - ] - ], - [ - [ - 63799, - 63799 - ], - "mapped", - [ - 36335 - ] - ], - [ - [ - 63800, - 63800 - ], - "mapped", - [ - 38706 - ] - ], - [ - [ - 63801, - 63801 - ], - "mapped", - [ - 39791 - ] - ], - [ - [ - 63802, - 63802 - ], - "mapped", - [ - 40442 - ] - ], - [ - [ - 63803, - 63803 - ], - "mapped", - [ - 30860 - ] - ], - [ - [ - 63804, - 63804 - ], - "mapped", - [ - 31103 - ] - ], - [ - [ - 63805, - 63805 - ], - "mapped", - [ - 32160 - ] - ], - [ - [ - 63806, - 63806 - ], - "mapped", - [ - 33737 - ] - ], - [ - [ - 63807, - 63807 - ], - "mapped", - [ - 37636 - ] - ], - [ - [ - 63808, - 63808 - ], - "mapped", - [ - 40575 - ] - ], - [ - [ - 63809, - 63809 - ], - "mapped", - [ - 35542 - ] - ], - [ - [ - 63810, - 63810 - ], - "mapped", - [ - 22751 - ] - ], - [ - [ - 63811, - 63811 - ], - "mapped", - [ - 24324 - ] - ], - [ - [ - 63812, - 63812 - ], - "mapped", - [ - 31840 - ] - ], - [ - [ - 63813, - 63813 - ], - "mapped", - [ - 32894 - ] - ], - [ - [ - 63814, - 63814 - ], - "mapped", - [ - 29282 - ] - ], - [ - [ - 63815, - 63815 - ], - "mapped", - [ - 30922 - ] - ], - [ - [ - 63816, - 63816 - ], - "mapped", - [ - 36034 - ] - ], - [ - [ - 63817, - 63817 - ], - "mapped", - [ - 38647 - ] - ], - [ - [ - 63818, - 63818 - ], - "mapped", - [ - 22744 - ] - ], - [ - [ - 63819, - 63819 - ], - "mapped", - [ - 23650 - ] - ], - [ - [ - 63820, - 63820 - ], - "mapped", - [ - 27155 - ] - ], - [ - [ - 63821, - 63821 - ], - "mapped", - [ - 28122 - ] - ], - [ - [ - 63822, - 63822 - ], - "mapped", - [ - 28431 - ] - ], - [ - [ - 63823, - 63823 - ], - "mapped", - [ - 32047 - ] - ], - [ - [ - 63824, - 63824 - ], - "mapped", - [ - 32311 - ] - ], - [ - [ - 63825, - 63825 - ], - "mapped", - [ - 38475 - ] - ], - [ - [ - 63826, - 63826 - ], - "mapped", - [ - 21202 - ] - ], - [ - [ - 63827, - 63827 - ], - "mapped", - [ - 32907 - ] - ], - [ - [ - 63828, - 63828 - ], - "mapped", - [ - 20956 - ] - ], - [ - [ - 63829, - 63829 - ], - "mapped", - [ - 20940 - ] - ], - [ - [ - 63830, - 63830 - ], - "mapped", - [ - 31260 - ] - ], - [ - [ - 63831, - 63831 - ], - "mapped", - [ - 32190 - ] - ], - [ - [ - 63832, - 63832 - ], - "mapped", - [ - 33777 - ] - ], - [ - [ - 63833, - 63833 - ], - "mapped", - [ - 38517 - ] - ], - [ - [ - 63834, - 63834 - ], - "mapped", - [ - 35712 - ] - ], - [ - [ - 63835, - 63835 - ], - "mapped", - [ - 25295 - ] - ], - [ - [ - 63836, - 63836 - ], - "mapped", - [ - 27138 - ] - ], - [ - [ - 63837, - 63837 - ], - "mapped", - [ - 35582 - ] - ], - [ - [ - 63838, - 63838 - ], - "mapped", - [ - 20025 - ] - ], - [ - [ - 63839, - 63839 - ], - "mapped", - [ - 23527 - ] - ], - [ - [ - 63840, - 63840 - ], - "mapped", - [ - 24594 - ] - ], - [ - [ - 63841, - 63841 - ], - "mapped", - [ - 29575 - ] - ], - [ - [ - 63842, - 63842 - ], - "mapped", - [ - 30064 - ] - ], - [ - [ - 63843, - 63843 - ], - "mapped", - [ - 21271 - ] - ], - [ - [ - 63844, - 63844 - ], - "mapped", - [ - 30971 - ] - ], - [ - [ - 63845, - 63845 - ], - "mapped", - [ - 20415 - ] - ], - [ - [ - 63846, - 63846 - ], - "mapped", - [ - 24489 - ] - ], - [ - [ - 63847, - 63847 - ], - "mapped", - [ - 19981 - ] - ], - [ - [ - 63848, - 63848 - ], - "mapped", - [ - 27852 - ] - ], - [ - [ - 63849, - 63849 - ], - "mapped", - [ - 25976 - ] - ], - [ - [ - 63850, - 63850 - ], - "mapped", - [ - 32034 - ] - ], - [ - [ - 63851, - 63851 - ], - "mapped", - [ - 21443 - ] - ], - [ - [ - 63852, - 63852 - ], - "mapped", - [ - 22622 - ] - ], - [ - [ - 63853, - 63853 - ], - "mapped", - [ - 30465 - ] - ], - [ - [ - 63854, - 63854 - ], - "mapped", - [ - 33865 - ] - ], - [ - [ - 63855, - 63855 - ], - "mapped", - [ - 35498 - ] - ], - [ - [ - 63856, - 63856 - ], - "mapped", - [ - 27578 - ] - ], - [ - [ - 63857, - 63857 - ], - "mapped", - [ - 36784 - ] - ], - [ - [ - 63858, - 63858 - ], - "mapped", - [ - 27784 - ] - ], - [ - [ - 63859, - 63859 - ], - "mapped", - [ - 25342 - ] - ], - [ - [ - 63860, - 63860 - ], - "mapped", - [ - 33509 - ] - ], - [ - [ - 63861, - 63861 - ], - "mapped", - [ - 25504 - ] - ], - [ - [ - 63862, - 63862 - ], - "mapped", - [ - 30053 - ] - ], - [ - [ - 63863, - 63863 - ], - "mapped", - [ - 20142 - ] - ], - [ - [ - 63864, - 63864 - ], - "mapped", - [ - 20841 - ] - ], - [ - [ - 63865, - 63865 - ], - "mapped", - [ - 20937 - ] - ], - [ - [ - 63866, - 63866 - ], - "mapped", - [ - 26753 - ] - ], - [ - [ - 63867, - 63867 - ], - "mapped", - [ - 31975 - ] - ], - [ - [ - 63868, - 63868 - ], - "mapped", - [ - 33391 - ] - ], - [ - [ - 63869, - 63869 - ], - "mapped", - [ - 35538 - ] - ], - [ - [ - 63870, - 63870 - ], - "mapped", - [ - 37327 - ] - ], - [ - [ - 63871, - 63871 - ], - "mapped", - [ - 21237 - ] - ], - [ - [ - 63872, - 63872 - ], - "mapped", - [ - 21570 - ] - ], - [ - [ - 63873, - 63873 - ], - "mapped", - [ - 22899 - ] - ], - [ - [ - 63874, - 63874 - ], - "mapped", - [ - 24300 - ] - ], - [ - [ - 63875, - 63875 - ], - "mapped", - [ - 26053 - ] - ], - [ - [ - 63876, - 63876 - ], - "mapped", - [ - 28670 - ] - ], - [ - [ - 63877, - 63877 - ], - "mapped", - [ - 31018 - ] - ], - [ - [ - 63878, - 63878 - ], - "mapped", - [ - 38317 - ] - ], - [ - [ - 63879, - 63879 - ], - "mapped", - [ - 39530 - ] - ], - [ - [ - 63880, - 63880 - ], - "mapped", - [ - 40599 - ] - ], - [ - [ - 63881, - 63881 - ], - "mapped", - [ - 40654 - ] - ], - [ - [ - 63882, - 63882 - ], - "mapped", - [ - 21147 - ] - ], - [ - [ - 63883, - 63883 - ], - "mapped", - [ - 26310 - ] - ], - [ - [ - 63884, - 63884 - ], - "mapped", - [ - 27511 - ] - ], - [ - [ - 63885, - 63885 - ], - "mapped", - [ - 36706 - ] - ], - [ - [ - 63886, - 63886 - ], - "mapped", - [ - 24180 - ] - ], - [ - [ - 63887, - 63887 - ], - "mapped", - [ - 24976 - ] - ], - [ - [ - 63888, - 63888 - ], - "mapped", - [ - 25088 - ] - ], - [ - [ - 63889, - 63889 - ], - "mapped", - [ - 25754 - ] - ], - [ - [ - 63890, - 63890 - ], - "mapped", - [ - 28451 - ] - ], - [ - [ - 63891, - 63891 - ], - "mapped", - [ - 29001 - ] - ], - [ - [ - 63892, - 63892 - ], - "mapped", - [ - 29833 - ] - ], - [ - [ - 63893, - 63893 - ], - "mapped", - [ - 31178 - ] - ], - [ - [ - 63894, - 63894 - ], - "mapped", - [ - 32244 - ] - ], - [ - [ - 63895, - 63895 - ], - "mapped", - [ - 32879 - ] - ], - [ - [ - 63896, - 63896 - ], - "mapped", - [ - 36646 - ] - ], - [ - [ - 63897, - 63897 - ], - "mapped", - [ - 34030 - ] - ], - [ - [ - 63898, - 63898 - ], - "mapped", - [ - 36899 - ] - ], - [ - [ - 63899, - 63899 - ], - "mapped", - [ - 37706 - ] - ], - [ - [ - 63900, - 63900 - ], - "mapped", - [ - 21015 - ] - ], - [ - [ - 63901, - 63901 - ], - "mapped", - [ - 21155 - ] - ], - [ - [ - 63902, - 63902 - ], - "mapped", - [ - 21693 - ] - ], - [ - [ - 63903, - 63903 - ], - "mapped", - [ - 28872 - ] - ], - [ - [ - 63904, - 63904 - ], - "mapped", - [ - 35010 - ] - ], - [ - [ - 63905, - 63905 - ], - "mapped", - [ - 35498 - ] - ], - [ - [ - 63906, - 63906 - ], - "mapped", - [ - 24265 - ] - ], - [ - [ - 63907, - 63907 - ], - "mapped", - [ - 24565 - ] - ], - [ - [ - 63908, - 63908 - ], - "mapped", - [ - 25467 - ] - ], - [ - [ - 63909, - 63909 - ], - "mapped", - [ - 27566 - ] - ], - [ - [ - 63910, - 63910 - ], - "mapped", - [ - 31806 - ] - ], - [ - [ - 63911, - 63911 - ], - "mapped", - [ - 29557 - ] - ], - [ - [ - 63912, - 63912 - ], - "mapped", - [ - 20196 - ] - ], - [ - [ - 63913, - 63913 - ], - "mapped", - [ - 22265 - ] - ], - [ - [ - 63914, - 63914 - ], - "mapped", - [ - 23527 - ] - ], - [ - [ - 63915, - 63915 - ], - "mapped", - [ - 23994 - ] - ], - [ - [ - 63916, - 63916 - ], - "mapped", - [ - 24604 - ] - ], - [ - [ - 63917, - 63917 - ], - "mapped", - [ - 29618 - ] - ], - [ - [ - 63918, - 63918 - ], - "mapped", - [ - 29801 - ] - ], - [ - [ - 63919, - 63919 - ], - "mapped", - [ - 32666 - ] - ], - [ - [ - 63920, - 63920 - ], - "mapped", - [ - 32838 - ] - ], - [ - [ - 63921, - 63921 - ], - "mapped", - [ - 37428 - ] - ], - [ - [ - 63922, - 63922 - ], - "mapped", - [ - 38646 - ] - ], - [ - [ - 63923, - 63923 - ], - "mapped", - [ - 38728 - ] - ], - [ - [ - 63924, - 63924 - ], - "mapped", - [ - 38936 - ] - ], - [ - [ - 63925, - 63925 - ], - "mapped", - [ - 20363 - ] - ], - [ - [ - 63926, - 63926 - ], - "mapped", - [ - 31150 - ] - ], - [ - [ - 63927, - 63927 - ], - "mapped", - [ - 37300 - ] - ], - [ - [ - 63928, - 63928 - ], - "mapped", - [ - 38584 - ] - ], - [ - [ - 63929, - 63929 - ], - "mapped", - [ - 24801 - ] - ], - [ - [ - 63930, - 63930 - ], - "mapped", - [ - 20102 - ] - ], - [ - [ - 63931, - 63931 - ], - "mapped", - [ - 20698 - ] - ], - [ - [ - 63932, - 63932 - ], - "mapped", - [ - 23534 - ] - ], - [ - [ - 63933, - 63933 - ], - "mapped", - [ - 23615 - ] - ], - [ - [ - 63934, - 63934 - ], - "mapped", - [ - 26009 - ] - ], - [ - [ - 63935, - 63935 - ], - "mapped", - [ - 27138 - ] - ], - [ - [ - 63936, - 63936 - ], - "mapped", - [ - 29134 - ] - ], - [ - [ - 63937, - 63937 - ], - "mapped", - [ - 30274 - ] - ], - [ - [ - 63938, - 63938 - ], - "mapped", - [ - 34044 - ] - ], - [ - [ - 63939, - 63939 - ], - "mapped", - [ - 36988 - ] - ], - [ - [ - 63940, - 63940 - ], - "mapped", - [ - 40845 - ] - ], - [ - [ - 63941, - 63941 - ], - "mapped", - [ - 26248 - ] - ], - [ - [ - 63942, - 63942 - ], - "mapped", - [ - 38446 - ] - ], - [ - [ - 63943, - 63943 - ], - "mapped", - [ - 21129 - ] - ], - [ - [ - 63944, - 63944 - ], - "mapped", - [ - 26491 - ] - ], - [ - [ - 63945, - 63945 - ], - "mapped", - [ - 26611 - ] - ], - [ - [ - 63946, - 63946 - ], - "mapped", - [ - 27969 - ] - ], - [ - [ - 63947, - 63947 - ], - "mapped", - [ - 28316 - ] - ], - [ - [ - 63948, - 63948 - ], - "mapped", - [ - 29705 - ] - ], - [ - [ - 63949, - 63949 - ], - "mapped", - [ - 30041 - ] - ], - [ - [ - 63950, - 63950 - ], - "mapped", - [ - 30827 - ] - ], - [ - [ - 63951, - 63951 - ], - "mapped", - [ - 32016 - ] - ], - [ - [ - 63952, - 63952 - ], - "mapped", - [ - 39006 - ] - ], - [ - [ - 63953, - 63953 - ], - "mapped", - [ - 20845 - ] - ], - [ - [ - 63954, - 63954 - ], - "mapped", - [ - 25134 - ] - ], - [ - [ - 63955, - 63955 - ], - "mapped", - [ - 38520 - ] - ], - [ - [ - 63956, - 63956 - ], - "mapped", - [ - 20523 - ] - ], - [ - [ - 63957, - 63957 - ], - "mapped", - [ - 23833 - ] - ], - [ - [ - 63958, - 63958 - ], - "mapped", - [ - 28138 - ] - ], - [ - [ - 63959, - 63959 - ], - "mapped", - [ - 36650 - ] - ], - [ - [ - 63960, - 63960 - ], - "mapped", - [ - 24459 - ] - ], - [ - [ - 63961, - 63961 - ], - "mapped", - [ - 24900 - ] - ], - [ - [ - 63962, - 63962 - ], - "mapped", - [ - 26647 - ] - ], - [ - [ - 63963, - 63963 - ], - "mapped", - [ - 29575 - ] - ], - [ - [ - 63964, - 63964 - ], - "mapped", - [ - 38534 - ] - ], - [ - [ - 63965, - 63965 - ], - "mapped", - [ - 21033 - ] - ], - [ - [ - 63966, - 63966 - ], - "mapped", - [ - 21519 - ] - ], - [ - [ - 63967, - 63967 - ], - "mapped", - [ - 23653 - ] - ], - [ - [ - 63968, - 63968 - ], - "mapped", - [ - 26131 - ] - ], - [ - [ - 63969, - 63969 - ], - "mapped", - [ - 26446 - ] - ], - [ - [ - 63970, - 63970 - ], - "mapped", - [ - 26792 - ] - ], - [ - [ - 63971, - 63971 - ], - "mapped", - [ - 27877 - ] - ], - [ - [ - 63972, - 63972 - ], - "mapped", - [ - 29702 - ] - ], - [ - [ - 63973, - 63973 - ], - "mapped", - [ - 30178 - ] - ], - [ - [ - 63974, - 63974 - ], - "mapped", - [ - 32633 - ] - ], - [ - [ - 63975, - 63975 - ], - "mapped", - [ - 35023 - ] - ], - [ - [ - 63976, - 63976 - ], - "mapped", - [ - 35041 - ] - ], - [ - [ - 63977, - 63977 - ], - "mapped", - [ - 37324 - ] - ], - [ - [ - 63978, - 63978 - ], - "mapped", - [ - 38626 - ] - ], - [ - [ - 63979, - 63979 - ], - "mapped", - [ - 21311 - ] - ], - [ - [ - 63980, - 63980 - ], - "mapped", - [ - 28346 - ] - ], - [ - [ - 63981, - 63981 - ], - "mapped", - [ - 21533 - ] - ], - [ - [ - 63982, - 63982 - ], - "mapped", - [ - 29136 - ] - ], - [ - [ - 63983, - 63983 - ], - "mapped", - [ - 29848 - ] - ], - [ - [ - 63984, - 63984 - ], - "mapped", - [ - 34298 - ] - ], - [ - [ - 63985, - 63985 - ], - "mapped", - [ - 38563 - ] - ], - [ - [ - 63986, - 63986 - ], - "mapped", - [ - 40023 - ] - ], - [ - [ - 63987, - 63987 - ], - "mapped", - [ - 40607 - ] - ], - [ - [ - 63988, - 63988 - ], - "mapped", - [ - 26519 - ] - ], - [ - [ - 63989, - 63989 - ], - "mapped", - [ - 28107 - ] - ], - [ - [ - 63990, - 63990 - ], - "mapped", - [ - 33256 - ] - ], - [ - [ - 63991, - 63991 - ], - "mapped", - [ - 31435 - ] - ], - [ - [ - 63992, - 63992 - ], - "mapped", - [ - 31520 - ] - ], - [ - [ - 63993, - 63993 - ], - "mapped", - [ - 31890 - ] - ], - [ - [ - 63994, - 63994 - ], - "mapped", - [ - 29376 - ] - ], - [ - [ - 63995, - 63995 - ], - "mapped", - [ - 28825 - ] - ], - [ - [ - 63996, - 63996 - ], - "mapped", - [ - 35672 - ] - ], - [ - [ - 63997, - 63997 - ], - "mapped", - [ - 20160 - ] - ], - [ - [ - 63998, - 63998 - ], - "mapped", - [ - 33590 - ] - ], - [ - [ - 63999, - 63999 - ], - "mapped", - [ - 21050 - ] - ], - [ - [ - 64000, - 64000 - ], - "mapped", - [ - 20999 - ] - ], - [ - [ - 64001, - 64001 - ], - "mapped", - [ - 24230 - ] - ], - [ - [ - 64002, - 64002 - ], - "mapped", - [ - 25299 - ] - ], - [ - [ - 64003, - 64003 - ], - "mapped", - [ - 31958 - ] - ], - [ - [ - 64004, - 64004 - ], - "mapped", - [ - 23429 - ] - ], - [ - [ - 64005, - 64005 - ], - "mapped", - [ - 27934 - ] - ], - [ - [ - 64006, - 64006 - ], - "mapped", - [ - 26292 - ] - ], - [ - [ - 64007, - 64007 - ], - "mapped", - [ - 36667 - ] - ], - [ - [ - 64008, - 64008 - ], - "mapped", - [ - 34892 - ] - ], - [ - [ - 64009, - 64009 - ], - "mapped", - [ - 38477 - ] - ], - [ - [ - 64010, - 64010 - ], - "mapped", - [ - 35211 - ] - ], - [ - [ - 64011, - 64011 - ], - "mapped", - [ - 24275 - ] - ], - [ - [ - 64012, - 64012 - ], - "mapped", - [ - 20800 - ] - ], - [ - [ - 64013, - 64013 - ], - "mapped", - [ - 21952 - ] - ], - [ - [ - 64014, - 64015 - ], - "valid" - ], - [ - [ - 64016, - 64016 - ], - "mapped", - [ - 22618 - ] - ], - [ - [ - 64017, - 64017 - ], - "valid" - ], - [ - [ - 64018, - 64018 - ], - "mapped", - [ - 26228 - ] - ], - [ - [ - 64019, - 64020 - ], - "valid" - ], - [ - [ - 64021, - 64021 - ], - "mapped", - [ - 20958 - ] - ], - [ - [ - 64022, - 64022 - ], - "mapped", - [ - 29482 - ] - ], - [ - [ - 64023, - 64023 - ], - "mapped", - [ - 30410 - ] - ], - [ - [ - 64024, - 64024 - ], - "mapped", - [ - 31036 - ] - ], - [ - [ - 64025, - 64025 - ], - "mapped", - [ - 31070 - ] - ], - [ - [ - 64026, - 64026 - ], - "mapped", - [ - 31077 - ] - ], - [ - [ - 64027, - 64027 - ], - "mapped", - [ - 31119 - ] - ], - [ - [ - 64028, - 64028 - ], - "mapped", - [ - 38742 - ] - ], - [ - [ - 64029, - 64029 - ], - "mapped", - [ - 31934 - ] - ], - [ - [ - 64030, - 64030 - ], - "mapped", - [ - 32701 - ] - ], - [ - [ - 64031, - 64031 - ], - "valid" - ], - [ - [ - 64032, - 64032 - ], - "mapped", - [ - 34322 - ] - ], - [ - [ - 64033, - 64033 - ], - "valid" - ], - [ - [ - 64034, - 64034 - ], - "mapped", - [ - 35576 - ] - ], - [ - [ - 64035, - 64036 - ], - "valid" - ], - [ - [ - 64037, - 64037 - ], - "mapped", - [ - 36920 - ] - ], - [ - [ - 64038, - 64038 - ], - "mapped", - [ - 37117 - ] - ], - [ - [ - 64039, - 64041 - ], - "valid" - ], - [ - [ - 64042, - 64042 - ], - "mapped", - [ - 39151 - ] - ], - [ - [ - 64043, - 64043 - ], - "mapped", - [ - 39164 - ] - ], - [ - [ - 64044, - 64044 - ], - "mapped", - [ - 39208 - ] - ], - [ - [ - 64045, - 64045 - ], - "mapped", - [ - 40372 - ] - ], - [ - [ - 64046, - 64046 - ], - "mapped", - [ - 37086 - ] - ], - [ - [ - 64047, - 64047 - ], - "mapped", - [ - 38583 - ] - ], - [ - [ - 64048, - 64048 - ], - "mapped", - [ - 20398 - ] - ], - [ - [ - 64049, - 64049 - ], - "mapped", - [ - 20711 - ] - ], - [ - [ - 64050, - 64050 - ], - "mapped", - [ - 20813 - ] - ], - [ - [ - 64051, - 64051 - ], - "mapped", - [ - 21193 - ] - ], - [ - [ - 64052, - 64052 - ], - "mapped", - [ - 21220 - ] - ], - [ - [ - 64053, - 64053 - ], - "mapped", - [ - 21329 - ] - ], - [ - [ - 64054, - 64054 - ], - "mapped", - [ - 21917 - ] - ], - [ - [ - 64055, - 64055 - ], - "mapped", - [ - 22022 - ] - ], - [ - [ - 64056, - 64056 - ], - "mapped", - [ - 22120 - ] - ], - [ - [ - 64057, - 64057 - ], - "mapped", - [ - 22592 - ] - ], - [ - [ - 64058, - 64058 - ], - "mapped", - [ - 22696 - ] - ], - [ - [ - 64059, - 64059 - ], - "mapped", - [ - 23652 - ] - ], - [ - [ - 64060, - 64060 - ], - "mapped", - [ - 23662 - ] - ], - [ - [ - 64061, - 64061 - ], - "mapped", - [ - 24724 - ] - ], - [ - [ - 64062, - 64062 - ], - "mapped", - [ - 24936 - ] - ], - [ - [ - 64063, - 64063 - ], - "mapped", - [ - 24974 - ] - ], - [ - [ - 64064, - 64064 - ], - "mapped", - [ - 25074 - ] - ], - [ - [ - 64065, - 64065 - ], - "mapped", - [ - 25935 - ] - ], - [ - [ - 64066, - 64066 - ], - "mapped", - [ - 26082 - ] - ], - [ - [ - 64067, - 64067 - ], - "mapped", - [ - 26257 - ] - ], - [ - [ - 64068, - 64068 - ], - "mapped", - [ - 26757 - ] - ], - [ - [ - 64069, - 64069 - ], - "mapped", - [ - 28023 - ] - ], - [ - [ - 64070, - 64070 - ], - "mapped", - [ - 28186 - ] - ], - [ - [ - 64071, - 64071 - ], - "mapped", - [ - 28450 - ] - ], - [ - [ - 64072, - 64072 - ], - "mapped", - [ - 29038 - ] - ], - [ - [ - 64073, - 64073 - ], - "mapped", - [ - 29227 - ] - ], - [ - [ - 64074, - 64074 - ], - "mapped", - [ - 29730 - ] - ], - [ - [ - 64075, - 64075 - ], - "mapped", - [ - 30865 - ] - ], - [ - [ - 64076, - 64076 - ], - "mapped", - [ - 31038 - ] - ], - [ - [ - 64077, - 64077 - ], - "mapped", - [ - 31049 - ] - ], - [ - [ - 64078, - 64078 - ], - "mapped", - [ - 31048 - ] - ], - [ - [ - 64079, - 64079 - ], - "mapped", - [ - 31056 - ] - ], - [ - [ - 64080, - 64080 - ], - "mapped", - [ - 31062 - ] - ], - [ - [ - 64081, - 64081 - ], - "mapped", - [ - 31069 - ] - ], - [ - [ - 64082, - 64082 - ], - "mapped", - [ - 31117 - ] - ], - [ - [ - 64083, - 64083 - ], - "mapped", - [ - 31118 - ] - ], - [ - [ - 64084, - 64084 - ], - "mapped", - [ - 31296 - ] - ], - [ - [ - 64085, - 64085 - ], - "mapped", - [ - 31361 - ] - ], - [ - [ - 64086, - 64086 - ], - "mapped", - [ - 31680 - ] - ], - [ - [ - 64087, - 64087 - ], - "mapped", - [ - 32244 - ] - ], - [ - [ - 64088, - 64088 - ], - "mapped", - [ - 32265 - ] - ], - [ - [ - 64089, - 64089 - ], - "mapped", - [ - 32321 - ] - ], - [ - [ - 64090, - 64090 - ], - "mapped", - [ - 32626 - ] - ], - [ - [ - 64091, - 64091 - ], - "mapped", - [ - 32773 - ] - ], - [ - [ - 64092, - 64092 - ], - "mapped", - [ - 33261 - ] - ], - [ - [ - 64093, - 64094 - ], - "mapped", - [ - 33401 - ] - ], - [ - [ - 64095, - 64095 - ], - "mapped", - [ - 33879 - ] - ], - [ - [ - 64096, - 64096 - ], - "mapped", - [ - 35088 - ] - ], - [ - [ - 64097, - 64097 - ], - "mapped", - [ - 35222 - ] - ], - [ - [ - 64098, - 64098 - ], - "mapped", - [ - 35585 - ] - ], - [ - [ - 64099, - 64099 - ], - "mapped", - [ - 35641 - ] - ], - [ - [ - 64100, - 64100 - ], - "mapped", - [ - 36051 - ] - ], - [ - [ - 64101, - 64101 - ], - "mapped", - [ - 36104 - ] - ], - [ - [ - 64102, - 64102 - ], - "mapped", - [ - 36790 - ] - ], - [ - [ - 64103, - 64103 - ], - "mapped", - [ - 36920 - ] - ], - [ - [ - 64104, - 64104 - ], - "mapped", - [ - 38627 - ] - ], - [ - [ - 64105, - 64105 - ], - "mapped", - [ - 38911 - ] - ], - [ - [ - 64106, - 64106 - ], - "mapped", - [ - 38971 - ] - ], - [ - [ - 64107, - 64107 - ], - "mapped", - [ - 24693 - ] - ], - [ - [ - 64108, - 64108 - ], - "mapped", - [ - 148206 - ] - ], - [ - [ - 64109, - 64109 - ], - "mapped", - [ - 33304 - ] - ], - [ - [ - 64110, - 64111 - ], - "disallowed" - ], - [ - [ - 64112, - 64112 - ], - "mapped", - [ - 20006 - ] - ], - [ - [ - 64113, - 64113 - ], - "mapped", - [ - 20917 - ] - ], - [ - [ - 64114, - 64114 - ], - "mapped", - [ - 20840 - ] - ], - [ - [ - 64115, - 64115 - ], - "mapped", - [ - 20352 - ] - ], - [ - [ - 64116, - 64116 - ], - "mapped", - [ - 20805 - ] - ], - [ - [ - 64117, - 64117 - ], - "mapped", - [ - 20864 - ] - ], - [ - [ - 64118, - 64118 - ], - "mapped", - [ - 21191 - ] - ], - [ - [ - 64119, - 64119 - ], - "mapped", - [ - 21242 - ] - ], - [ - [ - 64120, - 64120 - ], - "mapped", - [ - 21917 - ] - ], - [ - [ - 64121, - 64121 - ], - "mapped", - [ - 21845 - ] - ], - [ - [ - 64122, - 64122 - ], - "mapped", - [ - 21913 - ] - ], - [ - [ - 64123, - 64123 - ], - "mapped", - [ - 21986 - ] - ], - [ - [ - 64124, - 64124 - ], - "mapped", - [ - 22618 - ] - ], - [ - [ - 64125, - 64125 - ], - "mapped", - [ - 22707 - ] - ], - [ - [ - 64126, - 64126 - ], - "mapped", - [ - 22852 - ] - ], - [ - [ - 64127, - 64127 - ], - "mapped", - [ - 22868 - ] - ], - [ - [ - 64128, - 64128 - ], - "mapped", - [ - 23138 - ] - ], - [ - [ - 64129, - 64129 - ], - "mapped", - [ - 23336 - ] - ], - [ - [ - 64130, - 64130 - ], - "mapped", - [ - 24274 - ] - ], - [ - [ - 64131, - 64131 - ], - "mapped", - [ - 24281 - ] - ], - [ - [ - 64132, - 64132 - ], - "mapped", - [ - 24425 - ] - ], - [ - [ - 64133, - 64133 - ], - "mapped", - [ - 24493 - ] - ], - [ - [ - 64134, - 64134 - ], - "mapped", - [ - 24792 - ] - ], - [ - [ - 64135, - 64135 - ], - "mapped", - [ - 24910 - ] - ], - [ - [ - 64136, - 64136 - ], - "mapped", - [ - 24840 - ] - ], - [ - [ - 64137, - 64137 - ], - "mapped", - [ - 24974 - ] - ], - [ - [ - 64138, - 64138 - ], - "mapped", - [ - 24928 - ] - ], - [ - [ - 64139, - 64139 - ], - "mapped", - [ - 25074 - ] - ], - [ - [ - 64140, - 64140 - ], - "mapped", - [ - 25140 - ] - ], - [ - [ - 64141, - 64141 - ], - "mapped", - [ - 25540 - ] - ], - [ - [ - 64142, - 64142 - ], - "mapped", - [ - 25628 - ] - ], - [ - [ - 64143, - 64143 - ], - "mapped", - [ - 25682 - ] - ], - [ - [ - 64144, - 64144 - ], - "mapped", - [ - 25942 - ] - ], - [ - [ - 64145, - 64145 - ], - "mapped", - [ - 26228 - ] - ], - [ - [ - 64146, - 64146 - ], - "mapped", - [ - 26391 - ] - ], - [ - [ - 64147, - 64147 - ], - "mapped", - [ - 26395 - ] - ], - [ - [ - 64148, - 64148 - ], - "mapped", - [ - 26454 - ] - ], - [ - [ - 64149, - 64149 - ], - "mapped", - [ - 27513 - ] - ], - [ - [ - 64150, - 64150 - ], - "mapped", - [ - 27578 - ] - ], - [ - [ - 64151, - 64151 - ], - "mapped", - [ - 27969 - ] - ], - [ - [ - 64152, - 64152 - ], - "mapped", - [ - 28379 - ] - ], - [ - [ - 64153, - 64153 - ], - "mapped", - [ - 28363 - ] - ], - [ - [ - 64154, - 64154 - ], - "mapped", - [ - 28450 - ] - ], - [ - [ - 64155, - 64155 - ], - "mapped", - [ - 28702 - ] - ], - [ - [ - 64156, - 64156 - ], - "mapped", - [ - 29038 - ] - ], - [ - [ - 64157, - 64157 - ], - "mapped", - [ - 30631 - ] - ], - [ - [ - 64158, - 64158 - ], - "mapped", - [ - 29237 - ] - ], - [ - [ - 64159, - 64159 - ], - "mapped", - [ - 29359 - ] - ], - [ - [ - 64160, - 64160 - ], - "mapped", - [ - 29482 - ] - ], - [ - [ - 64161, - 64161 - ], - "mapped", - [ - 29809 - ] - ], - [ - [ - 64162, - 64162 - ], - "mapped", - [ - 29958 - ] - ], - [ - [ - 64163, - 64163 - ], - "mapped", - [ - 30011 - ] - ], - [ - [ - 64164, - 64164 - ], - "mapped", - [ - 30237 - ] - ], - [ - [ - 64165, - 64165 - ], - "mapped", - [ - 30239 - ] - ], - [ - [ - 64166, - 64166 - ], - "mapped", - [ - 30410 - ] - ], - [ - [ - 64167, - 64167 - ], - "mapped", - [ - 30427 - ] - ], - [ - [ - 64168, - 64168 - ], - "mapped", - [ - 30452 - ] - ], - [ - [ - 64169, - 64169 - ], - "mapped", - [ - 30538 - ] - ], - [ - [ - 64170, - 64170 - ], - "mapped", - [ - 30528 - ] - ], - [ - [ - 64171, - 64171 - ], - "mapped", - [ - 30924 - ] - ], - [ - [ - 64172, - 64172 - ], - "mapped", - [ - 31409 - ] - ], - [ - [ - 64173, - 64173 - ], - "mapped", - [ - 31680 - ] - ], - [ - [ - 64174, - 64174 - ], - "mapped", - [ - 31867 - ] - ], - [ - [ - 64175, - 64175 - ], - "mapped", - [ - 32091 - ] - ], - [ - [ - 64176, - 64176 - ], - "mapped", - [ - 32244 - ] - ], - [ - [ - 64177, - 64177 - ], - "mapped", - [ - 32574 - ] - ], - [ - [ - 64178, - 64178 - ], - "mapped", - [ - 32773 - ] - ], - [ - [ - 64179, - 64179 - ], - "mapped", - [ - 33618 - ] - ], - [ - [ - 64180, - 64180 - ], - "mapped", - [ - 33775 - ] - ], - [ - [ - 64181, - 64181 - ], - "mapped", - [ - 34681 - ] - ], - [ - [ - 64182, - 64182 - ], - "mapped", - [ - 35137 - ] - ], - [ - [ - 64183, - 64183 - ], - "mapped", - [ - 35206 - ] - ], - [ - [ - 64184, - 64184 - ], - "mapped", - [ - 35222 - ] - ], - [ - [ - 64185, - 64185 - ], - "mapped", - [ - 35519 - ] - ], - [ - [ - 64186, - 64186 - ], - "mapped", - [ - 35576 - ] - ], - [ - [ - 64187, - 64187 - ], - "mapped", - [ - 35531 - ] - ], - [ - [ - 64188, - 64188 - ], - "mapped", - [ - 35585 - ] - ], - [ - [ - 64189, - 64189 - ], - "mapped", - [ - 35582 - ] - ], - [ - [ - 64190, - 64190 - ], - "mapped", - [ - 35565 - ] - ], - [ - [ - 64191, - 64191 - ], - "mapped", - [ - 35641 - ] - ], - [ - [ - 64192, - 64192 - ], - "mapped", - [ - 35722 - ] - ], - [ - [ - 64193, - 64193 - ], - "mapped", - [ - 36104 - ] - ], - [ - [ - 64194, - 64194 - ], - "mapped", - [ - 36664 - ] - ], - [ - [ - 64195, - 64195 - ], - "mapped", - [ - 36978 - ] - ], - [ - [ - 64196, - 64196 - ], - "mapped", - [ - 37273 - ] - ], - [ - [ - 64197, - 64197 - ], - "mapped", - [ - 37494 - ] - ], - [ - [ - 64198, - 64198 - ], - "mapped", - [ - 38524 - ] - ], - [ - [ - 64199, - 64199 - ], - "mapped", - [ - 38627 - ] - ], - [ - [ - 64200, - 64200 - ], - "mapped", - [ - 38742 - ] - ], - [ - [ - 64201, - 64201 - ], - "mapped", - [ - 38875 - ] - ], - [ - [ - 64202, - 64202 - ], - "mapped", - [ - 38911 - ] - ], - [ - [ - 64203, - 64203 - ], - "mapped", - [ - 38923 - ] - ], - [ - [ - 64204, - 64204 - ], - "mapped", - [ - 38971 - ] - ], - [ - [ - 64205, - 64205 - ], - "mapped", - [ - 39698 - ] - ], - [ - [ - 64206, - 64206 - ], - "mapped", - [ - 40860 - ] - ], - [ - [ - 64207, - 64207 - ], - "mapped", - [ - 141386 - ] - ], - [ - [ - 64208, - 64208 - ], - "mapped", - [ - 141380 - ] - ], - [ - [ - 64209, - 64209 - ], - "mapped", - [ - 144341 - ] - ], - [ - [ - 64210, - 64210 - ], - "mapped", - [ - 15261 - ] - ], - [ - [ - 64211, - 64211 - ], - "mapped", - [ - 16408 - ] - ], - [ - [ - 64212, - 64212 - ], - "mapped", - [ - 16441 - ] - ], - [ - [ - 64213, - 64213 - ], - "mapped", - [ - 152137 - ] - ], - [ - [ - 64214, - 64214 - ], - "mapped", - [ - 154832 - ] - ], - [ - [ - 64215, - 64215 - ], - "mapped", - [ - 163539 - ] - ], - [ - [ - 64216, - 64216 - ], - "mapped", - [ - 40771 - ] - ], - [ - [ - 64217, - 64217 - ], - "mapped", - [ - 40846 - ] - ], - [ - [ - 64218, - 64255 - ], - "disallowed" - ], - [ - [ - 64256, - 64256 - ], - "mapped", - [ - 102, - 102 - ] - ], - [ - [ - 64257, - 64257 - ], - "mapped", - [ - 102, - 105 - ] - ], - [ - [ - 64258, - 64258 - ], - "mapped", - [ - 102, - 108 - ] - ], - [ - [ - 64259, - 64259 - ], - "mapped", - [ - 102, - 102, - 105 - ] - ], - [ - [ - 64260, - 64260 - ], - "mapped", - [ - 102, - 102, - 108 - ] - ], - [ - [ - 64261, - 64262 - ], - "mapped", - [ - 115, - 116 - ] - ], - [ - [ - 64263, - 64274 - ], - "disallowed" - ], - [ - [ - 64275, - 64275 - ], - "mapped", - [ - 1396, - 1398 - ] - ], - [ - [ - 64276, - 64276 - ], - "mapped", - [ - 1396, - 1381 - ] - ], - [ - [ - 64277, - 64277 - ], - "mapped", - [ - 1396, - 1387 - ] - ], - [ - [ - 64278, - 64278 - ], - "mapped", - [ - 1406, - 1398 - ] - ], - [ - [ - 64279, - 64279 - ], - "mapped", - [ - 1396, - 1389 - ] - ], - [ - [ - 64280, - 64284 - ], - "disallowed" - ], - [ - [ - 64285, - 64285 - ], - "mapped", - [ - 1497, - 1460 - ] - ], - [ - [ - 64286, - 64286 - ], - "valid" - ], - [ - [ - 64287, - 64287 - ], - "mapped", - [ - 1522, - 1463 - ] - ], - [ - [ - 64288, - 64288 - ], - "mapped", - [ - 1506 - ] - ], - [ - [ - 64289, - 64289 - ], - "mapped", - [ - 1488 - ] - ], - [ - [ - 64290, - 64290 - ], - "mapped", - [ - 1491 - ] - ], - [ - [ - 64291, - 64291 - ], - "mapped", - [ - 1492 - ] - ], - [ - [ - 64292, - 64292 - ], - "mapped", - [ - 1499 - ] - ], - [ - [ - 64293, - 64293 - ], - "mapped", - [ - 1500 - ] - ], - [ - [ - 64294, - 64294 - ], - "mapped", - [ - 1501 - ] - ], - [ - [ - 64295, - 64295 - ], - "mapped", - [ - 1512 - ] - ], - [ - [ - 64296, - 64296 - ], - "mapped", - [ - 1514 - ] - ], - [ - [ - 64297, - 64297 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 64298, - 64298 - ], - "mapped", - [ - 1513, - 1473 - ] - ], - [ - [ - 64299, - 64299 - ], - "mapped", - [ - 1513, - 1474 - ] - ], - [ - [ - 64300, - 64300 - ], - "mapped", - [ - 1513, - 1468, - 1473 - ] - ], - [ - [ - 64301, - 64301 - ], - "mapped", - [ - 1513, - 1468, - 1474 - ] - ], - [ - [ - 64302, - 64302 - ], - "mapped", - [ - 1488, - 1463 - ] - ], - [ - [ - 64303, - 64303 - ], - "mapped", - [ - 1488, - 1464 - ] - ], - [ - [ - 64304, - 64304 - ], - "mapped", - [ - 1488, - 1468 - ] - ], - [ - [ - 64305, - 64305 - ], - "mapped", - [ - 1489, - 1468 - ] - ], - [ - [ - 64306, - 64306 - ], - "mapped", - [ - 1490, - 1468 - ] - ], - [ - [ - 64307, - 64307 - ], - "mapped", - [ - 1491, - 1468 - ] - ], - [ - [ - 64308, - 64308 - ], - "mapped", - [ - 1492, - 1468 - ] - ], - [ - [ - 64309, - 64309 - ], - "mapped", - [ - 1493, - 1468 - ] - ], - [ - [ - 64310, - 64310 - ], - "mapped", - [ - 1494, - 1468 - ] - ], - [ - [ - 64311, - 64311 - ], - "disallowed" - ], - [ - [ - 64312, - 64312 - ], - "mapped", - [ - 1496, - 1468 - ] - ], - [ - [ - 64313, - 64313 - ], - "mapped", - [ - 1497, - 1468 - ] - ], - [ - [ - 64314, - 64314 - ], - "mapped", - [ - 1498, - 1468 - ] - ], - [ - [ - 64315, - 64315 - ], - "mapped", - [ - 1499, - 1468 - ] - ], - [ - [ - 64316, - 64316 - ], - "mapped", - [ - 1500, - 1468 - ] - ], - [ - [ - 64317, - 64317 - ], - "disallowed" - ], - [ - [ - 64318, - 64318 - ], - "mapped", - [ - 1502, - 1468 - ] - ], - [ - [ - 64319, - 64319 - ], - "disallowed" - ], - [ - [ - 64320, - 64320 - ], - "mapped", - [ - 1504, - 1468 - ] - ], - [ - [ - 64321, - 64321 - ], - "mapped", - [ - 1505, - 1468 - ] - ], - [ - [ - 64322, - 64322 - ], - "disallowed" - ], - [ - [ - 64323, - 64323 - ], - "mapped", - [ - 1507, - 1468 - ] - ], - [ - [ - 64324, - 64324 - ], - "mapped", - [ - 1508, - 1468 - ] - ], - [ - [ - 64325, - 64325 - ], - "disallowed" - ], - [ - [ - 64326, - 64326 - ], - "mapped", - [ - 1510, - 1468 - ] - ], - [ - [ - 64327, - 64327 - ], - "mapped", - [ - 1511, - 1468 - ] - ], - [ - [ - 64328, - 64328 - ], - "mapped", - [ - 1512, - 1468 - ] - ], - [ - [ - 64329, - 64329 - ], - "mapped", - [ - 1513, - 1468 - ] - ], - [ - [ - 64330, - 64330 - ], - "mapped", - [ - 1514, - 1468 - ] - ], - [ - [ - 64331, - 64331 - ], - "mapped", - [ - 1493, - 1465 - ] - ], - [ - [ - 64332, - 64332 - ], - "mapped", - [ - 1489, - 1471 - ] - ], - [ - [ - 64333, - 64333 - ], - "mapped", - [ - 1499, - 1471 - ] - ], - [ - [ - 64334, - 64334 - ], - "mapped", - [ - 1508, - 1471 - ] - ], - [ - [ - 64335, - 64335 - ], - "mapped", - [ - 1488, - 1500 - ] - ], - [ - [ - 64336, - 64337 - ], - "mapped", - [ - 1649 - ] - ], - [ - [ - 64338, - 64341 - ], - "mapped", - [ - 1659 - ] - ], - [ - [ - 64342, - 64345 - ], - "mapped", - [ - 1662 - ] - ], - [ - [ - 64346, - 64349 - ], - "mapped", - [ - 1664 - ] - ], - [ - [ - 64350, - 64353 - ], - "mapped", - [ - 1658 - ] - ], - [ - [ - 64354, - 64357 - ], - "mapped", - [ - 1663 - ] - ], - [ - [ - 64358, - 64361 - ], - "mapped", - [ - 1657 - ] - ], - [ - [ - 64362, - 64365 - ], - "mapped", - [ - 1700 - ] - ], - [ - [ - 64366, - 64369 - ], - "mapped", - [ - 1702 - ] - ], - [ - [ - 64370, - 64373 - ], - "mapped", - [ - 1668 - ] - ], - [ - [ - 64374, - 64377 - ], - "mapped", - [ - 1667 - ] - ], - [ - [ - 64378, - 64381 - ], - "mapped", - [ - 1670 - ] - ], - [ - [ - 64382, - 64385 - ], - "mapped", - [ - 1671 - ] - ], - [ - [ - 64386, - 64387 - ], - "mapped", - [ - 1677 - ] - ], - [ - [ - 64388, - 64389 - ], - "mapped", - [ - 1676 - ] - ], - [ - [ - 64390, - 64391 - ], - "mapped", - [ - 1678 - ] - ], - [ - [ - 64392, - 64393 - ], - "mapped", - [ - 1672 - ] - ], - [ - [ - 64394, - 64395 - ], - "mapped", - [ - 1688 - ] - ], - [ - [ - 64396, - 64397 - ], - "mapped", - [ - 1681 - ] - ], - [ - [ - 64398, - 64401 - ], - "mapped", - [ - 1705 - ] - ], - [ - [ - 64402, - 64405 - ], - "mapped", - [ - 1711 - ] - ], - [ - [ - 64406, - 64409 - ], - "mapped", - [ - 1715 - ] - ], - [ - [ - 64410, - 64413 - ], - "mapped", - [ - 1713 - ] - ], - [ - [ - 64414, - 64415 - ], - "mapped", - [ - 1722 - ] - ], - [ - [ - 64416, - 64419 - ], - "mapped", - [ - 1723 - ] - ], - [ - [ - 64420, - 64421 - ], - "mapped", - [ - 1728 - ] - ], - [ - [ - 64422, - 64425 - ], - "mapped", - [ - 1729 - ] - ], - [ - [ - 64426, - 64429 - ], - "mapped", - [ - 1726 - ] - ], - [ - [ - 64430, - 64431 - ], - "mapped", - [ - 1746 - ] - ], - [ - [ - 64432, - 64433 - ], - "mapped", - [ - 1747 - ] - ], - [ - [ - 64434, - 64449 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 64450, - 64466 - ], - "disallowed" - ], - [ - [ - 64467, - 64470 - ], - "mapped", - [ - 1709 - ] - ], - [ - [ - 64471, - 64472 - ], - "mapped", - [ - 1735 - ] - ], - [ - [ - 64473, - 64474 - ], - "mapped", - [ - 1734 - ] - ], - [ - [ - 64475, - 64476 - ], - "mapped", - [ - 1736 - ] - ], - [ - [ - 64477, - 64477 - ], - "mapped", - [ - 1735, - 1652 - ] - ], - [ - [ - 64478, - 64479 - ], - "mapped", - [ - 1739 - ] - ], - [ - [ - 64480, - 64481 - ], - "mapped", - [ - 1733 - ] - ], - [ - [ - 64482, - 64483 - ], - "mapped", - [ - 1737 - ] - ], - [ - [ - 64484, - 64487 - ], - "mapped", - [ - 1744 - ] - ], - [ - [ - 64488, - 64489 - ], - "mapped", - [ - 1609 - ] - ], - [ - [ - 64490, - 64491 - ], - "mapped", - [ - 1574, - 1575 - ] - ], - [ - [ - 64492, - 64493 - ], - "mapped", - [ - 1574, - 1749 - ] - ], - [ - [ - 64494, - 64495 - ], - "mapped", - [ - 1574, - 1608 - ] - ], - [ - [ - 64496, - 64497 - ], - "mapped", - [ - 1574, - 1735 - ] - ], - [ - [ - 64498, - 64499 - ], - "mapped", - [ - 1574, - 1734 - ] - ], - [ - [ - 64500, - 64501 - ], - "mapped", - [ - 1574, - 1736 - ] - ], - [ - [ - 64502, - 64504 - ], - "mapped", - [ - 1574, - 1744 - ] - ], - [ - [ - 64505, - 64507 - ], - "mapped", - [ - 1574, - 1609 - ] - ], - [ - [ - 64508, - 64511 - ], - "mapped", - [ - 1740 - ] - ], - [ - [ - 64512, - 64512 - ], - "mapped", - [ - 1574, - 1580 - ] - ], - [ - [ - 64513, - 64513 - ], - "mapped", - [ - 1574, - 1581 - ] - ], - [ - [ - 64514, - 64514 - ], - "mapped", - [ - 1574, - 1605 - ] - ], - [ - [ - 64515, - 64515 - ], - "mapped", - [ - 1574, - 1609 - ] - ], - [ - [ - 64516, - 64516 - ], - "mapped", - [ - 1574, - 1610 - ] - ], - [ - [ - 64517, - 64517 - ], - "mapped", - [ - 1576, - 1580 - ] - ], - [ - [ - 64518, - 64518 - ], - "mapped", - [ - 1576, - 1581 - ] - ], - [ - [ - 64519, - 64519 - ], - "mapped", - [ - 1576, - 1582 - ] - ], - [ - [ - 64520, - 64520 - ], - "mapped", - [ - 1576, - 1605 - ] - ], - [ - [ - 64521, - 64521 - ], - "mapped", - [ - 1576, - 1609 - ] - ], - [ - [ - 64522, - 64522 - ], - "mapped", - [ - 1576, - 1610 - ] - ], - [ - [ - 64523, - 64523 - ], - "mapped", - [ - 1578, - 1580 - ] - ], - [ - [ - 64524, - 64524 - ], - "mapped", - [ - 1578, - 1581 - ] - ], - [ - [ - 64525, - 64525 - ], - "mapped", - [ - 1578, - 1582 - ] - ], - [ - [ - 64526, - 64526 - ], - "mapped", - [ - 1578, - 1605 - ] - ], - [ - [ - 64527, - 64527 - ], - "mapped", - [ - 1578, - 1609 - ] - ], - [ - [ - 64528, - 64528 - ], - "mapped", - [ - 1578, - 1610 - ] - ], - [ - [ - 64529, - 64529 - ], - "mapped", - [ - 1579, - 1580 - ] - ], - [ - [ - 64530, - 64530 - ], - "mapped", - [ - 1579, - 1605 - ] - ], - [ - [ - 64531, - 64531 - ], - "mapped", - [ - 1579, - 1609 - ] - ], - [ - [ - 64532, - 64532 - ], - "mapped", - [ - 1579, - 1610 - ] - ], - [ - [ - 64533, - 64533 - ], - "mapped", - [ - 1580, - 1581 - ] - ], - [ - [ - 64534, - 64534 - ], - "mapped", - [ - 1580, - 1605 - ] - ], - [ - [ - 64535, - 64535 - ], - "mapped", - [ - 1581, - 1580 - ] - ], - [ - [ - 64536, - 64536 - ], - "mapped", - [ - 1581, - 1605 - ] - ], - [ - [ - 64537, - 64537 - ], - "mapped", - [ - 1582, - 1580 - ] - ], - [ - [ - 64538, - 64538 - ], - "mapped", - [ - 1582, - 1581 - ] - ], - [ - [ - 64539, - 64539 - ], - "mapped", - [ - 1582, - 1605 - ] - ], - [ - [ - 64540, - 64540 - ], - "mapped", - [ - 1587, - 1580 - ] - ], - [ - [ - 64541, - 64541 - ], - "mapped", - [ - 1587, - 1581 - ] - ], - [ - [ - 64542, - 64542 - ], - "mapped", - [ - 1587, - 1582 - ] - ], - [ - [ - 64543, - 64543 - ], - "mapped", - [ - 1587, - 1605 - ] - ], - [ - [ - 64544, - 64544 - ], - "mapped", - [ - 1589, - 1581 - ] - ], - [ - [ - 64545, - 64545 - ], - "mapped", - [ - 1589, - 1605 - ] - ], - [ - [ - 64546, - 64546 - ], - "mapped", - [ - 1590, - 1580 - ] - ], - [ - [ - 64547, - 64547 - ], - "mapped", - [ - 1590, - 1581 - ] - ], - [ - [ - 64548, - 64548 - ], - "mapped", - [ - 1590, - 1582 - ] - ], - [ - [ - 64549, - 64549 - ], - "mapped", - [ - 1590, - 1605 - ] - ], - [ - [ - 64550, - 64550 - ], - "mapped", - [ - 1591, - 1581 - ] - ], - [ - [ - 64551, - 64551 - ], - "mapped", - [ - 1591, - 1605 - ] - ], - [ - [ - 64552, - 64552 - ], - "mapped", - [ - 1592, - 1605 - ] - ], - [ - [ - 64553, - 64553 - ], - "mapped", - [ - 1593, - 1580 - ] - ], - [ - [ - 64554, - 64554 - ], - "mapped", - [ - 1593, - 1605 - ] - ], - [ - [ - 64555, - 64555 - ], - "mapped", - [ - 1594, - 1580 - ] - ], - [ - [ - 64556, - 64556 - ], - "mapped", - [ - 1594, - 1605 - ] - ], - [ - [ - 64557, - 64557 - ], - "mapped", - [ - 1601, - 1580 - ] - ], - [ - [ - 64558, - 64558 - ], - "mapped", - [ - 1601, - 1581 - ] - ], - [ - [ - 64559, - 64559 - ], - "mapped", - [ - 1601, - 1582 - ] - ], - [ - [ - 64560, - 64560 - ], - "mapped", - [ - 1601, - 1605 - ] - ], - [ - [ - 64561, - 64561 - ], - "mapped", - [ - 1601, - 1609 - ] - ], - [ - [ - 64562, - 64562 - ], - "mapped", - [ - 1601, - 1610 - ] - ], - [ - [ - 64563, - 64563 - ], - "mapped", - [ - 1602, - 1581 - ] - ], - [ - [ - 64564, - 64564 - ], - "mapped", - [ - 1602, - 1605 - ] - ], - [ - [ - 64565, - 64565 - ], - "mapped", - [ - 1602, - 1609 - ] - ], - [ - [ - 64566, - 64566 - ], - "mapped", - [ - 1602, - 1610 - ] - ], - [ - [ - 64567, - 64567 - ], - "mapped", - [ - 1603, - 1575 - ] - ], - [ - [ - 64568, - 64568 - ], - "mapped", - [ - 1603, - 1580 - ] - ], - [ - [ - 64569, - 64569 - ], - "mapped", - [ - 1603, - 1581 - ] - ], - [ - [ - 64570, - 64570 - ], - "mapped", - [ - 1603, - 1582 - ] - ], - [ - [ - 64571, - 64571 - ], - "mapped", - [ - 1603, - 1604 - ] - ], - [ - [ - 64572, - 64572 - ], - "mapped", - [ - 1603, - 1605 - ] - ], - [ - [ - 64573, - 64573 - ], - "mapped", - [ - 1603, - 1609 - ] - ], - [ - [ - 64574, - 64574 - ], - "mapped", - [ - 1603, - 1610 - ] - ], - [ - [ - 64575, - 64575 - ], - "mapped", - [ - 1604, - 1580 - ] - ], - [ - [ - 64576, - 64576 - ], - "mapped", - [ - 1604, - 1581 - ] - ], - [ - [ - 64577, - 64577 - ], - "mapped", - [ - 1604, - 1582 - ] - ], - [ - [ - 64578, - 64578 - ], - "mapped", - [ - 1604, - 1605 - ] - ], - [ - [ - 64579, - 64579 - ], - "mapped", - [ - 1604, - 1609 - ] - ], - [ - [ - 64580, - 64580 - ], - "mapped", - [ - 1604, - 1610 - ] - ], - [ - [ - 64581, - 64581 - ], - "mapped", - [ - 1605, - 1580 - ] - ], - [ - [ - 64582, - 64582 - ], - "mapped", - [ - 1605, - 1581 - ] - ], - [ - [ - 64583, - 64583 - ], - "mapped", - [ - 1605, - 1582 - ] - ], - [ - [ - 64584, - 64584 - ], - "mapped", - [ - 1605, - 1605 - ] - ], - [ - [ - 64585, - 64585 - ], - "mapped", - [ - 1605, - 1609 - ] - ], - [ - [ - 64586, - 64586 - ], - "mapped", - [ - 1605, - 1610 - ] - ], - [ - [ - 64587, - 64587 - ], - "mapped", - [ - 1606, - 1580 - ] - ], - [ - [ - 64588, - 64588 - ], - "mapped", - [ - 1606, - 1581 - ] - ], - [ - [ - 64589, - 64589 - ], - "mapped", - [ - 1606, - 1582 - ] - ], - [ - [ - 64590, - 64590 - ], - "mapped", - [ - 1606, - 1605 - ] - ], - [ - [ - 64591, - 64591 - ], - "mapped", - [ - 1606, - 1609 - ] - ], - [ - [ - 64592, - 64592 - ], - "mapped", - [ - 1606, - 1610 - ] - ], - [ - [ - 64593, - 64593 - ], - "mapped", - [ - 1607, - 1580 - ] - ], - [ - [ - 64594, - 64594 - ], - "mapped", - [ - 1607, - 1605 - ] - ], - [ - [ - 64595, - 64595 - ], - "mapped", - [ - 1607, - 1609 - ] - ], - [ - [ - 64596, - 64596 - ], - "mapped", - [ - 1607, - 1610 - ] - ], - [ - [ - 64597, - 64597 - ], - "mapped", - [ - 1610, - 1580 - ] - ], - [ - [ - 64598, - 64598 - ], - "mapped", - [ - 1610, - 1581 - ] - ], - [ - [ - 64599, - 64599 - ], - "mapped", - [ - 1610, - 1582 - ] - ], - [ - [ - 64600, - 64600 - ], - "mapped", - [ - 1610, - 1605 - ] - ], - [ - [ - 64601, - 64601 - ], - "mapped", - [ - 1610, - 1609 - ] - ], - [ - [ - 64602, - 64602 - ], - "mapped", - [ - 1610, - 1610 - ] - ], - [ - [ - 64603, - 64603 - ], - "mapped", - [ - 1584, - 1648 - ] - ], - [ - [ - 64604, - 64604 - ], - "mapped", - [ - 1585, - 1648 - ] - ], - [ - [ - 64605, - 64605 - ], - "mapped", - [ - 1609, - 1648 - ] - ], - [ - [ - 64606, - 64606 - ], - "disallowed_STD3_mapped", - [ - 32, - 1612, - 1617 - ] - ], - [ - [ - 64607, - 64607 - ], - "disallowed_STD3_mapped", - [ - 32, - 1613, - 1617 - ] - ], - [ - [ - 64608, - 64608 - ], - "disallowed_STD3_mapped", - [ - 32, - 1614, - 1617 - ] - ], - [ - [ - 64609, - 64609 - ], - "disallowed_STD3_mapped", - [ - 32, - 1615, - 1617 - ] - ], - [ - [ - 64610, - 64610 - ], - "disallowed_STD3_mapped", - [ - 32, - 1616, - 1617 - ] - ], - [ - [ - 64611, - 64611 - ], - "disallowed_STD3_mapped", - [ - 32, - 1617, - 1648 - ] - ], - [ - [ - 64612, - 64612 - ], - "mapped", - [ - 1574, - 1585 - ] - ], - [ - [ - 64613, - 64613 - ], - "mapped", - [ - 1574, - 1586 - ] - ], - [ - [ - 64614, - 64614 - ], - "mapped", - [ - 1574, - 1605 - ] - ], - [ - [ - 64615, - 64615 - ], - "mapped", - [ - 1574, - 1606 - ] - ], - [ - [ - 64616, - 64616 - ], - "mapped", - [ - 1574, - 1609 - ] - ], - [ - [ - 64617, - 64617 - ], - "mapped", - [ - 1574, - 1610 - ] - ], - [ - [ - 64618, - 64618 - ], - "mapped", - [ - 1576, - 1585 - ] - ], - [ - [ - 64619, - 64619 - ], - "mapped", - [ - 1576, - 1586 - ] - ], - [ - [ - 64620, - 64620 - ], - "mapped", - [ - 1576, - 1605 - ] - ], - [ - [ - 64621, - 64621 - ], - "mapped", - [ - 1576, - 1606 - ] - ], - [ - [ - 64622, - 64622 - ], - "mapped", - [ - 1576, - 1609 - ] - ], - [ - [ - 64623, - 64623 - ], - "mapped", - [ - 1576, - 1610 - ] - ], - [ - [ - 64624, - 64624 - ], - "mapped", - [ - 1578, - 1585 - ] - ], - [ - [ - 64625, - 64625 - ], - "mapped", - [ - 1578, - 1586 - ] - ], - [ - [ - 64626, - 64626 - ], - "mapped", - [ - 1578, - 1605 - ] - ], - [ - [ - 64627, - 64627 - ], - "mapped", - [ - 1578, - 1606 - ] - ], - [ - [ - 64628, - 64628 - ], - "mapped", - [ - 1578, - 1609 - ] - ], - [ - [ - 64629, - 64629 - ], - "mapped", - [ - 1578, - 1610 - ] - ], - [ - [ - 64630, - 64630 - ], - "mapped", - [ - 1579, - 1585 - ] - ], - [ - [ - 64631, - 64631 - ], - "mapped", - [ - 1579, - 1586 - ] - ], - [ - [ - 64632, - 64632 - ], - "mapped", - [ - 1579, - 1605 - ] - ], - [ - [ - 64633, - 64633 - ], - "mapped", - [ - 1579, - 1606 - ] - ], - [ - [ - 64634, - 64634 - ], - "mapped", - [ - 1579, - 1609 - ] - ], - [ - [ - 64635, - 64635 - ], - "mapped", - [ - 1579, - 1610 - ] - ], - [ - [ - 64636, - 64636 - ], - "mapped", - [ - 1601, - 1609 - ] - ], - [ - [ - 64637, - 64637 - ], - "mapped", - [ - 1601, - 1610 - ] - ], - [ - [ - 64638, - 64638 - ], - "mapped", - [ - 1602, - 1609 - ] - ], - [ - [ - 64639, - 64639 - ], - "mapped", - [ - 1602, - 1610 - ] - ], - [ - [ - 64640, - 64640 - ], - "mapped", - [ - 1603, - 1575 - ] - ], - [ - [ - 64641, - 64641 - ], - "mapped", - [ - 1603, - 1604 - ] - ], - [ - [ - 64642, - 64642 - ], - "mapped", - [ - 1603, - 1605 - ] - ], - [ - [ - 64643, - 64643 - ], - "mapped", - [ - 1603, - 1609 - ] - ], - [ - [ - 64644, - 64644 - ], - "mapped", - [ - 1603, - 1610 - ] - ], - [ - [ - 64645, - 64645 - ], - "mapped", - [ - 1604, - 1605 - ] - ], - [ - [ - 64646, - 64646 - ], - "mapped", - [ - 1604, - 1609 - ] - ], - [ - [ - 64647, - 64647 - ], - "mapped", - [ - 1604, - 1610 - ] - ], - [ - [ - 64648, - 64648 - ], - "mapped", - [ - 1605, - 1575 - ] - ], - [ - [ - 64649, - 64649 - ], - "mapped", - [ - 1605, - 1605 - ] - ], - [ - [ - 64650, - 64650 - ], - "mapped", - [ - 1606, - 1585 - ] - ], - [ - [ - 64651, - 64651 - ], - "mapped", - [ - 1606, - 1586 - ] - ], - [ - [ - 64652, - 64652 - ], - "mapped", - [ - 1606, - 1605 - ] - ], - [ - [ - 64653, - 64653 - ], - "mapped", - [ - 1606, - 1606 - ] - ], - [ - [ - 64654, - 64654 - ], - "mapped", - [ - 1606, - 1609 - ] - ], - [ - [ - 64655, - 64655 - ], - "mapped", - [ - 1606, - 1610 - ] - ], - [ - [ - 64656, - 64656 - ], - "mapped", - [ - 1609, - 1648 - ] - ], - [ - [ - 64657, - 64657 - ], - "mapped", - [ - 1610, - 1585 - ] - ], - [ - [ - 64658, - 64658 - ], - "mapped", - [ - 1610, - 1586 - ] - ], - [ - [ - 64659, - 64659 - ], - "mapped", - [ - 1610, - 1605 - ] - ], - [ - [ - 64660, - 64660 - ], - "mapped", - [ - 1610, - 1606 - ] - ], - [ - [ - 64661, - 64661 - ], - "mapped", - [ - 1610, - 1609 - ] - ], - [ - [ - 64662, - 64662 - ], - "mapped", - [ - 1610, - 1610 - ] - ], - [ - [ - 64663, - 64663 - ], - "mapped", - [ - 1574, - 1580 - ] - ], - [ - [ - 64664, - 64664 - ], - "mapped", - [ - 1574, - 1581 - ] - ], - [ - [ - 64665, - 64665 - ], - "mapped", - [ - 1574, - 1582 - ] - ], - [ - [ - 64666, - 64666 - ], - "mapped", - [ - 1574, - 1605 - ] - ], - [ - [ - 64667, - 64667 - ], - "mapped", - [ - 1574, - 1607 - ] - ], - [ - [ - 64668, - 64668 - ], - "mapped", - [ - 1576, - 1580 - ] - ], - [ - [ - 64669, - 64669 - ], - "mapped", - [ - 1576, - 1581 - ] - ], - [ - [ - 64670, - 64670 - ], - "mapped", - [ - 1576, - 1582 - ] - ], - [ - [ - 64671, - 64671 - ], - "mapped", - [ - 1576, - 1605 - ] - ], - [ - [ - 64672, - 64672 - ], - "mapped", - [ - 1576, - 1607 - ] - ], - [ - [ - 64673, - 64673 - ], - "mapped", - [ - 1578, - 1580 - ] - ], - [ - [ - 64674, - 64674 - ], - "mapped", - [ - 1578, - 1581 - ] - ], - [ - [ - 64675, - 64675 - ], - "mapped", - [ - 1578, - 1582 - ] - ], - [ - [ - 64676, - 64676 - ], - "mapped", - [ - 1578, - 1605 - ] - ], - [ - [ - 64677, - 64677 - ], - "mapped", - [ - 1578, - 1607 - ] - ], - [ - [ - 64678, - 64678 - ], - "mapped", - [ - 1579, - 1605 - ] - ], - [ - [ - 64679, - 64679 - ], - "mapped", - [ - 1580, - 1581 - ] - ], - [ - [ - 64680, - 64680 - ], - "mapped", - [ - 1580, - 1605 - ] - ], - [ - [ - 64681, - 64681 - ], - "mapped", - [ - 1581, - 1580 - ] - ], - [ - [ - 64682, - 64682 - ], - "mapped", - [ - 1581, - 1605 - ] - ], - [ - [ - 64683, - 64683 - ], - "mapped", - [ - 1582, - 1580 - ] - ], - [ - [ - 64684, - 64684 - ], - "mapped", - [ - 1582, - 1605 - ] - ], - [ - [ - 64685, - 64685 - ], - "mapped", - [ - 1587, - 1580 - ] - ], - [ - [ - 64686, - 64686 - ], - "mapped", - [ - 1587, - 1581 - ] - ], - [ - [ - 64687, - 64687 - ], - "mapped", - [ - 1587, - 1582 - ] - ], - [ - [ - 64688, - 64688 - ], - "mapped", - [ - 1587, - 1605 - ] - ], - [ - [ - 64689, - 64689 - ], - "mapped", - [ - 1589, - 1581 - ] - ], - [ - [ - 64690, - 64690 - ], - "mapped", - [ - 1589, - 1582 - ] - ], - [ - [ - 64691, - 64691 - ], - "mapped", - [ - 1589, - 1605 - ] - ], - [ - [ - 64692, - 64692 - ], - "mapped", - [ - 1590, - 1580 - ] - ], - [ - [ - 64693, - 64693 - ], - "mapped", - [ - 1590, - 1581 - ] - ], - [ - [ - 64694, - 64694 - ], - "mapped", - [ - 1590, - 1582 - ] - ], - [ - [ - 64695, - 64695 - ], - "mapped", - [ - 1590, - 1605 - ] - ], - [ - [ - 64696, - 64696 - ], - "mapped", - [ - 1591, - 1581 - ] - ], - [ - [ - 64697, - 64697 - ], - "mapped", - [ - 1592, - 1605 - ] - ], - [ - [ - 64698, - 64698 - ], - "mapped", - [ - 1593, - 1580 - ] - ], - [ - [ - 64699, - 64699 - ], - "mapped", - [ - 1593, - 1605 - ] - ], - [ - [ - 64700, - 64700 - ], - "mapped", - [ - 1594, - 1580 - ] - ], - [ - [ - 64701, - 64701 - ], - "mapped", - [ - 1594, - 1605 - ] - ], - [ - [ - 64702, - 64702 - ], - "mapped", - [ - 1601, - 1580 - ] - ], - [ - [ - 64703, - 64703 - ], - "mapped", - [ - 1601, - 1581 - ] - ], - [ - [ - 64704, - 64704 - ], - "mapped", - [ - 1601, - 1582 - ] - ], - [ - [ - 64705, - 64705 - ], - "mapped", - [ - 1601, - 1605 - ] - ], - [ - [ - 64706, - 64706 - ], - "mapped", - [ - 1602, - 1581 - ] - ], - [ - [ - 64707, - 64707 - ], - "mapped", - [ - 1602, - 1605 - ] - ], - [ - [ - 64708, - 64708 - ], - "mapped", - [ - 1603, - 1580 - ] - ], - [ - [ - 64709, - 64709 - ], - "mapped", - [ - 1603, - 1581 - ] - ], - [ - [ - 64710, - 64710 - ], - "mapped", - [ - 1603, - 1582 - ] - ], - [ - [ - 64711, - 64711 - ], - "mapped", - [ - 1603, - 1604 - ] - ], - [ - [ - 64712, - 64712 - ], - "mapped", - [ - 1603, - 1605 - ] - ], - [ - [ - 64713, - 64713 - ], - "mapped", - [ - 1604, - 1580 - ] - ], - [ - [ - 64714, - 64714 - ], - "mapped", - [ - 1604, - 1581 - ] - ], - [ - [ - 64715, - 64715 - ], - "mapped", - [ - 1604, - 1582 - ] - ], - [ - [ - 64716, - 64716 - ], - "mapped", - [ - 1604, - 1605 - ] - ], - [ - [ - 64717, - 64717 - ], - "mapped", - [ - 1604, - 1607 - ] - ], - [ - [ - 64718, - 64718 - ], - "mapped", - [ - 1605, - 1580 - ] - ], - [ - [ - 64719, - 64719 - ], - "mapped", - [ - 1605, - 1581 - ] - ], - [ - [ - 64720, - 64720 - ], - "mapped", - [ - 1605, - 1582 - ] - ], - [ - [ - 64721, - 64721 - ], - "mapped", - [ - 1605, - 1605 - ] - ], - [ - [ - 64722, - 64722 - ], - "mapped", - [ - 1606, - 1580 - ] - ], - [ - [ - 64723, - 64723 - ], - "mapped", - [ - 1606, - 1581 - ] - ], - [ - [ - 64724, - 64724 - ], - "mapped", - [ - 1606, - 1582 - ] - ], - [ - [ - 64725, - 64725 - ], - "mapped", - [ - 1606, - 1605 - ] - ], - [ - [ - 64726, - 64726 - ], - "mapped", - [ - 1606, - 1607 - ] - ], - [ - [ - 64727, - 64727 - ], - "mapped", - [ - 1607, - 1580 - ] - ], - [ - [ - 64728, - 64728 - ], - "mapped", - [ - 1607, - 1605 - ] - ], - [ - [ - 64729, - 64729 - ], - "mapped", - [ - 1607, - 1648 - ] - ], - [ - [ - 64730, - 64730 - ], - "mapped", - [ - 1610, - 1580 - ] - ], - [ - [ - 64731, - 64731 - ], - "mapped", - [ - 1610, - 1581 - ] - ], - [ - [ - 64732, - 64732 - ], - "mapped", - [ - 1610, - 1582 - ] - ], - [ - [ - 64733, - 64733 - ], - "mapped", - [ - 1610, - 1605 - ] - ], - [ - [ - 64734, - 64734 - ], - "mapped", - [ - 1610, - 1607 - ] - ], - [ - [ - 64735, - 64735 - ], - "mapped", - [ - 1574, - 1605 - ] - ], - [ - [ - 64736, - 64736 - ], - "mapped", - [ - 1574, - 1607 - ] - ], - [ - [ - 64737, - 64737 - ], - "mapped", - [ - 1576, - 1605 - ] - ], - [ - [ - 64738, - 64738 - ], - "mapped", - [ - 1576, - 1607 - ] - ], - [ - [ - 64739, - 64739 - ], - "mapped", - [ - 1578, - 1605 - ] - ], - [ - [ - 64740, - 64740 - ], - "mapped", - [ - 1578, - 1607 - ] - ], - [ - [ - 64741, - 64741 - ], - "mapped", - [ - 1579, - 1605 - ] - ], - [ - [ - 64742, - 64742 - ], - "mapped", - [ - 1579, - 1607 - ] - ], - [ - [ - 64743, - 64743 - ], - "mapped", - [ - 1587, - 1605 - ] - ], - [ - [ - 64744, - 64744 - ], - "mapped", - [ - 1587, - 1607 - ] - ], - [ - [ - 64745, - 64745 - ], - "mapped", - [ - 1588, - 1605 - ] - ], - [ - [ - 64746, - 64746 - ], - "mapped", - [ - 1588, - 1607 - ] - ], - [ - [ - 64747, - 64747 - ], - "mapped", - [ - 1603, - 1604 - ] - ], - [ - [ - 64748, - 64748 - ], - "mapped", - [ - 1603, - 1605 - ] - ], - [ - [ - 64749, - 64749 - ], - "mapped", - [ - 1604, - 1605 - ] - ], - [ - [ - 64750, - 64750 - ], - "mapped", - [ - 1606, - 1605 - ] - ], - [ - [ - 64751, - 64751 - ], - "mapped", - [ - 1606, - 1607 - ] - ], - [ - [ - 64752, - 64752 - ], - "mapped", - [ - 1610, - 1605 - ] - ], - [ - [ - 64753, - 64753 - ], - "mapped", - [ - 1610, - 1607 - ] - ], - [ - [ - 64754, - 64754 - ], - "mapped", - [ - 1600, - 1614, - 1617 - ] - ], - [ - [ - 64755, - 64755 - ], - "mapped", - [ - 1600, - 1615, - 1617 - ] - ], - [ - [ - 64756, - 64756 - ], - "mapped", - [ - 1600, - 1616, - 1617 - ] - ], - [ - [ - 64757, - 64757 - ], - "mapped", - [ - 1591, - 1609 - ] - ], - [ - [ - 64758, - 64758 - ], - "mapped", - [ - 1591, - 1610 - ] - ], - [ - [ - 64759, - 64759 - ], - "mapped", - [ - 1593, - 1609 - ] - ], - [ - [ - 64760, - 64760 - ], - "mapped", - [ - 1593, - 1610 - ] - ], - [ - [ - 64761, - 64761 - ], - "mapped", - [ - 1594, - 1609 - ] - ], - [ - [ - 64762, - 64762 - ], - "mapped", - [ - 1594, - 1610 - ] - ], - [ - [ - 64763, - 64763 - ], - "mapped", - [ - 1587, - 1609 - ] - ], - [ - [ - 64764, - 64764 - ], - "mapped", - [ - 1587, - 1610 - ] - ], - [ - [ - 64765, - 64765 - ], - "mapped", - [ - 1588, - 1609 - ] - ], - [ - [ - 64766, - 64766 - ], - "mapped", - [ - 1588, - 1610 - ] - ], - [ - [ - 64767, - 64767 - ], - "mapped", - [ - 1581, - 1609 - ] - ], - [ - [ - 64768, - 64768 - ], - "mapped", - [ - 1581, - 1610 - ] - ], - [ - [ - 64769, - 64769 - ], - "mapped", - [ - 1580, - 1609 - ] - ], - [ - [ - 64770, - 64770 - ], - "mapped", - [ - 1580, - 1610 - ] - ], - [ - [ - 64771, - 64771 - ], - "mapped", - [ - 1582, - 1609 - ] - ], - [ - [ - 64772, - 64772 - ], - "mapped", - [ - 1582, - 1610 - ] - ], - [ - [ - 64773, - 64773 - ], - "mapped", - [ - 1589, - 1609 - ] - ], - [ - [ - 64774, - 64774 - ], - "mapped", - [ - 1589, - 1610 - ] - ], - [ - [ - 64775, - 64775 - ], - "mapped", - [ - 1590, - 1609 - ] - ], - [ - [ - 64776, - 64776 - ], - "mapped", - [ - 1590, - 1610 - ] - ], - [ - [ - 64777, - 64777 - ], - "mapped", - [ - 1588, - 1580 - ] - ], - [ - [ - 64778, - 64778 - ], - "mapped", - [ - 1588, - 1581 - ] - ], - [ - [ - 64779, - 64779 - ], - "mapped", - [ - 1588, - 1582 - ] - ], - [ - [ - 64780, - 64780 - ], - "mapped", - [ - 1588, - 1605 - ] - ], - [ - [ - 64781, - 64781 - ], - "mapped", - [ - 1588, - 1585 - ] - ], - [ - [ - 64782, - 64782 - ], - "mapped", - [ - 1587, - 1585 - ] - ], - [ - [ - 64783, - 64783 - ], - "mapped", - [ - 1589, - 1585 - ] - ], - [ - [ - 64784, - 64784 - ], - "mapped", - [ - 1590, - 1585 - ] - ], - [ - [ - 64785, - 64785 - ], - "mapped", - [ - 1591, - 1609 - ] - ], - [ - [ - 64786, - 64786 - ], - "mapped", - [ - 1591, - 1610 - ] - ], - [ - [ - 64787, - 64787 - ], - "mapped", - [ - 1593, - 1609 - ] - ], - [ - [ - 64788, - 64788 - ], - "mapped", - [ - 1593, - 1610 - ] - ], - [ - [ - 64789, - 64789 - ], - "mapped", - [ - 1594, - 1609 - ] - ], - [ - [ - 64790, - 64790 - ], - "mapped", - [ - 1594, - 1610 - ] - ], - [ - [ - 64791, - 64791 - ], - "mapped", - [ - 1587, - 1609 - ] - ], - [ - [ - 64792, - 64792 - ], - "mapped", - [ - 1587, - 1610 - ] - ], - [ - [ - 64793, - 64793 - ], - "mapped", - [ - 1588, - 1609 - ] - ], - [ - [ - 64794, - 64794 - ], - "mapped", - [ - 1588, - 1610 - ] - ], - [ - [ - 64795, - 64795 - ], - "mapped", - [ - 1581, - 1609 - ] - ], - [ - [ - 64796, - 64796 - ], - "mapped", - [ - 1581, - 1610 - ] - ], - [ - [ - 64797, - 64797 - ], - "mapped", - [ - 1580, - 1609 - ] - ], - [ - [ - 64798, - 64798 - ], - "mapped", - [ - 1580, - 1610 - ] - ], - [ - [ - 64799, - 64799 - ], - "mapped", - [ - 1582, - 1609 - ] - ], - [ - [ - 64800, - 64800 - ], - "mapped", - [ - 1582, - 1610 - ] - ], - [ - [ - 64801, - 64801 - ], - "mapped", - [ - 1589, - 1609 - ] - ], - [ - [ - 64802, - 64802 - ], - "mapped", - [ - 1589, - 1610 - ] - ], - [ - [ - 64803, - 64803 - ], - "mapped", - [ - 1590, - 1609 - ] - ], - [ - [ - 64804, - 64804 - ], - "mapped", - [ - 1590, - 1610 - ] - ], - [ - [ - 64805, - 64805 - ], - "mapped", - [ - 1588, - 1580 - ] - ], - [ - [ - 64806, - 64806 - ], - "mapped", - [ - 1588, - 1581 - ] - ], - [ - [ - 64807, - 64807 - ], - "mapped", - [ - 1588, - 1582 - ] - ], - [ - [ - 64808, - 64808 - ], - "mapped", - [ - 1588, - 1605 - ] - ], - [ - [ - 64809, - 64809 - ], - "mapped", - [ - 1588, - 1585 - ] - ], - [ - [ - 64810, - 64810 - ], - "mapped", - [ - 1587, - 1585 - ] - ], - [ - [ - 64811, - 64811 - ], - "mapped", - [ - 1589, - 1585 - ] - ], - [ - [ - 64812, - 64812 - ], - "mapped", - [ - 1590, - 1585 - ] - ], - [ - [ - 64813, - 64813 - ], - "mapped", - [ - 1588, - 1580 - ] - ], - [ - [ - 64814, - 64814 - ], - "mapped", - [ - 1588, - 1581 - ] - ], - [ - [ - 64815, - 64815 - ], - "mapped", - [ - 1588, - 1582 - ] - ], - [ - [ - 64816, - 64816 - ], - "mapped", - [ - 1588, - 1605 - ] - ], - [ - [ - 64817, - 64817 - ], - "mapped", - [ - 1587, - 1607 - ] - ], - [ - [ - 64818, - 64818 - ], - "mapped", - [ - 1588, - 1607 - ] - ], - [ - [ - 64819, - 64819 - ], - "mapped", - [ - 1591, - 1605 - ] - ], - [ - [ - 64820, - 64820 - ], - "mapped", - [ - 1587, - 1580 - ] - ], - [ - [ - 64821, - 64821 - ], - "mapped", - [ - 1587, - 1581 - ] - ], - [ - [ - 64822, - 64822 - ], - "mapped", - [ - 1587, - 1582 - ] - ], - [ - [ - 64823, - 64823 - ], - "mapped", - [ - 1588, - 1580 - ] - ], - [ - [ - 64824, - 64824 - ], - "mapped", - [ - 1588, - 1581 - ] - ], - [ - [ - 64825, - 64825 - ], - "mapped", - [ - 1588, - 1582 - ] - ], - [ - [ - 64826, - 64826 - ], - "mapped", - [ - 1591, - 1605 - ] - ], - [ - [ - 64827, - 64827 - ], - "mapped", - [ - 1592, - 1605 - ] - ], - [ - [ - 64828, - 64829 - ], - "mapped", - [ - 1575, - 1611 - ] - ], - [ - [ - 64830, - 64831 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 64832, - 64847 - ], - "disallowed" - ], - [ - [ - 64848, - 64848 - ], - "mapped", - [ - 1578, - 1580, - 1605 - ] - ], - [ - [ - 64849, - 64850 - ], - "mapped", - [ - 1578, - 1581, - 1580 - ] - ], - [ - [ - 64851, - 64851 - ], - "mapped", - [ - 1578, - 1581, - 1605 - ] - ], - [ - [ - 64852, - 64852 - ], - "mapped", - [ - 1578, - 1582, - 1605 - ] - ], - [ - [ - 64853, - 64853 - ], - "mapped", - [ - 1578, - 1605, - 1580 - ] - ], - [ - [ - 64854, - 64854 - ], - "mapped", - [ - 1578, - 1605, - 1581 - ] - ], - [ - [ - 64855, - 64855 - ], - "mapped", - [ - 1578, - 1605, - 1582 - ] - ], - [ - [ - 64856, - 64857 - ], - "mapped", - [ - 1580, - 1605, - 1581 - ] - ], - [ - [ - 64858, - 64858 - ], - "mapped", - [ - 1581, - 1605, - 1610 - ] - ], - [ - [ - 64859, - 64859 - ], - "mapped", - [ - 1581, - 1605, - 1609 - ] - ], - [ - [ - 64860, - 64860 - ], - "mapped", - [ - 1587, - 1581, - 1580 - ] - ], - [ - [ - 64861, - 64861 - ], - "mapped", - [ - 1587, - 1580, - 1581 - ] - ], - [ - [ - 64862, - 64862 - ], - "mapped", - [ - 1587, - 1580, - 1609 - ] - ], - [ - [ - 64863, - 64864 - ], - "mapped", - [ - 1587, - 1605, - 1581 - ] - ], - [ - [ - 64865, - 64865 - ], - "mapped", - [ - 1587, - 1605, - 1580 - ] - ], - [ - [ - 64866, - 64867 - ], - "mapped", - [ - 1587, - 1605, - 1605 - ] - ], - [ - [ - 64868, - 64869 - ], - "mapped", - [ - 1589, - 1581, - 1581 - ] - ], - [ - [ - 64870, - 64870 - ], - "mapped", - [ - 1589, - 1605, - 1605 - ] - ], - [ - [ - 64871, - 64872 - ], - "mapped", - [ - 1588, - 1581, - 1605 - ] - ], - [ - [ - 64873, - 64873 - ], - "mapped", - [ - 1588, - 1580, - 1610 - ] - ], - [ - [ - 64874, - 64875 - ], - "mapped", - [ - 1588, - 1605, - 1582 - ] - ], - [ - [ - 64876, - 64877 - ], - "mapped", - [ - 1588, - 1605, - 1605 - ] - ], - [ - [ - 64878, - 64878 - ], - "mapped", - [ - 1590, - 1581, - 1609 - ] - ], - [ - [ - 64879, - 64880 - ], - "mapped", - [ - 1590, - 1582, - 1605 - ] - ], - [ - [ - 64881, - 64882 - ], - "mapped", - [ - 1591, - 1605, - 1581 - ] - ], - [ - [ - 64883, - 64883 - ], - "mapped", - [ - 1591, - 1605, - 1605 - ] - ], - [ - [ - 64884, - 64884 - ], - "mapped", - [ - 1591, - 1605, - 1610 - ] - ], - [ - [ - 64885, - 64885 - ], - "mapped", - [ - 1593, - 1580, - 1605 - ] - ], - [ - [ - 64886, - 64887 - ], - "mapped", - [ - 1593, - 1605, - 1605 - ] - ], - [ - [ - 64888, - 64888 - ], - "mapped", - [ - 1593, - 1605, - 1609 - ] - ], - [ - [ - 64889, - 64889 - ], - "mapped", - [ - 1594, - 1605, - 1605 - ] - ], - [ - [ - 64890, - 64890 - ], - "mapped", - [ - 1594, - 1605, - 1610 - ] - ], - [ - [ - 64891, - 64891 - ], - "mapped", - [ - 1594, - 1605, - 1609 - ] - ], - [ - [ - 64892, - 64893 - ], - "mapped", - [ - 1601, - 1582, - 1605 - ] - ], - [ - [ - 64894, - 64894 - ], - "mapped", - [ - 1602, - 1605, - 1581 - ] - ], - [ - [ - 64895, - 64895 - ], - "mapped", - [ - 1602, - 1605, - 1605 - ] - ], - [ - [ - 64896, - 64896 - ], - "mapped", - [ - 1604, - 1581, - 1605 - ] - ], - [ - [ - 64897, - 64897 - ], - "mapped", - [ - 1604, - 1581, - 1610 - ] - ], - [ - [ - 64898, - 64898 - ], - "mapped", - [ - 1604, - 1581, - 1609 - ] - ], - [ - [ - 64899, - 64900 - ], - "mapped", - [ - 1604, - 1580, - 1580 - ] - ], - [ - [ - 64901, - 64902 - ], - "mapped", - [ - 1604, - 1582, - 1605 - ] - ], - [ - [ - 64903, - 64904 - ], - "mapped", - [ - 1604, - 1605, - 1581 - ] - ], - [ - [ - 64905, - 64905 - ], - "mapped", - [ - 1605, - 1581, - 1580 - ] - ], - [ - [ - 64906, - 64906 - ], - "mapped", - [ - 1605, - 1581, - 1605 - ] - ], - [ - [ - 64907, - 64907 - ], - "mapped", - [ - 1605, - 1581, - 1610 - ] - ], - [ - [ - 64908, - 64908 - ], - "mapped", - [ - 1605, - 1580, - 1581 - ] - ], - [ - [ - 64909, - 64909 - ], - "mapped", - [ - 1605, - 1580, - 1605 - ] - ], - [ - [ - 64910, - 64910 - ], - "mapped", - [ - 1605, - 1582, - 1580 - ] - ], - [ - [ - 64911, - 64911 - ], - "mapped", - [ - 1605, - 1582, - 1605 - ] - ], - [ - [ - 64912, - 64913 - ], - "disallowed" - ], - [ - [ - 64914, - 64914 - ], - "mapped", - [ - 1605, - 1580, - 1582 - ] - ], - [ - [ - 64915, - 64915 - ], - "mapped", - [ - 1607, - 1605, - 1580 - ] - ], - [ - [ - 64916, - 64916 - ], - "mapped", - [ - 1607, - 1605, - 1605 - ] - ], - [ - [ - 64917, - 64917 - ], - "mapped", - [ - 1606, - 1581, - 1605 - ] - ], - [ - [ - 64918, - 64918 - ], - "mapped", - [ - 1606, - 1581, - 1609 - ] - ], - [ - [ - 64919, - 64920 - ], - "mapped", - [ - 1606, - 1580, - 1605 - ] - ], - [ - [ - 64921, - 64921 - ], - "mapped", - [ - 1606, - 1580, - 1609 - ] - ], - [ - [ - 64922, - 64922 - ], - "mapped", - [ - 1606, - 1605, - 1610 - ] - ], - [ - [ - 64923, - 64923 - ], - "mapped", - [ - 1606, - 1605, - 1609 - ] - ], - [ - [ - 64924, - 64925 - ], - "mapped", - [ - 1610, - 1605, - 1605 - ] - ], - [ - [ - 64926, - 64926 - ], - "mapped", - [ - 1576, - 1582, - 1610 - ] - ], - [ - [ - 64927, - 64927 - ], - "mapped", - [ - 1578, - 1580, - 1610 - ] - ], - [ - [ - 64928, - 64928 - ], - "mapped", - [ - 1578, - 1580, - 1609 - ] - ], - [ - [ - 64929, - 64929 - ], - "mapped", - [ - 1578, - 1582, - 1610 - ] - ], - [ - [ - 64930, - 64930 - ], - "mapped", - [ - 1578, - 1582, - 1609 - ] - ], - [ - [ - 64931, - 64931 - ], - "mapped", - [ - 1578, - 1605, - 1610 - ] - ], - [ - [ - 64932, - 64932 - ], - "mapped", - [ - 1578, - 1605, - 1609 - ] - ], - [ - [ - 64933, - 64933 - ], - "mapped", - [ - 1580, - 1605, - 1610 - ] - ], - [ - [ - 64934, - 64934 - ], - "mapped", - [ - 1580, - 1581, - 1609 - ] - ], - [ - [ - 64935, - 64935 - ], - "mapped", - [ - 1580, - 1605, - 1609 - ] - ], - [ - [ - 64936, - 64936 - ], - "mapped", - [ - 1587, - 1582, - 1609 - ] - ], - [ - [ - 64937, - 64937 - ], - "mapped", - [ - 1589, - 1581, - 1610 - ] - ], - [ - [ - 64938, - 64938 - ], - "mapped", - [ - 1588, - 1581, - 1610 - ] - ], - [ - [ - 64939, - 64939 - ], - "mapped", - [ - 1590, - 1581, - 1610 - ] - ], - [ - [ - 64940, - 64940 - ], - "mapped", - [ - 1604, - 1580, - 1610 - ] - ], - [ - [ - 64941, - 64941 - ], - "mapped", - [ - 1604, - 1605, - 1610 - ] - ], - [ - [ - 64942, - 64942 - ], - "mapped", - [ - 1610, - 1581, - 1610 - ] - ], - [ - [ - 64943, - 64943 - ], - "mapped", - [ - 1610, - 1580, - 1610 - ] - ], - [ - [ - 64944, - 64944 - ], - "mapped", - [ - 1610, - 1605, - 1610 - ] - ], - [ - [ - 64945, - 64945 - ], - "mapped", - [ - 1605, - 1605, - 1610 - ] - ], - [ - [ - 64946, - 64946 - ], - "mapped", - [ - 1602, - 1605, - 1610 - ] - ], - [ - [ - 64947, - 64947 - ], - "mapped", - [ - 1606, - 1581, - 1610 - ] - ], - [ - [ - 64948, - 64948 - ], - "mapped", - [ - 1602, - 1605, - 1581 - ] - ], - [ - [ - 64949, - 64949 - ], - "mapped", - [ - 1604, - 1581, - 1605 - ] - ], - [ - [ - 64950, - 64950 - ], - "mapped", - [ - 1593, - 1605, - 1610 - ] - ], - [ - [ - 64951, - 64951 - ], - "mapped", - [ - 1603, - 1605, - 1610 - ] - ], - [ - [ - 64952, - 64952 - ], - "mapped", - [ - 1606, - 1580, - 1581 - ] - ], - [ - [ - 64953, - 64953 - ], - "mapped", - [ - 1605, - 1582, - 1610 - ] - ], - [ - [ - 64954, - 64954 - ], - "mapped", - [ - 1604, - 1580, - 1605 - ] - ], - [ - [ - 64955, - 64955 - ], - "mapped", - [ - 1603, - 1605, - 1605 - ] - ], - [ - [ - 64956, - 64956 - ], - "mapped", - [ - 1604, - 1580, - 1605 - ] - ], - [ - [ - 64957, - 64957 - ], - "mapped", - [ - 1606, - 1580, - 1581 - ] - ], - [ - [ - 64958, - 64958 - ], - "mapped", - [ - 1580, - 1581, - 1610 - ] - ], - [ - [ - 64959, - 64959 - ], - "mapped", - [ - 1581, - 1580, - 1610 - ] - ], - [ - [ - 64960, - 64960 - ], - "mapped", - [ - 1605, - 1580, - 1610 - ] - ], - [ - [ - 64961, - 64961 - ], - "mapped", - [ - 1601, - 1605, - 1610 - ] - ], - [ - [ - 64962, - 64962 - ], - "mapped", - [ - 1576, - 1581, - 1610 - ] - ], - [ - [ - 64963, - 64963 - ], - "mapped", - [ - 1603, - 1605, - 1605 - ] - ], - [ - [ - 64964, - 64964 - ], - "mapped", - [ - 1593, - 1580, - 1605 - ] - ], - [ - [ - 64965, - 64965 - ], - "mapped", - [ - 1589, - 1605, - 1605 - ] - ], - [ - [ - 64966, - 64966 - ], - "mapped", - [ - 1587, - 1582, - 1610 - ] - ], - [ - [ - 64967, - 64967 - ], - "mapped", - [ - 1606, - 1580, - 1610 - ] - ], - [ - [ - 64968, - 64975 - ], - "disallowed" - ], - [ - [ - 64976, - 65007 - ], - "disallowed" - ], - [ - [ - 65008, - 65008 - ], - "mapped", - [ - 1589, - 1604, - 1746 - ] - ], - [ - [ - 65009, - 65009 - ], - "mapped", - [ - 1602, - 1604, - 1746 - ] - ], - [ - [ - 65010, - 65010 - ], - "mapped", - [ - 1575, - 1604, - 1604, - 1607 - ] - ], - [ - [ - 65011, - 65011 - ], - "mapped", - [ - 1575, - 1603, - 1576, - 1585 - ] - ], - [ - [ - 65012, - 65012 - ], - "mapped", - [ - 1605, - 1581, - 1605, - 1583 - ] - ], - [ - [ - 65013, - 65013 - ], - "mapped", - [ - 1589, - 1604, - 1593, - 1605 - ] - ], - [ - [ - 65014, - 65014 - ], - "mapped", - [ - 1585, - 1587, - 1608, - 1604 - ] - ], - [ - [ - 65015, - 65015 - ], - "mapped", - [ - 1593, - 1604, - 1610, - 1607 - ] - ], - [ - [ - 65016, - 65016 - ], - "mapped", - [ - 1608, - 1587, - 1604, - 1605 - ] - ], - [ - [ - 65017, - 65017 - ], - "mapped", - [ - 1589, - 1604, - 1609 - ] - ], - [ - [ - 65018, - 65018 - ], - "disallowed_STD3_mapped", - [ - 1589, - 1604, - 1609, - 32, - 1575, - 1604, - 1604, - 1607, - 32, - 1593, - 1604, - 1610, - 1607, - 32, - 1608, - 1587, - 1604, - 1605 - ] - ], - [ - [ - 65019, - 65019 - ], - "disallowed_STD3_mapped", - [ - 1580, - 1604, - 32, - 1580, - 1604, - 1575, - 1604, - 1607 - ] - ], - [ - [ - 65020, - 65020 - ], - "mapped", - [ - 1585, - 1740, - 1575, - 1604 - ] - ], - [ - [ - 65021, - 65021 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65022, - 65023 - ], - "disallowed" - ], - [ - [ - 65024, - 65039 - ], - "ignored" - ], - [ - [ - 65040, - 65040 - ], - "disallowed_STD3_mapped", - [ - 44 - ] - ], - [ - [ - 65041, - 65041 - ], - "mapped", - [ - 12289 - ] - ], - [ - [ - 65042, - 65042 - ], - "disallowed" - ], - [ - [ - 65043, - 65043 - ], - "disallowed_STD3_mapped", - [ - 58 - ] - ], - [ - [ - 65044, - 65044 - ], - "disallowed_STD3_mapped", - [ - 59 - ] - ], - [ - [ - 65045, - 65045 - ], - "disallowed_STD3_mapped", - [ - 33 - ] - ], - [ - [ - 65046, - 65046 - ], - "disallowed_STD3_mapped", - [ - 63 - ] - ], - [ - [ - 65047, - 65047 - ], - "mapped", - [ - 12310 - ] - ], - [ - [ - 65048, - 65048 - ], - "mapped", - [ - 12311 - ] - ], - [ - [ - 65049, - 65049 - ], - "disallowed" - ], - [ - [ - 65050, - 65055 - ], - "disallowed" - ], - [ - [ - 65056, - 65059 - ], - "valid" - ], - [ - [ - 65060, - 65062 - ], - "valid" - ], - [ - [ - 65063, - 65069 - ], - "valid" - ], - [ - [ - 65070, - 65071 - ], - "valid" - ], - [ - [ - 65072, - 65072 - ], - "disallowed" - ], - [ - [ - 65073, - 65073 - ], - "mapped", - [ - 8212 - ] - ], - [ - [ - 65074, - 65074 - ], - "mapped", - [ - 8211 - ] - ], - [ - [ - 65075, - 65076 - ], - "disallowed_STD3_mapped", - [ - 95 - ] - ], - [ - [ - 65077, - 65077 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 65078, - 65078 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 65079, - 65079 - ], - "disallowed_STD3_mapped", - [ - 123 - ] - ], - [ - [ - 65080, - 65080 - ], - "disallowed_STD3_mapped", - [ - 125 - ] - ], - [ - [ - 65081, - 65081 - ], - "mapped", - [ - 12308 - ] - ], - [ - [ - 65082, - 65082 - ], - "mapped", - [ - 12309 - ] - ], - [ - [ - 65083, - 65083 - ], - "mapped", - [ - 12304 - ] - ], - [ - [ - 65084, - 65084 - ], - "mapped", - [ - 12305 - ] - ], - [ - [ - 65085, - 65085 - ], - "mapped", - [ - 12298 - ] - ], - [ - [ - 65086, - 65086 - ], - "mapped", - [ - 12299 - ] - ], - [ - [ - 65087, - 65087 - ], - "mapped", - [ - 12296 - ] - ], - [ - [ - 65088, - 65088 - ], - "mapped", - [ - 12297 - ] - ], - [ - [ - 65089, - 65089 - ], - "mapped", - [ - 12300 - ] - ], - [ - [ - 65090, - 65090 - ], - "mapped", - [ - 12301 - ] - ], - [ - [ - 65091, - 65091 - ], - "mapped", - [ - 12302 - ] - ], - [ - [ - 65092, - 65092 - ], - "mapped", - [ - 12303 - ] - ], - [ - [ - 65093, - 65094 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65095, - 65095 - ], - "disallowed_STD3_mapped", - [ - 91 - ] - ], - [ - [ - 65096, - 65096 - ], - "disallowed_STD3_mapped", - [ - 93 - ] - ], - [ - [ - 65097, - 65100 - ], - "disallowed_STD3_mapped", - [ - 32, - 773 - ] - ], - [ - [ - 65101, - 65103 - ], - "disallowed_STD3_mapped", - [ - 95 - ] - ], - [ - [ - 65104, - 65104 - ], - "disallowed_STD3_mapped", - [ - 44 - ] - ], - [ - [ - 65105, - 65105 - ], - "mapped", - [ - 12289 - ] - ], - [ - [ - 65106, - 65106 - ], - "disallowed" - ], - [ - [ - 65107, - 65107 - ], - "disallowed" - ], - [ - [ - 65108, - 65108 - ], - "disallowed_STD3_mapped", - [ - 59 - ] - ], - [ - [ - 65109, - 65109 - ], - "disallowed_STD3_mapped", - [ - 58 - ] - ], - [ - [ - 65110, - 65110 - ], - "disallowed_STD3_mapped", - [ - 63 - ] - ], - [ - [ - 65111, - 65111 - ], - "disallowed_STD3_mapped", - [ - 33 - ] - ], - [ - [ - 65112, - 65112 - ], - "mapped", - [ - 8212 - ] - ], - [ - [ - 65113, - 65113 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 65114, - 65114 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 65115, - 65115 - ], - "disallowed_STD3_mapped", - [ - 123 - ] - ], - [ - [ - 65116, - 65116 - ], - "disallowed_STD3_mapped", - [ - 125 - ] - ], - [ - [ - 65117, - 65117 - ], - "mapped", - [ - 12308 - ] - ], - [ - [ - 65118, - 65118 - ], - "mapped", - [ - 12309 - ] - ], - [ - [ - 65119, - 65119 - ], - "disallowed_STD3_mapped", - [ - 35 - ] - ], - [ - [ - 65120, - 65120 - ], - "disallowed_STD3_mapped", - [ - 38 - ] - ], - [ - [ - 65121, - 65121 - ], - "disallowed_STD3_mapped", - [ - 42 - ] - ], - [ - [ - 65122, - 65122 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 65123, - 65123 - ], - "mapped", - [ - 45 - ] - ], - [ - [ - 65124, - 65124 - ], - "disallowed_STD3_mapped", - [ - 60 - ] - ], - [ - [ - 65125, - 65125 - ], - "disallowed_STD3_mapped", - [ - 62 - ] - ], - [ - [ - 65126, - 65126 - ], - "disallowed_STD3_mapped", - [ - 61 - ] - ], - [ - [ - 65127, - 65127 - ], - "disallowed" - ], - [ - [ - 65128, - 65128 - ], - "disallowed_STD3_mapped", - [ - 92 - ] - ], - [ - [ - 65129, - 65129 - ], - "disallowed_STD3_mapped", - [ - 36 - ] - ], - [ - [ - 65130, - 65130 - ], - "disallowed_STD3_mapped", - [ - 37 - ] - ], - [ - [ - 65131, - 65131 - ], - "disallowed_STD3_mapped", - [ - 64 - ] - ], - [ - [ - 65132, - 65135 - ], - "disallowed" - ], - [ - [ - 65136, - 65136 - ], - "disallowed_STD3_mapped", - [ - 32, - 1611 - ] - ], - [ - [ - 65137, - 65137 - ], - "mapped", - [ - 1600, - 1611 - ] - ], - [ - [ - 65138, - 65138 - ], - "disallowed_STD3_mapped", - [ - 32, - 1612 - ] - ], - [ - [ - 65139, - 65139 - ], - "valid" - ], - [ - [ - 65140, - 65140 - ], - "disallowed_STD3_mapped", - [ - 32, - 1613 - ] - ], - [ - [ - 65141, - 65141 - ], - "disallowed" - ], - [ - [ - 65142, - 65142 - ], - "disallowed_STD3_mapped", - [ - 32, - 1614 - ] - ], - [ - [ - 65143, - 65143 - ], - "mapped", - [ - 1600, - 1614 - ] - ], - [ - [ - 65144, - 65144 - ], - "disallowed_STD3_mapped", - [ - 32, - 1615 - ] - ], - [ - [ - 65145, - 65145 - ], - "mapped", - [ - 1600, - 1615 - ] - ], - [ - [ - 65146, - 65146 - ], - "disallowed_STD3_mapped", - [ - 32, - 1616 - ] - ], - [ - [ - 65147, - 65147 - ], - "mapped", - [ - 1600, - 1616 - ] - ], - [ - [ - 65148, - 65148 - ], - "disallowed_STD3_mapped", - [ - 32, - 1617 - ] - ], - [ - [ - 65149, - 65149 - ], - "mapped", - [ - 1600, - 1617 - ] - ], - [ - [ - 65150, - 65150 - ], - "disallowed_STD3_mapped", - [ - 32, - 1618 - ] - ], - [ - [ - 65151, - 65151 - ], - "mapped", - [ - 1600, - 1618 - ] - ], - [ - [ - 65152, - 65152 - ], - "mapped", - [ - 1569 - ] - ], - [ - [ - 65153, - 65154 - ], - "mapped", - [ - 1570 - ] - ], - [ - [ - 65155, - 65156 - ], - "mapped", - [ - 1571 - ] - ], - [ - [ - 65157, - 65158 - ], - "mapped", - [ - 1572 - ] - ], - [ - [ - 65159, - 65160 - ], - "mapped", - [ - 1573 - ] - ], - [ - [ - 65161, - 65164 - ], - "mapped", - [ - 1574 - ] - ], - [ - [ - 65165, - 65166 - ], - "mapped", - [ - 1575 - ] - ], - [ - [ - 65167, - 65170 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 65171, - 65172 - ], - "mapped", - [ - 1577 - ] - ], - [ - [ - 65173, - 65176 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 65177, - 65180 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 65181, - 65184 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 65185, - 65188 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 65189, - 65192 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 65193, - 65194 - ], - "mapped", - [ - 1583 - ] - ], - [ - [ - 65195, - 65196 - ], - "mapped", - [ - 1584 - ] - ], - [ - [ - 65197, - 65198 - ], - "mapped", - [ - 1585 - ] - ], - [ - [ - 65199, - 65200 - ], - "mapped", - [ - 1586 - ] - ], - [ - [ - 65201, - 65204 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 65205, - 65208 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 65209, - 65212 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 65213, - 65216 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 65217, - 65220 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 65221, - 65224 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 65225, - 65228 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 65229, - 65232 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 65233, - 65236 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 65237, - 65240 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 65241, - 65244 - ], - "mapped", - [ - 1603 - ] - ], - [ - [ - 65245, - 65248 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 65249, - 65252 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 65253, - 65256 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 65257, - 65260 - ], - "mapped", - [ - 1607 - ] - ], - [ - [ - 65261, - 65262 - ], - "mapped", - [ - 1608 - ] - ], - [ - [ - 65263, - 65264 - ], - "mapped", - [ - 1609 - ] - ], - [ - [ - 65265, - 65268 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 65269, - 65270 - ], - "mapped", - [ - 1604, - 1570 - ] - ], - [ - [ - 65271, - 65272 - ], - "mapped", - [ - 1604, - 1571 - ] - ], - [ - [ - 65273, - 65274 - ], - "mapped", - [ - 1604, - 1573 - ] - ], - [ - [ - 65275, - 65276 - ], - "mapped", - [ - 1604, - 1575 - ] - ], - [ - [ - 65277, - 65278 - ], - "disallowed" - ], - [ - [ - 65279, - 65279 - ], - "ignored" - ], - [ - [ - 65280, - 65280 - ], - "disallowed" - ], - [ - [ - 65281, - 65281 - ], - "disallowed_STD3_mapped", - [ - 33 - ] - ], - [ - [ - 65282, - 65282 - ], - "disallowed_STD3_mapped", - [ - 34 - ] - ], - [ - [ - 65283, - 65283 - ], - "disallowed_STD3_mapped", - [ - 35 - ] - ], - [ - [ - 65284, - 65284 - ], - "disallowed_STD3_mapped", - [ - 36 - ] - ], - [ - [ - 65285, - 65285 - ], - "disallowed_STD3_mapped", - [ - 37 - ] - ], - [ - [ - 65286, - 65286 - ], - "disallowed_STD3_mapped", - [ - 38 - ] - ], - [ - [ - 65287, - 65287 - ], - "disallowed_STD3_mapped", - [ - 39 - ] - ], - [ - [ - 65288, - 65288 - ], - "disallowed_STD3_mapped", - [ - 40 - ] - ], - [ - [ - 65289, - 65289 - ], - "disallowed_STD3_mapped", - [ - 41 - ] - ], - [ - [ - 65290, - 65290 - ], - "disallowed_STD3_mapped", - [ - 42 - ] - ], - [ - [ - 65291, - 65291 - ], - "disallowed_STD3_mapped", - [ - 43 - ] - ], - [ - [ - 65292, - 65292 - ], - "disallowed_STD3_mapped", - [ - 44 - ] - ], - [ - [ - 65293, - 65293 - ], - "mapped", - [ - 45 - ] - ], - [ - [ - 65294, - 65294 - ], - "mapped", - [ - 46 - ] - ], - [ - [ - 65295, - 65295 - ], - "disallowed_STD3_mapped", - [ - 47 - ] - ], - [ - [ - 65296, - 65296 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 65297, - 65297 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 65298, - 65298 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 65299, - 65299 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 65300, - 65300 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 65301, - 65301 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 65302, - 65302 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 65303, - 65303 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 65304, - 65304 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 65305, - 65305 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 65306, - 65306 - ], - "disallowed_STD3_mapped", - [ - 58 - ] - ], - [ - [ - 65307, - 65307 - ], - "disallowed_STD3_mapped", - [ - 59 - ] - ], - [ - [ - 65308, - 65308 - ], - "disallowed_STD3_mapped", - [ - 60 - ] - ], - [ - [ - 65309, - 65309 - ], - "disallowed_STD3_mapped", - [ - 61 - ] - ], - [ - [ - 65310, - 65310 - ], - "disallowed_STD3_mapped", - [ - 62 - ] - ], - [ - [ - 65311, - 65311 - ], - "disallowed_STD3_mapped", - [ - 63 - ] - ], - [ - [ - 65312, - 65312 - ], - "disallowed_STD3_mapped", - [ - 64 - ] - ], - [ - [ - 65313, - 65313 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 65314, - 65314 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 65315, - 65315 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 65316, - 65316 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 65317, - 65317 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 65318, - 65318 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 65319, - 65319 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 65320, - 65320 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 65321, - 65321 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 65322, - 65322 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 65323, - 65323 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 65324, - 65324 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 65325, - 65325 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 65326, - 65326 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 65327, - 65327 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 65328, - 65328 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 65329, - 65329 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 65330, - 65330 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 65331, - 65331 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 65332, - 65332 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 65333, - 65333 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 65334, - 65334 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 65335, - 65335 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 65336, - 65336 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 65337, - 65337 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 65338, - 65338 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 65339, - 65339 - ], - "disallowed_STD3_mapped", - [ - 91 - ] - ], - [ - [ - 65340, - 65340 - ], - "disallowed_STD3_mapped", - [ - 92 - ] - ], - [ - [ - 65341, - 65341 - ], - "disallowed_STD3_mapped", - [ - 93 - ] - ], - [ - [ - 65342, - 65342 - ], - "disallowed_STD3_mapped", - [ - 94 - ] - ], - [ - [ - 65343, - 65343 - ], - "disallowed_STD3_mapped", - [ - 95 - ] - ], - [ - [ - 65344, - 65344 - ], - "disallowed_STD3_mapped", - [ - 96 - ] - ], - [ - [ - 65345, - 65345 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 65346, - 65346 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 65347, - 65347 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 65348, - 65348 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 65349, - 65349 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 65350, - 65350 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 65351, - 65351 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 65352, - 65352 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 65353, - 65353 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 65354, - 65354 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 65355, - 65355 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 65356, - 65356 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 65357, - 65357 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 65358, - 65358 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 65359, - 65359 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 65360, - 65360 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 65361, - 65361 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 65362, - 65362 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 65363, - 65363 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 65364, - 65364 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 65365, - 65365 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 65366, - 65366 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 65367, - 65367 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 65368, - 65368 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 65369, - 65369 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 65370, - 65370 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 65371, - 65371 - ], - "disallowed_STD3_mapped", - [ - 123 - ] - ], - [ - [ - 65372, - 65372 - ], - "disallowed_STD3_mapped", - [ - 124 - ] - ], - [ - [ - 65373, - 65373 - ], - "disallowed_STD3_mapped", - [ - 125 - ] - ], - [ - [ - 65374, - 65374 - ], - "disallowed_STD3_mapped", - [ - 126 - ] - ], - [ - [ - 65375, - 65375 - ], - "mapped", - [ - 10629 - ] - ], - [ - [ - 65376, - 65376 - ], - "mapped", - [ - 10630 - ] - ], - [ - [ - 65377, - 65377 - ], - "mapped", - [ - 46 - ] - ], - [ - [ - 65378, - 65378 - ], - "mapped", - [ - 12300 - ] - ], - [ - [ - 65379, - 65379 - ], - "mapped", - [ - 12301 - ] - ], - [ - [ - 65380, - 65380 - ], - "mapped", - [ - 12289 - ] - ], - [ - [ - 65381, - 65381 - ], - "mapped", - [ - 12539 - ] - ], - [ - [ - 65382, - 65382 - ], - "mapped", - [ - 12530 - ] - ], - [ - [ - 65383, - 65383 - ], - "mapped", - [ - 12449 - ] - ], - [ - [ - 65384, - 65384 - ], - "mapped", - [ - 12451 - ] - ], - [ - [ - 65385, - 65385 - ], - "mapped", - [ - 12453 - ] - ], - [ - [ - 65386, - 65386 - ], - "mapped", - [ - 12455 - ] - ], - [ - [ - 65387, - 65387 - ], - "mapped", - [ - 12457 - ] - ], - [ - [ - 65388, - 65388 - ], - "mapped", - [ - 12515 - ] - ], - [ - [ - 65389, - 65389 - ], - "mapped", - [ - 12517 - ] - ], - [ - [ - 65390, - 65390 - ], - "mapped", - [ - 12519 - ] - ], - [ - [ - 65391, - 65391 - ], - "mapped", - [ - 12483 - ] - ], - [ - [ - 65392, - 65392 - ], - "mapped", - [ - 12540 - ] - ], - [ - [ - 65393, - 65393 - ], - "mapped", - [ - 12450 - ] - ], - [ - [ - 65394, - 65394 - ], - "mapped", - [ - 12452 - ] - ], - [ - [ - 65395, - 65395 - ], - "mapped", - [ - 12454 - ] - ], - [ - [ - 65396, - 65396 - ], - "mapped", - [ - 12456 - ] - ], - [ - [ - 65397, - 65397 - ], - "mapped", - [ - 12458 - ] - ], - [ - [ - 65398, - 65398 - ], - "mapped", - [ - 12459 - ] - ], - [ - [ - 65399, - 65399 - ], - "mapped", - [ - 12461 - ] - ], - [ - [ - 65400, - 65400 - ], - "mapped", - [ - 12463 - ] - ], - [ - [ - 65401, - 65401 - ], - "mapped", - [ - 12465 - ] - ], - [ - [ - 65402, - 65402 - ], - "mapped", - [ - 12467 - ] - ], - [ - [ - 65403, - 65403 - ], - "mapped", - [ - 12469 - ] - ], - [ - [ - 65404, - 65404 - ], - "mapped", - [ - 12471 - ] - ], - [ - [ - 65405, - 65405 - ], - "mapped", - [ - 12473 - ] - ], - [ - [ - 65406, - 65406 - ], - "mapped", - [ - 12475 - ] - ], - [ - [ - 65407, - 65407 - ], - "mapped", - [ - 12477 - ] - ], - [ - [ - 65408, - 65408 - ], - "mapped", - [ - 12479 - ] - ], - [ - [ - 65409, - 65409 - ], - "mapped", - [ - 12481 - ] - ], - [ - [ - 65410, - 65410 - ], - "mapped", - [ - 12484 - ] - ], - [ - [ - 65411, - 65411 - ], - "mapped", - [ - 12486 - ] - ], - [ - [ - 65412, - 65412 - ], - "mapped", - [ - 12488 - ] - ], - [ - [ - 65413, - 65413 - ], - "mapped", - [ - 12490 - ] - ], - [ - [ - 65414, - 65414 - ], - "mapped", - [ - 12491 - ] - ], - [ - [ - 65415, - 65415 - ], - "mapped", - [ - 12492 - ] - ], - [ - [ - 65416, - 65416 - ], - "mapped", - [ - 12493 - ] - ], - [ - [ - 65417, - 65417 - ], - "mapped", - [ - 12494 - ] - ], - [ - [ - 65418, - 65418 - ], - "mapped", - [ - 12495 - ] - ], - [ - [ - 65419, - 65419 - ], - "mapped", - [ - 12498 - ] - ], - [ - [ - 65420, - 65420 - ], - "mapped", - [ - 12501 - ] - ], - [ - [ - 65421, - 65421 - ], - "mapped", - [ - 12504 - ] - ], - [ - [ - 65422, - 65422 - ], - "mapped", - [ - 12507 - ] - ], - [ - [ - 65423, - 65423 - ], - "mapped", - [ - 12510 - ] - ], - [ - [ - 65424, - 65424 - ], - "mapped", - [ - 12511 - ] - ], - [ - [ - 65425, - 65425 - ], - "mapped", - [ - 12512 - ] - ], - [ - [ - 65426, - 65426 - ], - "mapped", - [ - 12513 - ] - ], - [ - [ - 65427, - 65427 - ], - "mapped", - [ - 12514 - ] - ], - [ - [ - 65428, - 65428 - ], - "mapped", - [ - 12516 - ] - ], - [ - [ - 65429, - 65429 - ], - "mapped", - [ - 12518 - ] - ], - [ - [ - 65430, - 65430 - ], - "mapped", - [ - 12520 - ] - ], - [ - [ - 65431, - 65431 - ], - "mapped", - [ - 12521 - ] - ], - [ - [ - 65432, - 65432 - ], - "mapped", - [ - 12522 - ] - ], - [ - [ - 65433, - 65433 - ], - "mapped", - [ - 12523 - ] - ], - [ - [ - 65434, - 65434 - ], - "mapped", - [ - 12524 - ] - ], - [ - [ - 65435, - 65435 - ], - "mapped", - [ - 12525 - ] - ], - [ - [ - 65436, - 65436 - ], - "mapped", - [ - 12527 - ] - ], - [ - [ - 65437, - 65437 - ], - "mapped", - [ - 12531 - ] - ], - [ - [ - 65438, - 65438 - ], - "mapped", - [ - 12441 - ] - ], - [ - [ - 65439, - 65439 - ], - "mapped", - [ - 12442 - ] - ], - [ - [ - 65440, - 65440 - ], - "disallowed" - ], - [ - [ - 65441, - 65441 - ], - "mapped", - [ - 4352 - ] - ], - [ - [ - 65442, - 65442 - ], - "mapped", - [ - 4353 - ] - ], - [ - [ - 65443, - 65443 - ], - "mapped", - [ - 4522 - ] - ], - [ - [ - 65444, - 65444 - ], - "mapped", - [ - 4354 - ] - ], - [ - [ - 65445, - 65445 - ], - "mapped", - [ - 4524 - ] - ], - [ - [ - 65446, - 65446 - ], - "mapped", - [ - 4525 - ] - ], - [ - [ - 65447, - 65447 - ], - "mapped", - [ - 4355 - ] - ], - [ - [ - 65448, - 65448 - ], - "mapped", - [ - 4356 - ] - ], - [ - [ - 65449, - 65449 - ], - "mapped", - [ - 4357 - ] - ], - [ - [ - 65450, - 65450 - ], - "mapped", - [ - 4528 - ] - ], - [ - [ - 65451, - 65451 - ], - "mapped", - [ - 4529 - ] - ], - [ - [ - 65452, - 65452 - ], - "mapped", - [ - 4530 - ] - ], - [ - [ - 65453, - 65453 - ], - "mapped", - [ - 4531 - ] - ], - [ - [ - 65454, - 65454 - ], - "mapped", - [ - 4532 - ] - ], - [ - [ - 65455, - 65455 - ], - "mapped", - [ - 4533 - ] - ], - [ - [ - 65456, - 65456 - ], - "mapped", - [ - 4378 - ] - ], - [ - [ - 65457, - 65457 - ], - "mapped", - [ - 4358 - ] - ], - [ - [ - 65458, - 65458 - ], - "mapped", - [ - 4359 - ] - ], - [ - [ - 65459, - 65459 - ], - "mapped", - [ - 4360 - ] - ], - [ - [ - 65460, - 65460 - ], - "mapped", - [ - 4385 - ] - ], - [ - [ - 65461, - 65461 - ], - "mapped", - [ - 4361 - ] - ], - [ - [ - 65462, - 65462 - ], - "mapped", - [ - 4362 - ] - ], - [ - [ - 65463, - 65463 - ], - "mapped", - [ - 4363 - ] - ], - [ - [ - 65464, - 65464 - ], - "mapped", - [ - 4364 - ] - ], - [ - [ - 65465, - 65465 - ], - "mapped", - [ - 4365 - ] - ], - [ - [ - 65466, - 65466 - ], - "mapped", - [ - 4366 - ] - ], - [ - [ - 65467, - 65467 - ], - "mapped", - [ - 4367 - ] - ], - [ - [ - 65468, - 65468 - ], - "mapped", - [ - 4368 - ] - ], - [ - [ - 65469, - 65469 - ], - "mapped", - [ - 4369 - ] - ], - [ - [ - 65470, - 65470 - ], - "mapped", - [ - 4370 - ] - ], - [ - [ - 65471, - 65473 - ], - "disallowed" - ], - [ - [ - 65474, - 65474 - ], - "mapped", - [ - 4449 - ] - ], - [ - [ - 65475, - 65475 - ], - "mapped", - [ - 4450 - ] - ], - [ - [ - 65476, - 65476 - ], - "mapped", - [ - 4451 - ] - ], - [ - [ - 65477, - 65477 - ], - "mapped", - [ - 4452 - ] - ], - [ - [ - 65478, - 65478 - ], - "mapped", - [ - 4453 - ] - ], - [ - [ - 65479, - 65479 - ], - "mapped", - [ - 4454 - ] - ], - [ - [ - 65480, - 65481 - ], - "disallowed" - ], - [ - [ - 65482, - 65482 - ], - "mapped", - [ - 4455 - ] - ], - [ - [ - 65483, - 65483 - ], - "mapped", - [ - 4456 - ] - ], - [ - [ - 65484, - 65484 - ], - "mapped", - [ - 4457 - ] - ], - [ - [ - 65485, - 65485 - ], - "mapped", - [ - 4458 - ] - ], - [ - [ - 65486, - 65486 - ], - "mapped", - [ - 4459 - ] - ], - [ - [ - 65487, - 65487 - ], - "mapped", - [ - 4460 - ] - ], - [ - [ - 65488, - 65489 - ], - "disallowed" - ], - [ - [ - 65490, - 65490 - ], - "mapped", - [ - 4461 - ] - ], - [ - [ - 65491, - 65491 - ], - "mapped", - [ - 4462 - ] - ], - [ - [ - 65492, - 65492 - ], - "mapped", - [ - 4463 - ] - ], - [ - [ - 65493, - 65493 - ], - "mapped", - [ - 4464 - ] - ], - [ - [ - 65494, - 65494 - ], - "mapped", - [ - 4465 - ] - ], - [ - [ - 65495, - 65495 - ], - "mapped", - [ - 4466 - ] - ], - [ - [ - 65496, - 65497 - ], - "disallowed" - ], - [ - [ - 65498, - 65498 - ], - "mapped", - [ - 4467 - ] - ], - [ - [ - 65499, - 65499 - ], - "mapped", - [ - 4468 - ] - ], - [ - [ - 65500, - 65500 - ], - "mapped", - [ - 4469 - ] - ], - [ - [ - 65501, - 65503 - ], - "disallowed" - ], - [ - [ - 65504, - 65504 - ], - "mapped", - [ - 162 - ] - ], - [ - [ - 65505, - 65505 - ], - "mapped", - [ - 163 - ] - ], - [ - [ - 65506, - 65506 - ], - "mapped", - [ - 172 - ] - ], - [ - [ - 65507, - 65507 - ], - "disallowed_STD3_mapped", - [ - 32, - 772 - ] - ], - [ - [ - 65508, - 65508 - ], - "mapped", - [ - 166 - ] - ], - [ - [ - 65509, - 65509 - ], - "mapped", - [ - 165 - ] - ], - [ - [ - 65510, - 65510 - ], - "mapped", - [ - 8361 - ] - ], - [ - [ - 65511, - 65511 - ], - "disallowed" - ], - [ - [ - 65512, - 65512 - ], - "mapped", - [ - 9474 - ] - ], - [ - [ - 65513, - 65513 - ], - "mapped", - [ - 8592 - ] - ], - [ - [ - 65514, - 65514 - ], - "mapped", - [ - 8593 - ] - ], - [ - [ - 65515, - 65515 - ], - "mapped", - [ - 8594 - ] - ], - [ - [ - 65516, - 65516 - ], - "mapped", - [ - 8595 - ] - ], - [ - [ - 65517, - 65517 - ], - "mapped", - [ - 9632 - ] - ], - [ - [ - 65518, - 65518 - ], - "mapped", - [ - 9675 - ] - ], - [ - [ - 65519, - 65528 - ], - "disallowed" - ], - [ - [ - 65529, - 65531 - ], - "disallowed" - ], - [ - [ - 65532, - 65532 - ], - "disallowed" - ], - [ - [ - 65533, - 65533 - ], - "disallowed" - ], - [ - [ - 65534, - 65535 - ], - "disallowed" - ], - [ - [ - 65536, - 65547 - ], - "valid" - ], - [ - [ - 65548, - 65548 - ], - "disallowed" - ], - [ - [ - 65549, - 65574 - ], - "valid" - ], - [ - [ - 65575, - 65575 - ], - "disallowed" - ], - [ - [ - 65576, - 65594 - ], - "valid" - ], - [ - [ - 65595, - 65595 - ], - "disallowed" - ], - [ - [ - 65596, - 65597 - ], - "valid" - ], - [ - [ - 65598, - 65598 - ], - "disallowed" - ], - [ - [ - 65599, - 65613 - ], - "valid" - ], - [ - [ - 65614, - 65615 - ], - "disallowed" - ], - [ - [ - 65616, - 65629 - ], - "valid" - ], - [ - [ - 65630, - 65663 - ], - "disallowed" - ], - [ - [ - 65664, - 65786 - ], - "valid" - ], - [ - [ - 65787, - 65791 - ], - "disallowed" - ], - [ - [ - 65792, - 65794 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65795, - 65798 - ], - "disallowed" - ], - [ - [ - 65799, - 65843 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65844, - 65846 - ], - "disallowed" - ], - [ - [ - 65847, - 65855 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65856, - 65930 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65931, - 65932 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65933, - 65935 - ], - "disallowed" - ], - [ - [ - 65936, - 65947 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65948, - 65951 - ], - "disallowed" - ], - [ - [ - 65952, - 65952 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 65953, - 65999 - ], - "disallowed" - ], - [ - [ - 66000, - 66044 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66045, - 66045 - ], - "valid" - ], - [ - [ - 66046, - 66175 - ], - "disallowed" - ], - [ - [ - 66176, - 66204 - ], - "valid" - ], - [ - [ - 66205, - 66207 - ], - "disallowed" - ], - [ - [ - 66208, - 66256 - ], - "valid" - ], - [ - [ - 66257, - 66271 - ], - "disallowed" - ], - [ - [ - 66272, - 66272 - ], - "valid" - ], - [ - [ - 66273, - 66299 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66300, - 66303 - ], - "disallowed" - ], - [ - [ - 66304, - 66334 - ], - "valid" - ], - [ - [ - 66335, - 66335 - ], - "valid" - ], - [ - [ - 66336, - 66339 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66340, - 66351 - ], - "disallowed" - ], - [ - [ - 66352, - 66368 - ], - "valid" - ], - [ - [ - 66369, - 66369 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66370, - 66377 - ], - "valid" - ], - [ - [ - 66378, - 66378 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66379, - 66383 - ], - "disallowed" - ], - [ - [ - 66384, - 66426 - ], - "valid" - ], - [ - [ - 66427, - 66431 - ], - "disallowed" - ], - [ - [ - 66432, - 66461 - ], - "valid" - ], - [ - [ - 66462, - 66462 - ], - "disallowed" - ], - [ - [ - 66463, - 66463 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66464, - 66499 - ], - "valid" - ], - [ - [ - 66500, - 66503 - ], - "disallowed" - ], - [ - [ - 66504, - 66511 - ], - "valid" - ], - [ - [ - 66512, - 66517 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66518, - 66559 - ], - "disallowed" - ], - [ - [ - 66560, - 66560 - ], - "mapped", - [ - 66600 - ] - ], - [ - [ - 66561, - 66561 - ], - "mapped", - [ - 66601 - ] - ], - [ - [ - 66562, - 66562 - ], - "mapped", - [ - 66602 - ] - ], - [ - [ - 66563, - 66563 - ], - "mapped", - [ - 66603 - ] - ], - [ - [ - 66564, - 66564 - ], - "mapped", - [ - 66604 - ] - ], - [ - [ - 66565, - 66565 - ], - "mapped", - [ - 66605 - ] - ], - [ - [ - 66566, - 66566 - ], - "mapped", - [ - 66606 - ] - ], - [ - [ - 66567, - 66567 - ], - "mapped", - [ - 66607 - ] - ], - [ - [ - 66568, - 66568 - ], - "mapped", - [ - 66608 - ] - ], - [ - [ - 66569, - 66569 - ], - "mapped", - [ - 66609 - ] - ], - [ - [ - 66570, - 66570 - ], - "mapped", - [ - 66610 - ] - ], - [ - [ - 66571, - 66571 - ], - "mapped", - [ - 66611 - ] - ], - [ - [ - 66572, - 66572 - ], - "mapped", - [ - 66612 - ] - ], - [ - [ - 66573, - 66573 - ], - "mapped", - [ - 66613 - ] - ], - [ - [ - 66574, - 66574 - ], - "mapped", - [ - 66614 - ] - ], - [ - [ - 66575, - 66575 - ], - "mapped", - [ - 66615 - ] - ], - [ - [ - 66576, - 66576 - ], - "mapped", - [ - 66616 - ] - ], - [ - [ - 66577, - 66577 - ], - "mapped", - [ - 66617 - ] - ], - [ - [ - 66578, - 66578 - ], - "mapped", - [ - 66618 - ] - ], - [ - [ - 66579, - 66579 - ], - "mapped", - [ - 66619 - ] - ], - [ - [ - 66580, - 66580 - ], - "mapped", - [ - 66620 - ] - ], - [ - [ - 66581, - 66581 - ], - "mapped", - [ - 66621 - ] - ], - [ - [ - 66582, - 66582 - ], - "mapped", - [ - 66622 - ] - ], - [ - [ - 66583, - 66583 - ], - "mapped", - [ - 66623 - ] - ], - [ - [ - 66584, - 66584 - ], - "mapped", - [ - 66624 - ] - ], - [ - [ - 66585, - 66585 - ], - "mapped", - [ - 66625 - ] - ], - [ - [ - 66586, - 66586 - ], - "mapped", - [ - 66626 - ] - ], - [ - [ - 66587, - 66587 - ], - "mapped", - [ - 66627 - ] - ], - [ - [ - 66588, - 66588 - ], - "mapped", - [ - 66628 - ] - ], - [ - [ - 66589, - 66589 - ], - "mapped", - [ - 66629 - ] - ], - [ - [ - 66590, - 66590 - ], - "mapped", - [ - 66630 - ] - ], - [ - [ - 66591, - 66591 - ], - "mapped", - [ - 66631 - ] - ], - [ - [ - 66592, - 66592 - ], - "mapped", - [ - 66632 - ] - ], - [ - [ - 66593, - 66593 - ], - "mapped", - [ - 66633 - ] - ], - [ - [ - 66594, - 66594 - ], - "mapped", - [ - 66634 - ] - ], - [ - [ - 66595, - 66595 - ], - "mapped", - [ - 66635 - ] - ], - [ - [ - 66596, - 66596 - ], - "mapped", - [ - 66636 - ] - ], - [ - [ - 66597, - 66597 - ], - "mapped", - [ - 66637 - ] - ], - [ - [ - 66598, - 66598 - ], - "mapped", - [ - 66638 - ] - ], - [ - [ - 66599, - 66599 - ], - "mapped", - [ - 66639 - ] - ], - [ - [ - 66600, - 66637 - ], - "valid" - ], - [ - [ - 66638, - 66717 - ], - "valid" - ], - [ - [ - 66718, - 66719 - ], - "disallowed" - ], - [ - [ - 66720, - 66729 - ], - "valid" - ], - [ - [ - 66730, - 66815 - ], - "disallowed" - ], - [ - [ - 66816, - 66855 - ], - "valid" - ], - [ - [ - 66856, - 66863 - ], - "disallowed" - ], - [ - [ - 66864, - 66915 - ], - "valid" - ], - [ - [ - 66916, - 66926 - ], - "disallowed" - ], - [ - [ - 66927, - 66927 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 66928, - 67071 - ], - "disallowed" - ], - [ - [ - 67072, - 67382 - ], - "valid" - ], - [ - [ - 67383, - 67391 - ], - "disallowed" - ], - [ - [ - 67392, - 67413 - ], - "valid" - ], - [ - [ - 67414, - 67423 - ], - "disallowed" - ], - [ - [ - 67424, - 67431 - ], - "valid" - ], - [ - [ - 67432, - 67583 - ], - "disallowed" - ], - [ - [ - 67584, - 67589 - ], - "valid" - ], - [ - [ - 67590, - 67591 - ], - "disallowed" - ], - [ - [ - 67592, - 67592 - ], - "valid" - ], - [ - [ - 67593, - 67593 - ], - "disallowed" - ], - [ - [ - 67594, - 67637 - ], - "valid" - ], - [ - [ - 67638, - 67638 - ], - "disallowed" - ], - [ - [ - 67639, - 67640 - ], - "valid" - ], - [ - [ - 67641, - 67643 - ], - "disallowed" - ], - [ - [ - 67644, - 67644 - ], - "valid" - ], - [ - [ - 67645, - 67646 - ], - "disallowed" - ], - [ - [ - 67647, - 67647 - ], - "valid" - ], - [ - [ - 67648, - 67669 - ], - "valid" - ], - [ - [ - 67670, - 67670 - ], - "disallowed" - ], - [ - [ - 67671, - 67679 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67680, - 67702 - ], - "valid" - ], - [ - [ - 67703, - 67711 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67712, - 67742 - ], - "valid" - ], - [ - [ - 67743, - 67750 - ], - "disallowed" - ], - [ - [ - 67751, - 67759 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67760, - 67807 - ], - "disallowed" - ], - [ - [ - 67808, - 67826 - ], - "valid" - ], - [ - [ - 67827, - 67827 - ], - "disallowed" - ], - [ - [ - 67828, - 67829 - ], - "valid" - ], - [ - [ - 67830, - 67834 - ], - "disallowed" - ], - [ - [ - 67835, - 67839 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67840, - 67861 - ], - "valid" - ], - [ - [ - 67862, - 67865 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67866, - 67867 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67868, - 67870 - ], - "disallowed" - ], - [ - [ - 67871, - 67871 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67872, - 67897 - ], - "valid" - ], - [ - [ - 67898, - 67902 - ], - "disallowed" - ], - [ - [ - 67903, - 67903 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 67904, - 67967 - ], - "disallowed" - ], - [ - [ - 67968, - 68023 - ], - "valid" - ], - [ - [ - 68024, - 68027 - ], - "disallowed" - ], - [ - [ - 68028, - 68029 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68030, - 68031 - ], - "valid" - ], - [ - [ - 68032, - 68047 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68048, - 68049 - ], - "disallowed" - ], - [ - [ - 68050, - 68095 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68096, - 68099 - ], - "valid" - ], - [ - [ - 68100, - 68100 - ], - "disallowed" - ], - [ - [ - 68101, - 68102 - ], - "valid" - ], - [ - [ - 68103, - 68107 - ], - "disallowed" - ], - [ - [ - 68108, - 68115 - ], - "valid" - ], - [ - [ - 68116, - 68116 - ], - "disallowed" - ], - [ - [ - 68117, - 68119 - ], - "valid" - ], - [ - [ - 68120, - 68120 - ], - "disallowed" - ], - [ - [ - 68121, - 68147 - ], - "valid" - ], - [ - [ - 68148, - 68151 - ], - "disallowed" - ], - [ - [ - 68152, - 68154 - ], - "valid" - ], - [ - [ - 68155, - 68158 - ], - "disallowed" - ], - [ - [ - 68159, - 68159 - ], - "valid" - ], - [ - [ - 68160, - 68167 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68168, - 68175 - ], - "disallowed" - ], - [ - [ - 68176, - 68184 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68185, - 68191 - ], - "disallowed" - ], - [ - [ - 68192, - 68220 - ], - "valid" - ], - [ - [ - 68221, - 68223 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68224, - 68252 - ], - "valid" - ], - [ - [ - 68253, - 68255 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68256, - 68287 - ], - "disallowed" - ], - [ - [ - 68288, - 68295 - ], - "valid" - ], - [ - [ - 68296, - 68296 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68297, - 68326 - ], - "valid" - ], - [ - [ - 68327, - 68330 - ], - "disallowed" - ], - [ - [ - 68331, - 68342 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68343, - 68351 - ], - "disallowed" - ], - [ - [ - 68352, - 68405 - ], - "valid" - ], - [ - [ - 68406, - 68408 - ], - "disallowed" - ], - [ - [ - 68409, - 68415 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68416, - 68437 - ], - "valid" - ], - [ - [ - 68438, - 68439 - ], - "disallowed" - ], - [ - [ - 68440, - 68447 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68448, - 68466 - ], - "valid" - ], - [ - [ - 68467, - 68471 - ], - "disallowed" - ], - [ - [ - 68472, - 68479 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68480, - 68497 - ], - "valid" - ], - [ - [ - 68498, - 68504 - ], - "disallowed" - ], - [ - [ - 68505, - 68508 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68509, - 68520 - ], - "disallowed" - ], - [ - [ - 68521, - 68527 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68528, - 68607 - ], - "disallowed" - ], - [ - [ - 68608, - 68680 - ], - "valid" - ], - [ - [ - 68681, - 68735 - ], - "disallowed" - ], - [ - [ - 68736, - 68736 - ], - "mapped", - [ - 68800 - ] - ], - [ - [ - 68737, - 68737 - ], - "mapped", - [ - 68801 - ] - ], - [ - [ - 68738, - 68738 - ], - "mapped", - [ - 68802 - ] - ], - [ - [ - 68739, - 68739 - ], - "mapped", - [ - 68803 - ] - ], - [ - [ - 68740, - 68740 - ], - "mapped", - [ - 68804 - ] - ], - [ - [ - 68741, - 68741 - ], - "mapped", - [ - 68805 - ] - ], - [ - [ - 68742, - 68742 - ], - "mapped", - [ - 68806 - ] - ], - [ - [ - 68743, - 68743 - ], - "mapped", - [ - 68807 - ] - ], - [ - [ - 68744, - 68744 - ], - "mapped", - [ - 68808 - ] - ], - [ - [ - 68745, - 68745 - ], - "mapped", - [ - 68809 - ] - ], - [ - [ - 68746, - 68746 - ], - "mapped", - [ - 68810 - ] - ], - [ - [ - 68747, - 68747 - ], - "mapped", - [ - 68811 - ] - ], - [ - [ - 68748, - 68748 - ], - "mapped", - [ - 68812 - ] - ], - [ - [ - 68749, - 68749 - ], - "mapped", - [ - 68813 - ] - ], - [ - [ - 68750, - 68750 - ], - "mapped", - [ - 68814 - ] - ], - [ - [ - 68751, - 68751 - ], - "mapped", - [ - 68815 - ] - ], - [ - [ - 68752, - 68752 - ], - "mapped", - [ - 68816 - ] - ], - [ - [ - 68753, - 68753 - ], - "mapped", - [ - 68817 - ] - ], - [ - [ - 68754, - 68754 - ], - "mapped", - [ - 68818 - ] - ], - [ - [ - 68755, - 68755 - ], - "mapped", - [ - 68819 - ] - ], - [ - [ - 68756, - 68756 - ], - "mapped", - [ - 68820 - ] - ], - [ - [ - 68757, - 68757 - ], - "mapped", - [ - 68821 - ] - ], - [ - [ - 68758, - 68758 - ], - "mapped", - [ - 68822 - ] - ], - [ - [ - 68759, - 68759 - ], - "mapped", - [ - 68823 - ] - ], - [ - [ - 68760, - 68760 - ], - "mapped", - [ - 68824 - ] - ], - [ - [ - 68761, - 68761 - ], - "mapped", - [ - 68825 - ] - ], - [ - [ - 68762, - 68762 - ], - "mapped", - [ - 68826 - ] - ], - [ - [ - 68763, - 68763 - ], - "mapped", - [ - 68827 - ] - ], - [ - [ - 68764, - 68764 - ], - "mapped", - [ - 68828 - ] - ], - [ - [ - 68765, - 68765 - ], - "mapped", - [ - 68829 - ] - ], - [ - [ - 68766, - 68766 - ], - "mapped", - [ - 68830 - ] - ], - [ - [ - 68767, - 68767 - ], - "mapped", - [ - 68831 - ] - ], - [ - [ - 68768, - 68768 - ], - "mapped", - [ - 68832 - ] - ], - [ - [ - 68769, - 68769 - ], - "mapped", - [ - 68833 - ] - ], - [ - [ - 68770, - 68770 - ], - "mapped", - [ - 68834 - ] - ], - [ - [ - 68771, - 68771 - ], - "mapped", - [ - 68835 - ] - ], - [ - [ - 68772, - 68772 - ], - "mapped", - [ - 68836 - ] - ], - [ - [ - 68773, - 68773 - ], - "mapped", - [ - 68837 - ] - ], - [ - [ - 68774, - 68774 - ], - "mapped", - [ - 68838 - ] - ], - [ - [ - 68775, - 68775 - ], - "mapped", - [ - 68839 - ] - ], - [ - [ - 68776, - 68776 - ], - "mapped", - [ - 68840 - ] - ], - [ - [ - 68777, - 68777 - ], - "mapped", - [ - 68841 - ] - ], - [ - [ - 68778, - 68778 - ], - "mapped", - [ - 68842 - ] - ], - [ - [ - 68779, - 68779 - ], - "mapped", - [ - 68843 - ] - ], - [ - [ - 68780, - 68780 - ], - "mapped", - [ - 68844 - ] - ], - [ - [ - 68781, - 68781 - ], - "mapped", - [ - 68845 - ] - ], - [ - [ - 68782, - 68782 - ], - "mapped", - [ - 68846 - ] - ], - [ - [ - 68783, - 68783 - ], - "mapped", - [ - 68847 - ] - ], - [ - [ - 68784, - 68784 - ], - "mapped", - [ - 68848 - ] - ], - [ - [ - 68785, - 68785 - ], - "mapped", - [ - 68849 - ] - ], - [ - [ - 68786, - 68786 - ], - "mapped", - [ - 68850 - ] - ], - [ - [ - 68787, - 68799 - ], - "disallowed" - ], - [ - [ - 68800, - 68850 - ], - "valid" - ], - [ - [ - 68851, - 68857 - ], - "disallowed" - ], - [ - [ - 68858, - 68863 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 68864, - 69215 - ], - "disallowed" - ], - [ - [ - 69216, - 69246 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69247, - 69631 - ], - "disallowed" - ], - [ - [ - 69632, - 69702 - ], - "valid" - ], - [ - [ - 69703, - 69709 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69710, - 69713 - ], - "disallowed" - ], - [ - [ - 69714, - 69733 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69734, - 69743 - ], - "valid" - ], - [ - [ - 69744, - 69758 - ], - "disallowed" - ], - [ - [ - 69759, - 69759 - ], - "valid" - ], - [ - [ - 69760, - 69818 - ], - "valid" - ], - [ - [ - 69819, - 69820 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69821, - 69821 - ], - "disallowed" - ], - [ - [ - 69822, - 69825 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69826, - 69839 - ], - "disallowed" - ], - [ - [ - 69840, - 69864 - ], - "valid" - ], - [ - [ - 69865, - 69871 - ], - "disallowed" - ], - [ - [ - 69872, - 69881 - ], - "valid" - ], - [ - [ - 69882, - 69887 - ], - "disallowed" - ], - [ - [ - 69888, - 69940 - ], - "valid" - ], - [ - [ - 69941, - 69941 - ], - "disallowed" - ], - [ - [ - 69942, - 69951 - ], - "valid" - ], - [ - [ - 69952, - 69955 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 69956, - 69967 - ], - "disallowed" - ], - [ - [ - 69968, - 70003 - ], - "valid" - ], - [ - [ - 70004, - 70005 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70006, - 70006 - ], - "valid" - ], - [ - [ - 70007, - 70015 - ], - "disallowed" - ], - [ - [ - 70016, - 70084 - ], - "valid" - ], - [ - [ - 70085, - 70088 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70089, - 70089 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70090, - 70092 - ], - "valid" - ], - [ - [ - 70093, - 70093 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70094, - 70095 - ], - "disallowed" - ], - [ - [ - 70096, - 70105 - ], - "valid" - ], - [ - [ - 70106, - 70106 - ], - "valid" - ], - [ - [ - 70107, - 70107 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70108, - 70108 - ], - "valid" - ], - [ - [ - 70109, - 70111 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70112, - 70112 - ], - "disallowed" - ], - [ - [ - 70113, - 70132 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70133, - 70143 - ], - "disallowed" - ], - [ - [ - 70144, - 70161 - ], - "valid" - ], - [ - [ - 70162, - 70162 - ], - "disallowed" - ], - [ - [ - 70163, - 70199 - ], - "valid" - ], - [ - [ - 70200, - 70205 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70206, - 70271 - ], - "disallowed" - ], - [ - [ - 70272, - 70278 - ], - "valid" - ], - [ - [ - 70279, - 70279 - ], - "disallowed" - ], - [ - [ - 70280, - 70280 - ], - "valid" - ], - [ - [ - 70281, - 70281 - ], - "disallowed" - ], - [ - [ - 70282, - 70285 - ], - "valid" - ], - [ - [ - 70286, - 70286 - ], - "disallowed" - ], - [ - [ - 70287, - 70301 - ], - "valid" - ], - [ - [ - 70302, - 70302 - ], - "disallowed" - ], - [ - [ - 70303, - 70312 - ], - "valid" - ], - [ - [ - 70313, - 70313 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70314, - 70319 - ], - "disallowed" - ], - [ - [ - 70320, - 70378 - ], - "valid" - ], - [ - [ - 70379, - 70383 - ], - "disallowed" - ], - [ - [ - 70384, - 70393 - ], - "valid" - ], - [ - [ - 70394, - 70399 - ], - "disallowed" - ], - [ - [ - 70400, - 70400 - ], - "valid" - ], - [ - [ - 70401, - 70403 - ], - "valid" - ], - [ - [ - 70404, - 70404 - ], - "disallowed" - ], - [ - [ - 70405, - 70412 - ], - "valid" - ], - [ - [ - 70413, - 70414 - ], - "disallowed" - ], - [ - [ - 70415, - 70416 - ], - "valid" - ], - [ - [ - 70417, - 70418 - ], - "disallowed" - ], - [ - [ - 70419, - 70440 - ], - "valid" - ], - [ - [ - 70441, - 70441 - ], - "disallowed" - ], - [ - [ - 70442, - 70448 - ], - "valid" - ], - [ - [ - 70449, - 70449 - ], - "disallowed" - ], - [ - [ - 70450, - 70451 - ], - "valid" - ], - [ - [ - 70452, - 70452 - ], - "disallowed" - ], - [ - [ - 70453, - 70457 - ], - "valid" - ], - [ - [ - 70458, - 70459 - ], - "disallowed" - ], - [ - [ - 70460, - 70468 - ], - "valid" - ], - [ - [ - 70469, - 70470 - ], - "disallowed" - ], - [ - [ - 70471, - 70472 - ], - "valid" - ], - [ - [ - 70473, - 70474 - ], - "disallowed" - ], - [ - [ - 70475, - 70477 - ], - "valid" - ], - [ - [ - 70478, - 70479 - ], - "disallowed" - ], - [ - [ - 70480, - 70480 - ], - "valid" - ], - [ - [ - 70481, - 70486 - ], - "disallowed" - ], - [ - [ - 70487, - 70487 - ], - "valid" - ], - [ - [ - 70488, - 70492 - ], - "disallowed" - ], - [ - [ - 70493, - 70499 - ], - "valid" - ], - [ - [ - 70500, - 70501 - ], - "disallowed" - ], - [ - [ - 70502, - 70508 - ], - "valid" - ], - [ - [ - 70509, - 70511 - ], - "disallowed" - ], - [ - [ - 70512, - 70516 - ], - "valid" - ], - [ - [ - 70517, - 70783 - ], - "disallowed" - ], - [ - [ - 70784, - 70853 - ], - "valid" - ], - [ - [ - 70854, - 70854 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 70855, - 70855 - ], - "valid" - ], - [ - [ - 70856, - 70863 - ], - "disallowed" - ], - [ - [ - 70864, - 70873 - ], - "valid" - ], - [ - [ - 70874, - 71039 - ], - "disallowed" - ], - [ - [ - 71040, - 71093 - ], - "valid" - ], - [ - [ - 71094, - 71095 - ], - "disallowed" - ], - [ - [ - 71096, - 71104 - ], - "valid" - ], - [ - [ - 71105, - 71113 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71114, - 71127 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71128, - 71133 - ], - "valid" - ], - [ - [ - 71134, - 71167 - ], - "disallowed" - ], - [ - [ - 71168, - 71232 - ], - "valid" - ], - [ - [ - 71233, - 71235 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71236, - 71236 - ], - "valid" - ], - [ - [ - 71237, - 71247 - ], - "disallowed" - ], - [ - [ - 71248, - 71257 - ], - "valid" - ], - [ - [ - 71258, - 71295 - ], - "disallowed" - ], - [ - [ - 71296, - 71351 - ], - "valid" - ], - [ - [ - 71352, - 71359 - ], - "disallowed" - ], - [ - [ - 71360, - 71369 - ], - "valid" - ], - [ - [ - 71370, - 71423 - ], - "disallowed" - ], - [ - [ - 71424, - 71449 - ], - "valid" - ], - [ - [ - 71450, - 71452 - ], - "disallowed" - ], - [ - [ - 71453, - 71467 - ], - "valid" - ], - [ - [ - 71468, - 71471 - ], - "disallowed" - ], - [ - [ - 71472, - 71481 - ], - "valid" - ], - [ - [ - 71482, - 71487 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71488, - 71839 - ], - "disallowed" - ], - [ - [ - 71840, - 71840 - ], - "mapped", - [ - 71872 - ] - ], - [ - [ - 71841, - 71841 - ], - "mapped", - [ - 71873 - ] - ], - [ - [ - 71842, - 71842 - ], - "mapped", - [ - 71874 - ] - ], - [ - [ - 71843, - 71843 - ], - "mapped", - [ - 71875 - ] - ], - [ - [ - 71844, - 71844 - ], - "mapped", - [ - 71876 - ] - ], - [ - [ - 71845, - 71845 - ], - "mapped", - [ - 71877 - ] - ], - [ - [ - 71846, - 71846 - ], - "mapped", - [ - 71878 - ] - ], - [ - [ - 71847, - 71847 - ], - "mapped", - [ - 71879 - ] - ], - [ - [ - 71848, - 71848 - ], - "mapped", - [ - 71880 - ] - ], - [ - [ - 71849, - 71849 - ], - "mapped", - [ - 71881 - ] - ], - [ - [ - 71850, - 71850 - ], - "mapped", - [ - 71882 - ] - ], - [ - [ - 71851, - 71851 - ], - "mapped", - [ - 71883 - ] - ], - [ - [ - 71852, - 71852 - ], - "mapped", - [ - 71884 - ] - ], - [ - [ - 71853, - 71853 - ], - "mapped", - [ - 71885 - ] - ], - [ - [ - 71854, - 71854 - ], - "mapped", - [ - 71886 - ] - ], - [ - [ - 71855, - 71855 - ], - "mapped", - [ - 71887 - ] - ], - [ - [ - 71856, - 71856 - ], - "mapped", - [ - 71888 - ] - ], - [ - [ - 71857, - 71857 - ], - "mapped", - [ - 71889 - ] - ], - [ - [ - 71858, - 71858 - ], - "mapped", - [ - 71890 - ] - ], - [ - [ - 71859, - 71859 - ], - "mapped", - [ - 71891 - ] - ], - [ - [ - 71860, - 71860 - ], - "mapped", - [ - 71892 - ] - ], - [ - [ - 71861, - 71861 - ], - "mapped", - [ - 71893 - ] - ], - [ - [ - 71862, - 71862 - ], - "mapped", - [ - 71894 - ] - ], - [ - [ - 71863, - 71863 - ], - "mapped", - [ - 71895 - ] - ], - [ - [ - 71864, - 71864 - ], - "mapped", - [ - 71896 - ] - ], - [ - [ - 71865, - 71865 - ], - "mapped", - [ - 71897 - ] - ], - [ - [ - 71866, - 71866 - ], - "mapped", - [ - 71898 - ] - ], - [ - [ - 71867, - 71867 - ], - "mapped", - [ - 71899 - ] - ], - [ - [ - 71868, - 71868 - ], - "mapped", - [ - 71900 - ] - ], - [ - [ - 71869, - 71869 - ], - "mapped", - [ - 71901 - ] - ], - [ - [ - 71870, - 71870 - ], - "mapped", - [ - 71902 - ] - ], - [ - [ - 71871, - 71871 - ], - "mapped", - [ - 71903 - ] - ], - [ - [ - 71872, - 71913 - ], - "valid" - ], - [ - [ - 71914, - 71922 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 71923, - 71934 - ], - "disallowed" - ], - [ - [ - 71935, - 71935 - ], - "valid" - ], - [ - [ - 71936, - 72383 - ], - "disallowed" - ], - [ - [ - 72384, - 72440 - ], - "valid" - ], - [ - [ - 72441, - 73727 - ], - "disallowed" - ], - [ - [ - 73728, - 74606 - ], - "valid" - ], - [ - [ - 74607, - 74648 - ], - "valid" - ], - [ - [ - 74649, - 74649 - ], - "valid" - ], - [ - [ - 74650, - 74751 - ], - "disallowed" - ], - [ - [ - 74752, - 74850 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 74851, - 74862 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 74863, - 74863 - ], - "disallowed" - ], - [ - [ - 74864, - 74867 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 74868, - 74868 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 74869, - 74879 - ], - "disallowed" - ], - [ - [ - 74880, - 75075 - ], - "valid" - ], - [ - [ - 75076, - 77823 - ], - "disallowed" - ], - [ - [ - 77824, - 78894 - ], - "valid" - ], - [ - [ - 78895, - 82943 - ], - "disallowed" - ], - [ - [ - 82944, - 83526 - ], - "valid" - ], - [ - [ - 83527, - 92159 - ], - "disallowed" - ], - [ - [ - 92160, - 92728 - ], - "valid" - ], - [ - [ - 92729, - 92735 - ], - "disallowed" - ], - [ - [ - 92736, - 92766 - ], - "valid" - ], - [ - [ - 92767, - 92767 - ], - "disallowed" - ], - [ - [ - 92768, - 92777 - ], - "valid" - ], - [ - [ - 92778, - 92781 - ], - "disallowed" - ], - [ - [ - 92782, - 92783 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 92784, - 92879 - ], - "disallowed" - ], - [ - [ - 92880, - 92909 - ], - "valid" - ], - [ - [ - 92910, - 92911 - ], - "disallowed" - ], - [ - [ - 92912, - 92916 - ], - "valid" - ], - [ - [ - 92917, - 92917 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 92918, - 92927 - ], - "disallowed" - ], - [ - [ - 92928, - 92982 - ], - "valid" - ], - [ - [ - 92983, - 92991 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 92992, - 92995 - ], - "valid" - ], - [ - [ - 92996, - 92997 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 92998, - 93007 - ], - "disallowed" - ], - [ - [ - 93008, - 93017 - ], - "valid" - ], - [ - [ - 93018, - 93018 - ], - "disallowed" - ], - [ - [ - 93019, - 93025 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 93026, - 93026 - ], - "disallowed" - ], - [ - [ - 93027, - 93047 - ], - "valid" - ], - [ - [ - 93048, - 93052 - ], - "disallowed" - ], - [ - [ - 93053, - 93071 - ], - "valid" - ], - [ - [ - 93072, - 93951 - ], - "disallowed" - ], - [ - [ - 93952, - 94020 - ], - "valid" - ], - [ - [ - 94021, - 94031 - ], - "disallowed" - ], - [ - [ - 94032, - 94078 - ], - "valid" - ], - [ - [ - 94079, - 94094 - ], - "disallowed" - ], - [ - [ - 94095, - 94111 - ], - "valid" - ], - [ - [ - 94112, - 110591 - ], - "disallowed" - ], - [ - [ - 110592, - 110593 - ], - "valid" - ], - [ - [ - 110594, - 113663 - ], - "disallowed" - ], - [ - [ - 113664, - 113770 - ], - "valid" - ], - [ - [ - 113771, - 113775 - ], - "disallowed" - ], - [ - [ - 113776, - 113788 - ], - "valid" - ], - [ - [ - 113789, - 113791 - ], - "disallowed" - ], - [ - [ - 113792, - 113800 - ], - "valid" - ], - [ - [ - 113801, - 113807 - ], - "disallowed" - ], - [ - [ - 113808, - 113817 - ], - "valid" - ], - [ - [ - 113818, - 113819 - ], - "disallowed" - ], - [ - [ - 113820, - 113820 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 113821, - 113822 - ], - "valid" - ], - [ - [ - 113823, - 113823 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 113824, - 113827 - ], - "ignored" - ], - [ - [ - 113828, - 118783 - ], - "disallowed" - ], - [ - [ - 118784, - 119029 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119030, - 119039 - ], - "disallowed" - ], - [ - [ - 119040, - 119078 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119079, - 119080 - ], - "disallowed" - ], - [ - [ - 119081, - 119081 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119082, - 119133 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119134, - 119134 - ], - "mapped", - [ - 119127, - 119141 - ] - ], - [ - [ - 119135, - 119135 - ], - "mapped", - [ - 119128, - 119141 - ] - ], - [ - [ - 119136, - 119136 - ], - "mapped", - [ - 119128, - 119141, - 119150 - ] - ], - [ - [ - 119137, - 119137 - ], - "mapped", - [ - 119128, - 119141, - 119151 - ] - ], - [ - [ - 119138, - 119138 - ], - "mapped", - [ - 119128, - 119141, - 119152 - ] - ], - [ - [ - 119139, - 119139 - ], - "mapped", - [ - 119128, - 119141, - 119153 - ] - ], - [ - [ - 119140, - 119140 - ], - "mapped", - [ - 119128, - 119141, - 119154 - ] - ], - [ - [ - 119141, - 119154 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119155, - 119162 - ], - "disallowed" - ], - [ - [ - 119163, - 119226 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119227, - 119227 - ], - "mapped", - [ - 119225, - 119141 - ] - ], - [ - [ - 119228, - 119228 - ], - "mapped", - [ - 119226, - 119141 - ] - ], - [ - [ - 119229, - 119229 - ], - "mapped", - [ - 119225, - 119141, - 119150 - ] - ], - [ - [ - 119230, - 119230 - ], - "mapped", - [ - 119226, - 119141, - 119150 - ] - ], - [ - [ - 119231, - 119231 - ], - "mapped", - [ - 119225, - 119141, - 119151 - ] - ], - [ - [ - 119232, - 119232 - ], - "mapped", - [ - 119226, - 119141, - 119151 - ] - ], - [ - [ - 119233, - 119261 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119262, - 119272 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119273, - 119295 - ], - "disallowed" - ], - [ - [ - 119296, - 119365 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119366, - 119551 - ], - "disallowed" - ], - [ - [ - 119552, - 119638 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119639, - 119647 - ], - "disallowed" - ], - [ - [ - 119648, - 119665 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 119666, - 119807 - ], - "disallowed" - ], - [ - [ - 119808, - 119808 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119809, - 119809 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119810, - 119810 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119811, - 119811 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119812, - 119812 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119813, - 119813 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119814, - 119814 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119815, - 119815 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119816, - 119816 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119817, - 119817 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119818, - 119818 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119819, - 119819 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119820, - 119820 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119821, - 119821 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119822, - 119822 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119823, - 119823 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119824, - 119824 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119825, - 119825 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119826, - 119826 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119827, - 119827 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119828, - 119828 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119829, - 119829 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119830, - 119830 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119831, - 119831 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119832, - 119832 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119833, - 119833 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119834, - 119834 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119835, - 119835 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119836, - 119836 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119837, - 119837 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119838, - 119838 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119839, - 119839 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119840, - 119840 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119841, - 119841 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119842, - 119842 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119843, - 119843 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119844, - 119844 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119845, - 119845 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119846, - 119846 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119847, - 119847 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119848, - 119848 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119849, - 119849 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119850, - 119850 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119851, - 119851 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119852, - 119852 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119853, - 119853 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119854, - 119854 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119855, - 119855 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119856, - 119856 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119857, - 119857 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119858, - 119858 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119859, - 119859 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119860, - 119860 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119861, - 119861 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119862, - 119862 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119863, - 119863 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119864, - 119864 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119865, - 119865 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119866, - 119866 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119867, - 119867 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119868, - 119868 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119869, - 119869 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119870, - 119870 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119871, - 119871 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119872, - 119872 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119873, - 119873 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119874, - 119874 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119875, - 119875 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119876, - 119876 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119877, - 119877 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119878, - 119878 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119879, - 119879 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119880, - 119880 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119881, - 119881 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119882, - 119882 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119883, - 119883 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119884, - 119884 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119885, - 119885 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119886, - 119886 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119887, - 119887 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119888, - 119888 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119889, - 119889 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119890, - 119890 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119891, - 119891 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119892, - 119892 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119893, - 119893 - ], - "disallowed" - ], - [ - [ - 119894, - 119894 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119895, - 119895 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119896, - 119896 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119897, - 119897 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119898, - 119898 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119899, - 119899 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119900, - 119900 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119901, - 119901 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119902, - 119902 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119903, - 119903 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119904, - 119904 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119905, - 119905 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119906, - 119906 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119907, - 119907 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119908, - 119908 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119909, - 119909 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119910, - 119910 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119911, - 119911 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119912, - 119912 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119913, - 119913 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119914, - 119914 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119915, - 119915 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119916, - 119916 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119917, - 119917 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119918, - 119918 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119919, - 119919 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119920, - 119920 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119921, - 119921 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119922, - 119922 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119923, - 119923 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119924, - 119924 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119925, - 119925 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119926, - 119926 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119927, - 119927 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119928, - 119928 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119929, - 119929 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119930, - 119930 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119931, - 119931 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119932, - 119932 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119933, - 119933 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119934, - 119934 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119935, - 119935 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119936, - 119936 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119937, - 119937 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119938, - 119938 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119939, - 119939 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119940, - 119940 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119941, - 119941 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119942, - 119942 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 119943, - 119943 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119944, - 119944 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119945, - 119945 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119946, - 119946 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119947, - 119947 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119948, - 119948 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119949, - 119949 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 119950, - 119950 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 119951, - 119951 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119952, - 119952 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119953, - 119953 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119954, - 119954 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119955, - 119955 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 119956, - 119956 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119957, - 119957 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119958, - 119958 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119959, - 119959 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119960, - 119960 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119961, - 119961 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119962, - 119962 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119963, - 119963 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119964, - 119964 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119965, - 119965 - ], - "disallowed" - ], - [ - [ - 119966, - 119966 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119967, - 119967 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119968, - 119969 - ], - "disallowed" - ], - [ - [ - 119970, - 119970 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 119971, - 119972 - ], - "disallowed" - ], - [ - [ - 119973, - 119973 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 119974, - 119974 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 119975, - 119976 - ], - "disallowed" - ], - [ - [ - 119977, - 119977 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 119978, - 119978 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 119979, - 119979 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 119980, - 119980 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 119981, - 119981 - ], - "disallowed" - ], - [ - [ - 119982, - 119982 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 119983, - 119983 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 119984, - 119984 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 119985, - 119985 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 119986, - 119986 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 119987, - 119987 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 119988, - 119988 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 119989, - 119989 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 119990, - 119990 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 119991, - 119991 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 119992, - 119992 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 119993, - 119993 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 119994, - 119994 - ], - "disallowed" - ], - [ - [ - 119995, - 119995 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 119996, - 119996 - ], - "disallowed" - ], - [ - [ - 119997, - 119997 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 119998, - 119998 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 119999, - 119999 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120000, - 120000 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120001, - 120001 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120002, - 120002 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120003, - 120003 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120004, - 120004 - ], - "disallowed" - ], - [ - [ - 120005, - 120005 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120006, - 120006 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120007, - 120007 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120008, - 120008 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120009, - 120009 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120010, - 120010 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120011, - 120011 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120012, - 120012 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120013, - 120013 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120014, - 120014 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120015, - 120015 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120016, - 120016 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120017, - 120017 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120018, - 120018 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120019, - 120019 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120020, - 120020 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120021, - 120021 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120022, - 120022 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120023, - 120023 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120024, - 120024 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120025, - 120025 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120026, - 120026 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120027, - 120027 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120028, - 120028 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120029, - 120029 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120030, - 120030 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120031, - 120031 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120032, - 120032 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120033, - 120033 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120034, - 120034 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120035, - 120035 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120036, - 120036 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120037, - 120037 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120038, - 120038 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120039, - 120039 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120040, - 120040 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120041, - 120041 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120042, - 120042 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120043, - 120043 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120044, - 120044 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120045, - 120045 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120046, - 120046 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120047, - 120047 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120048, - 120048 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120049, - 120049 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120050, - 120050 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120051, - 120051 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120052, - 120052 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120053, - 120053 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120054, - 120054 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120055, - 120055 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120056, - 120056 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120057, - 120057 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120058, - 120058 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120059, - 120059 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120060, - 120060 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120061, - 120061 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120062, - 120062 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120063, - 120063 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120064, - 120064 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120065, - 120065 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120066, - 120066 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120067, - 120067 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120068, - 120068 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120069, - 120069 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120070, - 120070 - ], - "disallowed" - ], - [ - [ - 120071, - 120071 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120072, - 120072 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120073, - 120073 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120074, - 120074 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120075, - 120076 - ], - "disallowed" - ], - [ - [ - 120077, - 120077 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120078, - 120078 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120079, - 120079 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120080, - 120080 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120081, - 120081 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120082, - 120082 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120083, - 120083 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120084, - 120084 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120085, - 120085 - ], - "disallowed" - ], - [ - [ - 120086, - 120086 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120087, - 120087 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120088, - 120088 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120089, - 120089 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120090, - 120090 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120091, - 120091 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120092, - 120092 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120093, - 120093 - ], - "disallowed" - ], - [ - [ - 120094, - 120094 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120095, - 120095 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120096, - 120096 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120097, - 120097 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120098, - 120098 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120099, - 120099 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120100, - 120100 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120101, - 120101 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120102, - 120102 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120103, - 120103 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120104, - 120104 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120105, - 120105 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120106, - 120106 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120107, - 120107 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120108, - 120108 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120109, - 120109 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120110, - 120110 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120111, - 120111 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120112, - 120112 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120113, - 120113 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120114, - 120114 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120115, - 120115 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120116, - 120116 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120117, - 120117 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120118, - 120118 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120119, - 120119 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120120, - 120120 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120121, - 120121 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120122, - 120122 - ], - "disallowed" - ], - [ - [ - 120123, - 120123 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120124, - 120124 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120125, - 120125 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120126, - 120126 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120127, - 120127 - ], - "disallowed" - ], - [ - [ - 120128, - 120128 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120129, - 120129 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120130, - 120130 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120131, - 120131 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120132, - 120132 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120133, - 120133 - ], - "disallowed" - ], - [ - [ - 120134, - 120134 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120135, - 120137 - ], - "disallowed" - ], - [ - [ - 120138, - 120138 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120139, - 120139 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120140, - 120140 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120141, - 120141 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120142, - 120142 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120143, - 120143 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120144, - 120144 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120145, - 120145 - ], - "disallowed" - ], - [ - [ - 120146, - 120146 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120147, - 120147 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120148, - 120148 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120149, - 120149 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120150, - 120150 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120151, - 120151 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120152, - 120152 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120153, - 120153 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120154, - 120154 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120155, - 120155 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120156, - 120156 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120157, - 120157 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120158, - 120158 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120159, - 120159 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120160, - 120160 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120161, - 120161 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120162, - 120162 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120163, - 120163 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120164, - 120164 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120165, - 120165 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120166, - 120166 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120167, - 120167 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120168, - 120168 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120169, - 120169 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120170, - 120170 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120171, - 120171 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120172, - 120172 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120173, - 120173 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120174, - 120174 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120175, - 120175 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120176, - 120176 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120177, - 120177 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120178, - 120178 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120179, - 120179 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120180, - 120180 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120181, - 120181 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120182, - 120182 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120183, - 120183 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120184, - 120184 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120185, - 120185 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120186, - 120186 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120187, - 120187 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120188, - 120188 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120189, - 120189 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120190, - 120190 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120191, - 120191 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120192, - 120192 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120193, - 120193 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120194, - 120194 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120195, - 120195 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120196, - 120196 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120197, - 120197 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120198, - 120198 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120199, - 120199 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120200, - 120200 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120201, - 120201 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120202, - 120202 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120203, - 120203 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120204, - 120204 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120205, - 120205 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120206, - 120206 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120207, - 120207 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120208, - 120208 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120209, - 120209 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120210, - 120210 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120211, - 120211 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120212, - 120212 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120213, - 120213 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120214, - 120214 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120215, - 120215 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120216, - 120216 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120217, - 120217 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120218, - 120218 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120219, - 120219 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120220, - 120220 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120221, - 120221 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120222, - 120222 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120223, - 120223 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120224, - 120224 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120225, - 120225 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120226, - 120226 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120227, - 120227 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120228, - 120228 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120229, - 120229 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120230, - 120230 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120231, - 120231 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120232, - 120232 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120233, - 120233 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120234, - 120234 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120235, - 120235 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120236, - 120236 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120237, - 120237 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120238, - 120238 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120239, - 120239 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120240, - 120240 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120241, - 120241 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120242, - 120242 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120243, - 120243 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120244, - 120244 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120245, - 120245 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120246, - 120246 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120247, - 120247 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120248, - 120248 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120249, - 120249 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120250, - 120250 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120251, - 120251 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120252, - 120252 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120253, - 120253 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120254, - 120254 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120255, - 120255 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120256, - 120256 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120257, - 120257 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120258, - 120258 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120259, - 120259 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120260, - 120260 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120261, - 120261 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120262, - 120262 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120263, - 120263 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120264, - 120264 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120265, - 120265 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120266, - 120266 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120267, - 120267 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120268, - 120268 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120269, - 120269 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120270, - 120270 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120271, - 120271 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120272, - 120272 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120273, - 120273 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120274, - 120274 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120275, - 120275 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120276, - 120276 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120277, - 120277 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120278, - 120278 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120279, - 120279 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120280, - 120280 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120281, - 120281 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120282, - 120282 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120283, - 120283 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120284, - 120284 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120285, - 120285 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120286, - 120286 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120287, - 120287 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120288, - 120288 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120289, - 120289 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120290, - 120290 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120291, - 120291 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120292, - 120292 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120293, - 120293 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120294, - 120294 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120295, - 120295 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120296, - 120296 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120297, - 120297 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120298, - 120298 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120299, - 120299 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120300, - 120300 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120301, - 120301 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120302, - 120302 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120303, - 120303 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120304, - 120304 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120305, - 120305 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120306, - 120306 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120307, - 120307 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120308, - 120308 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120309, - 120309 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120310, - 120310 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120311, - 120311 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120312, - 120312 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120313, - 120313 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120314, - 120314 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120315, - 120315 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120316, - 120316 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120317, - 120317 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120318, - 120318 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120319, - 120319 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120320, - 120320 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120321, - 120321 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120322, - 120322 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120323, - 120323 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120324, - 120324 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120325, - 120325 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120326, - 120326 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120327, - 120327 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120328, - 120328 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120329, - 120329 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120330, - 120330 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120331, - 120331 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120332, - 120332 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120333, - 120333 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120334, - 120334 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120335, - 120335 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120336, - 120336 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120337, - 120337 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120338, - 120338 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120339, - 120339 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120340, - 120340 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120341, - 120341 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120342, - 120342 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120343, - 120343 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120344, - 120344 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120345, - 120345 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120346, - 120346 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120347, - 120347 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120348, - 120348 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120349, - 120349 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120350, - 120350 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120351, - 120351 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120352, - 120352 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120353, - 120353 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120354, - 120354 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120355, - 120355 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120356, - 120356 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120357, - 120357 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120358, - 120358 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120359, - 120359 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120360, - 120360 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120361, - 120361 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120362, - 120362 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120363, - 120363 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120364, - 120364 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120365, - 120365 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120366, - 120366 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120367, - 120367 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120368, - 120368 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120369, - 120369 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120370, - 120370 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120371, - 120371 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120372, - 120372 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120373, - 120373 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120374, - 120374 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120375, - 120375 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120376, - 120376 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120377, - 120377 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120378, - 120378 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120379, - 120379 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120380, - 120380 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120381, - 120381 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120382, - 120382 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120383, - 120383 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120384, - 120384 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120385, - 120385 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120386, - 120386 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120387, - 120387 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120388, - 120388 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120389, - 120389 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120390, - 120390 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120391, - 120391 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120392, - 120392 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120393, - 120393 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120394, - 120394 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120395, - 120395 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120396, - 120396 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120397, - 120397 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120398, - 120398 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120399, - 120399 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120400, - 120400 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120401, - 120401 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120402, - 120402 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120403, - 120403 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120404, - 120404 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120405, - 120405 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120406, - 120406 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120407, - 120407 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120408, - 120408 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120409, - 120409 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120410, - 120410 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120411, - 120411 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120412, - 120412 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120413, - 120413 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120414, - 120414 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120415, - 120415 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120416, - 120416 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120417, - 120417 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120418, - 120418 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120419, - 120419 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120420, - 120420 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120421, - 120421 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120422, - 120422 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120423, - 120423 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120424, - 120424 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120425, - 120425 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120426, - 120426 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120427, - 120427 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120428, - 120428 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120429, - 120429 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120430, - 120430 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120431, - 120431 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120432, - 120432 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120433, - 120433 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120434, - 120434 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120435, - 120435 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120436, - 120436 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120437, - 120437 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120438, - 120438 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120439, - 120439 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120440, - 120440 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120441, - 120441 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120442, - 120442 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120443, - 120443 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120444, - 120444 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120445, - 120445 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120446, - 120446 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120447, - 120447 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120448, - 120448 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120449, - 120449 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120450, - 120450 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120451, - 120451 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120452, - 120452 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120453, - 120453 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120454, - 120454 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120455, - 120455 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120456, - 120456 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120457, - 120457 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120458, - 120458 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 120459, - 120459 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 120460, - 120460 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 120461, - 120461 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 120462, - 120462 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 120463, - 120463 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 120464, - 120464 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 120465, - 120465 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 120466, - 120466 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 120467, - 120467 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 120468, - 120468 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 120469, - 120469 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 120470, - 120470 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 120471, - 120471 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 120472, - 120472 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 120473, - 120473 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 120474, - 120474 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 120475, - 120475 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 120476, - 120476 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 120477, - 120477 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 120478, - 120478 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 120479, - 120479 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 120480, - 120480 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 120481, - 120481 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 120482, - 120482 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 120483, - 120483 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 120484, - 120484 - ], - "mapped", - [ - 305 - ] - ], - [ - [ - 120485, - 120485 - ], - "mapped", - [ - 567 - ] - ], - [ - [ - 120486, - 120487 - ], - "disallowed" - ], - [ - [ - 120488, - 120488 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120489, - 120489 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120490, - 120490 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120491, - 120491 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120492, - 120492 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120493, - 120493 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120494, - 120494 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120495, - 120495 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120496, - 120496 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120497, - 120497 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120498, - 120498 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120499, - 120499 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120500, - 120500 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120501, - 120501 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120502, - 120502 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120503, - 120503 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120504, - 120504 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120505, - 120505 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120506, - 120506 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120507, - 120507 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120508, - 120508 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120509, - 120509 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120510, - 120510 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120511, - 120511 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120512, - 120512 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120513, - 120513 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120514, - 120514 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120515, - 120515 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120516, - 120516 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120517, - 120517 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120518, - 120518 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120519, - 120519 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120520, - 120520 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120521, - 120521 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120522, - 120522 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120523, - 120523 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120524, - 120524 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120525, - 120525 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120526, - 120526 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120527, - 120527 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120528, - 120528 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120529, - 120529 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120530, - 120530 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120531, - 120532 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120533, - 120533 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120534, - 120534 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120535, - 120535 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120536, - 120536 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120537, - 120537 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120538, - 120538 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120539, - 120539 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120540, - 120540 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120541, - 120541 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120542, - 120542 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120543, - 120543 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120544, - 120544 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120545, - 120545 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120546, - 120546 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120547, - 120547 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120548, - 120548 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120549, - 120549 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120550, - 120550 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120551, - 120551 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120552, - 120552 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120553, - 120553 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120554, - 120554 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120555, - 120555 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120556, - 120556 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120557, - 120557 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120558, - 120558 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120559, - 120559 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120560, - 120560 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120561, - 120561 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120562, - 120562 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120563, - 120563 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120564, - 120564 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120565, - 120565 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120566, - 120566 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120567, - 120567 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120568, - 120568 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120569, - 120569 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120570, - 120570 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120571, - 120571 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120572, - 120572 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120573, - 120573 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120574, - 120574 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120575, - 120575 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120576, - 120576 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120577, - 120577 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120578, - 120578 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120579, - 120579 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120580, - 120580 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120581, - 120581 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120582, - 120582 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120583, - 120583 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120584, - 120584 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120585, - 120585 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120586, - 120586 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120587, - 120587 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120588, - 120588 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120589, - 120590 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120591, - 120591 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120592, - 120592 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120593, - 120593 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120594, - 120594 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120595, - 120595 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120596, - 120596 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120597, - 120597 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120598, - 120598 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120599, - 120599 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120600, - 120600 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120601, - 120601 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120602, - 120602 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120603, - 120603 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120604, - 120604 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120605, - 120605 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120606, - 120606 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120607, - 120607 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120608, - 120608 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120609, - 120609 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120610, - 120610 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120611, - 120611 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120612, - 120612 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120613, - 120613 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120614, - 120614 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120615, - 120615 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120616, - 120616 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120617, - 120617 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120618, - 120618 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120619, - 120619 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120620, - 120620 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120621, - 120621 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120622, - 120622 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120623, - 120623 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120624, - 120624 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120625, - 120625 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120626, - 120626 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120627, - 120627 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120628, - 120628 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120629, - 120629 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120630, - 120630 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120631, - 120631 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120632, - 120632 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120633, - 120633 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120634, - 120634 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120635, - 120635 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120636, - 120636 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120637, - 120637 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120638, - 120638 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120639, - 120639 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120640, - 120640 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120641, - 120641 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120642, - 120642 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120643, - 120643 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120644, - 120644 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120645, - 120645 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120646, - 120646 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120647, - 120648 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120649, - 120649 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120650, - 120650 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120651, - 120651 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120652, - 120652 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120653, - 120653 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120654, - 120654 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120655, - 120655 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120656, - 120656 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120657, - 120657 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120658, - 120658 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120659, - 120659 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120660, - 120660 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120661, - 120661 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120662, - 120662 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120663, - 120663 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120664, - 120664 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120665, - 120665 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120666, - 120666 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120667, - 120667 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120668, - 120668 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120669, - 120669 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120670, - 120670 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120671, - 120671 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120672, - 120672 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120673, - 120673 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120674, - 120674 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120675, - 120675 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120676, - 120676 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120677, - 120677 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120678, - 120678 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120679, - 120679 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120680, - 120680 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120681, - 120681 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120682, - 120682 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120683, - 120683 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120684, - 120684 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120685, - 120685 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120686, - 120686 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120687, - 120687 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120688, - 120688 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120689, - 120689 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120690, - 120690 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120691, - 120691 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120692, - 120692 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120693, - 120693 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120694, - 120694 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120695, - 120695 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120696, - 120696 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120697, - 120697 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120698, - 120698 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120699, - 120699 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120700, - 120700 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120701, - 120701 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120702, - 120702 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120703, - 120703 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120704, - 120704 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120705, - 120706 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120707, - 120707 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120708, - 120708 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120709, - 120709 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120710, - 120710 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120711, - 120711 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120712, - 120712 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120713, - 120713 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120714, - 120714 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120715, - 120715 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120716, - 120716 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120717, - 120717 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120718, - 120718 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120719, - 120719 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120720, - 120720 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120721, - 120721 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120722, - 120722 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120723, - 120723 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120724, - 120724 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120725, - 120725 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120726, - 120726 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120727, - 120727 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120728, - 120728 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120729, - 120729 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120730, - 120730 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120731, - 120731 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120732, - 120732 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120733, - 120733 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120734, - 120734 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120735, - 120735 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120736, - 120736 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120737, - 120737 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120738, - 120738 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120739, - 120739 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120740, - 120740 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120741, - 120741 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120742, - 120742 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120743, - 120743 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120744, - 120744 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120745, - 120745 - ], - "mapped", - [ - 8711 - ] - ], - [ - [ - 120746, - 120746 - ], - "mapped", - [ - 945 - ] - ], - [ - [ - 120747, - 120747 - ], - "mapped", - [ - 946 - ] - ], - [ - [ - 120748, - 120748 - ], - "mapped", - [ - 947 - ] - ], - [ - [ - 120749, - 120749 - ], - "mapped", - [ - 948 - ] - ], - [ - [ - 120750, - 120750 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120751, - 120751 - ], - "mapped", - [ - 950 - ] - ], - [ - [ - 120752, - 120752 - ], - "mapped", - [ - 951 - ] - ], - [ - [ - 120753, - 120753 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120754, - 120754 - ], - "mapped", - [ - 953 - ] - ], - [ - [ - 120755, - 120755 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120756, - 120756 - ], - "mapped", - [ - 955 - ] - ], - [ - [ - 120757, - 120757 - ], - "mapped", - [ - 956 - ] - ], - [ - [ - 120758, - 120758 - ], - "mapped", - [ - 957 - ] - ], - [ - [ - 120759, - 120759 - ], - "mapped", - [ - 958 - ] - ], - [ - [ - 120760, - 120760 - ], - "mapped", - [ - 959 - ] - ], - [ - [ - 120761, - 120761 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120762, - 120762 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120763, - 120764 - ], - "mapped", - [ - 963 - ] - ], - [ - [ - 120765, - 120765 - ], - "mapped", - [ - 964 - ] - ], - [ - [ - 120766, - 120766 - ], - "mapped", - [ - 965 - ] - ], - [ - [ - 120767, - 120767 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120768, - 120768 - ], - "mapped", - [ - 967 - ] - ], - [ - [ - 120769, - 120769 - ], - "mapped", - [ - 968 - ] - ], - [ - [ - 120770, - 120770 - ], - "mapped", - [ - 969 - ] - ], - [ - [ - 120771, - 120771 - ], - "mapped", - [ - 8706 - ] - ], - [ - [ - 120772, - 120772 - ], - "mapped", - [ - 949 - ] - ], - [ - [ - 120773, - 120773 - ], - "mapped", - [ - 952 - ] - ], - [ - [ - 120774, - 120774 - ], - "mapped", - [ - 954 - ] - ], - [ - [ - 120775, - 120775 - ], - "mapped", - [ - 966 - ] - ], - [ - [ - 120776, - 120776 - ], - "mapped", - [ - 961 - ] - ], - [ - [ - 120777, - 120777 - ], - "mapped", - [ - 960 - ] - ], - [ - [ - 120778, - 120779 - ], - "mapped", - [ - 989 - ] - ], - [ - [ - 120780, - 120781 - ], - "disallowed" - ], - [ - [ - 120782, - 120782 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120783, - 120783 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120784, - 120784 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120785, - 120785 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120786, - 120786 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120787, - 120787 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120788, - 120788 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120789, - 120789 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120790, - 120790 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120791, - 120791 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120792, - 120792 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120793, - 120793 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120794, - 120794 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120795, - 120795 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120796, - 120796 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120797, - 120797 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120798, - 120798 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120799, - 120799 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120800, - 120800 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120801, - 120801 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120802, - 120802 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120803, - 120803 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120804, - 120804 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120805, - 120805 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120806, - 120806 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120807, - 120807 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120808, - 120808 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120809, - 120809 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120810, - 120810 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120811, - 120811 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120812, - 120812 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120813, - 120813 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120814, - 120814 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120815, - 120815 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120816, - 120816 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120817, - 120817 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120818, - 120818 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120819, - 120819 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120820, - 120820 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120821, - 120821 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120822, - 120822 - ], - "mapped", - [ - 48 - ] - ], - [ - [ - 120823, - 120823 - ], - "mapped", - [ - 49 - ] - ], - [ - [ - 120824, - 120824 - ], - "mapped", - [ - 50 - ] - ], - [ - [ - 120825, - 120825 - ], - "mapped", - [ - 51 - ] - ], - [ - [ - 120826, - 120826 - ], - "mapped", - [ - 52 - ] - ], - [ - [ - 120827, - 120827 - ], - "mapped", - [ - 53 - ] - ], - [ - [ - 120828, - 120828 - ], - "mapped", - [ - 54 - ] - ], - [ - [ - 120829, - 120829 - ], - "mapped", - [ - 55 - ] - ], - [ - [ - 120830, - 120830 - ], - "mapped", - [ - 56 - ] - ], - [ - [ - 120831, - 120831 - ], - "mapped", - [ - 57 - ] - ], - [ - [ - 120832, - 121343 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121344, - 121398 - ], - "valid" - ], - [ - [ - 121399, - 121402 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121403, - 121452 - ], - "valid" - ], - [ - [ - 121453, - 121460 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121461, - 121461 - ], - "valid" - ], - [ - [ - 121462, - 121475 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121476, - 121476 - ], - "valid" - ], - [ - [ - 121477, - 121483 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 121484, - 121498 - ], - "disallowed" - ], - [ - [ - 121499, - 121503 - ], - "valid" - ], - [ - [ - 121504, - 121504 - ], - "disallowed" - ], - [ - [ - 121505, - 121519 - ], - "valid" - ], - [ - [ - 121520, - 124927 - ], - "disallowed" - ], - [ - [ - 124928, - 125124 - ], - "valid" - ], - [ - [ - 125125, - 125126 - ], - "disallowed" - ], - [ - [ - 125127, - 125135 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 125136, - 125142 - ], - "valid" - ], - [ - [ - 125143, - 126463 - ], - "disallowed" - ], - [ - [ - 126464, - 126464 - ], - "mapped", - [ - 1575 - ] - ], - [ - [ - 126465, - 126465 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126466, - 126466 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126467, - 126467 - ], - "mapped", - [ - 1583 - ] - ], - [ - [ - 126468, - 126468 - ], - "disallowed" - ], - [ - [ - 126469, - 126469 - ], - "mapped", - [ - 1608 - ] - ], - [ - [ - 126470, - 126470 - ], - "mapped", - [ - 1586 - ] - ], - [ - [ - 126471, - 126471 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126472, - 126472 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 126473, - 126473 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126474, - 126474 - ], - "mapped", - [ - 1603 - ] - ], - [ - [ - 126475, - 126475 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126476, - 126476 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126477, - 126477 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126478, - 126478 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126479, - 126479 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126480, - 126480 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126481, - 126481 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126482, - 126482 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126483, - 126483 - ], - "mapped", - [ - 1585 - ] - ], - [ - [ - 126484, - 126484 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126485, - 126485 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126486, - 126486 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126487, - 126487 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126488, - 126488 - ], - "mapped", - [ - 1584 - ] - ], - [ - [ - 126489, - 126489 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126490, - 126490 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 126491, - 126491 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126492, - 126492 - ], - "mapped", - [ - 1646 - ] - ], - [ - [ - 126493, - 126493 - ], - "mapped", - [ - 1722 - ] - ], - [ - [ - 126494, - 126494 - ], - "mapped", - [ - 1697 - ] - ], - [ - [ - 126495, - 126495 - ], - "mapped", - [ - 1647 - ] - ], - [ - [ - 126496, - 126496 - ], - "disallowed" - ], - [ - [ - 126497, - 126497 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126498, - 126498 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126499, - 126499 - ], - "disallowed" - ], - [ - [ - 126500, - 126500 - ], - "mapped", - [ - 1607 - ] - ], - [ - [ - 126501, - 126502 - ], - "disallowed" - ], - [ - [ - 126503, - 126503 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126504, - 126504 - ], - "disallowed" - ], - [ - [ - 126505, - 126505 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126506, - 126506 - ], - "mapped", - [ - 1603 - ] - ], - [ - [ - 126507, - 126507 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126508, - 126508 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126509, - 126509 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126510, - 126510 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126511, - 126511 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126512, - 126512 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126513, - 126513 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126514, - 126514 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126515, - 126515 - ], - "disallowed" - ], - [ - [ - 126516, - 126516 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126517, - 126517 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126518, - 126518 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126519, - 126519 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126520, - 126520 - ], - "disallowed" - ], - [ - [ - 126521, - 126521 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126522, - 126522 - ], - "disallowed" - ], - [ - [ - 126523, - 126523 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126524, - 126529 - ], - "disallowed" - ], - [ - [ - 126530, - 126530 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126531, - 126534 - ], - "disallowed" - ], - [ - [ - 126535, - 126535 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126536, - 126536 - ], - "disallowed" - ], - [ - [ - 126537, - 126537 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126538, - 126538 - ], - "disallowed" - ], - [ - [ - 126539, - 126539 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126540, - 126540 - ], - "disallowed" - ], - [ - [ - 126541, - 126541 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126542, - 126542 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126543, - 126543 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126544, - 126544 - ], - "disallowed" - ], - [ - [ - 126545, - 126545 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126546, - 126546 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126547, - 126547 - ], - "disallowed" - ], - [ - [ - 126548, - 126548 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126549, - 126550 - ], - "disallowed" - ], - [ - [ - 126551, - 126551 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126552, - 126552 - ], - "disallowed" - ], - [ - [ - 126553, - 126553 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126554, - 126554 - ], - "disallowed" - ], - [ - [ - 126555, - 126555 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126556, - 126556 - ], - "disallowed" - ], - [ - [ - 126557, - 126557 - ], - "mapped", - [ - 1722 - ] - ], - [ - [ - 126558, - 126558 - ], - "disallowed" - ], - [ - [ - 126559, - 126559 - ], - "mapped", - [ - 1647 - ] - ], - [ - [ - 126560, - 126560 - ], - "disallowed" - ], - [ - [ - 126561, - 126561 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126562, - 126562 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126563, - 126563 - ], - "disallowed" - ], - [ - [ - 126564, - 126564 - ], - "mapped", - [ - 1607 - ] - ], - [ - [ - 126565, - 126566 - ], - "disallowed" - ], - [ - [ - 126567, - 126567 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126568, - 126568 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 126569, - 126569 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126570, - 126570 - ], - "mapped", - [ - 1603 - ] - ], - [ - [ - 126571, - 126571 - ], - "disallowed" - ], - [ - [ - 126572, - 126572 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126573, - 126573 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126574, - 126574 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126575, - 126575 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126576, - 126576 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126577, - 126577 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126578, - 126578 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126579, - 126579 - ], - "disallowed" - ], - [ - [ - 126580, - 126580 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126581, - 126581 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126582, - 126582 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126583, - 126583 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126584, - 126584 - ], - "disallowed" - ], - [ - [ - 126585, - 126585 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126586, - 126586 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 126587, - 126587 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126588, - 126588 - ], - "mapped", - [ - 1646 - ] - ], - [ - [ - 126589, - 126589 - ], - "disallowed" - ], - [ - [ - 126590, - 126590 - ], - "mapped", - [ - 1697 - ] - ], - [ - [ - 126591, - 126591 - ], - "disallowed" - ], - [ - [ - 126592, - 126592 - ], - "mapped", - [ - 1575 - ] - ], - [ - [ - 126593, - 126593 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126594, - 126594 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126595, - 126595 - ], - "mapped", - [ - 1583 - ] - ], - [ - [ - 126596, - 126596 - ], - "mapped", - [ - 1607 - ] - ], - [ - [ - 126597, - 126597 - ], - "mapped", - [ - 1608 - ] - ], - [ - [ - 126598, - 126598 - ], - "mapped", - [ - 1586 - ] - ], - [ - [ - 126599, - 126599 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126600, - 126600 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 126601, - 126601 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126602, - 126602 - ], - "disallowed" - ], - [ - [ - 126603, - 126603 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126604, - 126604 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126605, - 126605 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126606, - 126606 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126607, - 126607 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126608, - 126608 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126609, - 126609 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126610, - 126610 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126611, - 126611 - ], - "mapped", - [ - 1585 - ] - ], - [ - [ - 126612, - 126612 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126613, - 126613 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126614, - 126614 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126615, - 126615 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126616, - 126616 - ], - "mapped", - [ - 1584 - ] - ], - [ - [ - 126617, - 126617 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126618, - 126618 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 126619, - 126619 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126620, - 126624 - ], - "disallowed" - ], - [ - [ - 126625, - 126625 - ], - "mapped", - [ - 1576 - ] - ], - [ - [ - 126626, - 126626 - ], - "mapped", - [ - 1580 - ] - ], - [ - [ - 126627, - 126627 - ], - "mapped", - [ - 1583 - ] - ], - [ - [ - 126628, - 126628 - ], - "disallowed" - ], - [ - [ - 126629, - 126629 - ], - "mapped", - [ - 1608 - ] - ], - [ - [ - 126630, - 126630 - ], - "mapped", - [ - 1586 - ] - ], - [ - [ - 126631, - 126631 - ], - "mapped", - [ - 1581 - ] - ], - [ - [ - 126632, - 126632 - ], - "mapped", - [ - 1591 - ] - ], - [ - [ - 126633, - 126633 - ], - "mapped", - [ - 1610 - ] - ], - [ - [ - 126634, - 126634 - ], - "disallowed" - ], - [ - [ - 126635, - 126635 - ], - "mapped", - [ - 1604 - ] - ], - [ - [ - 126636, - 126636 - ], - "mapped", - [ - 1605 - ] - ], - [ - [ - 126637, - 126637 - ], - "mapped", - [ - 1606 - ] - ], - [ - [ - 126638, - 126638 - ], - "mapped", - [ - 1587 - ] - ], - [ - [ - 126639, - 126639 - ], - "mapped", - [ - 1593 - ] - ], - [ - [ - 126640, - 126640 - ], - "mapped", - [ - 1601 - ] - ], - [ - [ - 126641, - 126641 - ], - "mapped", - [ - 1589 - ] - ], - [ - [ - 126642, - 126642 - ], - "mapped", - [ - 1602 - ] - ], - [ - [ - 126643, - 126643 - ], - "mapped", - [ - 1585 - ] - ], - [ - [ - 126644, - 126644 - ], - "mapped", - [ - 1588 - ] - ], - [ - [ - 126645, - 126645 - ], - "mapped", - [ - 1578 - ] - ], - [ - [ - 126646, - 126646 - ], - "mapped", - [ - 1579 - ] - ], - [ - [ - 126647, - 126647 - ], - "mapped", - [ - 1582 - ] - ], - [ - [ - 126648, - 126648 - ], - "mapped", - [ - 1584 - ] - ], - [ - [ - 126649, - 126649 - ], - "mapped", - [ - 1590 - ] - ], - [ - [ - 126650, - 126650 - ], - "mapped", - [ - 1592 - ] - ], - [ - [ - 126651, - 126651 - ], - "mapped", - [ - 1594 - ] - ], - [ - [ - 126652, - 126703 - ], - "disallowed" - ], - [ - [ - 126704, - 126705 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 126706, - 126975 - ], - "disallowed" - ], - [ - [ - 126976, - 127019 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127020, - 127023 - ], - "disallowed" - ], - [ - [ - 127024, - 127123 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127124, - 127135 - ], - "disallowed" - ], - [ - [ - 127136, - 127150 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127151, - 127152 - ], - "disallowed" - ], - [ - [ - 127153, - 127166 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127167, - 127167 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127168, - 127168 - ], - "disallowed" - ], - [ - [ - 127169, - 127183 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127184, - 127184 - ], - "disallowed" - ], - [ - [ - 127185, - 127199 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127200, - 127221 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127222, - 127231 - ], - "disallowed" - ], - [ - [ - 127232, - 127232 - ], - "disallowed" - ], - [ - [ - 127233, - 127233 - ], - "disallowed_STD3_mapped", - [ - 48, - 44 - ] - ], - [ - [ - 127234, - 127234 - ], - "disallowed_STD3_mapped", - [ - 49, - 44 - ] - ], - [ - [ - 127235, - 127235 - ], - "disallowed_STD3_mapped", - [ - 50, - 44 - ] - ], - [ - [ - 127236, - 127236 - ], - "disallowed_STD3_mapped", - [ - 51, - 44 - ] - ], - [ - [ - 127237, - 127237 - ], - "disallowed_STD3_mapped", - [ - 52, - 44 - ] - ], - [ - [ - 127238, - 127238 - ], - "disallowed_STD3_mapped", - [ - 53, - 44 - ] - ], - [ - [ - 127239, - 127239 - ], - "disallowed_STD3_mapped", - [ - 54, - 44 - ] - ], - [ - [ - 127240, - 127240 - ], - "disallowed_STD3_mapped", - [ - 55, - 44 - ] - ], - [ - [ - 127241, - 127241 - ], - "disallowed_STD3_mapped", - [ - 56, - 44 - ] - ], - [ - [ - 127242, - 127242 - ], - "disallowed_STD3_mapped", - [ - 57, - 44 - ] - ], - [ - [ - 127243, - 127244 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127245, - 127247 - ], - "disallowed" - ], - [ - [ - 127248, - 127248 - ], - "disallowed_STD3_mapped", - [ - 40, - 97, - 41 - ] - ], - [ - [ - 127249, - 127249 - ], - "disallowed_STD3_mapped", - [ - 40, - 98, - 41 - ] - ], - [ - [ - 127250, - 127250 - ], - "disallowed_STD3_mapped", - [ - 40, - 99, - 41 - ] - ], - [ - [ - 127251, - 127251 - ], - "disallowed_STD3_mapped", - [ - 40, - 100, - 41 - ] - ], - [ - [ - 127252, - 127252 - ], - "disallowed_STD3_mapped", - [ - 40, - 101, - 41 - ] - ], - [ - [ - 127253, - 127253 - ], - "disallowed_STD3_mapped", - [ - 40, - 102, - 41 - ] - ], - [ - [ - 127254, - 127254 - ], - "disallowed_STD3_mapped", - [ - 40, - 103, - 41 - ] - ], - [ - [ - 127255, - 127255 - ], - "disallowed_STD3_mapped", - [ - 40, - 104, - 41 - ] - ], - [ - [ - 127256, - 127256 - ], - "disallowed_STD3_mapped", - [ - 40, - 105, - 41 - ] - ], - [ - [ - 127257, - 127257 - ], - "disallowed_STD3_mapped", - [ - 40, - 106, - 41 - ] - ], - [ - [ - 127258, - 127258 - ], - "disallowed_STD3_mapped", - [ - 40, - 107, - 41 - ] - ], - [ - [ - 127259, - 127259 - ], - "disallowed_STD3_mapped", - [ - 40, - 108, - 41 - ] - ], - [ - [ - 127260, - 127260 - ], - "disallowed_STD3_mapped", - [ - 40, - 109, - 41 - ] - ], - [ - [ - 127261, - 127261 - ], - "disallowed_STD3_mapped", - [ - 40, - 110, - 41 - ] - ], - [ - [ - 127262, - 127262 - ], - "disallowed_STD3_mapped", - [ - 40, - 111, - 41 - ] - ], - [ - [ - 127263, - 127263 - ], - "disallowed_STD3_mapped", - [ - 40, - 112, - 41 - ] - ], - [ - [ - 127264, - 127264 - ], - "disallowed_STD3_mapped", - [ - 40, - 113, - 41 - ] - ], - [ - [ - 127265, - 127265 - ], - "disallowed_STD3_mapped", - [ - 40, - 114, - 41 - ] - ], - [ - [ - 127266, - 127266 - ], - "disallowed_STD3_mapped", - [ - 40, - 115, - 41 - ] - ], - [ - [ - 127267, - 127267 - ], - "disallowed_STD3_mapped", - [ - 40, - 116, - 41 - ] - ], - [ - [ - 127268, - 127268 - ], - "disallowed_STD3_mapped", - [ - 40, - 117, - 41 - ] - ], - [ - [ - 127269, - 127269 - ], - "disallowed_STD3_mapped", - [ - 40, - 118, - 41 - ] - ], - [ - [ - 127270, - 127270 - ], - "disallowed_STD3_mapped", - [ - 40, - 119, - 41 - ] - ], - [ - [ - 127271, - 127271 - ], - "disallowed_STD3_mapped", - [ - 40, - 120, - 41 - ] - ], - [ - [ - 127272, - 127272 - ], - "disallowed_STD3_mapped", - [ - 40, - 121, - 41 - ] - ], - [ - [ - 127273, - 127273 - ], - "disallowed_STD3_mapped", - [ - 40, - 122, - 41 - ] - ], - [ - [ - 127274, - 127274 - ], - "mapped", - [ - 12308, - 115, - 12309 - ] - ], - [ - [ - 127275, - 127275 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 127276, - 127276 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 127277, - 127277 - ], - "mapped", - [ - 99, - 100 - ] - ], - [ - [ - 127278, - 127278 - ], - "mapped", - [ - 119, - 122 - ] - ], - [ - [ - 127279, - 127279 - ], - "disallowed" - ], - [ - [ - 127280, - 127280 - ], - "mapped", - [ - 97 - ] - ], - [ - [ - 127281, - 127281 - ], - "mapped", - [ - 98 - ] - ], - [ - [ - 127282, - 127282 - ], - "mapped", - [ - 99 - ] - ], - [ - [ - 127283, - 127283 - ], - "mapped", - [ - 100 - ] - ], - [ - [ - 127284, - 127284 - ], - "mapped", - [ - 101 - ] - ], - [ - [ - 127285, - 127285 - ], - "mapped", - [ - 102 - ] - ], - [ - [ - 127286, - 127286 - ], - "mapped", - [ - 103 - ] - ], - [ - [ - 127287, - 127287 - ], - "mapped", - [ - 104 - ] - ], - [ - [ - 127288, - 127288 - ], - "mapped", - [ - 105 - ] - ], - [ - [ - 127289, - 127289 - ], - "mapped", - [ - 106 - ] - ], - [ - [ - 127290, - 127290 - ], - "mapped", - [ - 107 - ] - ], - [ - [ - 127291, - 127291 - ], - "mapped", - [ - 108 - ] - ], - [ - [ - 127292, - 127292 - ], - "mapped", - [ - 109 - ] - ], - [ - [ - 127293, - 127293 - ], - "mapped", - [ - 110 - ] - ], - [ - [ - 127294, - 127294 - ], - "mapped", - [ - 111 - ] - ], - [ - [ - 127295, - 127295 - ], - "mapped", - [ - 112 - ] - ], - [ - [ - 127296, - 127296 - ], - "mapped", - [ - 113 - ] - ], - [ - [ - 127297, - 127297 - ], - "mapped", - [ - 114 - ] - ], - [ - [ - 127298, - 127298 - ], - "mapped", - [ - 115 - ] - ], - [ - [ - 127299, - 127299 - ], - "mapped", - [ - 116 - ] - ], - [ - [ - 127300, - 127300 - ], - "mapped", - [ - 117 - ] - ], - [ - [ - 127301, - 127301 - ], - "mapped", - [ - 118 - ] - ], - [ - [ - 127302, - 127302 - ], - "mapped", - [ - 119 - ] - ], - [ - [ - 127303, - 127303 - ], - "mapped", - [ - 120 - ] - ], - [ - [ - 127304, - 127304 - ], - "mapped", - [ - 121 - ] - ], - [ - [ - 127305, - 127305 - ], - "mapped", - [ - 122 - ] - ], - [ - [ - 127306, - 127306 - ], - "mapped", - [ - 104, - 118 - ] - ], - [ - [ - 127307, - 127307 - ], - "mapped", - [ - 109, - 118 - ] - ], - [ - [ - 127308, - 127308 - ], - "mapped", - [ - 115, - 100 - ] - ], - [ - [ - 127309, - 127309 - ], - "mapped", - [ - 115, - 115 - ] - ], - [ - [ - 127310, - 127310 - ], - "mapped", - [ - 112, - 112, - 118 - ] - ], - [ - [ - 127311, - 127311 - ], - "mapped", - [ - 119, - 99 - ] - ], - [ - [ - 127312, - 127318 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127319, - 127319 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127320, - 127326 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127327, - 127327 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127328, - 127337 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127338, - 127338 - ], - "mapped", - [ - 109, - 99 - ] - ], - [ - [ - 127339, - 127339 - ], - "mapped", - [ - 109, - 100 - ] - ], - [ - [ - 127340, - 127343 - ], - "disallowed" - ], - [ - [ - 127344, - 127352 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127353, - 127353 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127354, - 127354 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127355, - 127356 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127357, - 127358 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127359, - 127359 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127360, - 127369 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127370, - 127373 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127374, - 127375 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127376, - 127376 - ], - "mapped", - [ - 100, - 106 - ] - ], - [ - [ - 127377, - 127386 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127387, - 127461 - ], - "disallowed" - ], - [ - [ - 127462, - 127487 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127488, - 127488 - ], - "mapped", - [ - 12411, - 12363 - ] - ], - [ - [ - 127489, - 127489 - ], - "mapped", - [ - 12467, - 12467 - ] - ], - [ - [ - 127490, - 127490 - ], - "mapped", - [ - 12469 - ] - ], - [ - [ - 127491, - 127503 - ], - "disallowed" - ], - [ - [ - 127504, - 127504 - ], - "mapped", - [ - 25163 - ] - ], - [ - [ - 127505, - 127505 - ], - "mapped", - [ - 23383 - ] - ], - [ - [ - 127506, - 127506 - ], - "mapped", - [ - 21452 - ] - ], - [ - [ - 127507, - 127507 - ], - "mapped", - [ - 12487 - ] - ], - [ - [ - 127508, - 127508 - ], - "mapped", - [ - 20108 - ] - ], - [ - [ - 127509, - 127509 - ], - "mapped", - [ - 22810 - ] - ], - [ - [ - 127510, - 127510 - ], - "mapped", - [ - 35299 - ] - ], - [ - [ - 127511, - 127511 - ], - "mapped", - [ - 22825 - ] - ], - [ - [ - 127512, - 127512 - ], - "mapped", - [ - 20132 - ] - ], - [ - [ - 127513, - 127513 - ], - "mapped", - [ - 26144 - ] - ], - [ - [ - 127514, - 127514 - ], - "mapped", - [ - 28961 - ] - ], - [ - [ - 127515, - 127515 - ], - "mapped", - [ - 26009 - ] - ], - [ - [ - 127516, - 127516 - ], - "mapped", - [ - 21069 - ] - ], - [ - [ - 127517, - 127517 - ], - "mapped", - [ - 24460 - ] - ], - [ - [ - 127518, - 127518 - ], - "mapped", - [ - 20877 - ] - ], - [ - [ - 127519, - 127519 - ], - "mapped", - [ - 26032 - ] - ], - [ - [ - 127520, - 127520 - ], - "mapped", - [ - 21021 - ] - ], - [ - [ - 127521, - 127521 - ], - "mapped", - [ - 32066 - ] - ], - [ - [ - 127522, - 127522 - ], - "mapped", - [ - 29983 - ] - ], - [ - [ - 127523, - 127523 - ], - "mapped", - [ - 36009 - ] - ], - [ - [ - 127524, - 127524 - ], - "mapped", - [ - 22768 - ] - ], - [ - [ - 127525, - 127525 - ], - "mapped", - [ - 21561 - ] - ], - [ - [ - 127526, - 127526 - ], - "mapped", - [ - 28436 - ] - ], - [ - [ - 127527, - 127527 - ], - "mapped", - [ - 25237 - ] - ], - [ - [ - 127528, - 127528 - ], - "mapped", - [ - 25429 - ] - ], - [ - [ - 127529, - 127529 - ], - "mapped", - [ - 19968 - ] - ], - [ - [ - 127530, - 127530 - ], - "mapped", - [ - 19977 - ] - ], - [ - [ - 127531, - 127531 - ], - "mapped", - [ - 36938 - ] - ], - [ - [ - 127532, - 127532 - ], - "mapped", - [ - 24038 - ] - ], - [ - [ - 127533, - 127533 - ], - "mapped", - [ - 20013 - ] - ], - [ - [ - 127534, - 127534 - ], - "mapped", - [ - 21491 - ] - ], - [ - [ - 127535, - 127535 - ], - "mapped", - [ - 25351 - ] - ], - [ - [ - 127536, - 127536 - ], - "mapped", - [ - 36208 - ] - ], - [ - [ - 127537, - 127537 - ], - "mapped", - [ - 25171 - ] - ], - [ - [ - 127538, - 127538 - ], - "mapped", - [ - 31105 - ] - ], - [ - [ - 127539, - 127539 - ], - "mapped", - [ - 31354 - ] - ], - [ - [ - 127540, - 127540 - ], - "mapped", - [ - 21512 - ] - ], - [ - [ - 127541, - 127541 - ], - "mapped", - [ - 28288 - ] - ], - [ - [ - 127542, - 127542 - ], - "mapped", - [ - 26377 - ] - ], - [ - [ - 127543, - 127543 - ], - "mapped", - [ - 26376 - ] - ], - [ - [ - 127544, - 127544 - ], - "mapped", - [ - 30003 - ] - ], - [ - [ - 127545, - 127545 - ], - "mapped", - [ - 21106 - ] - ], - [ - [ - 127546, - 127546 - ], - "mapped", - [ - 21942 - ] - ], - [ - [ - 127547, - 127551 - ], - "disallowed" - ], - [ - [ - 127552, - 127552 - ], - "mapped", - [ - 12308, - 26412, - 12309 - ] - ], - [ - [ - 127553, - 127553 - ], - "mapped", - [ - 12308, - 19977, - 12309 - ] - ], - [ - [ - 127554, - 127554 - ], - "mapped", - [ - 12308, - 20108, - 12309 - ] - ], - [ - [ - 127555, - 127555 - ], - "mapped", - [ - 12308, - 23433, - 12309 - ] - ], - [ - [ - 127556, - 127556 - ], - "mapped", - [ - 12308, - 28857, - 12309 - ] - ], - [ - [ - 127557, - 127557 - ], - "mapped", - [ - 12308, - 25171, - 12309 - ] - ], - [ - [ - 127558, - 127558 - ], - "mapped", - [ - 12308, - 30423, - 12309 - ] - ], - [ - [ - 127559, - 127559 - ], - "mapped", - [ - 12308, - 21213, - 12309 - ] - ], - [ - [ - 127560, - 127560 - ], - "mapped", - [ - 12308, - 25943, - 12309 - ] - ], - [ - [ - 127561, - 127567 - ], - "disallowed" - ], - [ - [ - 127568, - 127568 - ], - "mapped", - [ - 24471 - ] - ], - [ - [ - 127569, - 127569 - ], - "mapped", - [ - 21487 - ] - ], - [ - [ - 127570, - 127743 - ], - "disallowed" - ], - [ - [ - 127744, - 127776 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127777, - 127788 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127789, - 127791 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127792, - 127797 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127798, - 127798 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127799, - 127868 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127869, - 127869 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127870, - 127871 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127872, - 127891 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127892, - 127903 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127904, - 127940 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127941, - 127941 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127942, - 127946 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127947, - 127950 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127951, - 127955 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127956, - 127967 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127968, - 127984 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127985, - 127991 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 127992, - 127999 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128000, - 128062 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128063, - 128063 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128064, - 128064 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128065, - 128065 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128066, - 128247 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128248, - 128248 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128249, - 128252 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128253, - 128254 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128255, - 128255 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128256, - 128317 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128318, - 128319 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128320, - 128323 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128324, - 128330 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128331, - 128335 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128336, - 128359 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128360, - 128377 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128378, - 128378 - ], - "disallowed" - ], - [ - [ - 128379, - 128419 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128420, - 128420 - ], - "disallowed" - ], - [ - [ - 128421, - 128506 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128507, - 128511 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128512, - 128512 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128513, - 128528 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128529, - 128529 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128530, - 128532 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128533, - 128533 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128534, - 128534 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128535, - 128535 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128536, - 128536 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128537, - 128537 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128538, - 128538 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128539, - 128539 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128540, - 128542 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128543, - 128543 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128544, - 128549 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128550, - 128551 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128552, - 128555 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128556, - 128556 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128557, - 128557 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128558, - 128559 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128560, - 128563 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128564, - 128564 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128565, - 128576 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128577, - 128578 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128579, - 128580 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128581, - 128591 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128592, - 128639 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128640, - 128709 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128710, - 128719 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128720, - 128720 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128721, - 128735 - ], - "disallowed" - ], - [ - [ - 128736, - 128748 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128749, - 128751 - ], - "disallowed" - ], - [ - [ - 128752, - 128755 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128756, - 128767 - ], - "disallowed" - ], - [ - [ - 128768, - 128883 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128884, - 128895 - ], - "disallowed" - ], - [ - [ - 128896, - 128980 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 128981, - 129023 - ], - "disallowed" - ], - [ - [ - 129024, - 129035 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129036, - 129039 - ], - "disallowed" - ], - [ - [ - 129040, - 129095 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129096, - 129103 - ], - "disallowed" - ], - [ - [ - 129104, - 129113 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129114, - 129119 - ], - "disallowed" - ], - [ - [ - 129120, - 129159 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129160, - 129167 - ], - "disallowed" - ], - [ - [ - 129168, - 129197 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129198, - 129295 - ], - "disallowed" - ], - [ - [ - 129296, - 129304 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129305, - 129407 - ], - "disallowed" - ], - [ - [ - 129408, - 129412 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129413, - 129471 - ], - "disallowed" - ], - [ - [ - 129472, - 129472 - ], - "valid", - [ - ], - "NV8" - ], - [ - [ - 129473, - 131069 - ], - "disallowed" - ], - [ - [ - 131070, - 131071 - ], - "disallowed" - ], - [ - [ - 131072, - 173782 - ], - "valid" - ], - [ - [ - 173783, - 173823 - ], - "disallowed" - ], - [ - [ - 173824, - 177972 - ], - "valid" - ], - [ - [ - 177973, - 177983 - ], - "disallowed" - ], - [ - [ - 177984, - 178205 - ], - "valid" - ], - [ - [ - 178206, - 178207 - ], - "disallowed" - ], - [ - [ - 178208, - 183969 - ], - "valid" - ], - [ - [ - 183970, - 194559 - ], - "disallowed" - ], - [ - [ - 194560, - 194560 - ], - "mapped", - [ - 20029 - ] - ], - [ - [ - 194561, - 194561 - ], - "mapped", - [ - 20024 - ] - ], - [ - [ - 194562, - 194562 - ], - "mapped", - [ - 20033 - ] - ], - [ - [ - 194563, - 194563 - ], - "mapped", - [ - 131362 - ] - ], - [ - [ - 194564, - 194564 - ], - "mapped", - [ - 20320 - ] - ], - [ - [ - 194565, - 194565 - ], - "mapped", - [ - 20398 - ] - ], - [ - [ - 194566, - 194566 - ], - "mapped", - [ - 20411 - ] - ], - [ - [ - 194567, - 194567 - ], - "mapped", - [ - 20482 - ] - ], - [ - [ - 194568, - 194568 - ], - "mapped", - [ - 20602 - ] - ], - [ - [ - 194569, - 194569 - ], - "mapped", - [ - 20633 - ] - ], - [ - [ - 194570, - 194570 - ], - "mapped", - [ - 20711 - ] - ], - [ - [ - 194571, - 194571 - ], - "mapped", - [ - 20687 - ] - ], - [ - [ - 194572, - 194572 - ], - "mapped", - [ - 13470 - ] - ], - [ - [ - 194573, - 194573 - ], - "mapped", - [ - 132666 - ] - ], - [ - [ - 194574, - 194574 - ], - "mapped", - [ - 20813 - ] - ], - [ - [ - 194575, - 194575 - ], - "mapped", - [ - 20820 - ] - ], - [ - [ - 194576, - 194576 - ], - "mapped", - [ - 20836 - ] - ], - [ - [ - 194577, - 194577 - ], - "mapped", - [ - 20855 - ] - ], - [ - [ - 194578, - 194578 - ], - "mapped", - [ - 132380 - ] - ], - [ - [ - 194579, - 194579 - ], - "mapped", - [ - 13497 - ] - ], - [ - [ - 194580, - 194580 - ], - "mapped", - [ - 20839 - ] - ], - [ - [ - 194581, - 194581 - ], - "mapped", - [ - 20877 - ] - ], - [ - [ - 194582, - 194582 - ], - "mapped", - [ - 132427 - ] - ], - [ - [ - 194583, - 194583 - ], - "mapped", - [ - 20887 - ] - ], - [ - [ - 194584, - 194584 - ], - "mapped", - [ - 20900 - ] - ], - [ - [ - 194585, - 194585 - ], - "mapped", - [ - 20172 - ] - ], - [ - [ - 194586, - 194586 - ], - "mapped", - [ - 20908 - ] - ], - [ - [ - 194587, - 194587 - ], - "mapped", - [ - 20917 - ] - ], - [ - [ - 194588, - 194588 - ], - "mapped", - [ - 168415 - ] - ], - [ - [ - 194589, - 194589 - ], - "mapped", - [ - 20981 - ] - ], - [ - [ - 194590, - 194590 - ], - "mapped", - [ - 20995 - ] - ], - [ - [ - 194591, - 194591 - ], - "mapped", - [ - 13535 - ] - ], - [ - [ - 194592, - 194592 - ], - "mapped", - [ - 21051 - ] - ], - [ - [ - 194593, - 194593 - ], - "mapped", - [ - 21062 - ] - ], - [ - [ - 194594, - 194594 - ], - "mapped", - [ - 21106 - ] - ], - [ - [ - 194595, - 194595 - ], - "mapped", - [ - 21111 - ] - ], - [ - [ - 194596, - 194596 - ], - "mapped", - [ - 13589 - ] - ], - [ - [ - 194597, - 194597 - ], - "mapped", - [ - 21191 - ] - ], - [ - [ - 194598, - 194598 - ], - "mapped", - [ - 21193 - ] - ], - [ - [ - 194599, - 194599 - ], - "mapped", - [ - 21220 - ] - ], - [ - [ - 194600, - 194600 - ], - "mapped", - [ - 21242 - ] - ], - [ - [ - 194601, - 194601 - ], - "mapped", - [ - 21253 - ] - ], - [ - [ - 194602, - 194602 - ], - "mapped", - [ - 21254 - ] - ], - [ - [ - 194603, - 194603 - ], - "mapped", - [ - 21271 - ] - ], - [ - [ - 194604, - 194604 - ], - "mapped", - [ - 21321 - ] - ], - [ - [ - 194605, - 194605 - ], - "mapped", - [ - 21329 - ] - ], - [ - [ - 194606, - 194606 - ], - "mapped", - [ - 21338 - ] - ], - [ - [ - 194607, - 194607 - ], - "mapped", - [ - 21363 - ] - ], - [ - [ - 194608, - 194608 - ], - "mapped", - [ - 21373 - ] - ], - [ - [ - 194609, - 194611 - ], - "mapped", - [ - 21375 - ] - ], - [ - [ - 194612, - 194612 - ], - "mapped", - [ - 133676 - ] - ], - [ - [ - 194613, - 194613 - ], - "mapped", - [ - 28784 - ] - ], - [ - [ - 194614, - 194614 - ], - "mapped", - [ - 21450 - ] - ], - [ - [ - 194615, - 194615 - ], - "mapped", - [ - 21471 - ] - ], - [ - [ - 194616, - 194616 - ], - "mapped", - [ - 133987 - ] - ], - [ - [ - 194617, - 194617 - ], - "mapped", - [ - 21483 - ] - ], - [ - [ - 194618, - 194618 - ], - "mapped", - [ - 21489 - ] - ], - [ - [ - 194619, - 194619 - ], - "mapped", - [ - 21510 - ] - ], - [ - [ - 194620, - 194620 - ], - "mapped", - [ - 21662 - ] - ], - [ - [ - 194621, - 194621 - ], - "mapped", - [ - 21560 - ] - ], - [ - [ - 194622, - 194622 - ], - "mapped", - [ - 21576 - ] - ], - [ - [ - 194623, - 194623 - ], - "mapped", - [ - 21608 - ] - ], - [ - [ - 194624, - 194624 - ], - "mapped", - [ - 21666 - ] - ], - [ - [ - 194625, - 194625 - ], - "mapped", - [ - 21750 - ] - ], - [ - [ - 194626, - 194626 - ], - "mapped", - [ - 21776 - ] - ], - [ - [ - 194627, - 194627 - ], - "mapped", - [ - 21843 - ] - ], - [ - [ - 194628, - 194628 - ], - "mapped", - [ - 21859 - ] - ], - [ - [ - 194629, - 194630 - ], - "mapped", - [ - 21892 - ] - ], - [ - [ - 194631, - 194631 - ], - "mapped", - [ - 21913 - ] - ], - [ - [ - 194632, - 194632 - ], - "mapped", - [ - 21931 - ] - ], - [ - [ - 194633, - 194633 - ], - "mapped", - [ - 21939 - ] - ], - [ - [ - 194634, - 194634 - ], - "mapped", - [ - 21954 - ] - ], - [ - [ - 194635, - 194635 - ], - "mapped", - [ - 22294 - ] - ], - [ - [ - 194636, - 194636 - ], - "mapped", - [ - 22022 - ] - ], - [ - [ - 194637, - 194637 - ], - "mapped", - [ - 22295 - ] - ], - [ - [ - 194638, - 194638 - ], - "mapped", - [ - 22097 - ] - ], - [ - [ - 194639, - 194639 - ], - "mapped", - [ - 22132 - ] - ], - [ - [ - 194640, - 194640 - ], - "mapped", - [ - 20999 - ] - ], - [ - [ - 194641, - 194641 - ], - "mapped", - [ - 22766 - ] - ], - [ - [ - 194642, - 194642 - ], - "mapped", - [ - 22478 - ] - ], - [ - [ - 194643, - 194643 - ], - "mapped", - [ - 22516 - ] - ], - [ - [ - 194644, - 194644 - ], - "mapped", - [ - 22541 - ] - ], - [ - [ - 194645, - 194645 - ], - "mapped", - [ - 22411 - ] - ], - [ - [ - 194646, - 194646 - ], - "mapped", - [ - 22578 - ] - ], - [ - [ - 194647, - 194647 - ], - "mapped", - [ - 22577 - ] - ], - [ - [ - 194648, - 194648 - ], - "mapped", - [ - 22700 - ] - ], - [ - [ - 194649, - 194649 - ], - "mapped", - [ - 136420 - ] - ], - [ - [ - 194650, - 194650 - ], - "mapped", - [ - 22770 - ] - ], - [ - [ - 194651, - 194651 - ], - "mapped", - [ - 22775 - ] - ], - [ - [ - 194652, - 194652 - ], - "mapped", - [ - 22790 - ] - ], - [ - [ - 194653, - 194653 - ], - "mapped", - [ - 22810 - ] - ], - [ - [ - 194654, - 194654 - ], - "mapped", - [ - 22818 - ] - ], - [ - [ - 194655, - 194655 - ], - "mapped", - [ - 22882 - ] - ], - [ - [ - 194656, - 194656 - ], - "mapped", - [ - 136872 - ] - ], - [ - [ - 194657, - 194657 - ], - "mapped", - [ - 136938 - ] - ], - [ - [ - 194658, - 194658 - ], - "mapped", - [ - 23020 - ] - ], - [ - [ - 194659, - 194659 - ], - "mapped", - [ - 23067 - ] - ], - [ - [ - 194660, - 194660 - ], - "mapped", - [ - 23079 - ] - ], - [ - [ - 194661, - 194661 - ], - "mapped", - [ - 23000 - ] - ], - [ - [ - 194662, - 194662 - ], - "mapped", - [ - 23142 - ] - ], - [ - [ - 194663, - 194663 - ], - "mapped", - [ - 14062 - ] - ], - [ - [ - 194664, - 194664 - ], - "disallowed" - ], - [ - [ - 194665, - 194665 - ], - "mapped", - [ - 23304 - ] - ], - [ - [ - 194666, - 194667 - ], - "mapped", - [ - 23358 - ] - ], - [ - [ - 194668, - 194668 - ], - "mapped", - [ - 137672 - ] - ], - [ - [ - 194669, - 194669 - ], - "mapped", - [ - 23491 - ] - ], - [ - [ - 194670, - 194670 - ], - "mapped", - [ - 23512 - ] - ], - [ - [ - 194671, - 194671 - ], - "mapped", - [ - 23527 - ] - ], - [ - [ - 194672, - 194672 - ], - "mapped", - [ - 23539 - ] - ], - [ - [ - 194673, - 194673 - ], - "mapped", - [ - 138008 - ] - ], - [ - [ - 194674, - 194674 - ], - "mapped", - [ - 23551 - ] - ], - [ - [ - 194675, - 194675 - ], - "mapped", - [ - 23558 - ] - ], - [ - [ - 194676, - 194676 - ], - "disallowed" - ], - [ - [ - 194677, - 194677 - ], - "mapped", - [ - 23586 - ] - ], - [ - [ - 194678, - 194678 - ], - "mapped", - [ - 14209 - ] - ], - [ - [ - 194679, - 194679 - ], - "mapped", - [ - 23648 - ] - ], - [ - [ - 194680, - 194680 - ], - "mapped", - [ - 23662 - ] - ], - [ - [ - 194681, - 194681 - ], - "mapped", - [ - 23744 - ] - ], - [ - [ - 194682, - 194682 - ], - "mapped", - [ - 23693 - ] - ], - [ - [ - 194683, - 194683 - ], - "mapped", - [ - 138724 - ] - ], - [ - [ - 194684, - 194684 - ], - "mapped", - [ - 23875 - ] - ], - [ - [ - 194685, - 194685 - ], - "mapped", - [ - 138726 - ] - ], - [ - [ - 194686, - 194686 - ], - "mapped", - [ - 23918 - ] - ], - [ - [ - 194687, - 194687 - ], - "mapped", - [ - 23915 - ] - ], - [ - [ - 194688, - 194688 - ], - "mapped", - [ - 23932 - ] - ], - [ - [ - 194689, - 194689 - ], - "mapped", - [ - 24033 - ] - ], - [ - [ - 194690, - 194690 - ], - "mapped", - [ - 24034 - ] - ], - [ - [ - 194691, - 194691 - ], - "mapped", - [ - 14383 - ] - ], - [ - [ - 194692, - 194692 - ], - "mapped", - [ - 24061 - ] - ], - [ - [ - 194693, - 194693 - ], - "mapped", - [ - 24104 - ] - ], - [ - [ - 194694, - 194694 - ], - "mapped", - [ - 24125 - ] - ], - [ - [ - 194695, - 194695 - ], - "mapped", - [ - 24169 - ] - ], - [ - [ - 194696, - 194696 - ], - "mapped", - [ - 14434 - ] - ], - [ - [ - 194697, - 194697 - ], - "mapped", - [ - 139651 - ] - ], - [ - [ - 194698, - 194698 - ], - "mapped", - [ - 14460 - ] - ], - [ - [ - 194699, - 194699 - ], - "mapped", - [ - 24240 - ] - ], - [ - [ - 194700, - 194700 - ], - "mapped", - [ - 24243 - ] - ], - [ - [ - 194701, - 194701 - ], - "mapped", - [ - 24246 - ] - ], - [ - [ - 194702, - 194702 - ], - "mapped", - [ - 24266 - ] - ], - [ - [ - 194703, - 194703 - ], - "mapped", - [ - 172946 - ] - ], - [ - [ - 194704, - 194704 - ], - "mapped", - [ - 24318 - ] - ], - [ - [ - 194705, - 194706 - ], - "mapped", - [ - 140081 - ] - ], - [ - [ - 194707, - 194707 - ], - "mapped", - [ - 33281 - ] - ], - [ - [ - 194708, - 194709 - ], - "mapped", - [ - 24354 - ] - ], - [ - [ - 194710, - 194710 - ], - "mapped", - [ - 14535 - ] - ], - [ - [ - 194711, - 194711 - ], - "mapped", - [ - 144056 - ] - ], - [ - [ - 194712, - 194712 - ], - "mapped", - [ - 156122 - ] - ], - [ - [ - 194713, - 194713 - ], - "mapped", - [ - 24418 - ] - ], - [ - [ - 194714, - 194714 - ], - "mapped", - [ - 24427 - ] - ], - [ - [ - 194715, - 194715 - ], - "mapped", - [ - 14563 - ] - ], - [ - [ - 194716, - 194716 - ], - "mapped", - [ - 24474 - ] - ], - [ - [ - 194717, - 194717 - ], - "mapped", - [ - 24525 - ] - ], - [ - [ - 194718, - 194718 - ], - "mapped", - [ - 24535 - ] - ], - [ - [ - 194719, - 194719 - ], - "mapped", - [ - 24569 - ] - ], - [ - [ - 194720, - 194720 - ], - "mapped", - [ - 24705 - ] - ], - [ - [ - 194721, - 194721 - ], - "mapped", - [ - 14650 - ] - ], - [ - [ - 194722, - 194722 - ], - "mapped", - [ - 14620 - ] - ], - [ - [ - 194723, - 194723 - ], - "mapped", - [ - 24724 - ] - ], - [ - [ - 194724, - 194724 - ], - "mapped", - [ - 141012 - ] - ], - [ - [ - 194725, - 194725 - ], - "mapped", - [ - 24775 - ] - ], - [ - [ - 194726, - 194726 - ], - "mapped", - [ - 24904 - ] - ], - [ - [ - 194727, - 194727 - ], - "mapped", - [ - 24908 - ] - ], - [ - [ - 194728, - 194728 - ], - "mapped", - [ - 24910 - ] - ], - [ - [ - 194729, - 194729 - ], - "mapped", - [ - 24908 - ] - ], - [ - [ - 194730, - 194730 - ], - "mapped", - [ - 24954 - ] - ], - [ - [ - 194731, - 194731 - ], - "mapped", - [ - 24974 - ] - ], - [ - [ - 194732, - 194732 - ], - "mapped", - [ - 25010 - ] - ], - [ - [ - 194733, - 194733 - ], - "mapped", - [ - 24996 - ] - ], - [ - [ - 194734, - 194734 - ], - "mapped", - [ - 25007 - ] - ], - [ - [ - 194735, - 194735 - ], - "mapped", - [ - 25054 - ] - ], - [ - [ - 194736, - 194736 - ], - "mapped", - [ - 25074 - ] - ], - [ - [ - 194737, - 194737 - ], - "mapped", - [ - 25078 - ] - ], - [ - [ - 194738, - 194738 - ], - "mapped", - [ - 25104 - ] - ], - [ - [ - 194739, - 194739 - ], - "mapped", - [ - 25115 - ] - ], - [ - [ - 194740, - 194740 - ], - "mapped", - [ - 25181 - ] - ], - [ - [ - 194741, - 194741 - ], - "mapped", - [ - 25265 - ] - ], - [ - [ - 194742, - 194742 - ], - "mapped", - [ - 25300 - ] - ], - [ - [ - 194743, - 194743 - ], - "mapped", - [ - 25424 - ] - ], - [ - [ - 194744, - 194744 - ], - "mapped", - [ - 142092 - ] - ], - [ - [ - 194745, - 194745 - ], - "mapped", - [ - 25405 - ] - ], - [ - [ - 194746, - 194746 - ], - "mapped", - [ - 25340 - ] - ], - [ - [ - 194747, - 194747 - ], - "mapped", - [ - 25448 - ] - ], - [ - [ - 194748, - 194748 - ], - "mapped", - [ - 25475 - ] - ], - [ - [ - 194749, - 194749 - ], - "mapped", - [ - 25572 - ] - ], - [ - [ - 194750, - 194750 - ], - "mapped", - [ - 142321 - ] - ], - [ - [ - 194751, - 194751 - ], - "mapped", - [ - 25634 - ] - ], - [ - [ - 194752, - 194752 - ], - "mapped", - [ - 25541 - ] - ], - [ - [ - 194753, - 194753 - ], - "mapped", - [ - 25513 - ] - ], - [ - [ - 194754, - 194754 - ], - "mapped", - [ - 14894 - ] - ], - [ - [ - 194755, - 194755 - ], - "mapped", - [ - 25705 - ] - ], - [ - [ - 194756, - 194756 - ], - "mapped", - [ - 25726 - ] - ], - [ - [ - 194757, - 194757 - ], - "mapped", - [ - 25757 - ] - ], - [ - [ - 194758, - 194758 - ], - "mapped", - [ - 25719 - ] - ], - [ - [ - 194759, - 194759 - ], - "mapped", - [ - 14956 - ] - ], - [ - [ - 194760, - 194760 - ], - "mapped", - [ - 25935 - ] - ], - [ - [ - 194761, - 194761 - ], - "mapped", - [ - 25964 - ] - ], - [ - [ - 194762, - 194762 - ], - "mapped", - [ - 143370 - ] - ], - [ - [ - 194763, - 194763 - ], - "mapped", - [ - 26083 - ] - ], - [ - [ - 194764, - 194764 - ], - "mapped", - [ - 26360 - ] - ], - [ - [ - 194765, - 194765 - ], - "mapped", - [ - 26185 - ] - ], - [ - [ - 194766, - 194766 - ], - "mapped", - [ - 15129 - ] - ], - [ - [ - 194767, - 194767 - ], - "mapped", - [ - 26257 - ] - ], - [ - [ - 194768, - 194768 - ], - "mapped", - [ - 15112 - ] - ], - [ - [ - 194769, - 194769 - ], - "mapped", - [ - 15076 - ] - ], - [ - [ - 194770, - 194770 - ], - "mapped", - [ - 20882 - ] - ], - [ - [ - 194771, - 194771 - ], - "mapped", - [ - 20885 - ] - ], - [ - [ - 194772, - 194772 - ], - "mapped", - [ - 26368 - ] - ], - [ - [ - 194773, - 194773 - ], - "mapped", - [ - 26268 - ] - ], - [ - [ - 194774, - 194774 - ], - "mapped", - [ - 32941 - ] - ], - [ - [ - 194775, - 194775 - ], - "mapped", - [ - 17369 - ] - ], - [ - [ - 194776, - 194776 - ], - "mapped", - [ - 26391 - ] - ], - [ - [ - 194777, - 194777 - ], - "mapped", - [ - 26395 - ] - ], - [ - [ - 194778, - 194778 - ], - "mapped", - [ - 26401 - ] - ], - [ - [ - 194779, - 194779 - ], - "mapped", - [ - 26462 - ] - ], - [ - [ - 194780, - 194780 - ], - "mapped", - [ - 26451 - ] - ], - [ - [ - 194781, - 194781 - ], - "mapped", - [ - 144323 - ] - ], - [ - [ - 194782, - 194782 - ], - "mapped", - [ - 15177 - ] - ], - [ - [ - 194783, - 194783 - ], - "mapped", - [ - 26618 - ] - ], - [ - [ - 194784, - 194784 - ], - "mapped", - [ - 26501 - ] - ], - [ - [ - 194785, - 194785 - ], - "mapped", - [ - 26706 - ] - ], - [ - [ - 194786, - 194786 - ], - "mapped", - [ - 26757 - ] - ], - [ - [ - 194787, - 194787 - ], - "mapped", - [ - 144493 - ] - ], - [ - [ - 194788, - 194788 - ], - "mapped", - [ - 26766 - ] - ], - [ - [ - 194789, - 194789 - ], - "mapped", - [ - 26655 - ] - ], - [ - [ - 194790, - 194790 - ], - "mapped", - [ - 26900 - ] - ], - [ - [ - 194791, - 194791 - ], - "mapped", - [ - 15261 - ] - ], - [ - [ - 194792, - 194792 - ], - "mapped", - [ - 26946 - ] - ], - [ - [ - 194793, - 194793 - ], - "mapped", - [ - 27043 - ] - ], - [ - [ - 194794, - 194794 - ], - "mapped", - [ - 27114 - ] - ], - [ - [ - 194795, - 194795 - ], - "mapped", - [ - 27304 - ] - ], - [ - [ - 194796, - 194796 - ], - "mapped", - [ - 145059 - ] - ], - [ - [ - 194797, - 194797 - ], - "mapped", - [ - 27355 - ] - ], - [ - [ - 194798, - 194798 - ], - "mapped", - [ - 15384 - ] - ], - [ - [ - 194799, - 194799 - ], - "mapped", - [ - 27425 - ] - ], - [ - [ - 194800, - 194800 - ], - "mapped", - [ - 145575 - ] - ], - [ - [ - 194801, - 194801 - ], - "mapped", - [ - 27476 - ] - ], - [ - [ - 194802, - 194802 - ], - "mapped", - [ - 15438 - ] - ], - [ - [ - 194803, - 194803 - ], - "mapped", - [ - 27506 - ] - ], - [ - [ - 194804, - 194804 - ], - "mapped", - [ - 27551 - ] - ], - [ - [ - 194805, - 194805 - ], - "mapped", - [ - 27578 - ] - ], - [ - [ - 194806, - 194806 - ], - "mapped", - [ - 27579 - ] - ], - [ - [ - 194807, - 194807 - ], - "mapped", - [ - 146061 - ] - ], - [ - [ - 194808, - 194808 - ], - "mapped", - [ - 138507 - ] - ], - [ - [ - 194809, - 194809 - ], - "mapped", - [ - 146170 - ] - ], - [ - [ - 194810, - 194810 - ], - "mapped", - [ - 27726 - ] - ], - [ - [ - 194811, - 194811 - ], - "mapped", - [ - 146620 - ] - ], - [ - [ - 194812, - 194812 - ], - "mapped", - [ - 27839 - ] - ], - [ - [ - 194813, - 194813 - ], - "mapped", - [ - 27853 - ] - ], - [ - [ - 194814, - 194814 - ], - "mapped", - [ - 27751 - ] - ], - [ - [ - 194815, - 194815 - ], - "mapped", - [ - 27926 - ] - ], - [ - [ - 194816, - 194816 - ], - "mapped", - [ - 27966 - ] - ], - [ - [ - 194817, - 194817 - ], - "mapped", - [ - 28023 - ] - ], - [ - [ - 194818, - 194818 - ], - "mapped", - [ - 27969 - ] - ], - [ - [ - 194819, - 194819 - ], - "mapped", - [ - 28009 - ] - ], - [ - [ - 194820, - 194820 - ], - "mapped", - [ - 28024 - ] - ], - [ - [ - 194821, - 194821 - ], - "mapped", - [ - 28037 - ] - ], - [ - [ - 194822, - 194822 - ], - "mapped", - [ - 146718 - ] - ], - [ - [ - 194823, - 194823 - ], - "mapped", - [ - 27956 - ] - ], - [ - [ - 194824, - 194824 - ], - "mapped", - [ - 28207 - ] - ], - [ - [ - 194825, - 194825 - ], - "mapped", - [ - 28270 - ] - ], - [ - [ - 194826, - 194826 - ], - "mapped", - [ - 15667 - ] - ], - [ - [ - 194827, - 194827 - ], - "mapped", - [ - 28363 - ] - ], - [ - [ - 194828, - 194828 - ], - "mapped", - [ - 28359 - ] - ], - [ - [ - 194829, - 194829 - ], - "mapped", - [ - 147153 - ] - ], - [ - [ - 194830, - 194830 - ], - "mapped", - [ - 28153 - ] - ], - [ - [ - 194831, - 194831 - ], - "mapped", - [ - 28526 - ] - ], - [ - [ - 194832, - 194832 - ], - "mapped", - [ - 147294 - ] - ], - [ - [ - 194833, - 194833 - ], - "mapped", - [ - 147342 - ] - ], - [ - [ - 194834, - 194834 - ], - "mapped", - [ - 28614 - ] - ], - [ - [ - 194835, - 194835 - ], - "mapped", - [ - 28729 - ] - ], - [ - [ - 194836, - 194836 - ], - "mapped", - [ - 28702 - ] - ], - [ - [ - 194837, - 194837 - ], - "mapped", - [ - 28699 - ] - ], - [ - [ - 194838, - 194838 - ], - "mapped", - [ - 15766 - ] - ], - [ - [ - 194839, - 194839 - ], - "mapped", - [ - 28746 - ] - ], - [ - [ - 194840, - 194840 - ], - "mapped", - [ - 28797 - ] - ], - [ - [ - 194841, - 194841 - ], - "mapped", - [ - 28791 - ] - ], - [ - [ - 194842, - 194842 - ], - "mapped", - [ - 28845 - ] - ], - [ - [ - 194843, - 194843 - ], - "mapped", - [ - 132389 - ] - ], - [ - [ - 194844, - 194844 - ], - "mapped", - [ - 28997 - ] - ], - [ - [ - 194845, - 194845 - ], - "mapped", - [ - 148067 - ] - ], - [ - [ - 194846, - 194846 - ], - "mapped", - [ - 29084 - ] - ], - [ - [ - 194847, - 194847 - ], - "disallowed" - ], - [ - [ - 194848, - 194848 - ], - "mapped", - [ - 29224 - ] - ], - [ - [ - 194849, - 194849 - ], - "mapped", - [ - 29237 - ] - ], - [ - [ - 194850, - 194850 - ], - "mapped", - [ - 29264 - ] - ], - [ - [ - 194851, - 194851 - ], - "mapped", - [ - 149000 - ] - ], - [ - [ - 194852, - 194852 - ], - "mapped", - [ - 29312 - ] - ], - [ - [ - 194853, - 194853 - ], - "mapped", - [ - 29333 - ] - ], - [ - [ - 194854, - 194854 - ], - "mapped", - [ - 149301 - ] - ], - [ - [ - 194855, - 194855 - ], - "mapped", - [ - 149524 - ] - ], - [ - [ - 194856, - 194856 - ], - "mapped", - [ - 29562 - ] - ], - [ - [ - 194857, - 194857 - ], - "mapped", - [ - 29579 - ] - ], - [ - [ - 194858, - 194858 - ], - "mapped", - [ - 16044 - ] - ], - [ - [ - 194859, - 194859 - ], - "mapped", - [ - 29605 - ] - ], - [ - [ - 194860, - 194861 - ], - "mapped", - [ - 16056 - ] - ], - [ - [ - 194862, - 194862 - ], - "mapped", - [ - 29767 - ] - ], - [ - [ - 194863, - 194863 - ], - "mapped", - [ - 29788 - ] - ], - [ - [ - 194864, - 194864 - ], - "mapped", - [ - 29809 - ] - ], - [ - [ - 194865, - 194865 - ], - "mapped", - [ - 29829 - ] - ], - [ - [ - 194866, - 194866 - ], - "mapped", - [ - 29898 - ] - ], - [ - [ - 194867, - 194867 - ], - "mapped", - [ - 16155 - ] - ], - [ - [ - 194868, - 194868 - ], - "mapped", - [ - 29988 - ] - ], - [ - [ - 194869, - 194869 - ], - "mapped", - [ - 150582 - ] - ], - [ - [ - 194870, - 194870 - ], - "mapped", - [ - 30014 - ] - ], - [ - [ - 194871, - 194871 - ], - "mapped", - [ - 150674 - ] - ], - [ - [ - 194872, - 194872 - ], - "mapped", - [ - 30064 - ] - ], - [ - [ - 194873, - 194873 - ], - "mapped", - [ - 139679 - ] - ], - [ - [ - 194874, - 194874 - ], - "mapped", - [ - 30224 - ] - ], - [ - [ - 194875, - 194875 - ], - "mapped", - [ - 151457 - ] - ], - [ - [ - 194876, - 194876 - ], - "mapped", - [ - 151480 - ] - ], - [ - [ - 194877, - 194877 - ], - "mapped", - [ - 151620 - ] - ], - [ - [ - 194878, - 194878 - ], - "mapped", - [ - 16380 - ] - ], - [ - [ - 194879, - 194879 - ], - "mapped", - [ - 16392 - ] - ], - [ - [ - 194880, - 194880 - ], - "mapped", - [ - 30452 - ] - ], - [ - [ - 194881, - 194881 - ], - "mapped", - [ - 151795 - ] - ], - [ - [ - 194882, - 194882 - ], - "mapped", - [ - 151794 - ] - ], - [ - [ - 194883, - 194883 - ], - "mapped", - [ - 151833 - ] - ], - [ - [ - 194884, - 194884 - ], - "mapped", - [ - 151859 - ] - ], - [ - [ - 194885, - 194885 - ], - "mapped", - [ - 30494 - ] - ], - [ - [ - 194886, - 194887 - ], - "mapped", - [ - 30495 - ] - ], - [ - [ - 194888, - 194888 - ], - "mapped", - [ - 30538 - ] - ], - [ - [ - 194889, - 194889 - ], - "mapped", - [ - 16441 - ] - ], - [ - [ - 194890, - 194890 - ], - "mapped", - [ - 30603 - ] - ], - [ - [ - 194891, - 194891 - ], - "mapped", - [ - 16454 - ] - ], - [ - [ - 194892, - 194892 - ], - "mapped", - [ - 16534 - ] - ], - [ - [ - 194893, - 194893 - ], - "mapped", - [ - 152605 - ] - ], - [ - [ - 194894, - 194894 - ], - "mapped", - [ - 30798 - ] - ], - [ - [ - 194895, - 194895 - ], - "mapped", - [ - 30860 - ] - ], - [ - [ - 194896, - 194896 - ], - "mapped", - [ - 30924 - ] - ], - [ - [ - 194897, - 194897 - ], - "mapped", - [ - 16611 - ] - ], - [ - [ - 194898, - 194898 - ], - "mapped", - [ - 153126 - ] - ], - [ - [ - 194899, - 194899 - ], - "mapped", - [ - 31062 - ] - ], - [ - [ - 194900, - 194900 - ], - "mapped", - [ - 153242 - ] - ], - [ - [ - 194901, - 194901 - ], - "mapped", - [ - 153285 - ] - ], - [ - [ - 194902, - 194902 - ], - "mapped", - [ - 31119 - ] - ], - [ - [ - 194903, - 194903 - ], - "mapped", - [ - 31211 - ] - ], - [ - [ - 194904, - 194904 - ], - "mapped", - [ - 16687 - ] - ], - [ - [ - 194905, - 194905 - ], - "mapped", - [ - 31296 - ] - ], - [ - [ - 194906, - 194906 - ], - "mapped", - [ - 31306 - ] - ], - [ - [ - 194907, - 194907 - ], - "mapped", - [ - 31311 - ] - ], - [ - [ - 194908, - 194908 - ], - "mapped", - [ - 153980 - ] - ], - [ - [ - 194909, - 194910 - ], - "mapped", - [ - 154279 - ] - ], - [ - [ - 194911, - 194911 - ], - "disallowed" - ], - [ - [ - 194912, - 194912 - ], - "mapped", - [ - 16898 - ] - ], - [ - [ - 194913, - 194913 - ], - "mapped", - [ - 154539 - ] - ], - [ - [ - 194914, - 194914 - ], - "mapped", - [ - 31686 - ] - ], - [ - [ - 194915, - 194915 - ], - "mapped", - [ - 31689 - ] - ], - [ - [ - 194916, - 194916 - ], - "mapped", - [ - 16935 - ] - ], - [ - [ - 194917, - 194917 - ], - "mapped", - [ - 154752 - ] - ], - [ - [ - 194918, - 194918 - ], - "mapped", - [ - 31954 - ] - ], - [ - [ - 194919, - 194919 - ], - "mapped", - [ - 17056 - ] - ], - [ - [ - 194920, - 194920 - ], - "mapped", - [ - 31976 - ] - ], - [ - [ - 194921, - 194921 - ], - "mapped", - [ - 31971 - ] - ], - [ - [ - 194922, - 194922 - ], - "mapped", - [ - 32000 - ] - ], - [ - [ - 194923, - 194923 - ], - "mapped", - [ - 155526 - ] - ], - [ - [ - 194924, - 194924 - ], - "mapped", - [ - 32099 - ] - ], - [ - [ - 194925, - 194925 - ], - "mapped", - [ - 17153 - ] - ], - [ - [ - 194926, - 194926 - ], - "mapped", - [ - 32199 - ] - ], - [ - [ - 194927, - 194927 - ], - "mapped", - [ - 32258 - ] - ], - [ - [ - 194928, - 194928 - ], - "mapped", - [ - 32325 - ] - ], - [ - [ - 194929, - 194929 - ], - "mapped", - [ - 17204 - ] - ], - [ - [ - 194930, - 194930 - ], - "mapped", - [ - 156200 - ] - ], - [ - [ - 194931, - 194931 - ], - "mapped", - [ - 156231 - ] - ], - [ - [ - 194932, - 194932 - ], - "mapped", - [ - 17241 - ] - ], - [ - [ - 194933, - 194933 - ], - "mapped", - [ - 156377 - ] - ], - [ - [ - 194934, - 194934 - ], - "mapped", - [ - 32634 - ] - ], - [ - [ - 194935, - 194935 - ], - "mapped", - [ - 156478 - ] - ], - [ - [ - 194936, - 194936 - ], - "mapped", - [ - 32661 - ] - ], - [ - [ - 194937, - 194937 - ], - "mapped", - [ - 32762 - ] - ], - [ - [ - 194938, - 194938 - ], - "mapped", - [ - 32773 - ] - ], - [ - [ - 194939, - 194939 - ], - "mapped", - [ - 156890 - ] - ], - [ - [ - 194940, - 194940 - ], - "mapped", - [ - 156963 - ] - ], - [ - [ - 194941, - 194941 - ], - "mapped", - [ - 32864 - ] - ], - [ - [ - 194942, - 194942 - ], - "mapped", - [ - 157096 - ] - ], - [ - [ - 194943, - 194943 - ], - "mapped", - [ - 32880 - ] - ], - [ - [ - 194944, - 194944 - ], - "mapped", - [ - 144223 - ] - ], - [ - [ - 194945, - 194945 - ], - "mapped", - [ - 17365 - ] - ], - [ - [ - 194946, - 194946 - ], - "mapped", - [ - 32946 - ] - ], - [ - [ - 194947, - 194947 - ], - "mapped", - [ - 33027 - ] - ], - [ - [ - 194948, - 194948 - ], - "mapped", - [ - 17419 - ] - ], - [ - [ - 194949, - 194949 - ], - "mapped", - [ - 33086 - ] - ], - [ - [ - 194950, - 194950 - ], - "mapped", - [ - 23221 - ] - ], - [ - [ - 194951, - 194951 - ], - "mapped", - [ - 157607 - ] - ], - [ - [ - 194952, - 194952 - ], - "mapped", - [ - 157621 - ] - ], - [ - [ - 194953, - 194953 - ], - "mapped", - [ - 144275 - ] - ], - [ - [ - 194954, - 194954 - ], - "mapped", - [ - 144284 - ] - ], - [ - [ - 194955, - 194955 - ], - "mapped", - [ - 33281 - ] - ], - [ - [ - 194956, - 194956 - ], - "mapped", - [ - 33284 - ] - ], - [ - [ - 194957, - 194957 - ], - "mapped", - [ - 36766 - ] - ], - [ - [ - 194958, - 194958 - ], - "mapped", - [ - 17515 - ] - ], - [ - [ - 194959, - 194959 - ], - "mapped", - [ - 33425 - ] - ], - [ - [ - 194960, - 194960 - ], - "mapped", - [ - 33419 - ] - ], - [ - [ - 194961, - 194961 - ], - "mapped", - [ - 33437 - ] - ], - [ - [ - 194962, - 194962 - ], - "mapped", - [ - 21171 - ] - ], - [ - [ - 194963, - 194963 - ], - "mapped", - [ - 33457 - ] - ], - [ - [ - 194964, - 194964 - ], - "mapped", - [ - 33459 - ] - ], - [ - [ - 194965, - 194965 - ], - "mapped", - [ - 33469 - ] - ], - [ - [ - 194966, - 194966 - ], - "mapped", - [ - 33510 - ] - ], - [ - [ - 194967, - 194967 - ], - "mapped", - [ - 158524 - ] - ], - [ - [ - 194968, - 194968 - ], - "mapped", - [ - 33509 - ] - ], - [ - [ - 194969, - 194969 - ], - "mapped", - [ - 33565 - ] - ], - [ - [ - 194970, - 194970 - ], - "mapped", - [ - 33635 - ] - ], - [ - [ - 194971, - 194971 - ], - "mapped", - [ - 33709 - ] - ], - [ - [ - 194972, - 194972 - ], - "mapped", - [ - 33571 - ] - ], - [ - [ - 194973, - 194973 - ], - "mapped", - [ - 33725 - ] - ], - [ - [ - 194974, - 194974 - ], - "mapped", - [ - 33767 - ] - ], - [ - [ - 194975, - 194975 - ], - "mapped", - [ - 33879 - ] - ], - [ - [ - 194976, - 194976 - ], - "mapped", - [ - 33619 - ] - ], - [ - [ - 194977, - 194977 - ], - "mapped", - [ - 33738 - ] - ], - [ - [ - 194978, - 194978 - ], - "mapped", - [ - 33740 - ] - ], - [ - [ - 194979, - 194979 - ], - "mapped", - [ - 33756 - ] - ], - [ - [ - 194980, - 194980 - ], - "mapped", - [ - 158774 - ] - ], - [ - [ - 194981, - 194981 - ], - "mapped", - [ - 159083 - ] - ], - [ - [ - 194982, - 194982 - ], - "mapped", - [ - 158933 - ] - ], - [ - [ - 194983, - 194983 - ], - "mapped", - [ - 17707 - ] - ], - [ - [ - 194984, - 194984 - ], - "mapped", - [ - 34033 - ] - ], - [ - [ - 194985, - 194985 - ], - "mapped", - [ - 34035 - ] - ], - [ - [ - 194986, - 194986 - ], - "mapped", - [ - 34070 - ] - ], - [ - [ - 194987, - 194987 - ], - "mapped", - [ - 160714 - ] - ], - [ - [ - 194988, - 194988 - ], - "mapped", - [ - 34148 - ] - ], - [ - [ - 194989, - 194989 - ], - "mapped", - [ - 159532 - ] - ], - [ - [ - 194990, - 194990 - ], - "mapped", - [ - 17757 - ] - ], - [ - [ - 194991, - 194991 - ], - "mapped", - [ - 17761 - ] - ], - [ - [ - 194992, - 194992 - ], - "mapped", - [ - 159665 - ] - ], - [ - [ - 194993, - 194993 - ], - "mapped", - [ - 159954 - ] - ], - [ - [ - 194994, - 194994 - ], - "mapped", - [ - 17771 - ] - ], - [ - [ - 194995, - 194995 - ], - "mapped", - [ - 34384 - ] - ], - [ - [ - 194996, - 194996 - ], - "mapped", - [ - 34396 - ] - ], - [ - [ - 194997, - 194997 - ], - "mapped", - [ - 34407 - ] - ], - [ - [ - 194998, - 194998 - ], - "mapped", - [ - 34409 - ] - ], - [ - [ - 194999, - 194999 - ], - "mapped", - [ - 34473 - ] - ], - [ - [ - 195000, - 195000 - ], - "mapped", - [ - 34440 - ] - ], - [ - [ - 195001, - 195001 - ], - "mapped", - [ - 34574 - ] - ], - [ - [ - 195002, - 195002 - ], - "mapped", - [ - 34530 - ] - ], - [ - [ - 195003, - 195003 - ], - "mapped", - [ - 34681 - ] - ], - [ - [ - 195004, - 195004 - ], - "mapped", - [ - 34600 - ] - ], - [ - [ - 195005, - 195005 - ], - "mapped", - [ - 34667 - ] - ], - [ - [ - 195006, - 195006 - ], - "mapped", - [ - 34694 - ] - ], - [ - [ - 195007, - 195007 - ], - "disallowed" - ], - [ - [ - 195008, - 195008 - ], - "mapped", - [ - 34785 - ] - ], - [ - [ - 195009, - 195009 - ], - "mapped", - [ - 34817 - ] - ], - [ - [ - 195010, - 195010 - ], - "mapped", - [ - 17913 - ] - ], - [ - [ - 195011, - 195011 - ], - "mapped", - [ - 34912 - ] - ], - [ - [ - 195012, - 195012 - ], - "mapped", - [ - 34915 - ] - ], - [ - [ - 195013, - 195013 - ], - "mapped", - [ - 161383 - ] - ], - [ - [ - 195014, - 195014 - ], - "mapped", - [ - 35031 - ] - ], - [ - [ - 195015, - 195015 - ], - "mapped", - [ - 35038 - ] - ], - [ - [ - 195016, - 195016 - ], - "mapped", - [ - 17973 - ] - ], - [ - [ - 195017, - 195017 - ], - "mapped", - [ - 35066 - ] - ], - [ - [ - 195018, - 195018 - ], - "mapped", - [ - 13499 - ] - ], - [ - [ - 195019, - 195019 - ], - "mapped", - [ - 161966 - ] - ], - [ - [ - 195020, - 195020 - ], - "mapped", - [ - 162150 - ] - ], - [ - [ - 195021, - 195021 - ], - "mapped", - [ - 18110 - ] - ], - [ - [ - 195022, - 195022 - ], - "mapped", - [ - 18119 - ] - ], - [ - [ - 195023, - 195023 - ], - "mapped", - [ - 35488 - ] - ], - [ - [ - 195024, - 195024 - ], - "mapped", - [ - 35565 - ] - ], - [ - [ - 195025, - 195025 - ], - "mapped", - [ - 35722 - ] - ], - [ - [ - 195026, - 195026 - ], - "mapped", - [ - 35925 - ] - ], - [ - [ - 195027, - 195027 - ], - "mapped", - [ - 162984 - ] - ], - [ - [ - 195028, - 195028 - ], - "mapped", - [ - 36011 - ] - ], - [ - [ - 195029, - 195029 - ], - "mapped", - [ - 36033 - ] - ], - [ - [ - 195030, - 195030 - ], - "mapped", - [ - 36123 - ] - ], - [ - [ - 195031, - 195031 - ], - "mapped", - [ - 36215 - ] - ], - [ - [ - 195032, - 195032 - ], - "mapped", - [ - 163631 - ] - ], - [ - [ - 195033, - 195033 - ], - "mapped", - [ - 133124 - ] - ], - [ - [ - 195034, - 195034 - ], - "mapped", - [ - 36299 - ] - ], - [ - [ - 195035, - 195035 - ], - "mapped", - [ - 36284 - ] - ], - [ - [ - 195036, - 195036 - ], - "mapped", - [ - 36336 - ] - ], - [ - [ - 195037, - 195037 - ], - "mapped", - [ - 133342 - ] - ], - [ - [ - 195038, - 195038 - ], - "mapped", - [ - 36564 - ] - ], - [ - [ - 195039, - 195039 - ], - "mapped", - [ - 36664 - ] - ], - [ - [ - 195040, - 195040 - ], - "mapped", - [ - 165330 - ] - ], - [ - [ - 195041, - 195041 - ], - "mapped", - [ - 165357 - ] - ], - [ - [ - 195042, - 195042 - ], - "mapped", - [ - 37012 - ] - ], - [ - [ - 195043, - 195043 - ], - "mapped", - [ - 37105 - ] - ], - [ - [ - 195044, - 195044 - ], - "mapped", - [ - 37137 - ] - ], - [ - [ - 195045, - 195045 - ], - "mapped", - [ - 165678 - ] - ], - [ - [ - 195046, - 195046 - ], - "mapped", - [ - 37147 - ] - ], - [ - [ - 195047, - 195047 - ], - "mapped", - [ - 37432 - ] - ], - [ - [ - 195048, - 195048 - ], - "mapped", - [ - 37591 - ] - ], - [ - [ - 195049, - 195049 - ], - "mapped", - [ - 37592 - ] - ], - [ - [ - 195050, - 195050 - ], - "mapped", - [ - 37500 - ] - ], - [ - [ - 195051, - 195051 - ], - "mapped", - [ - 37881 - ] - ], - [ - [ - 195052, - 195052 - ], - "mapped", - [ - 37909 - ] - ], - [ - [ - 195053, - 195053 - ], - "mapped", - [ - 166906 - ] - ], - [ - [ - 195054, - 195054 - ], - "mapped", - [ - 38283 - ] - ], - [ - [ - 195055, - 195055 - ], - "mapped", - [ - 18837 - ] - ], - [ - [ - 195056, - 195056 - ], - "mapped", - [ - 38327 - ] - ], - [ - [ - 195057, - 195057 - ], - "mapped", - [ - 167287 - ] - ], - [ - [ - 195058, - 195058 - ], - "mapped", - [ - 18918 - ] - ], - [ - [ - 195059, - 195059 - ], - "mapped", - [ - 38595 - ] - ], - [ - [ - 195060, - 195060 - ], - "mapped", - [ - 23986 - ] - ], - [ - [ - 195061, - 195061 - ], - "mapped", - [ - 38691 - ] - ], - [ - [ - 195062, - 195062 - ], - "mapped", - [ - 168261 - ] - ], - [ - [ - 195063, - 195063 - ], - "mapped", - [ - 168474 - ] - ], - [ - [ - 195064, - 195064 - ], - "mapped", - [ - 19054 - ] - ], - [ - [ - 195065, - 195065 - ], - "mapped", - [ - 19062 - ] - ], - [ - [ - 195066, - 195066 - ], - "mapped", - [ - 38880 - ] - ], - [ - [ - 195067, - 195067 - ], - "mapped", - [ - 168970 - ] - ], - [ - [ - 195068, - 195068 - ], - "mapped", - [ - 19122 - ] - ], - [ - [ - 195069, - 195069 - ], - "mapped", - [ - 169110 - ] - ], - [ - [ - 195070, - 195071 - ], - "mapped", - [ - 38923 - ] - ], - [ - [ - 195072, - 195072 - ], - "mapped", - [ - 38953 - ] - ], - [ - [ - 195073, - 195073 - ], - "mapped", - [ - 169398 - ] - ], - [ - [ - 195074, - 195074 - ], - "mapped", - [ - 39138 - ] - ], - [ - [ - 195075, - 195075 - ], - "mapped", - [ - 19251 - ] - ], - [ - [ - 195076, - 195076 - ], - "mapped", - [ - 39209 - ] - ], - [ - [ - 195077, - 195077 - ], - "mapped", - [ - 39335 - ] - ], - [ - [ - 195078, - 195078 - ], - "mapped", - [ - 39362 - ] - ], - [ - [ - 195079, - 195079 - ], - "mapped", - [ - 39422 - ] - ], - [ - [ - 195080, - 195080 - ], - "mapped", - [ - 19406 - ] - ], - [ - [ - 195081, - 195081 - ], - "mapped", - [ - 170800 - ] - ], - [ - [ - 195082, - 195082 - ], - "mapped", - [ - 39698 - ] - ], - [ - [ - 195083, - 195083 - ], - "mapped", - [ - 40000 - ] - ], - [ - [ - 195084, - 195084 - ], - "mapped", - [ - 40189 - ] - ], - [ - [ - 195085, - 195085 - ], - "mapped", - [ - 19662 - ] - ], - [ - [ - 195086, - 195086 - ], - "mapped", - [ - 19693 - ] - ], - [ - [ - 195087, - 195087 - ], - "mapped", - [ - 40295 - ] - ], - [ - [ - 195088, - 195088 - ], - "mapped", - [ - 172238 - ] - ], - [ - [ - 195089, - 195089 - ], - "mapped", - [ - 19704 - ] - ], - [ - [ - 195090, - 195090 - ], - "mapped", - [ - 172293 - ] - ], - [ - [ - 195091, - 195091 - ], - "mapped", - [ - 172558 - ] - ], - [ - [ - 195092, - 195092 - ], - "mapped", - [ - 172689 - ] - ], - [ - [ - 195093, - 195093 - ], - "mapped", - [ - 40635 - ] - ], - [ - [ - 195094, - 195094 - ], - "mapped", - [ - 19798 - ] - ], - [ - [ - 195095, - 195095 - ], - "mapped", - [ - 40697 - ] - ], - [ - [ - 195096, - 195096 - ], - "mapped", - [ - 40702 - ] - ], - [ - [ - 195097, - 195097 - ], - "mapped", - [ - 40709 - ] - ], - [ - [ - 195098, - 195098 - ], - "mapped", - [ - 40719 - ] - ], - [ - [ - 195099, - 195099 - ], - "mapped", - [ - 40726 - ] - ], - [ - [ - 195100, - 195100 - ], - "mapped", - [ - 40763 - ] - ], - [ - [ - 195101, - 195101 - ], - "mapped", - [ - 173568 - ] - ], - [ - [ - 195102, - 196605 - ], - "disallowed" - ], - [ - [ - 196606, - 196607 - ], - "disallowed" - ], - [ - [ - 196608, - 262141 - ], - "disallowed" - ], - [ - [ - 262142, - 262143 - ], - "disallowed" - ], - [ - [ - 262144, - 327677 - ], - "disallowed" - ], - [ - [ - 327678, - 327679 - ], - "disallowed" - ], - [ - [ - 327680, - 393213 - ], - "disallowed" - ], - [ - [ - 393214, - 393215 - ], - "disallowed" - ], - [ - [ - 393216, - 458749 - ], - "disallowed" - ], - [ - [ - 458750, - 458751 - ], - "disallowed" - ], - [ - [ - 458752, - 524285 - ], - "disallowed" - ], - [ - [ - 524286, - 524287 - ], - "disallowed" - ], - [ - [ - 524288, - 589821 - ], - "disallowed" - ], - [ - [ - 589822, - 589823 - ], - "disallowed" - ], - [ - [ - 589824, - 655357 - ], - "disallowed" - ], - [ - [ - 655358, - 655359 - ], - "disallowed" - ], - [ - [ - 655360, - 720893 - ], - "disallowed" - ], - [ - [ - 720894, - 720895 - ], - "disallowed" - ], - [ - [ - 720896, - 786429 - ], - "disallowed" - ], - [ - [ - 786430, - 786431 - ], - "disallowed" - ], - [ - [ - 786432, - 851965 - ], - "disallowed" - ], - [ - [ - 851966, - 851967 - ], - "disallowed" - ], - [ - [ - 851968, - 917501 - ], - "disallowed" - ], - [ - [ - 917502, - 917503 - ], - "disallowed" - ], - [ - [ - 917504, - 917504 - ], - "disallowed" - ], - [ - [ - 917505, - 917505 - ], - "disallowed" - ], - [ - [ - 917506, - 917535 - ], - "disallowed" - ], - [ - [ - 917536, - 917631 - ], - "disallowed" - ], - [ - [ - 917632, - 917759 - ], - "disallowed" - ], - [ - [ - 917760, - 917999 - ], - "ignored" - ], - [ - [ - 918000, - 983037 - ], - "disallowed" - ], - [ - [ - 983038, - 983039 - ], - "disallowed" - ], - [ - [ - 983040, - 1048573 - ], - "disallowed" - ], - [ - [ - 1048574, - 1048575 - ], - "disallowed" - ], - [ - [ - 1048576, - 1114109 - ], - "disallowed" - ], - [ - [ - 1114110, - 1114111 - ], - "disallowed" - ] -]; - -var PROCESSING_OPTIONS = { - TRANSITIONAL: 0, - NONTRANSITIONAL: 1 -}; - -function normalize(str) { // fix bug in v8 - return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000'); -} - -function findStatus(val) { - var start = 0; - var end = mappingTable.length - 1; - - while (start <= end) { - var mid = Math.floor((start + end) / 2); - - var target = mappingTable[mid]; - if (target[0][0] <= val && target[0][1] >= val) { - return target; - } else if (target[0][0] > val) { - end = mid - 1; - } else { - start = mid + 1; - } - } - - return null; -} - -var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; - -function countSymbols(string) { - return string - // replace every surrogate pair with a BMP symbol - .replace(regexAstralSymbols, '_') - // then get the length - .length; -} - -function mapChars(domain_name, useSTD3, processing_option) { - var hasError = false; - var processed = ""; - - var len = countSymbols(domain_name); - for (var i = 0; i < len; ++i) { - var codePoint = domain_name.codePointAt(i); - var status = findStatus(codePoint); - - switch (status[1]) { - case "disallowed": - hasError = true; - processed += String.fromCodePoint(codePoint); - break; - case "ignored": - break; - case "mapped": - processed += String.fromCodePoint.apply(String, status[2]); - break; - case "deviation": - if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { - processed += String.fromCodePoint.apply(String, status[2]); - } else { - processed += String.fromCodePoint(codePoint); - } - break; - case "valid": - processed += String.fromCodePoint(codePoint); - break; - case "disallowed_STD3_mapped": - if (useSTD3) { - hasError = true; - processed += String.fromCodePoint(codePoint); - } else { - processed += String.fromCodePoint.apply(String, status[2]); - } - break; - case "disallowed_STD3_valid": - if (useSTD3) { - hasError = true; - } - - processed += String.fromCodePoint(codePoint); - break; - } - } - - return { - string: processed, - error: hasError - }; -} - -var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; - -function validateLabel(label, processing_option) { - if (label.substr(0, 4) === "xn--") { - label = punycode_1.toUnicode(label); - } - - var error = false; - - if (normalize(label) !== label || - (label[3] === "-" && label[4] === "-") || - label[0] === "-" || label[label.length - 1] === "-" || - label.indexOf(".") !== -1 || - label.search(combiningMarksRegex) === 0) { - error = true; - } - - var len = countSymbols(label); - for (var i = 0; i < len; ++i) { - var status = findStatus(label.codePointAt(i)); - if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") || - (processing === PROCESSING_OPTIONS.NONTRANSITIONAL && - status[1] !== "valid" && status[1] !== "deviation")) { - error = true; - break; - } - } - - return { - label: label, - error: error - }; -} - -function processing(domain_name, useSTD3, processing_option) { - var result = mapChars(domain_name, useSTD3, processing_option); - result.string = normalize(result.string); - - var labels = result.string.split("."); - for (var i = 0; i < labels.length; ++i) { - try { - var validation = validateLabel(labels[i]); - labels[i] = validation.label; - result.error = result.error || validation.error; - } catch(e) { - result.error = true; - } - } - - return { - string: labels.join("."), - error: result.error - }; -} - -var toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { - var result = processing(domain_name, useSTD3, processing_option); - var labels = result.string.split("."); - labels = labels.map(function(l) { - try { - return punycode_1.toASCII(l); - } catch(e) { - result.error = true; - return l; - } - }); - - if (verifyDnsLength) { - var total = labels.slice(0, labels.length - 1).join(".").length; - if (total.length > 253 || total.length === 0) { - result.error = true; - } - - for (var i=0; i < labels.length; ++i) { - if (labels.length > 63 || labels.length === 0) { - result.error = true; - break; - } - } - } - - if (result.error) return null; - return labels.join("."); -}; - -var toUnicode = function(domain_name, useSTD3) { - var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); - - return { - domain: result.string, - error: result.error - }; -}; - -var PROCESSING_OPTIONS_1 = PROCESSING_OPTIONS; - -var tr46 = { - toASCII: toASCII, - toUnicode: toUnicode, - PROCESSING_OPTIONS: PROCESSING_OPTIONS_1 -}; - -var urlStateMachine = createCommonjsModule(function (module) { - - - -const specialSchemes = { - ftp: 21, - file: null, - gopher: 70, - http: 80, - https: 443, - ws: 80, - wss: 443 -}; - -const failure = Symbol("failure"); - -function countSymbols(str) { - return punycode_1.ucs2.decode(str).length; -} - -function at(input, idx) { - const c = input[idx]; - return isNaN(c) ? undefined : String.fromCodePoint(c); -} - -function isASCIIDigit(c) { - return c >= 0x30 && c <= 0x39; -} - -function isASCIIAlpha(c) { - return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A); -} - -function isASCIIAlphanumeric(c) { - return isASCIIAlpha(c) || isASCIIDigit(c); -} - -function isASCIIHex(c) { - return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66); -} - -function isSingleDot(buffer) { - return buffer === "." || buffer.toLowerCase() === "%2e"; -} - -function isDoubleDot(buffer) { - buffer = buffer.toLowerCase(); - return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; -} - -function isWindowsDriveLetterCodePoints(cp1, cp2) { - return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); -} - -function isWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); -} - -function isNormalizedWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; -} - -function containsForbiddenHostCodePoint(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; -} - -function containsForbiddenHostCodePointExcludingPercent(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; -} - -function isSpecialScheme(scheme) { - return specialSchemes[scheme] !== undefined; -} - -function isSpecial(url) { - return isSpecialScheme(url.scheme); -} - -function defaultPort(scheme) { - return specialSchemes[scheme]; -} - -function percentEncode(c) { - let hex = c.toString(16).toUpperCase(); - if (hex.length === 1) { - hex = "0" + hex; - } - - return "%" + hex; -} - -function utf8PercentEncode(c) { - const buf = new Buffer(c); - - let str = ""; - - for (let i = 0; i < buf.length; ++i) { - str += percentEncode(buf[i]); - } - - return str; -} - -function utf8PercentDecode(str) { - const input = new Buffer(str); - const output = []; - for (let i = 0; i < input.length; ++i) { - if (input[i] !== 37) { - output.push(input[i]); - } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { - output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); - i += 2; - } else { - output.push(input[i]); - } - } - return new Buffer(output).toString(); -} - -function isC0ControlPercentEncode(c) { - return c <= 0x1F || c > 0x7E; -} - -const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); -function isPathPercentEncode(c) { - return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); -} - -const extraUserinfoPercentEncodeSet = - new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); -function isUserinfoPercentEncode(c) { - return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); -} - -function percentEncodeChar(c, encodeSetPredicate) { - const cStr = String.fromCodePoint(c); - - if (encodeSetPredicate(c)) { - return utf8PercentEncode(cStr); - } - - return cStr; -} - -function parseIPv4Number(input) { - let R = 10; - - if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") { - input = input.substring(2); - R = 16; - } else if (input.length >= 2 && input.charAt(0) === "0") { - input = input.substring(1); - R = 8; - } - - if (input === "") { - return 0; - } - - const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/); - if (regex.test(input)) { - return failure; - } - - return parseInt(input, R); -} - -function parseIPv4(input) { - const parts = input.split("."); - if (parts[parts.length - 1] === "") { - if (parts.length > 1) { - parts.pop(); - } - } - - if (parts.length > 4) { - return input; - } - - const numbers = []; - for (const part of parts) { - if (part === "") { - return input; - } - const n = parseIPv4Number(part); - if (n === failure) { - return input; - } - - numbers.push(n); - } - - for (let i = 0; i < numbers.length - 1; ++i) { - if (numbers[i] > 255) { - return failure; - } - } - if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { - return failure; - } - - let ipv4 = numbers.pop(); - let counter = 0; - - for (const n of numbers) { - ipv4 += n * Math.pow(256, 3 - counter); - ++counter; - } - - return ipv4; -} - -function serializeIPv4(address) { - let output = ""; - let n = address; - - for (let i = 1; i <= 4; ++i) { - output = String(n % 256) + output; - if (i !== 4) { - output = "." + output; - } - n = Math.floor(n / 256); - } - - return output; -} - -function parseIPv6(input) { - const address = [0, 0, 0, 0, 0, 0, 0, 0]; - let pieceIndex = 0; - let compress = null; - let pointer = 0; - - input = punycode_1.ucs2.decode(input); - - if (input[pointer] === 58) { - if (input[pointer + 1] !== 58) { - return failure; - } - - pointer += 2; - ++pieceIndex; - compress = pieceIndex; - } - - while (pointer < input.length) { - if (pieceIndex === 8) { - return failure; - } - - if (input[pointer] === 58) { - if (compress !== null) { - return failure; - } - ++pointer; - ++pieceIndex; - compress = pieceIndex; - continue; - } - - let value = 0; - let length = 0; - - while (length < 4 && isASCIIHex(input[pointer])) { - value = value * 0x10 + parseInt(at(input, pointer), 16); - ++pointer; - ++length; - } - - if (input[pointer] === 46) { - if (length === 0) { - return failure; - } - - pointer -= length; - - if (pieceIndex > 6) { - return failure; - } - - let numbersSeen = 0; - - while (input[pointer] !== undefined) { - let ipv4Piece = null; - - if (numbersSeen > 0) { - if (input[pointer] === 46 && numbersSeen < 4) { - ++pointer; - } else { - return failure; - } - } - - if (!isASCIIDigit(input[pointer])) { - return failure; - } - - while (isASCIIDigit(input[pointer])) { - const number = parseInt(at(input, pointer)); - if (ipv4Piece === null) { - ipv4Piece = number; - } else if (ipv4Piece === 0) { - return failure; - } else { - ipv4Piece = ipv4Piece * 10 + number; - } - if (ipv4Piece > 255) { - return failure; - } - ++pointer; - } - - address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece; - - ++numbersSeen; - - if (numbersSeen === 2 || numbersSeen === 4) { - ++pieceIndex; - } - } - - if (numbersSeen !== 4) { - return failure; - } - - break; - } else if (input[pointer] === 58) { - ++pointer; - if (input[pointer] === undefined) { - return failure; - } - } else if (input[pointer] !== undefined) { - return failure; - } - - address[pieceIndex] = value; - ++pieceIndex; - } - - if (compress !== null) { - let swaps = pieceIndex - compress; - pieceIndex = 7; - while (pieceIndex !== 0 && swaps > 0) { - const temp = address[compress + swaps - 1]; - address[compress + swaps - 1] = address[pieceIndex]; - address[pieceIndex] = temp; - --pieceIndex; - --swaps; - } - } else if (compress === null && pieceIndex !== 8) { - return failure; - } - - return address; -} - -function serializeIPv6(address) { - let output = ""; - const seqResult = findLongestZeroSequence(address); - const compress = seqResult.idx; - let ignore0 = false; - - for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { - if (ignore0 && address[pieceIndex] === 0) { - continue; - } else if (ignore0) { - ignore0 = false; - } - - if (compress === pieceIndex) { - const separator = pieceIndex === 0 ? "::" : ":"; - output += separator; - ignore0 = true; - continue; - } - - output += address[pieceIndex].toString(16); - - if (pieceIndex !== 7) { - output += ":"; - } - } - - return output; -} - -function parseHost(input, isSpecialArg) { - if (input[0] === "[") { - if (input[input.length - 1] !== "]") { - return failure; - } - - return parseIPv6(input.substring(1, input.length - 1)); - } - - if (!isSpecialArg) { - return parseOpaqueHost(input); - } - - const domain = utf8PercentDecode(input); - const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); - if (asciiDomain === null) { - return failure; - } - - if (containsForbiddenHostCodePoint(asciiDomain)) { - return failure; - } - - const ipv4Host = parseIPv4(asciiDomain); - if (typeof ipv4Host === "number" || ipv4Host === failure) { - return ipv4Host; - } - - return asciiDomain; -} - -function parseOpaqueHost(input) { - if (containsForbiddenHostCodePointExcludingPercent(input)) { - return failure; - } - - let output = ""; - const decoded = punycode_1.ucs2.decode(input); - for (let i = 0; i < decoded.length; ++i) { - output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); - } - return output; -} - -function findLongestZeroSequence(arr) { - let maxIdx = null; - let maxLen = 1; // only find elements > 1 - let currStart = null; - let currLen = 0; - - for (let i = 0; i < arr.length; ++i) { - if (arr[i] !== 0) { - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; - } - - currStart = null; - currLen = 0; - } else { - if (currStart === null) { - currStart = i; - } - ++currLen; - } - } - - // if trailing zeros - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; - } - - return { - idx: maxIdx, - len: maxLen - }; -} - -function serializeHost(host) { - if (typeof host === "number") { - return serializeIPv4(host); - } - - // IPv6 serializer - if (host instanceof Array) { - return "[" + serializeIPv6(host) + "]"; - } - - return host; -} - -function trimControlChars(url) { - return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); -} - -function trimTabAndNewline(url) { - return url.replace(/\u0009|\u000A|\u000D/g, ""); -} - -function shortenPath(url) { - const path = url.path; - if (path.length === 0) { - return; - } - if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { - return; - } - - path.pop(); -} - -function includesCredentials(url) { - return url.username !== "" || url.password !== ""; -} - -function cannotHaveAUsernamePasswordPort(url) { - return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file"; -} - -function isNormalizedWindowsDriveLetter(string) { - return /^[A-Za-z]:$/.test(string); -} - -function URLStateMachine(input, base, encodingOverride, url, stateOverride) { - this.pointer = 0; - this.input = input; - this.base = base || null; - this.encodingOverride = encodingOverride || "utf-8"; - this.stateOverride = stateOverride; - this.url = url; - this.failure = false; - this.parseError = false; - - if (!this.url) { - this.url = { - scheme: "", - username: "", - password: "", - host: null, - port: null, - path: [], - query: null, - fragment: null, - - cannotBeABaseURL: false - }; - - const res = trimControlChars(this.input); - if (res !== this.input) { - this.parseError = true; - } - this.input = res; - } - - const res = trimTabAndNewline(this.input); - if (res !== this.input) { - this.parseError = true; - } - this.input = res; - - this.state = stateOverride || "scheme start"; - - this.buffer = ""; - this.atFlag = false; - this.arrFlag = false; - this.passwordTokenSeenFlag = false; - - this.input = punycode_1.ucs2.decode(this.input); - - for (; this.pointer <= this.input.length; ++this.pointer) { - const c = this.input[this.pointer]; - const cStr = isNaN(c) ? undefined : String.fromCodePoint(c); - - // exec state machine - const ret = this["parse " + this.state](c, cStr); - if (!ret) { - break; // terminate algorithm - } else if (ret === failure) { - this.failure = true; - break; - } - } -} - -URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) { - if (isASCIIAlpha(c)) { - this.buffer += cStr.toLowerCase(); - this.state = "scheme"; - } else if (!this.stateOverride) { - this.state = "no scheme"; - --this.pointer; - } else { - this.parseError = true; - return failure; - } - - return true; -}; - -URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) { - if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { - this.buffer += cStr.toLowerCase(); - } else if (c === 58) { - if (this.stateOverride) { - if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { - return false; - } - - if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { - return false; - } - - if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") { - return false; - } - - if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { - return false; - } - } - this.url.scheme = this.buffer; - this.buffer = ""; - if (this.stateOverride) { - return false; - } - if (this.url.scheme === "file") { - if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { - this.parseError = true; - } - this.state = "file"; - } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { - this.state = "special relative or authority"; - } else if (isSpecial(this.url)) { - this.state = "special authority slashes"; - } else if (this.input[this.pointer + 1] === 47) { - this.state = "path or authority"; - ++this.pointer; - } else { - this.url.cannotBeABaseURL = true; - this.url.path.push(""); - this.state = "cannot-be-a-base-URL path"; - } - } else if (!this.stateOverride) { - this.buffer = ""; - this.state = "no scheme"; - this.pointer = -1; - } else { - this.parseError = true; - return failure; - } - - return true; -}; - -URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) { - if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) { - return failure; - } else if (this.base.cannotBeABaseURL && c === 35) { - this.url.scheme = this.base.scheme; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ""; - this.url.cannotBeABaseURL = true; - this.state = "fragment"; - } else if (this.base.scheme === "file") { - this.state = "file"; - --this.pointer; - } else { - this.state = "relative"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = "special authority ignore slashes"; - ++this.pointer; - } else { - this.parseError = true; - this.state = "relative"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { - if (c === 47) { - this.state = "authority"; - } else { - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse relative"] = function parseRelative(c) { - this.url.scheme = this.base.scheme; - if (isNaN(c)) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 47) { - this.state = "relative slash"; - } else if (c === 63) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = ""; - this.state = "query"; - } else if (c === 35) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ""; - this.state = "fragment"; - } else if (isSpecial(this.url) && c === 92) { - this.parseError = true; - this.state = "relative slash"; - } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(0, this.base.path.length - 1); - - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) { - if (isSpecial(this.url) && (c === 47 || c === 92)) { - if (c === 92) { - this.parseError = true; - } - this.state = "special authority ignore slashes"; - } else if (c === 47) { - this.state = "authority"; - } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = "special authority ignore slashes"; - ++this.pointer; - } else { - this.parseError = true; - this.state = "special authority ignore slashes"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) { - if (c !== 47 && c !== 92) { - this.state = "authority"; - --this.pointer; - } else { - this.parseError = true; - } - - return true; -}; - -URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) { - if (c === 64) { - this.parseError = true; - if (this.atFlag) { - this.buffer = "%40" + this.buffer; - } - this.atFlag = true; - - // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars - const len = countSymbols(this.buffer); - for (let pointer = 0; pointer < len; ++pointer) { - const codePoint = this.buffer.codePointAt(pointer); - - if (codePoint === 58 && !this.passwordTokenSeenFlag) { - this.passwordTokenSeenFlag = true; - continue; - } - const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); - if (this.passwordTokenSeenFlag) { - this.url.password += encodedCodePoints; - } else { - this.url.username += encodedCodePoints; - } - } - this.buffer = ""; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || - (isSpecial(this.url) && c === 92)) { - if (this.atFlag && this.buffer === "") { - this.parseError = true; - return failure; - } - this.pointer -= countSymbols(this.buffer) + 1; - this.buffer = ""; - this.state = "host"; - } else { - this.buffer += cStr; - } - - return true; -}; - -URLStateMachine.prototype["parse hostname"] = -URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) { - if (this.stateOverride && this.url.scheme === "file") { - --this.pointer; - this.state = "file host"; - } else if (c === 58 && !this.arrFlag) { - if (this.buffer === "") { - this.parseError = true; - return failure; - } - - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - - this.url.host = host; - this.buffer = ""; - this.state = "port"; - if (this.stateOverride === "hostname") { - return false; - } - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || - (isSpecial(this.url) && c === 92)) { - --this.pointer; - if (isSpecial(this.url) && this.buffer === "") { - this.parseError = true; - return failure; - } else if (this.stateOverride && this.buffer === "" && - (includesCredentials(this.url) || this.url.port !== null)) { - this.parseError = true; - return false; - } - - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - - this.url.host = host; - this.buffer = ""; - this.state = "path start"; - if (this.stateOverride) { - return false; - } - } else { - if (c === 91) { - this.arrFlag = true; - } else if (c === 93) { - this.arrFlag = false; - } - this.buffer += cStr; - } - - return true; -}; - -URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) { - if (isASCIIDigit(c)) { - this.buffer += cStr; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || - (isSpecial(this.url) && c === 92) || - this.stateOverride) { - if (this.buffer !== "") { - const port = parseInt(this.buffer); - if (port > Math.pow(2, 16) - 1) { - this.parseError = true; - return failure; - } - this.url.port = port === defaultPort(this.url.scheme) ? null : port; - this.buffer = ""; - } - if (this.stateOverride) { - return false; - } - this.state = "path start"; - --this.pointer; - } else { - this.parseError = true; - return failure; - } - - return true; -}; - -const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]); - -URLStateMachine.prototype["parse file"] = function parseFile(c) { - this.url.scheme = "file"; - - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; - } - this.state = "file slash"; - } else if (this.base !== null && this.base.scheme === "file") { - if (isNaN(c)) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 63) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = ""; - this.state = "query"; - } else if (c === 35) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ""; - this.state = "fragment"; - } else { - if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points - !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || - (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points - !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - shortenPath(this.url); - } else { - this.parseError = true; - } - - this.state = "path"; - --this.pointer; - } - } else { - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; - } - this.state = "file host"; - } else { - if (this.base !== null && this.base.scheme === "file") { - if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { - this.url.path.push(this.base.path[0]); - } else { - this.url.host = this.base.host; - } - } - this.state = "path"; - --this.pointer; - } - - return true; -}; - -URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) { - if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { - --this.pointer; - if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { - this.parseError = true; - this.state = "path"; - } else if (this.buffer === "") { - this.url.host = ""; - if (this.stateOverride) { - return false; - } - this.state = "path start"; - } else { - let host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - if (host === "localhost") { - host = ""; - } - this.url.host = host; - - if (this.stateOverride) { - return false; - } - - this.buffer = ""; - this.state = "path start"; - } - } else { - this.buffer += cStr; - } - - return true; -}; - -URLStateMachine.prototype["parse path start"] = function parsePathStart(c) { - if (isSpecial(this.url)) { - if (c === 92) { - this.parseError = true; - } - this.state = "path"; - - if (c !== 47 && c !== 92) { - --this.pointer; - } - } else if (!this.stateOverride && c === 63) { - this.url.query = ""; - this.state = "query"; - } else if (!this.stateOverride && c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } else if (c !== undefined) { - this.state = "path"; - if (c !== 47) { - --this.pointer; - } - } - - return true; -}; - -URLStateMachine.prototype["parse path"] = function parsePath(c) { - if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) || - (!this.stateOverride && (c === 63 || c === 35))) { - if (isSpecial(this.url) && c === 92) { - this.parseError = true; - } - - if (isDoubleDot(this.buffer)) { - shortenPath(this.url); - if (c !== 47 && !(isSpecial(this.url) && c === 92)) { - this.url.path.push(""); - } - } else if (isSingleDot(this.buffer) && c !== 47 && - !(isSpecial(this.url) && c === 92)) { - this.url.path.push(""); - } else if (!isSingleDot(this.buffer)) { - if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { - if (this.url.host !== "" && this.url.host !== null) { - this.parseError = true; - this.url.host = ""; - } - this.buffer = this.buffer[0] + ":"; - } - this.url.path.push(this.buffer); - } - this.buffer = ""; - if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) { - while (this.url.path.length > 1 && this.url.path[0] === "") { - this.parseError = true; - this.url.path.shift(); - } - } - if (c === 63) { - this.url.query = ""; - this.state = "query"; - } - if (c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } - } else { - // TODO: If c is not a URL code point and not "%", parse error. - - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - this.buffer += percentEncodeChar(c, isPathPercentEncode); - } - - return true; -}; - -URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) { - if (c === 63) { - this.url.query = ""; - this.state = "query"; - } else if (c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } else { - // TODO: Add: not a URL code point - if (!isNaN(c) && c !== 37) { - this.parseError = true; - } - - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - if (!isNaN(c)) { - this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); - } - } - - return true; -}; - -URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) { - if (isNaN(c) || (!this.stateOverride && c === 35)) { - if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") { - this.encodingOverride = "utf-8"; - } - - const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead - for (let i = 0; i < buffer.length; ++i) { - if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 || - buffer[i] === 0x3C || buffer[i] === 0x3E) { - this.url.query += percentEncode(buffer[i]); - } else { - this.url.query += String.fromCodePoint(buffer[i]); - } - } - - this.buffer = ""; - if (c === 35) { - this.url.fragment = ""; - this.state = "fragment"; - } - } else { - // TODO: If c is not a URL code point and not "%", parse error. - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - this.buffer += cStr; - } - - return true; -}; - -URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { - if (isNaN(c)) ; else if (c === 0x0) { - this.parseError = true; - } else { - // TODO: If c is not a URL code point and not "%", parse error. - if (c === 37 && - (!isASCIIHex(this.input[this.pointer + 1]) || - !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - - this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); - } - - return true; -}; - -function serializeURL(url, excludeFragment) { - let output = url.scheme + ":"; - if (url.host !== null) { - output += "//"; - - if (url.username !== "" || url.password !== "") { - output += url.username; - if (url.password !== "") { - output += ":" + url.password; - } - output += "@"; - } - - output += serializeHost(url.host); - - if (url.port !== null) { - output += ":" + url.port; - } - } else if (url.host === null && url.scheme === "file") { - output += "//"; - } - - if (url.cannotBeABaseURL) { - output += url.path[0]; - } else { - for (const string of url.path) { - output += "/" + string; - } - } - - if (url.query !== null) { - output += "?" + url.query; - } - - if (!excludeFragment && url.fragment !== null) { - output += "#" + url.fragment; - } - - return output; -} - -function serializeOrigin(tuple) { - let result = tuple.scheme + "://"; - result += serializeHost(tuple.host); - - if (tuple.port !== null) { - result += ":" + tuple.port; - } - - return result; -} - -module.exports.serializeURL = serializeURL; - -module.exports.serializeURLOrigin = function (url) { - // https://url.spec.whatwg.org/#concept-url-origin - switch (url.scheme) { - case "blob": - try { - return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0])); - } catch (e) { - // serializing an opaque origin returns "null" - return "null"; - } - case "ftp": - case "gopher": - case "http": - case "https": - case "ws": - case "wss": - return serializeOrigin({ - scheme: url.scheme, - host: url.host, - port: url.port - }); - case "file": - // spec says "exercise to the reader", chrome says "file://" - return "file://"; - default: - // serializing an opaque origin returns "null" - return "null"; - } -}; - -module.exports.basicURLParse = function (input, options) { - if (options === undefined) { - options = {}; - } - - const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); - if (usm.failure) { - return "failure"; - } - - return usm.url; -}; - -module.exports.setTheUsername = function (url, username) { - url.username = ""; - const decoded = punycode_1.ucs2.decode(username); - for (let i = 0; i < decoded.length; ++i) { - url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); - } -}; - -module.exports.setThePassword = function (url, password) { - url.password = ""; - const decoded = punycode_1.ucs2.decode(password); - for (let i = 0; i < decoded.length; ++i) { - url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); - } -}; - -module.exports.serializeHost = serializeHost; - -module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; - -module.exports.serializeInteger = function (integer) { - return String(integer); -}; - -module.exports.parseURL = function (input, options) { - if (options === undefined) { - options = {}; - } - - // We don't handle blobs, so this just delegates: - return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); -}; -}); - -var implementation = class URLImpl { - constructor(constructorArgs) { - const url = constructorArgs[0]; - const base = constructorArgs[1]; - - let parsedBase = null; - if (base !== undefined) { - parsedBase = urlStateMachine.basicURLParse(base); - if (parsedBase === "failure") { - throw new TypeError("Invalid base URL"); - } - } - - const parsedURL = urlStateMachine.basicURLParse(url, { baseURL: parsedBase }); - if (parsedURL === "failure") { - throw new TypeError("Invalid URL"); - } - - this._url = parsedURL; - - // TODO: query stuff - } - - get href() { - return urlStateMachine.serializeURL(this._url); - } - - set href(v) { - const parsedURL = urlStateMachine.basicURLParse(v); - if (parsedURL === "failure") { - throw new TypeError("Invalid URL"); - } - - this._url = parsedURL; - } - - get origin() { - return urlStateMachine.serializeURLOrigin(this._url); - } - - get protocol() { - return this._url.scheme + ":"; - } - - set protocol(v) { - urlStateMachine.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); - } - - get username() { - return this._url.username; - } - - set username(v) { - if (urlStateMachine.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } - - urlStateMachine.setTheUsername(this._url, v); - } - - get password() { - return this._url.password; - } - - set password(v) { - if (urlStateMachine.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } - - urlStateMachine.setThePassword(this._url, v); - } - - get host() { - const url = this._url; - - if (url.host === null) { - return ""; - } - - if (url.port === null) { - return urlStateMachine.serializeHost(url.host); - } - - return urlStateMachine.serializeHost(url.host) + ":" + urlStateMachine.serializeInteger(url.port); - } - - set host(v) { - if (this._url.cannotBeABaseURL) { - return; - } - - urlStateMachine.basicURLParse(v, { url: this._url, stateOverride: "host" }); - } - - get hostname() { - if (this._url.host === null) { - return ""; - } - - return urlStateMachine.serializeHost(this._url.host); - } - - set hostname(v) { - if (this._url.cannotBeABaseURL) { - return; - } - - urlStateMachine.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); - } - - get port() { - if (this._url.port === null) { - return ""; - } - - return urlStateMachine.serializeInteger(this._url.port); - } - - set port(v) { - if (urlStateMachine.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } - - if (v === "") { - this._url.port = null; - } else { - urlStateMachine.basicURLParse(v, { url: this._url, stateOverride: "port" }); - } - } - - get pathname() { - if (this._url.cannotBeABaseURL) { - return this._url.path[0]; - } - - if (this._url.path.length === 0) { - return ""; - } - - return "/" + this._url.path.join("/"); - } - - set pathname(v) { - if (this._url.cannotBeABaseURL) { - return; - } - - this._url.path = []; - urlStateMachine.basicURLParse(v, { url: this._url, stateOverride: "path start" }); - } - - get search() { - if (this._url.query === null || this._url.query === "") { - return ""; - } - - return "?" + this._url.query; - } - - set search(v) { - // TODO: query stuff - - const url = this._url; - - if (v === "") { - url.query = null; - return; - } - - const input = v[0] === "?" ? v.substring(1) : v; - url.query = ""; - urlStateMachine.basicURLParse(input, { url, stateOverride: "query" }); - } - - get hash() { - if (this._url.fragment === null || this._url.fragment === "") { - return ""; - } - - return "#" + this._url.fragment; - } - - set hash(v) { - if (v === "") { - this._url.fragment = null; - return; - } - - const input = v[0] === "#" ? v.substring(1) : v; - this._url.fragment = ""; - urlStateMachine.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); - } - - toJSON() { - return this.href; - } -}; - -var URLImpl_1 = { - implementation: implementation -}; - -var URL_1 = createCommonjsModule(function (module) { - - - - - -const impl = utils.implSymbol; - -function URL(url) { - if (!this || this[impl] || !(this instanceof URL)) { - throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); - } - if (arguments.length < 1) { - throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); - } - const args = []; - for (let i = 0; i < arguments.length && i < 2; ++i) { - args[i] = arguments[i]; - } - args[0] = lib$2["USVString"](args[0]); - if (args[1] !== undefined) { - args[1] = lib$2["USVString"](args[1]); - } - - module.exports.setup(this, args); -} - -URL.prototype.toJSON = function toJSON() { - if (!this || !module.exports.is(this)) { - throw new TypeError("Illegal invocation"); - } - const args = []; - for (let i = 0; i < arguments.length && i < 0; ++i) { - args[i] = arguments[i]; - } - return this[impl].toJSON.apply(this[impl], args); -}; -Object.defineProperty(URL.prototype, "href", { - get() { - return this[impl].href; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].href = V; - }, - enumerable: true, - configurable: true -}); - -URL.prototype.toString = function () { - if (!this || !module.exports.is(this)) { - throw new TypeError("Illegal invocation"); - } - return this.href; -}; - -Object.defineProperty(URL.prototype, "origin", { - get() { - return this[impl].origin; - }, - enumerable: true, - configurable: true -}); - -Object.defineProperty(URL.prototype, "protocol", { - get() { - return this[impl].protocol; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].protocol = V; - }, - enumerable: true, - configurable: true -}); - -Object.defineProperty(URL.prototype, "username", { - get() { - return this[impl].username; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].username = V; - }, - enumerable: true, - configurable: true -}); - -Object.defineProperty(URL.prototype, "password", { - get() { - return this[impl].password; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].password = V; - }, - enumerable: true, - configurable: true -}); - -Object.defineProperty(URL.prototype, "host", { - get() { - return this[impl].host; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].host = V; - }, - enumerable: true, - configurable: true -}); - -Object.defineProperty(URL.prototype, "hostname", { - get() { - return this[impl].hostname; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].hostname = V; - }, - enumerable: true, - configurable: true -}); - -Object.defineProperty(URL.prototype, "port", { - get() { - return this[impl].port; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].port = V; - }, - enumerable: true, - configurable: true -}); - -Object.defineProperty(URL.prototype, "pathname", { - get() { - return this[impl].pathname; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].pathname = V; - }, - enumerable: true, - configurable: true -}); - -Object.defineProperty(URL.prototype, "search", { - get() { - return this[impl].search; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].search = V; - }, - enumerable: true, - configurable: true -}); - -Object.defineProperty(URL.prototype, "hash", { - get() { - return this[impl].hash; - }, - set(V) { - V = lib$2["USVString"](V); - this[impl].hash = V; - }, - enumerable: true, - configurable: true -}); - - -module.exports = { - is(obj) { - return !!obj && obj[impl] instanceof URLImpl_1.implementation; - }, - create(constructorArgs, privateData) { - let obj = Object.create(URL.prototype); - this.setup(obj, constructorArgs, privateData); - return obj; - }, - setup(obj, constructorArgs, privateData) { - if (!privateData) privateData = {}; - privateData.wrapper = obj; - - obj[impl] = new URLImpl_1.implementation(constructorArgs, privateData); - obj[impl][utils.wrapperSymbol] = obj; - }, - interface: URL, - expose: { - Window: { URL: URL }, - Worker: { URL: URL } - } -}; -}); - -var URL$2 = URL_1.interface; -var serializeURL = urlStateMachine.serializeURL; -var serializeURLOrigin = urlStateMachine.serializeURLOrigin; -var basicURLParse = urlStateMachine.basicURLParse; -var setTheUsername = urlStateMachine.setTheUsername; -var setThePassword = urlStateMachine.setThePassword; -var serializeHost = urlStateMachine.serializeHost; -var serializeInteger = urlStateMachine.serializeInteger; -var parseURL$1 = urlStateMachine.parseURL; - -var publicApi = { - URL: URL$2, - serializeURL: serializeURL, - serializeURLOrigin: serializeURLOrigin, - basicURLParse: basicURLParse, - setTheUsername: setTheUsername, - setThePassword: setThePassword, - serializeHost: serializeHost, - serializeInteger: serializeInteger, - parseURL: parseURL$1 -}; - -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js - -// fix for "Readable" isn't a named export issue -const Readable = Stream.Readable; - -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); - -class Blob$1 { - constructor() { - this[TYPE] = ''; - - const blobParts = arguments[0]; - const options = arguments[1]; - - const buffers = []; - let size = 0; - - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob$1) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } - - this[BUFFER] = Buffer.concat(buffers); - - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); - - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob$1([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } -} - -Object.defineProperties(Blob$1.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); - -Object.defineProperty(Blob$1.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * fetch-error.js - * - * FetchError interface for operational errors - */ - -/** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError - */ -function FetchError(message, type, systemError) { - Error.call(this, message); - - this.message = message; - this.type = type; - - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = require('encoding').convert; -} catch (e) {} - -const INTERNALS = Symbol('Body internals'); - -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream.PassThrough; - -/** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -function Body(body) { - var _this = this; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; - - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; - - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob$1(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - - if (body instanceof Stream) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } -} - -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob$1([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, - - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; - - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, - - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, - - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; - - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } -}; - -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); - -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } -}; - -/** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise - */ -function consumeBody() { - var _this4 = this; - - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - - this[INTERNALS].disturbed = true; - - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - - let body = this.body; - - // body is null - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is blob - if (isBlob$1(body)) { - body = body.stream(); - } - - // body is buffer - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } - - // istanbul ignore if: should never happen - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body.Promise(function (resolve, reject) { - let resTimeout; - - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } - - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } - - accumBytes += chunk.length; - accum.push(chunk); - }); - - body.on('end', function () { - if (abort) { - return; - } - - clearTimeout(resTimeout); - - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); -} - -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } - - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); - - // html5 - if (!res && str) { - res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; - - this[MAP] = Object.create(null); - - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } - - return; - } - - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } - - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } - - return this[MAP][key].join(', '); - } - - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } - - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } - - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } - - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; - } - - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } - - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } - - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } - - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } - - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } -} -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; - -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } -}); - -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; - - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} - -const INTERNAL = Symbol('internal'); - -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} - -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } - - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } - - this[INTERNAL].index = index + 1; - - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); - -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } - - return obj; -} - -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; -} - -const INTERNALS$1 = Symbol('Response internals'); - -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http.STATUS_CODES; - -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - Body.call(this, body, opts); - - const status = opts.status || 200; - const headers = new Headers(opts.headers); - - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } - - get url() { - return this[INTERNALS$1].url || ''; - } - - get status() { - return this[INTERNALS$1].status; - } - - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } - - get redirected() { - return this[INTERNALS$1].counter > 0; - } - - get statusText() { - return this[INTERNALS$1].statusText; - } - - get headers() { - return this[INTERNALS$1].headers; - } - - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } -} - -Body.mixIn(Response.prototype); - -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); - -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); - -const INTERNALS$2 = Symbol('Request internals'); -const URL$1 = Url.URL || publicApi.URL; - -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; - -/** - * Wrapper around `new URL` to handle arbitrary URLs - * - * @param {string} urlStr - * @return {void} - */ -function parseURL(urlStr) { - /* - Check whether the URL is absolute or not - Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 - Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 - */ - if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { - urlStr = new URL$1(urlStr).toString(); - } - - // Fallback to old implementation for arbitrary URLs - return parse_url(urlStr); -} - -const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; - -/** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} - -function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); -} - -/** - * Request class - * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void - */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parseURL(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parseURL(`${input}`); - } - input = {}; - } else { - parsedURL = parseURL(input.url); - } - - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } - - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; - - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); - - const headers = new Headers(init.headers || input.headers || {}); - - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } - - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; - - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - - get method() { - return this[INTERNALS$2].method; - } - - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } - - get headers() { - return this[INTERNALS$2].headers; - } - - get redirect() { - return this[INTERNALS$2].redirect; - } - - get signal() { - return this[INTERNALS$2].signal; - } - - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} - -Body.mixIn(Request.prototype); - -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); - -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); - -/** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request - */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - - // HTTP-network-or-cache fetch step 2.15 - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } - - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); - } - - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js - - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); -} - -/** - * abort-error.js - * - * AbortError interface for cancelled requests - */ - -/** - * Create AbortError instance - * - * @param String message Error message for human - * @return AbortError - */ -function AbortError(message) { - Error.call(this, message); - - this.type = 'aborted'; - this.message = message; - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} - -AbortError.prototype = Object.create(Error.prototype); -AbortError.prototype.constructor = AbortError; -AbortError.prototype.name = 'AbortError'; - -const URL$1$1 = Url.URL || publicApi.URL; - -// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream.PassThrough; - -const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) { - const orig = new URL$1$1(original).hostname; - const dest = new URL$1$1(destination).hostname; - - return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); -}; - -/** - * Fetch function - * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise - */ -function fetch$1(url, opts) { - - // allow custom promise - if (!fetch$1.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - - Body.Promise = fetch$1.Promise; - - // wrap http.request into fetch - return new fetch$1.Promise(function (resolve, reject) { - // build request object - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); - - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; - - let response = null; - - const abort = function abort() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; - - if (signal && signal.aborted) { - abort(); - return; - } - - const abortAndFinalize = function abortAndFinalize() { - abort(); - finalize(); - }; - - // send request - const req = send(options); - let reqTimeout; - - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } - - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } - - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); - - req.on('response', function (res) { - clearTimeout(reqTimeout); - - const headers = createHeadersLenient(res.headers); - - // HTTP fetch step 5 - if (fetch$1.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); - - // HTTP fetch step 5.3 - let locationURL = null; - try { - locationURL = location === null ? null : new URL$1$1(location, request.url).toString(); - } catch (err) { - // error here can only be invalid URL in Location: header - // do not throw when options.redirect == manual - // let the user extract the errorneous redirect URL - if (request.redirect !== 'manual') { - reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); - finalize(); - return; - } - } - - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - // handle corrupted header - try { - headers.set('Location', locationURL); - } catch (err) { - // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request - reject(err); - } - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } - - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - - if (!isDomainOrSubdomain(request.url, locationURL)) { - for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { - requestOpts.headers.delete(name); - } - } - - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } - - // HTTP-redirect fetch step 15 - resolve(fetch$1(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } - - // prepare response - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); - - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; - - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); - - // HTTP-network fetch step 12.1.1.4: handle content codings - - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - response = new Response(body, response_options); - resolve(response); - return; - } - - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body, response_options); - resolve(response); - return; - } - - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response(body, response_options); - resolve(response); - }); - return; - } - - // for br - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response(body, response_options); - resolve(response); - return; - } - - // otherwise, use response as-is - response = new Response(body, response_options); - resolve(response); - }); - - writeToStream(req, request); - }); -} -/** - * Redirect code matching - * - * @param Number code Status code - * @return Boolean - */ -fetch$1.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; - -// expose Promise -fetch$1.Promise = global.Promise; - -var lib$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': fetch$1, - Headers: Headers, - Request: Request, - Response: Response, - FetchError: FetchError -}); - -var require$$0$2 = /*@__PURE__*/getAugmentedNamespace(unfetch_module$1); - -var require$$1 = /*@__PURE__*/getAugmentedNamespace(lib$1); - -function r(m){return m && m.default || m;} -var isomorphicUnfetch = commonjsGlobal.fetch = commonjsGlobal.fetch || ( - typeof process=='undefined' ? r(require$$0$2) : (function(url, opts) { - return r(require$$1)(String(url).replace(/^\/\//g,'https://'), opts); - }) -); - -const endpoints = { - rest: { - beta: 'https://data.alpaca.markets/v1beta1', - account: 'https://api.alpaca.markets/v2', - market_data_v2: 'https://data.alpaca.markets/v2', - market_data_v1: 'https://data.alpaca.markets/v1', - }, - websocket: { - account: 'wss://api.alpaca.markets/stream', - market_data: (source = 'iex') => `wss://stream.data.alpaca.markets/v2/${source}`, - }, -}; - -var load$1 = function (received, defaults, onto = {}) { - var k, ref, v; - - for (k in defaults) { - v = defaults[k]; - onto[k] = (ref = received[k]) != null ? ref : v; - } - - return onto; -}; - -var overwrite = function (received, defaults, onto = {}) { - var k, v; - - for (k in received) { - v = received[k]; - - if (defaults[k] !== void 0) { - onto[k] = v; - } - } - - return onto; -}; - -var parser$8 = { - load: load$1, - overwrite: overwrite -}; - -var DLList$2; -DLList$2 = class DLList { - constructor(incr, decr) { - this.incr = incr; - this.decr = decr; - this._first = null; - this._last = null; - this.length = 0; - } - - push(value) { - var node; - this.length++; - - if (typeof this.incr === "function") { - this.incr(); - } - - node = { - value, - prev: this._last, - next: null - }; - - if (this._last != null) { - this._last.next = node; - this._last = node; - } else { - this._first = this._last = node; - } - - return void 0; - } - - shift() { - var value; - - if (this._first == null) { - return; - } else { - this.length--; - - if (typeof this.decr === "function") { - this.decr(); - } - } - - value = this._first.value; - - if ((this._first = this._first.next) != null) { - this._first.prev = null; - } else { - this._last = null; - } - - return value; - } - - first() { - if (this._first != null) { - return this._first.value; - } - } - - getArray() { - var node, ref, results; - node = this._first; - results = []; - - while (node != null) { - results.push((ref = node, node = node.next, ref.value)); - } - - return results; - } - - forEachShift(cb) { - var node; - node = this.shift(); - - while (node != null) { - cb(node), node = this.shift(); - } - - return void 0; - } - - debug() { - var node, ref, ref1, ref2, results; - node = this._first; - results = []; - - while (node != null) { - results.push((ref = node, node = node.next, { - value: ref.value, - prev: (ref1 = ref.prev) != null ? ref1.value : void 0, - next: (ref2 = ref.next) != null ? ref2.value : void 0 - })); - } - - return results; - } - -}; -var DLList_1 = DLList$2; - -function asyncGeneratorStep$8(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$8(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$8(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$8(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Events$6; -Events$6 = class Events { - constructor(instance) { - this.instance = instance; - this._events = {}; - - if (this.instance.on != null || this.instance.once != null || this.instance.removeAllListeners != null) { - throw new Error("An Emitter already exists for this object"); - } - - this.instance.on = (name, cb) => { - return this._addListener(name, "many", cb); - }; - - this.instance.once = (name, cb) => { - return this._addListener(name, "once", cb); - }; - - this.instance.removeAllListeners = (name = null) => { - if (name != null) { - return delete this._events[name]; - } else { - return this._events = {}; - } - }; - } - - _addListener(name, status, cb) { - var base; - - if ((base = this._events)[name] == null) { - base[name] = []; - } - - this._events[name].push({ - cb, - status - }); - - return this.instance; - } - - listenerCount(name) { - if (this._events[name] != null) { - return this._events[name].length; - } else { - return 0; - } - } - - trigger(name, ...args) { - var _this = this; - - return _asyncToGenerator$8(function* () { - var e, promises; - - try { - if (name !== "debug") { - _this.trigger("debug", `Event triggered: ${name}`, args); - } - - if (_this._events[name] == null) { - return; - } - - _this._events[name] = _this._events[name].filter(function (listener) { - return listener.status !== "none"; - }); - promises = _this._events[name].map( - /*#__PURE__*/ - function () { - var _ref = _asyncToGenerator$8(function* (listener) { - var e, returned; - - if (listener.status === "none") { - return; - } - - if (listener.status === "once") { - listener.status = "none"; - } - - try { - returned = typeof listener.cb === "function" ? listener.cb(...args) : void 0; - - if (typeof (returned != null ? returned.then : void 0) === "function") { - return yield returned; - } else { - return returned; - } - } catch (error) { - e = error; - - if ("name" !== "error") { - _this.trigger("error", e); - } - - return null; - } - }); - - return function (_x) { - return _ref.apply(this, arguments); - }; - }()); - return (yield Promise.all(promises)).find(function (x) { - return x != null; - }); - } catch (error) { - e = error; - - { - _this.trigger("error", e); - } - - return null; - } - })(); - } - -}; -var Events_1 = Events$6; - -var DLList$1, Events$5, Queues$1; -DLList$1 = DLList_1; -Events$5 = Events_1; -Queues$1 = class Queues { - constructor(num_priorities) { - this.Events = new Events$5(this); - this._length = 0; - - this._lists = function () { - var j, ref, results; - results = []; - - for (j = 1, ref = num_priorities; 1 <= ref ? j <= ref : j >= ref; 1 <= ref ? ++j : --j) { - results.push(new DLList$1(() => { - return this.incr(); - }, () => { - return this.decr(); - })); - } - - return results; - }.call(this); - } - - incr() { - if (this._length++ === 0) { - return this.Events.trigger("leftzero"); - } - } - - decr() { - if (--this._length === 0) { - return this.Events.trigger("zero"); - } - } - - push(job) { - return this._lists[job.options.priority].push(job); - } - - queued(priority) { - if (priority != null) { - return this._lists[priority].length; - } else { - return this._length; - } - } - - shiftAll(fn) { - return this._lists.forEach(function (list) { - return list.forEachShift(fn); - }); - } - - getFirst(arr = this._lists) { - var j, len, list; - - for (j = 0, len = arr.length; j < len; j++) { - list = arr[j]; - - if (list.length > 0) { - return list; - } - } - - return []; - } - - shiftLastFrom(priority) { - return this.getFirst(this._lists.slice(priority).reverse()).shift(); - } - -}; -var Queues_1 = Queues$1; - -var BottleneckError$4; -BottleneckError$4 = class BottleneckError extends Error {}; -var BottleneckError_1 = BottleneckError$4; - -function asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$7(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var BottleneckError$3, DEFAULT_PRIORITY$1, Job$1, NUM_PRIORITIES$1, parser$7; -NUM_PRIORITIES$1 = 10; -DEFAULT_PRIORITY$1 = 5; -parser$7 = parser$8; -BottleneckError$3 = BottleneckError_1; -Job$1 = class Job { - constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) { - this.task = task; - this.args = args; - this.rejectOnDrop = rejectOnDrop; - this.Events = Events; - this._states = _states; - this.Promise = Promise; - this.options = parser$7.load(options, jobDefaults); - this.options.priority = this._sanitizePriority(this.options.priority); - - if (this.options.id === jobDefaults.id) { - this.options.id = `${this.options.id}-${this._randomIndex()}`; - } - - this.promise = new this.Promise((_resolve, _reject) => { - this._resolve = _resolve; - this._reject = _reject; - }); - this.retryCount = 0; - } - - _sanitizePriority(priority) { - var sProperty; - sProperty = ~~priority !== priority ? DEFAULT_PRIORITY$1 : priority; - - if (sProperty < 0) { - return 0; - } else if (sProperty > NUM_PRIORITIES$1 - 1) { - return NUM_PRIORITIES$1 - 1; - } else { - return sProperty; - } - } - - _randomIndex() { - return Math.random().toString(36).slice(2); - } - - doDrop({ - error, - message = "This job has been dropped by Bottleneck" - } = {}) { - if (this._states.remove(this.options.id)) { - if (this.rejectOnDrop) { - this._reject(error != null ? error : new BottleneckError$3(message)); - } - - this.Events.trigger("dropped", { - args: this.args, - options: this.options, - task: this.task, - promise: this.promise - }); - return true; - } else { - return false; - } - } - - _assertStatus(expected) { - var status; - status = this._states.jobStatus(this.options.id); - - if (!(status === expected || expected === "DONE" && status === null)) { - throw new BottleneckError$3(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`); - } - } - - doReceive() { - this._states.start(this.options.id); - - return this.Events.trigger("received", { - args: this.args, - options: this.options - }); - } - - doQueue(reachedHWM, blocked) { - this._assertStatus("RECEIVED"); - - this._states.next(this.options.id); - - return this.Events.trigger("queued", { - args: this.args, - options: this.options, - reachedHWM, - blocked - }); - } - - doRun() { - if (this.retryCount === 0) { - this._assertStatus("QUEUED"); - - this._states.next(this.options.id); - } else { - this._assertStatus("EXECUTING"); - } - - return this.Events.trigger("scheduled", { - args: this.args, - options: this.options - }); - } - - doExecute(chained, clearGlobalState, run, free) { - var _this = this; - - return _asyncToGenerator$7(function* () { - var error, eventInfo, passed; - - if (_this.retryCount === 0) { - _this._assertStatus("RUNNING"); - - _this._states.next(_this.options.id); - } else { - _this._assertStatus("EXECUTING"); - } - - eventInfo = { - args: _this.args, - options: _this.options, - retryCount: _this.retryCount - }; - - _this.Events.trigger("executing", eventInfo); - - try { - passed = yield chained != null ? chained.schedule(_this.options, _this.task, ..._this.args) : _this.task(..._this.args); - - if (clearGlobalState()) { - _this.doDone(eventInfo); - - yield free(_this.options, eventInfo); - - _this._assertStatus("DONE"); - - return _this._resolve(passed); - } - } catch (error1) { - error = error1; - return _this._onFailure(error, eventInfo, clearGlobalState, run, free); - } - })(); - } - - doExpire(clearGlobalState, run, free) { - var error, eventInfo; - - if (this._states.jobStatus(this.options.id === "RUNNING")) { - this._states.next(this.options.id); - } - - this._assertStatus("EXECUTING"); - - eventInfo = { - args: this.args, - options: this.options, - retryCount: this.retryCount - }; - error = new BottleneckError$3(`This job timed out after ${this.options.expiration} ms.`); - return this._onFailure(error, eventInfo, clearGlobalState, run, free); - } - - _onFailure(error, eventInfo, clearGlobalState, run, free) { - var _this2 = this; - - return _asyncToGenerator$7(function* () { - var retry, retryAfter; - - if (clearGlobalState()) { - retry = yield _this2.Events.trigger("failed", error, eventInfo); - - if (retry != null) { - retryAfter = ~~retry; - - _this2.Events.trigger("retry", `Retrying ${_this2.options.id} after ${retryAfter} ms`, eventInfo); - - _this2.retryCount++; - return run(retryAfter); - } else { - _this2.doDone(eventInfo); - - yield free(_this2.options, eventInfo); - - _this2._assertStatus("DONE"); - - return _this2._reject(error); - } - } - })(); - } - - doDone(eventInfo) { - this._assertStatus("EXECUTING"); - - this._states.next(this.options.id); - - return this.Events.trigger("done", eventInfo); - } - -}; -var Job_1 = Job$1; - -function asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$6(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var BottleneckError$2, LocalDatastore$1, parser$6; -parser$6 = parser$8; -BottleneckError$2 = BottleneckError_1; -LocalDatastore$1 = class LocalDatastore { - constructor(instance, storeOptions, storeInstanceOptions) { - this.instance = instance; - this.storeOptions = storeOptions; - this.clientId = this.instance._randomIndex(); - parser$6.load(storeInstanceOptions, storeInstanceOptions, this); - this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now(); - this._running = 0; - this._done = 0; - this._unblockTime = 0; - this.ready = this.Promise.resolve(); - this.clients = {}; - - this._startHeartbeat(); - } - - _startHeartbeat() { - var base; - - if (this.heartbeat == null && (this.storeOptions.reservoirRefreshInterval != null && this.storeOptions.reservoirRefreshAmount != null || this.storeOptions.reservoirIncreaseInterval != null && this.storeOptions.reservoirIncreaseAmount != null)) { - return typeof (base = this.heartbeat = setInterval(() => { - var amount, incr, maximum, now, reservoir; - now = Date.now(); - - if (this.storeOptions.reservoirRefreshInterval != null && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) { - this._lastReservoirRefresh = now; - this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount; - - this.instance._drainAll(this.computeCapacity()); - } - - if (this.storeOptions.reservoirIncreaseInterval != null && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) { - var _this$storeOptions = this.storeOptions; - amount = _this$storeOptions.reservoirIncreaseAmount; - maximum = _this$storeOptions.reservoirIncreaseMaximum; - reservoir = _this$storeOptions.reservoir; - this._lastReservoirIncrease = now; - incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount; - - if (incr > 0) { - this.storeOptions.reservoir += incr; - return this.instance._drainAll(this.computeCapacity()); - } - } - }, this.heartbeatInterval)).unref === "function" ? base.unref() : void 0; - } else { - return clearInterval(this.heartbeat); - } - } - - __publish__(message) { - var _this = this; - - return _asyncToGenerator$6(function* () { - yield _this.yieldLoop(); - return _this.instance.Events.trigger("message", message.toString()); - })(); - } - - __disconnect__(flush) { - var _this2 = this; - - return _asyncToGenerator$6(function* () { - yield _this2.yieldLoop(); - clearInterval(_this2.heartbeat); - return _this2.Promise.resolve(); - })(); - } - - yieldLoop(t = 0) { - return new this.Promise(function (resolve, reject) { - return setTimeout(resolve, t); - }); - } - - computePenalty() { - var ref; - return (ref = this.storeOptions.penalty) != null ? ref : 15 * this.storeOptions.minTime || 5000; - } - - __updateSettings__(options) { - var _this3 = this; - - return _asyncToGenerator$6(function* () { - yield _this3.yieldLoop(); - parser$6.overwrite(options, options, _this3.storeOptions); - - _this3._startHeartbeat(); - - _this3.instance._drainAll(_this3.computeCapacity()); - - return true; - })(); - } - - __running__() { - var _this4 = this; - - return _asyncToGenerator$6(function* () { - yield _this4.yieldLoop(); - return _this4._running; - })(); - } - - __queued__() { - var _this5 = this; - - return _asyncToGenerator$6(function* () { - yield _this5.yieldLoop(); - return _this5.instance.queued(); - })(); - } - - __done__() { - var _this6 = this; - - return _asyncToGenerator$6(function* () { - yield _this6.yieldLoop(); - return _this6._done; - })(); - } - - __groupCheck__(time) { - var _this7 = this; - - return _asyncToGenerator$6(function* () { - yield _this7.yieldLoop(); - return _this7._nextRequest + _this7.timeout < time; - })(); - } - - computeCapacity() { - var maxConcurrent, reservoir; - var _this$storeOptions2 = this.storeOptions; - maxConcurrent = _this$storeOptions2.maxConcurrent; - reservoir = _this$storeOptions2.reservoir; - - if (maxConcurrent != null && reservoir != null) { - return Math.min(maxConcurrent - this._running, reservoir); - } else if (maxConcurrent != null) { - return maxConcurrent - this._running; - } else if (reservoir != null) { - return reservoir; - } else { - return null; - } - } - - conditionsCheck(weight) { - var capacity; - capacity = this.computeCapacity(); - return capacity == null || weight <= capacity; - } - - __incrementReservoir__(incr) { - var _this8 = this; - - return _asyncToGenerator$6(function* () { - var reservoir; - yield _this8.yieldLoop(); - reservoir = _this8.storeOptions.reservoir += incr; - - _this8.instance._drainAll(_this8.computeCapacity()); - - return reservoir; - })(); - } - - __currentReservoir__() { - var _this9 = this; - - return _asyncToGenerator$6(function* () { - yield _this9.yieldLoop(); - return _this9.storeOptions.reservoir; - })(); - } - - isBlocked(now) { - return this._unblockTime >= now; - } - - check(weight, now) { - return this.conditionsCheck(weight) && this._nextRequest - now <= 0; - } - - __check__(weight) { - var _this10 = this; - - return _asyncToGenerator$6(function* () { - var now; - yield _this10.yieldLoop(); - now = Date.now(); - return _this10.check(weight, now); - })(); - } - - __register__(index, weight, expiration) { - var _this11 = this; - - return _asyncToGenerator$6(function* () { - var now, wait; - yield _this11.yieldLoop(); - now = Date.now(); - - if (_this11.conditionsCheck(weight)) { - _this11._running += weight; - - if (_this11.storeOptions.reservoir != null) { - _this11.storeOptions.reservoir -= weight; - } - - wait = Math.max(_this11._nextRequest - now, 0); - _this11._nextRequest = now + wait + _this11.storeOptions.minTime; - return { - success: true, - wait, - reservoir: _this11.storeOptions.reservoir - }; - } else { - return { - success: false - }; - } - })(); - } - - strategyIsBlock() { - return this.storeOptions.strategy === 3; - } - - __submit__(queueLength, weight) { - var _this12 = this; - - return _asyncToGenerator$6(function* () { - var blocked, now, reachedHWM; - yield _this12.yieldLoop(); - - if (_this12.storeOptions.maxConcurrent != null && weight > _this12.storeOptions.maxConcurrent) { - throw new BottleneckError$2(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${_this12.storeOptions.maxConcurrent}`); - } - - now = Date.now(); - reachedHWM = _this12.storeOptions.highWater != null && queueLength === _this12.storeOptions.highWater && !_this12.check(weight, now); - blocked = _this12.strategyIsBlock() && (reachedHWM || _this12.isBlocked(now)); - - if (blocked) { - _this12._unblockTime = now + _this12.computePenalty(); - _this12._nextRequest = _this12._unblockTime + _this12.storeOptions.minTime; - - _this12.instance._dropAllQueued(); - } - - return { - reachedHWM, - blocked, - strategy: _this12.storeOptions.strategy - }; - })(); - } - - __free__(index, weight) { - var _this13 = this; - - return _asyncToGenerator$6(function* () { - yield _this13.yieldLoop(); - _this13._running -= weight; - _this13._done += weight; - - _this13.instance._drainAll(_this13.computeCapacity()); - - return { - running: _this13._running - }; - })(); - } - -}; -var LocalDatastore_1 = LocalDatastore$1; - -var require$$0$1 = { - "blacklist_client.lua": "local blacklist = ARGV[num_static_argv + 1]\n\nif redis.call('zscore', client_last_seen_key, blacklist) then\n redis.call('zadd', client_last_seen_key, 0, blacklist)\nend\n\n\nreturn {}\n", - "check.lua": "local weight = tonumber(ARGV[num_static_argv + 1])\n\nlocal capacity = process_tick(now, false)['capacity']\nlocal nextRequest = tonumber(redis.call('hget', settings_key, 'nextRequest'))\n\nreturn conditions_check(capacity, weight) and nextRequest - now <= 0\n", - "conditions_check.lua": "local conditions_check = function (capacity, weight)\n return capacity == nil or weight <= capacity\nend\n", - "current_reservoir.lua": "return process_tick(now, false)['reservoir']\n", - "done.lua": "process_tick(now, false)\n\nreturn tonumber(redis.call('hget', settings_key, 'done'))\n", - "free.lua": "local index = ARGV[num_static_argv + 1]\n\nredis.call('zadd', job_expirations_key, 0, index)\n\nreturn process_tick(now, false)['running']\n", - "get_time.lua": "redis.replicate_commands()\n\nlocal get_time = function ()\n local time = redis.call('time')\n\n return tonumber(time[1]..string.sub(time[2], 1, 3))\nend\n", - "group_check.lua": "return not (redis.call('exists', settings_key) == 1)\n", - "heartbeat.lua": "process_tick(now, true)\n", - "increment_reservoir.lua": "local incr = tonumber(ARGV[num_static_argv + 1])\n\nredis.call('hincrby', settings_key, 'reservoir', incr)\n\nlocal reservoir = process_tick(now, true)['reservoir']\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn reservoir\n", - "init.lua": "local clear = tonumber(ARGV[num_static_argv + 1])\nlocal limiter_version = ARGV[num_static_argv + 2]\nlocal num_local_argv = num_static_argv + 2\n\nif clear == 1 then\n redis.call('del', unpack(KEYS))\nend\n\nif redis.call('exists', settings_key) == 0 then\n -- Create\n local args = {'hmset', settings_key}\n\n for i = num_local_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\n end\n\n redis.call(unpack(args))\n redis.call('hmset', settings_key,\n 'nextRequest', now,\n 'lastReservoirRefresh', now,\n 'lastReservoirIncrease', now,\n 'running', 0,\n 'done', 0,\n 'unblockTime', 0,\n 'capacityPriorityCounter', 0\n )\n\nelse\n -- Apply migrations\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'version'\n )\n local id = settings[1]\n local current_version = settings[2]\n\n if current_version ~= limiter_version then\n local version_digits = {}\n for k, v in string.gmatch(current_version, \"([^.]+)\") do\n table.insert(version_digits, tonumber(k))\n end\n\n -- 2.10.0\n if version_digits[2] < 10 then\n redis.call('hsetnx', settings_key, 'reservoirRefreshInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirRefreshAmount', '')\n redis.call('hsetnx', settings_key, 'lastReservoirRefresh', '')\n redis.call('hsetnx', settings_key, 'done', 0)\n redis.call('hset', settings_key, 'version', '2.10.0')\n end\n\n -- 2.11.1\n if version_digits[2] < 11 or (version_digits[2] == 11 and version_digits[3] < 1) then\n if redis.call('hstrlen', settings_key, 'lastReservoirRefresh') == 0 then\n redis.call('hmset', settings_key,\n 'lastReservoirRefresh', now,\n 'version', '2.11.1'\n )\n end\n end\n\n -- 2.14.0\n if version_digits[2] < 14 then\n local old_running_key = 'b_'..id..'_running'\n local old_executing_key = 'b_'..id..'_executing'\n\n if redis.call('exists', old_running_key) == 1 then\n redis.call('rename', old_running_key, job_weights_key)\n end\n if redis.call('exists', old_executing_key) == 1 then\n redis.call('rename', old_executing_key, job_expirations_key)\n end\n redis.call('hset', settings_key, 'version', '2.14.0')\n end\n\n -- 2.15.2\n if version_digits[2] < 15 or (version_digits[2] == 15 and version_digits[3] < 2) then\n redis.call('hsetnx', settings_key, 'capacityPriorityCounter', 0)\n redis.call('hset', settings_key, 'version', '2.15.2')\n end\n\n -- 2.17.0\n if version_digits[2] < 17 then\n redis.call('hsetnx', settings_key, 'clientTimeout', 10000)\n redis.call('hset', settings_key, 'version', '2.17.0')\n end\n\n -- 2.18.0\n if version_digits[2] < 18 then\n redis.call('hsetnx', settings_key, 'reservoirIncreaseInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseAmount', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseMaximum', '')\n redis.call('hsetnx', settings_key, 'lastReservoirIncrease', now)\n redis.call('hset', settings_key, 'version', '2.18.0')\n end\n\n end\n\n process_tick(now, false)\nend\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n", - "process_tick.lua": "local process_tick = function (now, always_publish)\n\n local compute_capacity = function (maxConcurrent, running, reservoir)\n if maxConcurrent ~= nil and reservoir ~= nil then\n return math.min((maxConcurrent - running), reservoir)\n elseif maxConcurrent ~= nil then\n return maxConcurrent - running\n elseif reservoir ~= nil then\n return reservoir\n else\n return nil\n end\n end\n\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'running',\n 'reservoir',\n 'reservoirRefreshInterval',\n 'reservoirRefreshAmount',\n 'lastReservoirRefresh',\n 'reservoirIncreaseInterval',\n 'reservoirIncreaseAmount',\n 'reservoirIncreaseMaximum',\n 'lastReservoirIncrease',\n 'capacityPriorityCounter',\n 'clientTimeout'\n )\n local id = settings[1]\n local maxConcurrent = tonumber(settings[2])\n local running = tonumber(settings[3])\n local reservoir = tonumber(settings[4])\n local reservoirRefreshInterval = tonumber(settings[5])\n local reservoirRefreshAmount = tonumber(settings[6])\n local lastReservoirRefresh = tonumber(settings[7])\n local reservoirIncreaseInterval = tonumber(settings[8])\n local reservoirIncreaseAmount = tonumber(settings[9])\n local reservoirIncreaseMaximum = tonumber(settings[10])\n local lastReservoirIncrease = tonumber(settings[11])\n local capacityPriorityCounter = tonumber(settings[12])\n local clientTimeout = tonumber(settings[13])\n\n local initial_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n --\n -- Process 'running' changes\n --\n local expired = redis.call('zrangebyscore', job_expirations_key, '-inf', '('..now)\n\n if #expired > 0 then\n redis.call('zremrangebyscore', job_expirations_key, '-inf', '('..now)\n\n local flush_batch = function (batch, acc)\n local weights = redis.call('hmget', job_weights_key, unpack(batch))\n redis.call('hdel', job_weights_key, unpack(batch))\n local clients = redis.call('hmget', job_clients_key, unpack(batch))\n redis.call('hdel', job_clients_key, unpack(batch))\n\n -- Calculate sum of removed weights\n for i = 1, #weights do\n acc['total'] = acc['total'] + (tonumber(weights[i]) or 0)\n end\n\n -- Calculate sum of removed weights by client\n local client_weights = {}\n for i = 1, #clients do\n local removed = tonumber(weights[i]) or 0\n if removed > 0 then\n acc['client_weights'][clients[i]] = (acc['client_weights'][clients[i]] or 0) + removed\n end\n end\n end\n\n local acc = {\n ['total'] = 0,\n ['client_weights'] = {}\n }\n local batch_size = 1000\n\n -- Compute changes to Zsets and apply changes to Hashes\n for i = 1, #expired, batch_size do\n local batch = {}\n for j = i, math.min(i + batch_size - 1, #expired) do\n table.insert(batch, expired[j])\n end\n\n flush_batch(batch, acc)\n end\n\n -- Apply changes to Zsets\n if acc['total'] > 0 then\n redis.call('hincrby', settings_key, 'done', acc['total'])\n running = tonumber(redis.call('hincrby', settings_key, 'running', -acc['total']))\n end\n\n for client, weight in pairs(acc['client_weights']) do\n redis.call('zincrby', client_running_key, -weight, client)\n end\n end\n\n --\n -- Process 'reservoir' changes\n --\n local reservoirRefreshActive = reservoirRefreshInterval ~= nil and reservoirRefreshAmount ~= nil\n if reservoirRefreshActive and now >= lastReservoirRefresh + reservoirRefreshInterval then\n reservoir = reservoirRefreshAmount\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirRefresh', now\n )\n end\n\n local reservoirIncreaseActive = reservoirIncreaseInterval ~= nil and reservoirIncreaseAmount ~= nil\n if reservoirIncreaseActive and now >= lastReservoirIncrease + reservoirIncreaseInterval then\n local num_intervals = math.floor((now - lastReservoirIncrease) / reservoirIncreaseInterval)\n local incr = reservoirIncreaseAmount * num_intervals\n if reservoirIncreaseMaximum ~= nil then\n incr = math.min(incr, reservoirIncreaseMaximum - (reservoir or 0))\n end\n if incr > 0 then\n reservoir = (reservoir or 0) + incr\n end\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirIncrease', lastReservoirIncrease + (num_intervals * reservoirIncreaseInterval)\n )\n end\n\n --\n -- Clear unresponsive clients\n --\n local unresponsive = redis.call('zrangebyscore', client_last_seen_key, '-inf', (now - clientTimeout))\n local unresponsive_lookup = {}\n local terminated_clients = {}\n for i = 1, #unresponsive do\n unresponsive_lookup[unresponsive[i]] = true\n if tonumber(redis.call('zscore', client_running_key, unresponsive[i])) == 0 then\n table.insert(terminated_clients, unresponsive[i])\n end\n end\n if #terminated_clients > 0 then\n redis.call('zrem', client_running_key, unpack(terminated_clients))\n redis.call('hdel', client_num_queued_key, unpack(terminated_clients))\n redis.call('zrem', client_last_registered_key, unpack(terminated_clients))\n redis.call('zrem', client_last_seen_key, unpack(terminated_clients))\n end\n\n --\n -- Broadcast capacity changes\n --\n local final_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n if always_publish or (initial_capacity ~= nil and final_capacity == nil) then\n -- always_publish or was not unlimited, now unlimited\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n\n elseif initial_capacity ~= nil and final_capacity ~= nil and final_capacity > initial_capacity then\n -- capacity was increased\n -- send the capacity message to the limiter having the lowest number of running jobs\n -- the tiebreaker is the limiter having not registered a job in the longest time\n\n local lowest_concurrency_value = nil\n local lowest_concurrency_clients = {}\n local lowest_concurrency_last_registered = {}\n local client_concurrencies = redis.call('zrange', client_running_key, 0, -1, 'withscores')\n\n for i = 1, #client_concurrencies, 2 do\n local client = client_concurrencies[i]\n local concurrency = tonumber(client_concurrencies[i+1])\n\n if (\n lowest_concurrency_value == nil or lowest_concurrency_value == concurrency\n ) and (\n not unresponsive_lookup[client]\n ) and (\n tonumber(redis.call('hget', client_num_queued_key, client)) > 0\n ) then\n lowest_concurrency_value = concurrency\n table.insert(lowest_concurrency_clients, client)\n local last_registered = tonumber(redis.call('zscore', client_last_registered_key, client))\n table.insert(lowest_concurrency_last_registered, last_registered)\n end\n end\n\n if #lowest_concurrency_clients > 0 then\n local position = 1\n local earliest = lowest_concurrency_last_registered[1]\n\n for i,v in ipairs(lowest_concurrency_last_registered) do\n if v < earliest then\n position = i\n earliest = v\n end\n end\n\n local next_client = lowest_concurrency_clients[position]\n redis.call('publish', 'b_'..id,\n 'capacity-priority:'..(final_capacity or '')..\n ':'..next_client..\n ':'..capacityPriorityCounter\n )\n redis.call('hincrby', settings_key, 'capacityPriorityCounter', '1')\n else\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n end\n end\n\n return {\n ['capacity'] = final_capacity,\n ['running'] = running,\n ['reservoir'] = reservoir\n }\nend\n", - "queued.lua": "local clientTimeout = tonumber(redis.call('hget', settings_key, 'clientTimeout'))\nlocal valid_clients = redis.call('zrangebyscore', client_last_seen_key, (now - clientTimeout), 'inf')\nlocal client_queued = redis.call('hmget', client_num_queued_key, unpack(valid_clients))\n\nlocal sum = 0\nfor i = 1, #client_queued do\n sum = sum + tonumber(client_queued[i])\nend\n\nreturn sum\n", - "refresh_expiration.lua": "local refresh_expiration = function (now, nextRequest, groupTimeout)\n\n if groupTimeout ~= nil then\n local ttl = (nextRequest + groupTimeout) - now\n\n for i = 1, #KEYS do\n redis.call('pexpire', KEYS[i], ttl)\n end\n end\n\nend\n", - "refs.lua": "local settings_key = KEYS[1]\nlocal job_weights_key = KEYS[2]\nlocal job_expirations_key = KEYS[3]\nlocal job_clients_key = KEYS[4]\nlocal client_running_key = KEYS[5]\nlocal client_num_queued_key = KEYS[6]\nlocal client_last_registered_key = KEYS[7]\nlocal client_last_seen_key = KEYS[8]\n\nlocal now = tonumber(ARGV[1])\nlocal client = ARGV[2]\n\nlocal num_static_argv = 2\n", - "register.lua": "local index = ARGV[num_static_argv + 1]\nlocal weight = tonumber(ARGV[num_static_argv + 2])\nlocal expiration = tonumber(ARGV[num_static_argv + 3])\n\nlocal state = process_tick(now, false)\nlocal capacity = state['capacity']\nlocal reservoir = state['reservoir']\n\nlocal settings = redis.call('hmget', settings_key,\n 'nextRequest',\n 'minTime',\n 'groupTimeout'\n)\nlocal nextRequest = tonumber(settings[1])\nlocal minTime = tonumber(settings[2])\nlocal groupTimeout = tonumber(settings[3])\n\nif conditions_check(capacity, weight) then\n\n redis.call('hincrby', settings_key, 'running', weight)\n redis.call('hset', job_weights_key, index, weight)\n if expiration ~= nil then\n redis.call('zadd', job_expirations_key, now + expiration, index)\n end\n redis.call('hset', job_clients_key, index, client)\n redis.call('zincrby', client_running_key, weight, client)\n redis.call('hincrby', client_num_queued_key, client, -1)\n redis.call('zadd', client_last_registered_key, now, client)\n\n local wait = math.max(nextRequest - now, 0)\n local newNextRequest = now + wait + minTime\n\n if reservoir == nil then\n redis.call('hset', settings_key,\n 'nextRequest', newNextRequest\n )\n else\n reservoir = reservoir - weight\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'nextRequest', newNextRequest\n )\n end\n\n refresh_expiration(now, newNextRequest, groupTimeout)\n\n return {true, wait, reservoir}\n\nelse\n return {false}\nend\n", - "register_client.lua": "local queued = tonumber(ARGV[num_static_argv + 1])\n\n-- Could have been re-registered concurrently\nif not redis.call('zscore', client_last_seen_key, client) then\n redis.call('zadd', client_running_key, 0, client)\n redis.call('hset', client_num_queued_key, client, queued)\n redis.call('zadd', client_last_registered_key, 0, client)\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n\nreturn {}\n", - "running.lua": "return process_tick(now, false)['running']\n", - "submit.lua": "local queueLength = tonumber(ARGV[num_static_argv + 1])\nlocal weight = tonumber(ARGV[num_static_argv + 2])\n\nlocal capacity = process_tick(now, false)['capacity']\n\nlocal settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'highWater',\n 'nextRequest',\n 'strategy',\n 'unblockTime',\n 'penalty',\n 'minTime',\n 'groupTimeout'\n)\nlocal id = settings[1]\nlocal maxConcurrent = tonumber(settings[2])\nlocal highWater = tonumber(settings[3])\nlocal nextRequest = tonumber(settings[4])\nlocal strategy = tonumber(settings[5])\nlocal unblockTime = tonumber(settings[6])\nlocal penalty = tonumber(settings[7])\nlocal minTime = tonumber(settings[8])\nlocal groupTimeout = tonumber(settings[9])\n\nif maxConcurrent ~= nil and weight > maxConcurrent then\n return redis.error_reply('OVERWEIGHT:'..weight..':'..maxConcurrent)\nend\n\nlocal reachedHWM = (highWater ~= nil and queueLength == highWater\n and not (\n conditions_check(capacity, weight)\n and nextRequest - now <= 0\n )\n)\n\nlocal blocked = strategy == 3 and (reachedHWM or unblockTime >= now)\n\nif blocked then\n local computedPenalty = penalty\n if computedPenalty == nil then\n if minTime == 0 then\n computedPenalty = 5000\n else\n computedPenalty = 15 * minTime\n end\n end\n\n local newNextRequest = now + computedPenalty + minTime\n\n redis.call('hmset', settings_key,\n 'unblockTime', now + computedPenalty,\n 'nextRequest', newNextRequest\n )\n\n local clients_queued_reset = redis.call('hkeys', client_num_queued_key)\n local queued_reset = {}\n for i = 1, #clients_queued_reset do\n table.insert(queued_reset, clients_queued_reset[i])\n table.insert(queued_reset, 0)\n end\n redis.call('hmset', client_num_queued_key, unpack(queued_reset))\n\n redis.call('publish', 'b_'..id, 'blocked:')\n\n refresh_expiration(now, newNextRequest, groupTimeout)\nend\n\nif not blocked and not reachedHWM then\n redis.call('hincrby', client_num_queued_key, client, 1)\nend\n\nreturn {reachedHWM, blocked, strategy}\n", - "update_settings.lua": "local args = {'hmset', settings_key}\n\nfor i = num_static_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\nend\n\nredis.call(unpack(args))\n\nprocess_tick(now, true)\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n", - "validate_client.lua": "if not redis.call('zscore', client_last_seen_key, client) then\n return redis.error_reply('UNKNOWN_CLIENT')\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n", - "validate_keys.lua": "if not (redis.call('exists', settings_key) == 1) then\n return redis.error_reply('SETTINGS_KEY_NOT_FOUND')\nend\n" -}; - -var Scripts$3 = createCommonjsModule(function (module, exports) { - -var headers, lua, templates; -lua = require$$0$1; -headers = { - refs: lua["refs.lua"], - validate_keys: lua["validate_keys.lua"], - validate_client: lua["validate_client.lua"], - refresh_expiration: lua["refresh_expiration.lua"], - process_tick: lua["process_tick.lua"], - conditions_check: lua["conditions_check.lua"], - get_time: lua["get_time.lua"] -}; - -exports.allKeys = function (id) { - return [ - /* - HASH - */ - `b_${id}_settings`, - /* - HASH - job index -> weight - */ - `b_${id}_job_weights`, - /* - ZSET - job index -> expiration - */ - `b_${id}_job_expirations`, - /* - HASH - job index -> client - */ - `b_${id}_job_clients`, - /* - ZSET - client -> sum running - */ - `b_${id}_client_running`, - /* - HASH - client -> num queued - */ - `b_${id}_client_num_queued`, - /* - ZSET - client -> last job registered - */ - `b_${id}_client_last_registered`, - /* - ZSET - client -> last seen - */ - `b_${id}_client_last_seen`]; -}; - -templates = { - init: { - keys: exports.allKeys, - headers: ["process_tick"], - refresh_expiration: true, - code: lua["init.lua"] - }, - group_check: { - keys: exports.allKeys, - headers: [], - refresh_expiration: false, - code: lua["group_check.lua"] - }, - register_client: { - keys: exports.allKeys, - headers: ["validate_keys"], - refresh_expiration: false, - code: lua["register_client.lua"] - }, - blacklist_client: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client"], - refresh_expiration: false, - code: lua["blacklist_client.lua"] - }, - heartbeat: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["heartbeat.lua"] - }, - update_settings: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: true, - code: lua["update_settings.lua"] - }, - running: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["running.lua"] - }, - queued: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client"], - refresh_expiration: false, - code: lua["queued.lua"] - }, - done: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["done.lua"] - }, - check: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick", "conditions_check"], - refresh_expiration: false, - code: lua["check.lua"] - }, - submit: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick", "conditions_check"], - refresh_expiration: true, - code: lua["submit.lua"] - }, - register: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick", "conditions_check"], - refresh_expiration: true, - code: lua["register.lua"] - }, - free: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: true, - code: lua["free.lua"] - }, - current_reservoir: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: false, - code: lua["current_reservoir.lua"] - }, - increment_reservoir: { - keys: exports.allKeys, - headers: ["validate_keys", "validate_client", "process_tick"], - refresh_expiration: true, - code: lua["increment_reservoir.lua"] - } -}; -exports.names = Object.keys(templates); - -exports.keys = function (name, id) { - return templates[name].keys(id); -}; - -exports.payload = function (name) { - var template; - template = templates[name]; - return Array.prototype.concat(headers.refs, template.headers.map(function (h) { - return headers[h]; - }), template.refresh_expiration ? headers.refresh_expiration : "", template.code).join("\n"); -}; -}); - -function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$5(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Events$4, RedisConnection$2, Scripts$2, parser$5; -parser$5 = parser$8; -Events$4 = Events_1; -Scripts$2 = Scripts$3; - -RedisConnection$2 = function () { - class RedisConnection { - constructor(options = {}) { - parser$5.load(options, this.defaults, this); - - if (this.Redis == null) { - this.Redis = eval("require")("redis"); // Obfuscated or else Webpack/Angular will try to inline the optional redis module. To override this behavior: pass the redis module to Bottleneck as the 'Redis' option. - } - - if (this.Events == null) { - this.Events = new Events$4(this); - } - - this.terminated = false; - - if (this.client == null) { - this.client = this.Redis.createClient(this.clientOptions); - } - - this.subscriber = this.client.duplicate(); - this.limiters = {}; - this.shas = {}; - this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => { - return this._loadScripts(); - }).then(() => { - return { - client: this.client, - subscriber: this.subscriber - }; - }); - } - - _setup(client, sub) { - client.setMaxListeners(0); - return new this.Promise((resolve, reject) => { - client.on("error", e => { - return this.Events.trigger("error", e); - }); - - if (sub) { - client.on("message", (channel, message) => { - var ref; - return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0; - }); - } - - if (client.ready) { - return resolve(); - } else { - return client.once("ready", resolve); - } - }); - } - - _loadScript(name) { - return new this.Promise((resolve, reject) => { - var payload; - payload = Scripts$2.payload(name); - return this.client.multi([["script", "load", payload]]).exec((err, replies) => { - if (err != null) { - return reject(err); - } - - this.shas[name] = replies[0]; - return resolve(replies[0]); - }); - }); - } - - _loadScripts() { - return this.Promise.all(Scripts$2.names.map(k => { - return this._loadScript(k); - })); - } - - __runCommand__(cmd) { - var _this = this; - - return _asyncToGenerator$5(function* () { - yield _this.ready; - return new _this.Promise((resolve, reject) => { - return _this.client.multi([cmd]).exec_atomic(function (err, replies) { - if (err != null) { - return reject(err); - } else { - return resolve(replies[0]); - } - }); - }); - })(); - } - - __addLimiter__(instance) { - return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => { - return new this.Promise((resolve, reject) => { - var handler; - - handler = chan => { - if (chan === channel) { - this.subscriber.removeListener("subscribe", handler); - this.limiters[channel] = instance; - return resolve(); - } - }; - - this.subscriber.on("subscribe", handler); - return this.subscriber.subscribe(channel); - }); - })); - } - - __removeLimiter__(instance) { - var _this2 = this; - - return this.Promise.all([instance.channel(), instance.channel_client()].map( - /*#__PURE__*/ - function () { - var _ref = _asyncToGenerator$5(function* (channel) { - if (!_this2.terminated) { - yield new _this2.Promise((resolve, reject) => { - return _this2.subscriber.unsubscribe(channel, function (err, chan) { - if (err != null) { - return reject(err); - } - - if (chan === channel) { - return resolve(); - } - }); - }); - } - - return delete _this2.limiters[channel]; - }); - - return function (_x) { - return _ref.apply(this, arguments); - }; - }())); - } - - __scriptArgs__(name, id, args, cb) { - var keys; - keys = Scripts$2.keys(name, id); - return [this.shas[name], keys.length].concat(keys, args, cb); - } - - __scriptFn__(name) { - return this.client.evalsha.bind(this.client); - } - - disconnect(flush = true) { - var i, k, len, ref; - ref = Object.keys(this.limiters); - - for (i = 0, len = ref.length; i < len; i++) { - k = ref[i]; - clearInterval(this.limiters[k]._store.heartbeat); - } - - this.limiters = {}; - this.terminated = true; - this.client.end(flush); - this.subscriber.end(flush); - return this.Promise.resolve(); - } - - } - RedisConnection.prototype.datastore = "redis"; - RedisConnection.prototype.defaults = { - Redis: null, - clientOptions: {}, - client: null, - Promise: Promise, - Events: null - }; - return RedisConnection; -}.call(void 0); - -var RedisConnection_1 = RedisConnection$2; - -function _slicedToArray$3(arr, i) { return _arrayWithHoles$3(arr) || _iterableToArrayLimit$3(arr, i) || _nonIterableRest$3(); } - -function _nonIterableRest$3() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit$3(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles$3(arr) { if (Array.isArray(arr)) return arr; } - -function asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$4(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Events$3, IORedisConnection$2, Scripts$1, parser$4; -parser$4 = parser$8; -Events$3 = Events_1; -Scripts$1 = Scripts$3; - -IORedisConnection$2 = function () { - class IORedisConnection { - constructor(options = {}) { - parser$4.load(options, this.defaults, this); - - if (this.Redis == null) { - this.Redis = eval("require")("ioredis"); // Obfuscated or else Webpack/Angular will try to inline the optional ioredis module. To override this behavior: pass the ioredis module to Bottleneck as the 'Redis' option. - } - - if (this.Events == null) { - this.Events = new Events$3(this); - } - - this.terminated = false; - - if (this.clusterNodes != null) { - this.client = new this.Redis.Cluster(this.clusterNodes, this.clientOptions); - this.subscriber = new this.Redis.Cluster(this.clusterNodes, this.clientOptions); - } else if (this.client != null && this.client.duplicate == null) { - this.subscriber = new this.Redis.Cluster(this.client.startupNodes, this.client.options); - } else { - if (this.client == null) { - this.client = new this.Redis(this.clientOptions); - } - - this.subscriber = this.client.duplicate(); - } - - this.limiters = {}; - this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => { - this._loadScripts(); - - return { - client: this.client, - subscriber: this.subscriber - }; - }); - } - - _setup(client, sub) { - client.setMaxListeners(0); - return new this.Promise((resolve, reject) => { - client.on("error", e => { - return this.Events.trigger("error", e); - }); - - if (sub) { - client.on("message", (channel, message) => { - var ref; - return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0; - }); - } - - if (client.status === "ready") { - return resolve(); - } else { - return client.once("ready", resolve); - } - }); - } - - _loadScripts() { - return Scripts$1.names.forEach(name => { - return this.client.defineCommand(name, { - lua: Scripts$1.payload(name) - }); - }); - } - - __runCommand__(cmd) { - var _this = this; - - return _asyncToGenerator$4(function* () { - var deleted; - - yield _this.ready; - - var _ref = yield _this.client.pipeline([cmd]).exec(); - - var _ref2 = _slicedToArray$3(_ref, 1); - - var _ref2$ = _slicedToArray$3(_ref2[0], 2); - deleted = _ref2$[1]; - return deleted; - })(); - } - - __addLimiter__(instance) { - return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => { - return new this.Promise((resolve, reject) => { - return this.subscriber.subscribe(channel, () => { - this.limiters[channel] = instance; - return resolve(); - }); - }); - })); - } - - __removeLimiter__(instance) { - var _this2 = this; - - return [instance.channel(), instance.channel_client()].forEach( - /*#__PURE__*/ - function () { - var _ref3 = _asyncToGenerator$4(function* (channel) { - if (!_this2.terminated) { - yield _this2.subscriber.unsubscribe(channel); - } - - return delete _this2.limiters[channel]; - }); - - return function (_x) { - return _ref3.apply(this, arguments); - }; - }()); - } - - __scriptArgs__(name, id, args, cb) { - var keys; - keys = Scripts$1.keys(name, id); - return [keys.length].concat(keys, args, cb); - } - - __scriptFn__(name) { - return this.client[name].bind(this.client); - } - - disconnect(flush = true) { - var i, k, len, ref; - ref = Object.keys(this.limiters); - - for (i = 0, len = ref.length; i < len; i++) { - k = ref[i]; - clearInterval(this.limiters[k]._store.heartbeat); - } - - this.limiters = {}; - this.terminated = true; - - if (flush) { - return this.Promise.all([this.client.quit(), this.subscriber.quit()]); - } else { - this.client.disconnect(); - this.subscriber.disconnect(); - return this.Promise.resolve(); - } - } - - } - IORedisConnection.prototype.datastore = "ioredis"; - IORedisConnection.prototype.defaults = { - Redis: null, - clientOptions: {}, - clusterNodes: null, - client: null, - Promise: Promise, - Events: null - }; - return IORedisConnection; -}.call(void 0); - -var IORedisConnection_1 = IORedisConnection$2; - -function _slicedToArray$2(arr, i) { return _arrayWithHoles$2(arr) || _iterableToArrayLimit$2(arr, i) || _nonIterableRest$2(); } - -function _nonIterableRest$2() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit$2(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles$2(arr) { if (Array.isArray(arr)) return arr; } - -function asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$3(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var BottleneckError$1, IORedisConnection$1, RedisConnection$1, RedisDatastore$1, parser$3; -parser$3 = parser$8; -BottleneckError$1 = BottleneckError_1; -RedisConnection$1 = RedisConnection_1; -IORedisConnection$1 = IORedisConnection_1; -RedisDatastore$1 = class RedisDatastore { - constructor(instance, storeOptions, storeInstanceOptions) { - this.instance = instance; - this.storeOptions = storeOptions; - this.originalId = this.instance.id; - this.clientId = this.instance._randomIndex(); - parser$3.load(storeInstanceOptions, storeInstanceOptions, this); - this.clients = {}; - this.capacityPriorityCounters = {}; - this.sharedConnection = this.connection != null; - - if (this.connection == null) { - this.connection = this.instance.datastore === "redis" ? new RedisConnection$1({ - Redis: this.Redis, - clientOptions: this.clientOptions, - Promise: this.Promise, - Events: this.instance.Events - }) : this.instance.datastore === "ioredis" ? new IORedisConnection$1({ - Redis: this.Redis, - clientOptions: this.clientOptions, - clusterNodes: this.clusterNodes, - Promise: this.Promise, - Events: this.instance.Events - }) : void 0; - } - - this.instance.connection = this.connection; - this.instance.datastore = this.connection.datastore; - this.ready = this.connection.ready.then(clients => { - this.clients = clients; - return this.runScript("init", this.prepareInitSettings(this.clearDatastore)); - }).then(() => { - return this.connection.__addLimiter__(this.instance); - }).then(() => { - return this.runScript("register_client", [this.instance.queued()]); - }).then(() => { - var base; - - if (typeof (base = this.heartbeat = setInterval(() => { - return this.runScript("heartbeat", []).catch(e => { - return this.instance.Events.trigger("error", e); - }); - }, this.heartbeatInterval)).unref === "function") { - base.unref(); - } - - return this.clients; - }); - } - - __publish__(message) { - var _this = this; - - return _asyncToGenerator$3(function* () { - var client; - - var _ref = yield _this.ready; - - client = _ref.client; - return client.publish(_this.instance.channel(), `message:${message.toString()}`); - })(); - } - - onMessage(channel, message) { - var _this2 = this; - - return _asyncToGenerator$3(function* () { - var capacity, counter, data, drained, e, newCapacity, pos, priorityClient, rawCapacity, type; - - try { - pos = message.indexOf(":"); - var _ref2 = [message.slice(0, pos), message.slice(pos + 1)]; - type = _ref2[0]; - data = _ref2[1]; - - if (type === "capacity") { - return yield _this2.instance._drainAll(data.length > 0 ? ~~data : void 0); - } else if (type === "capacity-priority") { - var _data$split = data.split(":"); - - var _data$split2 = _slicedToArray$2(_data$split, 3); - - rawCapacity = _data$split2[0]; - priorityClient = _data$split2[1]; - counter = _data$split2[2]; - capacity = rawCapacity.length > 0 ? ~~rawCapacity : void 0; - - if (priorityClient === _this2.clientId) { - drained = yield _this2.instance._drainAll(capacity); - newCapacity = capacity != null ? capacity - (drained || 0) : ""; - return yield _this2.clients.client.publish(_this2.instance.channel(), `capacity-priority:${newCapacity}::${counter}`); - } else if (priorityClient === "") { - clearTimeout(_this2.capacityPriorityCounters[counter]); - delete _this2.capacityPriorityCounters[counter]; - return _this2.instance._drainAll(capacity); - } else { - return _this2.capacityPriorityCounters[counter] = setTimeout( - /*#__PURE__*/ - _asyncToGenerator$3(function* () { - var e; - - try { - delete _this2.capacityPriorityCounters[counter]; - yield _this2.runScript("blacklist_client", [priorityClient]); - return yield _this2.instance._drainAll(capacity); - } catch (error) { - e = error; - return _this2.instance.Events.trigger("error", e); - } - }), 1000); - } - } else if (type === "message") { - return _this2.instance.Events.trigger("message", data); - } else if (type === "blocked") { - return yield _this2.instance._dropAllQueued(); - } - } catch (error) { - e = error; - return _this2.instance.Events.trigger("error", e); - } - })(); - } - - __disconnect__(flush) { - clearInterval(this.heartbeat); - - if (this.sharedConnection) { - return this.connection.__removeLimiter__(this.instance); - } else { - return this.connection.disconnect(flush); - } - } - - runScript(name, args) { - var _this3 = this; - - return _asyncToGenerator$3(function* () { - if (!(name === "init" || name === "register_client")) { - yield _this3.ready; - } - - return new _this3.Promise((resolve, reject) => { - var all_args, arr; - all_args = [Date.now(), _this3.clientId].concat(args); - - _this3.instance.Events.trigger("debug", `Calling Redis script: ${name}.lua`, all_args); - - arr = _this3.connection.__scriptArgs__(name, _this3.originalId, all_args, function (err, replies) { - if (err != null) { - return reject(err); - } - - return resolve(replies); - }); - return _this3.connection.__scriptFn__(name)(...arr); - }).catch(e => { - if (e.message === "SETTINGS_KEY_NOT_FOUND") { - if (name === "heartbeat") { - return _this3.Promise.resolve(); - } else { - return _this3.runScript("init", _this3.prepareInitSettings(false)).then(() => { - return _this3.runScript(name, args); - }); - } - } else if (e.message === "UNKNOWN_CLIENT") { - return _this3.runScript("register_client", [_this3.instance.queued()]).then(() => { - return _this3.runScript(name, args); - }); - } else { - return _this3.Promise.reject(e); - } - }); - })(); - } - - prepareArray(arr) { - var i, len, results, x; - results = []; - - for (i = 0, len = arr.length; i < len; i++) { - x = arr[i]; - results.push(x != null ? x.toString() : ""); - } - - return results; - } - - prepareObject(obj) { - var arr, k, v; - arr = []; - - for (k in obj) { - v = obj[k]; - arr.push(k, v != null ? v.toString() : ""); - } - - return arr; - } - - prepareInitSettings(clear) { - var args; - args = this.prepareObject(Object.assign({}, this.storeOptions, { - id: this.originalId, - version: this.instance.version, - groupTimeout: this.timeout, - clientTimeout: this.clientTimeout - })); - args.unshift(clear ? 1 : 0, this.instance.version); - return args; - } - - convertBool(b) { - return !!b; - } - - __updateSettings__(options) { - var _this4 = this; - - return _asyncToGenerator$3(function* () { - yield _this4.runScript("update_settings", _this4.prepareObject(options)); - return parser$3.overwrite(options, options, _this4.storeOptions); - })(); - } - - __running__() { - return this.runScript("running", []); - } - - __queued__() { - return this.runScript("queued", []); - } - - __done__() { - return this.runScript("done", []); - } - - __groupCheck__() { - var _this5 = this; - - return _asyncToGenerator$3(function* () { - return _this5.convertBool((yield _this5.runScript("group_check", []))); - })(); - } - - __incrementReservoir__(incr) { - return this.runScript("increment_reservoir", [incr]); - } - - __currentReservoir__() { - return this.runScript("current_reservoir", []); - } - - __check__(weight) { - var _this6 = this; - - return _asyncToGenerator$3(function* () { - return _this6.convertBool((yield _this6.runScript("check", _this6.prepareArray([weight])))); - })(); - } - - __register__(index, weight, expiration) { - var _this7 = this; - - return _asyncToGenerator$3(function* () { - var reservoir, success, wait; - - var _ref4 = yield _this7.runScript("register", _this7.prepareArray([index, weight, expiration])); - - var _ref5 = _slicedToArray$2(_ref4, 3); - - success = _ref5[0]; - wait = _ref5[1]; - reservoir = _ref5[2]; - return { - success: _this7.convertBool(success), - wait, - reservoir - }; - })(); - } - - __submit__(queueLength, weight) { - var _this8 = this; - - return _asyncToGenerator$3(function* () { - var blocked, e, maxConcurrent, reachedHWM, strategy; - - try { - var _ref6 = yield _this8.runScript("submit", _this8.prepareArray([queueLength, weight])); - - var _ref7 = _slicedToArray$2(_ref6, 3); - - reachedHWM = _ref7[0]; - blocked = _ref7[1]; - strategy = _ref7[2]; - return { - reachedHWM: _this8.convertBool(reachedHWM), - blocked: _this8.convertBool(blocked), - strategy - }; - } catch (error) { - e = error; - - if (e.message.indexOf("OVERWEIGHT") === 0) { - var _e$message$split = e.message.split(":"); - - var _e$message$split2 = _slicedToArray$2(_e$message$split, 3); - weight = _e$message$split2[1]; - maxConcurrent = _e$message$split2[2]; - throw new BottleneckError$1(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${maxConcurrent}`); - } else { - throw e; - } - } - })(); - } - - __free__(index, weight) { - var _this9 = this; - - return _asyncToGenerator$3(function* () { - var running; - running = yield _this9.runScript("free", _this9.prepareArray([index])); - return { - running - }; - })(); - } - -}; -var RedisDatastore_1 = RedisDatastore$1; - -var BottleneckError, States$1; -BottleneckError = BottleneckError_1; -States$1 = class States { - constructor(status1) { - this.status = status1; - this._jobs = {}; - this.counts = this.status.map(function () { - return 0; - }); - } - - next(id) { - var current, next; - current = this._jobs[id]; - next = current + 1; - - if (current != null && next < this.status.length) { - this.counts[current]--; - this.counts[next]++; - return this._jobs[id]++; - } else if (current != null) { - this.counts[current]--; - return delete this._jobs[id]; - } - } - - start(id) { - var initial; - initial = 0; - this._jobs[id] = initial; - return this.counts[initial]++; - } - - remove(id) { - var current; - current = this._jobs[id]; - - if (current != null) { - this.counts[current]--; - delete this._jobs[id]; - } - - return current != null; - } - - jobStatus(id) { - var ref; - return (ref = this.status[this._jobs[id]]) != null ? ref : null; - } - - statusJobs(status) { - var k, pos, ref, results, v; - - if (status != null) { - pos = this.status.indexOf(status); - - if (pos < 0) { - throw new BottleneckError(`status must be one of ${this.status.join(', ')}`); - } - - ref = this._jobs; - results = []; - - for (k in ref) { - v = ref[k]; - - if (v === pos) { - results.push(k); - } - } - - return results; - } else { - return Object.keys(this._jobs); - } - } - - statusCounts() { - return this.counts.reduce((acc, v, i) => { - acc[this.status[i]] = v; - return acc; - }, {}); - } - -}; -var States_1 = States$1; - -function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$2(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var DLList, Sync$1; -DLList = DLList_1; -Sync$1 = class Sync { - constructor(name, Promise) { - this.schedule = this.schedule.bind(this); - this.name = name; - this.Promise = Promise; - this._running = 0; - this._queue = new DLList(); - } - - isEmpty() { - return this._queue.length === 0; - } - - _tryToRun() { - var _this = this; - - return _asyncToGenerator$2(function* () { - var args, cb, error, reject, resolve, returned, task; - - if (_this._running < 1 && _this._queue.length > 0) { - _this._running++; - - var _this$_queue$shift = _this._queue.shift(); - - task = _this$_queue$shift.task; - args = _this$_queue$shift.args; - resolve = _this$_queue$shift.resolve; - reject = _this$_queue$shift.reject; - cb = yield _asyncToGenerator$2(function* () { - try { - returned = yield task(...args); - return function () { - return resolve(returned); - }; - } catch (error1) { - error = error1; - return function () { - return reject(error); - }; - } - })(); - _this._running--; - - _this._tryToRun(); - - return cb(); - } - })(); - } - - schedule(task, ...args) { - var promise, reject, resolve; - resolve = reject = null; - promise = new this.Promise(function (_resolve, _reject) { - resolve = _resolve; - return reject = _reject; - }); - - this._queue.push({ - task, - args, - resolve, - reject - }); - - this._tryToRun(); - - return promise; - } - -}; -var Sync_1 = Sync$1; - -var version = "2.19.5"; -var require$$8 = { - version: version -}; - -var require$$0 = Bottleneck_1; - -function _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _nonIterableRest$1(); } - -function _nonIterableRest$1() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit$1(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; } - -function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator$1(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Events$2, Group, IORedisConnection, RedisConnection, Scripts, parser$2; -parser$2 = parser$8; -Events$2 = Events_1; -RedisConnection = RedisConnection_1; -IORedisConnection = IORedisConnection_1; -Scripts = Scripts$3; - -Group = function () { - class Group { - constructor(limiterOptions = {}) { - this.deleteKey = this.deleteKey.bind(this); - this.limiterOptions = limiterOptions; - parser$2.load(this.limiterOptions, this.defaults, this); - this.Events = new Events$2(this); - this.instances = {}; - this.Bottleneck = require$$0; - - this._startAutoCleanup(); - - this.sharedConnection = this.connection != null; - - if (this.connection == null) { - if (this.limiterOptions.datastore === "redis") { - this.connection = new RedisConnection(Object.assign({}, this.limiterOptions, { - Events: this.Events - })); - } else if (this.limiterOptions.datastore === "ioredis") { - this.connection = new IORedisConnection(Object.assign({}, this.limiterOptions, { - Events: this.Events - })); - } - } - } - - key(key = "") { - var ref; - return (ref = this.instances[key]) != null ? ref : (() => { - var limiter; - limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, { - id: `${this.id}-${key}`, - timeout: this.timeout, - connection: this.connection - })); - this.Events.trigger("created", limiter, key); - return limiter; - })(); - } - - deleteKey(key = "") { - var _this = this; - - return _asyncToGenerator$1(function* () { - var deleted, instance; - instance = _this.instances[key]; - - if (_this.connection) { - deleted = yield _this.connection.__runCommand__(['del', ...Scripts.allKeys(`${_this.id}-${key}`)]); - } - - if (instance != null) { - delete _this.instances[key]; - yield instance.disconnect(); - } - - return instance != null || deleted > 0; - })(); - } - - limiters() { - var k, ref, results, v; - ref = this.instances; - results = []; - - for (k in ref) { - v = ref[k]; - results.push({ - key: k, - limiter: v - }); - } - - return results; - } - - keys() { - return Object.keys(this.instances); - } - - clusterKeys() { - var _this2 = this; - - return _asyncToGenerator$1(function* () { - var cursor, end, found, i, k, keys, len, next, start; - - if (_this2.connection == null) { - return _this2.Promise.resolve(_this2.keys()); - } - - keys = []; - cursor = null; - start = `b_${_this2.id}-`.length; - end = "_settings".length; - - while (cursor !== 0) { - var _ref = yield _this2.connection.__runCommand__(["scan", cursor != null ? cursor : 0, "match", `b_${_this2.id}-*_settings`, "count", 10000]); - - var _ref2 = _slicedToArray$1(_ref, 2); - - next = _ref2[0]; - found = _ref2[1]; - cursor = ~~next; - - for (i = 0, len = found.length; i < len; i++) { - k = found[i]; - keys.push(k.slice(start, -end)); - } - } - - return keys; - })(); - } - - _startAutoCleanup() { - var _this3 = this; - - var base; - clearInterval(this.interval); - return typeof (base = this.interval = setInterval( - /*#__PURE__*/ - _asyncToGenerator$1(function* () { - var e, k, ref, results, time, v; - time = Date.now(); - ref = _this3.instances; - results = []; - - for (k in ref) { - v = ref[k]; - - try { - if (yield v._store.__groupCheck__(time)) { - results.push(_this3.deleteKey(k)); - } else { - results.push(void 0); - } - } catch (error) { - e = error; - results.push(v.Events.trigger("error", e)); - } - } - - return results; - }), this.timeout / 2)).unref === "function" ? base.unref() : void 0; - } - - updateSettings(options = {}) { - parser$2.overwrite(options, this.defaults, this); - parser$2.overwrite(options, options, this.limiterOptions); - - if (options.timeout != null) { - return this._startAutoCleanup(); - } - } - - disconnect(flush = true) { - var ref; - - if (!this.sharedConnection) { - return (ref = this.connection) != null ? ref.disconnect(flush) : void 0; - } - } - - } - Group.prototype.defaults = { - timeout: 1000 * 60 * 5, - connection: null, - Promise: Promise, - id: "group-key" - }; - return Group; -}.call(void 0); - -var Group_1 = Group; - -var Batcher, Events$1, parser$1; -parser$1 = parser$8; -Events$1 = Events_1; - -Batcher = function () { - class Batcher { - constructor(options = {}) { - this.options = options; - parser$1.load(this.options, this.defaults, this); - this.Events = new Events$1(this); - this._arr = []; - - this._resetPromise(); - - this._lastFlush = Date.now(); - } - - _resetPromise() { - return this._promise = new this.Promise((res, rej) => { - return this._resolve = res; - }); - } - - _flush() { - clearTimeout(this._timeout); - this._lastFlush = Date.now(); - - this._resolve(); - - this.Events.trigger("batch", this._arr); - this._arr = []; - return this._resetPromise(); - } - - add(data) { - var ret; - - this._arr.push(data); - - ret = this._promise; - - if (this._arr.length === this.maxSize) { - this._flush(); - } else if (this.maxTime != null && this._arr.length === 1) { - this._timeout = setTimeout(() => { - return this._flush(); - }, this.maxTime); - } - - return ret; - } - - } - Batcher.prototype.defaults = { - maxTime: null, - maxSize: null, - Promise: Promise - }; - return Batcher; -}.call(void 0); - -var Batcher_1 = Batcher; - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -var Bottleneck, - DEFAULT_PRIORITY, - Events, - Job, - LocalDatastore, - NUM_PRIORITIES, - Queues, - RedisDatastore, - States, - Sync, - parser, - splice = [].splice; -NUM_PRIORITIES = 10; -DEFAULT_PRIORITY = 5; -parser = parser$8; -Queues = Queues_1; -Job = Job_1; -LocalDatastore = LocalDatastore_1; -RedisDatastore = RedisDatastore_1; -Events = Events_1; -States = States_1; -Sync = Sync_1; - -Bottleneck = function () { - class Bottleneck { - constructor(options = {}, ...invalid) { - var storeInstanceOptions, storeOptions; - this._addToQueue = this._addToQueue.bind(this); - - this._validateOptions(options, invalid); - - parser.load(options, this.instanceDefaults, this); - this._queues = new Queues(NUM_PRIORITIES); - this._scheduled = {}; - this._states = new States(["RECEIVED", "QUEUED", "RUNNING", "EXECUTING"].concat(this.trackDoneStatus ? ["DONE"] : [])); - this._limiter = null; - this.Events = new Events(this); - this._submitLock = new Sync("submit", this.Promise); - this._registerLock = new Sync("register", this.Promise); - storeOptions = parser.load(options, this.storeDefaults, {}); - - this._store = function () { - if (this.datastore === "redis" || this.datastore === "ioredis" || this.connection != null) { - storeInstanceOptions = parser.load(options, this.redisStoreDefaults, {}); - return new RedisDatastore(this, storeOptions, storeInstanceOptions); - } else if (this.datastore === "local") { - storeInstanceOptions = parser.load(options, this.localStoreDefaults, {}); - return new LocalDatastore(this, storeOptions, storeInstanceOptions); - } else { - throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`); - } - }.call(this); - - this._queues.on("leftzero", () => { - var ref; - return (ref = this._store.heartbeat) != null ? typeof ref.ref === "function" ? ref.ref() : void 0 : void 0; - }); - - this._queues.on("zero", () => { - var ref; - return (ref = this._store.heartbeat) != null ? typeof ref.unref === "function" ? ref.unref() : void 0 : void 0; - }); - } - - _validateOptions(options, invalid) { - if (!(options != null && typeof options === "object" && invalid.length === 0)) { - throw new Bottleneck.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1."); - } - } - - ready() { - return this._store.ready; - } - - clients() { - return this._store.clients; - } - - channel() { - return `b_${this.id}`; - } - - channel_client() { - return `b_${this.id}_${this._store.clientId}`; - } - - publish(message) { - return this._store.__publish__(message); - } - - disconnect(flush = true) { - return this._store.__disconnect__(flush); - } - - chain(_limiter) { - this._limiter = _limiter; - return this; - } - - queued(priority) { - return this._queues.queued(priority); - } - - clusterQueued() { - return this._store.__queued__(); - } - - empty() { - return this.queued() === 0 && this._submitLock.isEmpty(); - } - - running() { - return this._store.__running__(); - } - - done() { - return this._store.__done__(); - } - - jobStatus(id) { - return this._states.jobStatus(id); - } - - jobs(status) { - return this._states.statusJobs(status); - } - - counts() { - return this._states.statusCounts(); - } - - _randomIndex() { - return Math.random().toString(36).slice(2); - } - - check(weight = 1) { - return this._store.__check__(weight); - } - - _clearGlobalState(index) { - if (this._scheduled[index] != null) { - clearTimeout(this._scheduled[index].expiration); - delete this._scheduled[index]; - return true; - } else { - return false; - } - } - - _free(index, job, options, eventInfo) { - var _this = this; - - return _asyncToGenerator(function* () { - var e, running; - - try { - var _ref = yield _this._store.__free__(index, options.weight); - - running = _ref.running; - - _this.Events.trigger("debug", `Freed ${options.id}`, eventInfo); - - if (running === 0 && _this.empty()) { - return _this.Events.trigger("idle"); - } - } catch (error1) { - e = error1; - return _this.Events.trigger("error", e); - } - })(); - } - - _run(index, job, wait) { - var clearGlobalState, free, run; - job.doRun(); - clearGlobalState = this._clearGlobalState.bind(this, index); - run = this._run.bind(this, index, job); - free = this._free.bind(this, index, job); - return this._scheduled[index] = { - timeout: setTimeout(() => { - return job.doExecute(this._limiter, clearGlobalState, run, free); - }, wait), - expiration: job.options.expiration != null ? setTimeout(function () { - return job.doExpire(clearGlobalState, run, free); - }, wait + job.options.expiration) : void 0, - job: job - }; - } - - _drainOne(capacity) { - return this._registerLock.schedule(() => { - var args, index, next, options, queue; - - if (this.queued() === 0) { - return this.Promise.resolve(null); - } - - queue = this._queues.getFirst(); - - var _next2 = next = queue.first(); - - options = _next2.options; - args = _next2.args; - - if (capacity != null && options.weight > capacity) { - return this.Promise.resolve(null); - } - - this.Events.trigger("debug", `Draining ${options.id}`, { - args, - options - }); - index = this._randomIndex(); - return this._store.__register__(index, options.weight, options.expiration).then(({ - success, - wait, - reservoir - }) => { - var empty; - this.Events.trigger("debug", `Drained ${options.id}`, { - success, - args, - options - }); - - if (success) { - queue.shift(); - empty = this.empty(); - - if (empty) { - this.Events.trigger("empty"); - } - - if (reservoir === 0) { - this.Events.trigger("depleted", empty); - } - - this._run(index, next, wait); - - return this.Promise.resolve(options.weight); - } else { - return this.Promise.resolve(null); - } - }); - }); - } - - _drainAll(capacity, total = 0) { - return this._drainOne(capacity).then(drained => { - var newCapacity; - - if (drained != null) { - newCapacity = capacity != null ? capacity - drained : capacity; - return this._drainAll(newCapacity, total + drained); - } else { - return this.Promise.resolve(total); - } - }).catch(e => { - return this.Events.trigger("error", e); - }); - } - - _dropAllQueued(message) { - return this._queues.shiftAll(function (job) { - return job.doDrop({ - message - }); - }); - } - - stop(options = {}) { - var done, waitForExecuting; - options = parser.load(options, this.stopDefaults); - - waitForExecuting = at => { - var finished; - - finished = () => { - var counts; - counts = this._states.counts; - return counts[0] + counts[1] + counts[2] + counts[3] === at; - }; - - return new this.Promise((resolve, reject) => { - if (finished()) { - return resolve(); - } else { - return this.on("done", () => { - if (finished()) { - this.removeAllListeners("done"); - return resolve(); - } - }); - } - }); - }; - - done = options.dropWaitingJobs ? (this._run = function (index, next) { - return next.doDrop({ - message: options.dropErrorMessage - }); - }, this._drainOne = () => { - return this.Promise.resolve(null); - }, this._registerLock.schedule(() => { - return this._submitLock.schedule(() => { - var k, ref, v; - ref = this._scheduled; - - for (k in ref) { - v = ref[k]; - - if (this.jobStatus(v.job.options.id) === "RUNNING") { - clearTimeout(v.timeout); - clearTimeout(v.expiration); - v.job.doDrop({ - message: options.dropErrorMessage - }); - } - } - - this._dropAllQueued(options.dropErrorMessage); - - return waitForExecuting(0); - }); - })) : this.schedule({ - priority: NUM_PRIORITIES - 1, - weight: 0 - }, () => { - return waitForExecuting(1); - }); - - this._receive = function (job) { - return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage)); - }; - - this.stop = () => { - return this.Promise.reject(new Bottleneck.prototype.BottleneckError("stop() has already been called")); - }; - - return done; - } - - _addToQueue(job) { - var _this2 = this; - - return _asyncToGenerator(function* () { - var args, blocked, error, options, reachedHWM, shifted, strategy; - args = job.args; - options = job.options; - - try { - var _ref2 = yield _this2._store.__submit__(_this2.queued(), options.weight); - - reachedHWM = _ref2.reachedHWM; - blocked = _ref2.blocked; - strategy = _ref2.strategy; - } catch (error1) { - error = error1; - - _this2.Events.trigger("debug", `Could not queue ${options.id}`, { - args, - options, - error - }); - - job.doDrop({ - error - }); - return false; - } - - if (blocked) { - job.doDrop(); - return true; - } else if (reachedHWM) { - shifted = strategy === Bottleneck.prototype.strategy.LEAK ? _this2._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? _this2._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0; - - if (shifted != null) { - shifted.doDrop(); - } - - if (shifted == null || strategy === Bottleneck.prototype.strategy.OVERFLOW) { - if (shifted == null) { - job.doDrop(); - } - - return reachedHWM; - } - } - - job.doQueue(reachedHWM, blocked); - - _this2._queues.push(job); - - yield _this2._drainAll(); - return reachedHWM; - })(); - } - - _receive(job) { - if (this._states.jobStatus(job.options.id) != null) { - job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`)); - - return false; - } else { - job.doReceive(); - return this._submitLock.schedule(this._addToQueue, job); - } - } - - submit(...args) { - var cb, fn, job, options, ref, ref1, task; - - if (typeof args[0] === "function") { - var _ref3, _ref4, _splice$call, _splice$call2; - - ref = args, (_ref3 = ref, _ref4 = _toArray(_ref3), fn = _ref4[0], args = _ref4.slice(1), _ref3), (_splice$call = splice.call(args, -1), _splice$call2 = _slicedToArray(_splice$call, 1), cb = _splice$call2[0], _splice$call); - options = parser.load({}, this.jobDefaults); - } else { - var _ref5, _ref6, _splice$call3, _splice$call4; - - ref1 = args, (_ref5 = ref1, _ref6 = _toArray(_ref5), options = _ref6[0], fn = _ref6[1], args = _ref6.slice(2), _ref5), (_splice$call3 = splice.call(args, -1), _splice$call4 = _slicedToArray(_splice$call3, 1), cb = _splice$call4[0], _splice$call3); - options = parser.load(options, this.jobDefaults); - } - - task = (...args) => { - return new this.Promise(function (resolve, reject) { - return fn(...args, function (...args) { - return (args[0] != null ? reject : resolve)(args); - }); - }); - }; - - job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise); - job.promise.then(function (args) { - return typeof cb === "function" ? cb(...args) : void 0; - }).catch(function (args) { - if (Array.isArray(args)) { - return typeof cb === "function" ? cb(...args) : void 0; - } else { - return typeof cb === "function" ? cb(args) : void 0; - } - }); - return this._receive(job); - } - - schedule(...args) { - var job, options, task; - - if (typeof args[0] === "function") { - var _args = args; - - var _args2 = _toArray(_args); - - task = _args2[0]; - args = _args2.slice(1); - options = {}; - } else { - var _args3 = args; - - var _args4 = _toArray(_args3); - - options = _args4[0]; - task = _args4[1]; - args = _args4.slice(2); - } - - job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise); - - this._receive(job); - - return job.promise; - } - - wrap(fn) { - var schedule, wrapped; - schedule = this.schedule.bind(this); - - wrapped = function wrapped(...args) { - return schedule(fn.bind(this), ...args); - }; - - wrapped.withOptions = function (options, ...args) { - return schedule(options, fn, ...args); - }; - - return wrapped; - } - - updateSettings(options = {}) { - var _this3 = this; - - return _asyncToGenerator(function* () { - yield _this3._store.__updateSettings__(parser.overwrite(options, _this3.storeDefaults)); - parser.overwrite(options, _this3.instanceDefaults, _this3); - return _this3; - })(); - } - - currentReservoir() { - return this._store.__currentReservoir__(); - } - - incrementReservoir(incr = 0) { - return this._store.__incrementReservoir__(incr); - } - - } - Bottleneck.default = Bottleneck; - Bottleneck.Events = Events; - Bottleneck.version = Bottleneck.prototype.version = require$$8.version; - Bottleneck.strategy = Bottleneck.prototype.strategy = { - LEAK: 1, - OVERFLOW: 2, - OVERFLOW_PRIORITY: 4, - BLOCK: 3 - }; - Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = BottleneckError_1; - Bottleneck.Group = Bottleneck.prototype.Group = Group_1; - Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = RedisConnection_1; - Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = IORedisConnection_1; - Bottleneck.Batcher = Bottleneck.prototype.Batcher = Batcher_1; - Bottleneck.prototype.jobDefaults = { - priority: DEFAULT_PRIORITY, - weight: 1, - expiration: null, - id: "" - }; - Bottleneck.prototype.storeDefaults = { - maxConcurrent: null, - minTime: 0, - highWater: null, - strategy: Bottleneck.prototype.strategy.LEAK, - penalty: null, - reservoir: null, - reservoirRefreshInterval: null, - reservoirRefreshAmount: null, - reservoirIncreaseInterval: null, - reservoirIncreaseAmount: null, - reservoirIncreaseMaximum: null - }; - Bottleneck.prototype.localStoreDefaults = { - Promise: Promise, - timeout: null, - heartbeatInterval: 250 - }; - Bottleneck.prototype.redisStoreDefaults = { - Promise: Promise, - timeout: null, - heartbeatInterval: 5000, - clientTimeout: 10000, - Redis: null, - clientOptions: {}, - clusterNodes: null, - clearDatastore: false, - connection: null - }; - Bottleneck.prototype.instanceDefaults = { - datastore: "local", - connection: null, - id: "", - rejectOnDrop: true, - trackDoneStatus: false, - Promise: Promise - }; - Bottleneck.prototype.stopDefaults = { - enqueueErrorMessage: "This limiter has been stopped and cannot accept new jobs.", - dropWaitingJobs: true, - dropErrorMessage: "This limiter has been stopped." - }; - return Bottleneck; -}.call(void 0); - -var Bottleneck_1 = Bottleneck; - -var lib = require$$0; - -const unifetch = typeof fetch !== 'undefined' ? fetch : isomorphicUnfetch; -class AlpacaClient { - constructor(params) { - this.params = params; - this.baseURLs = endpoints; - this.limiter = new lib({ - reservoir: 200, - reservoirRefreshAmount: 200, - reservoirRefreshInterval: 60 * 1000, - maxConcurrent: 1, - minTime: 200, - }); - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if (!('paper' in params.credentials) && - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - if ('access_token' in params.credentials && - ('key' in params.credentials || 'secret' in params.credentials)) { - throw new Error("can't create client with both default and oauth credentials"); - } - } - isAuthenticated() { - return __awaiter(this, void 0, void 0, function* () { - try { - yield this.getAccount(); - return true; - } - catch (_a) { - return false; - } - }); - } - getAccount() { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.account(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account`, - })); - }); - } - getOrder(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.order(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders/${params.order_id || params.client_order_id}`, - data: { nested: params.nested }, - })); - }); - } - getOrders(params = {}) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.orders(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders`, - data: Object.assign(Object.assign({}, params), { symbols: params.symbols ? params.symbols.join(',') : undefined }), - })); - }); - } - placeOrder(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.order(yield this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/orders`, - data: params, - })); - }); - } - replaceOrder(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.order(yield this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - data: params, - })); - }); - } - cancelOrder(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - isJSON: false, - }); - } - cancelOrders() { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.canceled_orders(yield this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders`, - })); - }); - } - getPosition(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.position(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - })); - }); - } - getPositions() { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.positions(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions`, - })); - }); - } - closePosition(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.order(yield this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - data: params, - })); - }); - } - closePositions(params) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - return parse$3.orders(yield this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify((_a = params.cancel_orders) !== null && _a !== void 0 ? _a : false)}`, - })); - }); - } - getAsset(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets/${params.asset_id_or_symbol}`, - }); - } - getAssets(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets`, - data: params, - }); - } - getWatchlist(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getWatchlists() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists`, - }); - } - createWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists`, - data: params, - }); - } - updateWatchlist(params) { - return this.request({ - method: 'PUT', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - addToWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - removeFromWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}/${params.symbol}`, - }); - } - deleteWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getCalendar(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/calendar`, - data: params, - }); - } - getNews(params) { - if ('symbols' in params && Array.isArray(params.symbols)) { - params.symbols = params.symbols.join(','); - } - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.beta}/news`, - data: params, - }); - } - getClock() { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.clock(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/clock`, - })); - }); - } - getAccountConfigurations() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/configurations`, - }); - } - updateAccountConfigurations(params) { - return this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/account/configurations`, - data: params, - }); - } - getAccountActivities(params) { - return __awaiter(this, void 0, void 0, function* () { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params.activity_types.join(','); - } - return parse$3.activities(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/activities${params.activity_type ? '/'.concat(params.activity_type) : ''}`, - data: Object.assign(Object.assign({}, params), { activity_type: undefined }), - })); - }); - } - getPortfolioHistory(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/portfolio/history`, - data: params, - }); - } - getBars_v1(params) { - return __awaiter(this, void 0, void 0, function* () { - const transformed = Object.assign(Object.assign({}, params), { symbols: params.symbols.join(',') }); - return yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/bars/${params.timeframe}`, - data: transformed, - }); - }); - } - getLastTrade_v1(params) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last/stocks/${params.symbol}`, - }); - }); - } - getLastQuote_v1(params) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${params.symbol}`, - }); - }); - } - getTrades(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.pageOfTrades(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/trades`, - data: Object.assign(Object.assign({}, params), { symbol: undefined }), - })); - }); - } - getQuotes(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.pageOfQuotes(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/quotes`, - data: Object.assign(Object.assign({}, params), { symbol: undefined }), - })); - }); - } - getBars(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.pageOfBars(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/bars`, - data: Object.assign(Object.assign({}, params), { symbol: undefined }), - })); - }); - } - getLatestTrade({ symbol, feed, limit, }) { - return __awaiter(this, void 0, void 0, function* () { - let query = ''; - if (feed || limit) { - query = '?'.concat(lib$3.stringify({ feed, limit })); - } - return parse$3.latestTrade(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${symbol}/trades/latest`.concat(query), - })); - }); - } - getSnapshot(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.snapshot(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/snapshot`, - })); - }); - } - getSnapshots(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse$3.snapshots(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${params.symbols.join(',')}`, - })); - }); - } - request(params) { - return __awaiter(this, void 0, void 0, function* () { - let headers = {}; - if ('access_token' in this.params.credentials) { - headers['Authorization'] = `Bearer ${this.params.credentials.access_token}`; - } - else { - headers['APCA-API-KEY-ID'] = this.params.credentials.key; - headers['APCA-API-SECRET-KEY'] = this.params.credentials.secret; - } - if (this.params.credentials.paper) { - params.url = params.url.replace('api.', 'paper-api.'); - } - let query = ''; - if (params.data) { - for (let [key, value] of Object.entries(params.data)) { - if (value instanceof Date) { - params.data[key] = value.toISOString(); - } - } - if (!['POST', 'PATCH', 'PUT'].includes(params.method)) { - query = '?'.concat(lib$3.stringify(params.data)); - params.data = undefined; - } - } - const makeCall = () => unifetch(params.url.concat(query), { - method: params.method, - headers, - body: JSON.stringify(params.data), - }), func = this.params.rate_limit - ? () => this.limiter.schedule(makeCall) - : makeCall; - let resp, result = {}; - try { - resp = yield func(); - if (!(params.isJSON == undefined ? true : params.isJSON)) { - return resp.ok; - } - result = yield resp.json(); - } - catch (e) { - console.error(e); - throw result; - } - if ('code' in result || 'message' in result) { - throw result; - } - return result; - }); - } -} - -var isBlob = value => { - if (typeof Blob === 'undefined') { - return false; - } - - return value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]'; -}; - -var constants = { - BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'], - GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11', - kStatusCode: Symbol('status-code'), - kWebSocket: Symbol('websocket'), - EMPTY_BUFFER: Buffer.alloc(0), - NOOP: () => {} -}; - -// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression' -var runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : commonjsRequire; // eslint-disable-line - -var vars = (process.config && process.config.variables) || {}; -var prebuildsOnly = !!process.env.PREBUILDS_ONLY; -var abi = process.versions.modules; // TODO: support old node where this is undef -var runtime = isElectron() ? 'electron' : 'node'; -var arch = os.arch(); -var platform = os.platform(); -var libc = process.env.LIBC || (isAlpine(platform) ? 'musl' : 'glibc'); -var armv = process.env.ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''; -var uv = (process.versions.uv || '').split('.')[0]; - -var nodeGypBuild = load; - -function load (dir) { - return runtimeRequire(load.path(dir)) -} - -load.path = function (dir) { - dir = path.resolve(dir || '.'); - - try { - var name = runtimeRequire(path.join(dir, 'package.json')).name.toUpperCase().replace(/-/g, '_'); - if (process.env[name + '_PREBUILD']) dir = process.env[name + '_PREBUILD']; - } catch (err) {} - - if (!prebuildsOnly) { - var release = getFirst(path.join(dir, 'build/Release'), matchBuild); - if (release) return release - - var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild); - if (debug) return debug - } - - var prebuild = resolve(dir); - if (prebuild) return prebuild - - var nearby = resolve(path.dirname(process.execPath)); - if (nearby) return nearby - - var target = [ - 'platform=' + platform, - 'arch=' + arch, - 'runtime=' + runtime, - 'abi=' + abi, - 'uv=' + uv, - armv ? 'armv=' + armv : '', - 'libc=' + libc, - 'node=' + process.versions.node, - (process.versions && process.versions.electron) ? 'electron=' + process.versions.electron : '', - typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line - ].filter(Boolean).join(' '); - - throw new Error('No native build was found for ' + target + '\n loaded from: ' + dir + '\n') - - function resolve (dir) { - // Find most specific flavor first - var prebuilds = path.join(dir, 'prebuilds', platform + '-' + arch); - var parsed = readdirSync(prebuilds).map(parseTags); - var candidates = parsed.filter(matchTags(runtime, abi)); - var winner = candidates.sort(compareTags(runtime))[0]; - if (winner) return path.join(prebuilds, winner.file) - } -}; - -function readdirSync (dir) { - try { - return fs.readdirSync(dir) - } catch (err) { - return [] - } -} - -function getFirst (dir, filter) { - var files = readdirSync(dir).filter(filter); - return files[0] && path.join(dir, files[0]) -} - -function matchBuild (name) { - return /\.node$/.test(name) -} - -function parseTags (file) { - var arr = file.split('.'); - var extension = arr.pop(); - var tags = { file: file, specificity: 0 }; - - if (extension !== 'node') return - - for (var i = 0; i < arr.length; i++) { - var tag = arr[i]; - - if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') { - tags.runtime = tag; - } else if (tag === 'napi') { - tags.napi = true; - } else if (tag.slice(0, 3) === 'abi') { - tags.abi = tag.slice(3); - } else if (tag.slice(0, 2) === 'uv') { - tags.uv = tag.slice(2); - } else if (tag.slice(0, 4) === 'armv') { - tags.armv = tag.slice(4); - } else if (tag === 'glibc' || tag === 'musl') { - tags.libc = tag; - } else { - continue - } - - tags.specificity++; - } - - return tags -} - -function matchTags (runtime, abi) { - return function (tags) { - if (tags == null) return false - if (tags.runtime !== runtime && !runtimeAgnostic(tags)) return false - if (tags.abi !== abi && !tags.napi) return false - if (tags.uv && tags.uv !== uv) return false - if (tags.armv && tags.armv !== armv) return false - if (tags.libc && tags.libc !== libc) return false - - return true - } -} - -function runtimeAgnostic (tags) { - return tags.runtime === 'node' && tags.napi -} - -function compareTags (runtime) { - // Precedence: non-agnostic runtime, abi over napi, then by specificity. - return function (a, b) { - if (a.runtime !== b.runtime) { - return a.runtime === runtime ? -1 : 1 - } else if (a.abi !== b.abi) { - return a.abi ? -1 : 1 - } else if (a.specificity !== b.specificity) { - return a.specificity > b.specificity ? -1 : 1 - } else { - return 0 - } - } -} - -function isElectron () { - if (process.versions && process.versions.electron) return true - if (process.env.ELECTRON_RUN_AS_NODE) return true - return typeof window !== 'undefined' && window.process && window.process.type === 'renderer' -} - -function isAlpine (platform) { - return platform === 'linux' && fs.existsSync('/etc/alpine-release') -} - -// Exposed for unit tests -// TODO: move to lib -load.parseTags = parseTags; -load.matchTags = matchTags; -load.compareTags = compareTags; - -/** - * Masks a buffer using the given mask. - * - * @param {Buffer} source The buffer to mask - * @param {Buffer} mask The mask to use - * @param {Buffer} output The buffer where to store the result - * @param {Number} offset The offset at which to start writing - * @param {Number} length The number of bytes to mask. - * @public - */ -const mask$1 = (source, mask, output, offset, length) => { - for (var i = 0; i < length; i++) { - output[offset + i] = source[i] ^ mask[i & 3]; - } -}; - -/** - * Unmasks a buffer using the given mask. - * - * @param {Buffer} buffer The buffer to unmask - * @param {Buffer} mask The mask to use - * @public - */ -const unmask$1 = (buffer, mask) => { - // Required until https://github.com/nodejs/node/issues/9006 is resolved. - const length = buffer.length; - for (var i = 0; i < length; i++) { - buffer[i] ^= mask[i & 3]; - } -}; - -var fallback$1 = { mask: mask$1, unmask: unmask$1 }; - -var bufferutil = createCommonjsModule(function (module) { - -try { - module.exports = nodeGypBuild(__dirname); -} catch (e) { - module.exports = fallback$1; -} -}); - -var bufferUtil = createCommonjsModule(function (module) { - -const { EMPTY_BUFFER } = constants; - -/** - * Merges an array of buffers into a new buffer. - * - * @param {Buffer[]} list The array of buffers to concat - * @param {Number} totalLength The total length of buffers in the list - * @return {Buffer} The resulting buffer - * @public - */ -function concat(list, totalLength) { - if (list.length === 0) return EMPTY_BUFFER; - if (list.length === 1) return list[0]; - - const target = Buffer.allocUnsafe(totalLength); - let offset = 0; - - for (let i = 0; i < list.length; i++) { - const buf = list[i]; - target.set(buf, offset); - offset += buf.length; - } - - if (offset < totalLength) return target.slice(0, offset); - - return target; -} - -/** - * Masks a buffer using the given mask. - * - * @param {Buffer} source The buffer to mask - * @param {Buffer} mask The mask to use - * @param {Buffer} output The buffer where to store the result - * @param {Number} offset The offset at which to start writing - * @param {Number} length The number of bytes to mask. - * @public - */ -function _mask(source, mask, output, offset, length) { - for (let i = 0; i < length; i++) { - output[offset + i] = source[i] ^ mask[i & 3]; - } -} - -/** - * Unmasks a buffer using the given mask. - * - * @param {Buffer} buffer The buffer to unmask - * @param {Buffer} mask The mask to use - * @public - */ -function _unmask(buffer, mask) { - // Required until https://github.com/nodejs/node/issues/9006 is resolved. - const length = buffer.length; - for (let i = 0; i < length; i++) { - buffer[i] ^= mask[i & 3]; - } -} - -/** - * Converts a buffer to an `ArrayBuffer`. - * - * @param {Buffer} buf The buffer to convert - * @return {ArrayBuffer} Converted buffer - * @public - */ -function toArrayBuffer(buf) { - if (buf.byteLength === buf.buffer.byteLength) { - return buf.buffer; - } - - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); -} - -/** - * Converts `data` to a `Buffer`. - * - * @param {*} data The data to convert - * @return {Buffer} The buffer - * @throws {TypeError} - * @public - */ -function toBuffer(data) { - toBuffer.readOnly = true; - - if (Buffer.isBuffer(data)) return data; - - let buf; - - if (data instanceof ArrayBuffer) { - buf = Buffer.from(data); - } else if (ArrayBuffer.isView(data)) { - buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength); - } else { - buf = Buffer.from(data); - toBuffer.readOnly = false; - } - - return buf; -} - -try { - const bufferUtil = bufferutil; - const bu = bufferUtil.BufferUtil || bufferUtil; - - module.exports = { - concat, - mask(source, mask, output, offset, length) { - if (length < 48) _mask(source, mask, output, offset, length); - else bu.mask(source, mask, output, offset, length); - }, - toArrayBuffer, - toBuffer, - unmask(buffer, mask) { - if (buffer.length < 32) _unmask(buffer, mask); - else bu.unmask(buffer, mask); - } - }; -} catch (e) /* istanbul ignore next */ { - module.exports = { - concat, - mask: _mask, - toArrayBuffer, - toBuffer, - unmask: _unmask - }; -} -}); - -const kDone = Symbol('kDone'); -const kRun = Symbol('kRun'); - -/** - * A very simple job queue with adjustable concurrency. Adapted from - * https://github.com/STRML/async-limiter - */ -class Limiter { - /** - * Creates a new `Limiter`. - * - * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed - * to run concurrently - */ - constructor(concurrency) { - this[kDone] = () => { - this.pending--; - this[kRun](); - }; - this.concurrency = concurrency || Infinity; - this.jobs = []; - this.pending = 0; - } - - /** - * Adds a job to the queue. - * - * @param {Function} job The job to run - * @public - */ - add(job) { - this.jobs.push(job); - this[kRun](); - } - - /** - * Removes a job from the queue and runs it if possible. - * - * @private - */ - [kRun]() { - if (this.pending === this.concurrency) return; - - if (this.jobs.length) { - const job = this.jobs.shift(); - - this.pending++; - job(this[kDone]); - } - } -} - -var limiter = Limiter; - -const { kStatusCode: kStatusCode$2, NOOP: NOOP$1 } = constants; - -const TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]); -const kPerMessageDeflate = Symbol('permessage-deflate'); -const kTotalLength = Symbol('total-length'); -const kCallback = Symbol('callback'); -const kBuffers = Symbol('buffers'); -const kError = Symbol('error'); - -// -// We limit zlib concurrency, which prevents severe memory fragmentation -// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913 -// and https://github.com/websockets/ws/issues/1202 -// -// Intentionally global; it's the global thread pool that's an issue. -// -let zlibLimiter; - -/** - * permessage-deflate implementation. - */ -class PerMessageDeflate { - /** - * Creates a PerMessageDeflate instance. - * - * @param {Object} [options] Configuration options - * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept - * disabling of server context takeover - * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/ - * acknowledge disabling of client context takeover - * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the - * use of a custom server window size - * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support - * for, or request, a custom client window size - * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on - * deflate - * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on - * inflate - * @param {Number} [options.threshold=1024] Size (in bytes) below which - * messages should not be compressed - * @param {Number} [options.concurrencyLimit=10] The number of concurrent - * calls to zlib - * @param {Boolean} [isServer=false] Create the instance in either server or - * client mode - * @param {Number} [maxPayload=0] The maximum allowed message length - */ - constructor(options, isServer, maxPayload) { - this._maxPayload = maxPayload | 0; - this._options = options || {}; - this._threshold = - this._options.threshold !== undefined ? this._options.threshold : 1024; - this._isServer = !!isServer; - this._deflate = null; - this._inflate = null; - - this.params = null; - - if (!zlibLimiter) { - const concurrency = - this._options.concurrencyLimit !== undefined - ? this._options.concurrencyLimit - : 10; - zlibLimiter = new limiter(concurrency); - } - } - - /** - * @type {String} - */ - static get extensionName() { - return 'permessage-deflate'; - } - - /** - * Create an extension negotiation offer. - * - * @return {Object} Extension parameters - * @public - */ - offer() { - const params = {}; - - if (this._options.serverNoContextTakeover) { - params.server_no_context_takeover = true; - } - if (this._options.clientNoContextTakeover) { - params.client_no_context_takeover = true; - } - if (this._options.serverMaxWindowBits) { - params.server_max_window_bits = this._options.serverMaxWindowBits; - } - if (this._options.clientMaxWindowBits) { - params.client_max_window_bits = this._options.clientMaxWindowBits; - } else if (this._options.clientMaxWindowBits == null) { - params.client_max_window_bits = true; - } - - return params; - } - - /** - * Accept an extension negotiation offer/response. - * - * @param {Array} configurations The extension negotiation offers/reponse - * @return {Object} Accepted configuration - * @public - */ - accept(configurations) { - configurations = this.normalizeParams(configurations); - - this.params = this._isServer - ? this.acceptAsServer(configurations) - : this.acceptAsClient(configurations); - - return this.params; - } - - /** - * Releases all resources used by the extension. - * - * @public - */ - cleanup() { - if (this._inflate) { - this._inflate.close(); - this._inflate = null; - } - - if (this._deflate) { - const callback = this._deflate[kCallback]; - - this._deflate.close(); - this._deflate = null; - - if (callback) { - callback( - new Error( - 'The deflate stream was closed while data was being processed' - ) - ); - } - } - } - - /** - * Accept an extension negotiation offer. - * - * @param {Array} offers The extension negotiation offers - * @return {Object} Accepted configuration - * @private - */ - acceptAsServer(offers) { - const opts = this._options; - const accepted = offers.find((params) => { - if ( - (opts.serverNoContextTakeover === false && - params.server_no_context_takeover) || - (params.server_max_window_bits && - (opts.serverMaxWindowBits === false || - (typeof opts.serverMaxWindowBits === 'number' && - opts.serverMaxWindowBits > params.server_max_window_bits))) || - (typeof opts.clientMaxWindowBits === 'number' && - !params.client_max_window_bits) - ) { - return false; - } - - return true; - }); - - if (!accepted) { - throw new Error('None of the extension offers can be accepted'); - } - - if (opts.serverNoContextTakeover) { - accepted.server_no_context_takeover = true; - } - if (opts.clientNoContextTakeover) { - accepted.client_no_context_takeover = true; - } - if (typeof opts.serverMaxWindowBits === 'number') { - accepted.server_max_window_bits = opts.serverMaxWindowBits; - } - if (typeof opts.clientMaxWindowBits === 'number') { - accepted.client_max_window_bits = opts.clientMaxWindowBits; - } else if ( - accepted.client_max_window_bits === true || - opts.clientMaxWindowBits === false - ) { - delete accepted.client_max_window_bits; - } - - return accepted; - } - - /** - * Accept the extension negotiation response. - * - * @param {Array} response The extension negotiation response - * @return {Object} Accepted configuration - * @private - */ - acceptAsClient(response) { - const params = response[0]; - - if ( - this._options.clientNoContextTakeover === false && - params.client_no_context_takeover - ) { - throw new Error('Unexpected parameter "client_no_context_takeover"'); - } - - if (!params.client_max_window_bits) { - if (typeof this._options.clientMaxWindowBits === 'number') { - params.client_max_window_bits = this._options.clientMaxWindowBits; - } - } else if ( - this._options.clientMaxWindowBits === false || - (typeof this._options.clientMaxWindowBits === 'number' && - params.client_max_window_bits > this._options.clientMaxWindowBits) - ) { - throw new Error( - 'Unexpected or invalid parameter "client_max_window_bits"' - ); - } - - return params; - } - - /** - * Normalize parameters. - * - * @param {Array} configurations The extension negotiation offers/reponse - * @return {Array} The offers/response with normalized parameters - * @private - */ - normalizeParams(configurations) { - configurations.forEach((params) => { - Object.keys(params).forEach((key) => { - let value = params[key]; - - if (value.length > 1) { - throw new Error(`Parameter "${key}" must have only a single value`); - } - - value = value[0]; - - if (key === 'client_max_window_bits') { - if (value !== true) { - const num = +value; - if (!Number.isInteger(num) || num < 8 || num > 15) { - throw new TypeError( - `Invalid value for parameter "${key}": ${value}` - ); - } - value = num; - } else if (!this._isServer) { - throw new TypeError( - `Invalid value for parameter "${key}": ${value}` - ); - } - } else if (key === 'server_max_window_bits') { - const num = +value; - if (!Number.isInteger(num) || num < 8 || num > 15) { - throw new TypeError( - `Invalid value for parameter "${key}": ${value}` - ); - } - value = num; - } else if ( - key === 'client_no_context_takeover' || - key === 'server_no_context_takeover' - ) { - if (value !== true) { - throw new TypeError( - `Invalid value for parameter "${key}": ${value}` - ); - } - } else { - throw new Error(`Unknown parameter "${key}"`); - } - - params[key] = value; - }); - }); - - return configurations; - } - - /** - * Decompress data. Concurrency limited. - * - * @param {Buffer} data Compressed data - * @param {Boolean} fin Specifies whether or not this is the last fragment - * @param {Function} callback Callback - * @public - */ - decompress(data, fin, callback) { - zlibLimiter.add((done) => { - this._decompress(data, fin, (err, result) => { - done(); - callback(err, result); - }); - }); - } - - /** - * Compress data. Concurrency limited. - * - * @param {Buffer} data Data to compress - * @param {Boolean} fin Specifies whether or not this is the last fragment - * @param {Function} callback Callback - * @public - */ - compress(data, fin, callback) { - zlibLimiter.add((done) => { - this._compress(data, fin, (err, result) => { - done(); - callback(err, result); - }); - }); - } - - /** - * Decompress data. - * - * @param {Buffer} data Compressed data - * @param {Boolean} fin Specifies whether or not this is the last fragment - * @param {Function} callback Callback - * @private - */ - _decompress(data, fin, callback) { - const endpoint = this._isServer ? 'client' : 'server'; - - if (!this._inflate) { - const key = `${endpoint}_max_window_bits`; - const windowBits = - typeof this.params[key] !== 'number' - ? zlib.Z_DEFAULT_WINDOWBITS - : this.params[key]; - - this._inflate = zlib.createInflateRaw({ - ...this._options.zlibInflateOptions, - windowBits - }); - this._inflate[kPerMessageDeflate] = this; - this._inflate[kTotalLength] = 0; - this._inflate[kBuffers] = []; - this._inflate.on('error', inflateOnError); - this._inflate.on('data', inflateOnData); - } - - this._inflate[kCallback] = callback; - - this._inflate.write(data); - if (fin) this._inflate.write(TRAILER); - - this._inflate.flush(() => { - const err = this._inflate[kError]; - - if (err) { - this._inflate.close(); - this._inflate = null; - callback(err); - return; - } - - const data = bufferUtil.concat( - this._inflate[kBuffers], - this._inflate[kTotalLength] - ); - - if (this._inflate._readableState.endEmitted) { - this._inflate.close(); - this._inflate = null; - } else { - this._inflate[kTotalLength] = 0; - this._inflate[kBuffers] = []; - - if (fin && this.params[`${endpoint}_no_context_takeover`]) { - this._inflate.reset(); - } - } - - callback(null, data); - }); - } - - /** - * Compress data. - * - * @param {Buffer} data Data to compress - * @param {Boolean} fin Specifies whether or not this is the last fragment - * @param {Function} callback Callback - * @private - */ - _compress(data, fin, callback) { - const endpoint = this._isServer ? 'server' : 'client'; - - if (!this._deflate) { - const key = `${endpoint}_max_window_bits`; - const windowBits = - typeof this.params[key] !== 'number' - ? zlib.Z_DEFAULT_WINDOWBITS - : this.params[key]; - - this._deflate = zlib.createDeflateRaw({ - ...this._options.zlibDeflateOptions, - windowBits - }); - - this._deflate[kTotalLength] = 0; - this._deflate[kBuffers] = []; - - // - // An `'error'` event is emitted, only on Node.js < 10.0.0, if the - // `zlib.DeflateRaw` instance is closed while data is being processed. - // This can happen if `PerMessageDeflate#cleanup()` is called at the wrong - // time due to an abnormal WebSocket closure. - // - this._deflate.on('error', NOOP$1); - this._deflate.on('data', deflateOnData); - } - - this._deflate[kCallback] = callback; - - this._deflate.write(data); - this._deflate.flush(zlib.Z_SYNC_FLUSH, () => { - if (!this._deflate) { - // - // The deflate stream was closed while data was being processed. - // - return; - } - - let data = bufferUtil.concat( - this._deflate[kBuffers], - this._deflate[kTotalLength] - ); - - if (fin) data = data.slice(0, data.length - 4); - - // - // Ensure that the callback will not be called again in - // `PerMessageDeflate#cleanup()`. - // - this._deflate[kCallback] = null; - - this._deflate[kTotalLength] = 0; - this._deflate[kBuffers] = []; - - if (fin && this.params[`${endpoint}_no_context_takeover`]) { - this._deflate.reset(); - } - - callback(null, data); - }); - } -} - -var permessageDeflate = PerMessageDeflate; - -/** - * The listener of the `zlib.DeflateRaw` stream `'data'` event. - * - * @param {Buffer} chunk A chunk of data - * @private - */ -function deflateOnData(chunk) { - this[kBuffers].push(chunk); - this[kTotalLength] += chunk.length; -} - -/** - * The listener of the `zlib.InflateRaw` stream `'data'` event. - * - * @param {Buffer} chunk A chunk of data - * @private - */ -function inflateOnData(chunk) { - this[kTotalLength] += chunk.length; - - if ( - this[kPerMessageDeflate]._maxPayload < 1 || - this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload - ) { - this[kBuffers].push(chunk); - return; - } - - this[kError] = new RangeError('Max payload size exceeded'); - this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'; - this[kError][kStatusCode$2] = 1009; - this.removeListener('data', inflateOnData); - this.reset(); -} - -/** - * The listener of the `zlib.InflateRaw` stream `'error'` event. - * - * @param {Error} err The emitted error - * @private - */ -function inflateOnError(err) { - // - // There is no need to call `Zlib#close()` as the handle is automatically - // closed when an error is emitted. - // - this[kPerMessageDeflate]._inflate = null; - err[kStatusCode$2] = 1007; - this[kCallback](err); -} - -/** - * Checks if a given buffer contains only correct UTF-8. - * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by - * Markus Kuhn. - * - * @param {Buffer} buf The buffer to check - * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false` - * @public - */ -function isValidUTF8$1(buf) { - const len = buf.length; - let i = 0; - - while (i < len) { - if ((buf[i] & 0x80) === 0x00) { // 0xxxxxxx - i++; - } else if ((buf[i] & 0xe0) === 0xc0) { // 110xxxxx 10xxxxxx - if ( - i + 1 === len || - (buf[i + 1] & 0xc0) !== 0x80 || - (buf[i] & 0xfe) === 0xc0 // overlong - ) { - return false; - } - - i += 2; - } else if ((buf[i] & 0xf0) === 0xe0) { // 1110xxxx 10xxxxxx 10xxxxxx - if ( - i + 2 >= len || - (buf[i + 1] & 0xc0) !== 0x80 || - (buf[i + 2] & 0xc0) !== 0x80 || - buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80 || // overlong - buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0 // surrogate (U+D800 - U+DFFF) - ) { - return false; - } - - i += 3; - } else if ((buf[i] & 0xf8) === 0xf0) { // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - if ( - i + 3 >= len || - (buf[i + 1] & 0xc0) !== 0x80 || - (buf[i + 2] & 0xc0) !== 0x80 || - (buf[i + 3] & 0xc0) !== 0x80 || - buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80 || // overlong - buf[i] === 0xf4 && buf[i + 1] > 0x8f || buf[i] > 0xf4 // > U+10FFFF - ) { - return false; - } - - i += 4; - } else { - return false; - } - } - - return true; -} - -var fallback = isValidUTF8$1; - -var utf8Validate = createCommonjsModule(function (module) { - -try { - module.exports = nodeGypBuild(__dirname); -} catch (e) { - module.exports = fallback; -} -}); - -var validation = createCommonjsModule(function (module) { - -/** - * Checks if a status code is allowed in a close frame. - * - * @param {Number} code The status code - * @return {Boolean} `true` if the status code is valid, else `false` - * @public - */ -function isValidStatusCode(code) { - return ( - (code >= 1000 && - code <= 1014 && - code !== 1004 && - code !== 1005 && - code !== 1006) || - (code >= 3000 && code <= 4999) - ); -} - -/** - * Checks if a given buffer contains only correct UTF-8. - * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by - * Markus Kuhn. - * - * @param {Buffer} buf The buffer to check - * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false` - * @public - */ -function _isValidUTF8(buf) { - const len = buf.length; - let i = 0; - - while (i < len) { - if ((buf[i] & 0x80) === 0) { - // 0xxxxxxx - i++; - } else if ((buf[i] & 0xe0) === 0xc0) { - // 110xxxxx 10xxxxxx - if ( - i + 1 === len || - (buf[i + 1] & 0xc0) !== 0x80 || - (buf[i] & 0xfe) === 0xc0 // Overlong - ) { - return false; - } - - i += 2; - } else if ((buf[i] & 0xf0) === 0xe0) { - // 1110xxxx 10xxxxxx 10xxxxxx - if ( - i + 2 >= len || - (buf[i + 1] & 0xc0) !== 0x80 || - (buf[i + 2] & 0xc0) !== 0x80 || - (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong - (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF) - ) { - return false; - } - - i += 3; - } else if ((buf[i] & 0xf8) === 0xf0) { - // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - if ( - i + 3 >= len || - (buf[i + 1] & 0xc0) !== 0x80 || - (buf[i + 2] & 0xc0) !== 0x80 || - (buf[i + 3] & 0xc0) !== 0x80 || - (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong - (buf[i] === 0xf4 && buf[i + 1] > 0x8f) || - buf[i] > 0xf4 // > U+10FFFF - ) { - return false; - } - - i += 4; - } else { - return false; - } - } - - return true; -} - -try { - let isValidUTF8 = utf8Validate; - - /* istanbul ignore if */ - if (typeof isValidUTF8 === 'object') { - isValidUTF8 = isValidUTF8.Validation.isValidUTF8; // utf-8-validate@<3.0.0 - } - - module.exports = { - isValidStatusCode, - isValidUTF8(buf) { - return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf); - } - }; -} catch (e) /* istanbul ignore next */ { - module.exports = { - isValidStatusCode, - isValidUTF8: _isValidUTF8 - }; -} -}); - -const { Writable } = Stream; - - -const { - BINARY_TYPES: BINARY_TYPES$1, - EMPTY_BUFFER: EMPTY_BUFFER$2, - kStatusCode: kStatusCode$1, - kWebSocket: kWebSocket$2 -} = constants; -const { concat, toArrayBuffer, unmask } = bufferUtil; -const { isValidStatusCode: isValidStatusCode$1, isValidUTF8 } = validation; - -const GET_INFO = 0; -const GET_PAYLOAD_LENGTH_16 = 1; -const GET_PAYLOAD_LENGTH_64 = 2; -const GET_MASK = 3; -const GET_DATA = 4; -const INFLATING = 5; - -/** - * HyBi Receiver implementation. - * - * @extends Writable - */ -class Receiver extends Writable { - /** - * Creates a Receiver instance. - * - * @param {String} [binaryType=nodebuffer] The type for binary data - * @param {Object} [extensions] An object containing the negotiated extensions - * @param {Boolean} [isServer=false] Specifies whether to operate in client or - * server mode - * @param {Number} [maxPayload=0] The maximum allowed message length - */ - constructor(binaryType, extensions, isServer, maxPayload) { - super(); - - this._binaryType = binaryType || BINARY_TYPES$1[0]; - this[kWebSocket$2] = undefined; - this._extensions = extensions || {}; - this._isServer = !!isServer; - this._maxPayload = maxPayload | 0; - - this._bufferedBytes = 0; - this._buffers = []; - - this._compressed = false; - this._payloadLength = 0; - this._mask = undefined; - this._fragmented = 0; - this._masked = false; - this._fin = false; - this._opcode = 0; - - this._totalPayloadLength = 0; - this._messageLength = 0; - this._fragments = []; - - this._state = GET_INFO; - this._loop = false; - } - - /** - * Implements `Writable.prototype._write()`. - * - * @param {Buffer} chunk The chunk of data to write - * @param {String} encoding The character encoding of `chunk` - * @param {Function} cb Callback - * @private - */ - _write(chunk, encoding, cb) { - if (this._opcode === 0x08 && this._state == GET_INFO) return cb(); - - this._bufferedBytes += chunk.length; - this._buffers.push(chunk); - this.startLoop(cb); - } - - /** - * Consumes `n` bytes from the buffered data. - * - * @param {Number} n The number of bytes to consume - * @return {Buffer} The consumed bytes - * @private - */ - consume(n) { - this._bufferedBytes -= n; - - if (n === this._buffers[0].length) return this._buffers.shift(); - - if (n < this._buffers[0].length) { - const buf = this._buffers[0]; - this._buffers[0] = buf.slice(n); - return buf.slice(0, n); - } - - const dst = Buffer.allocUnsafe(n); - - do { - const buf = this._buffers[0]; - const offset = dst.length - n; - - if (n >= buf.length) { - dst.set(this._buffers.shift(), offset); - } else { - dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset); - this._buffers[0] = buf.slice(n); - } - - n -= buf.length; - } while (n > 0); - - return dst; - } - - /** - * Starts the parsing loop. - * - * @param {Function} cb Callback - * @private - */ - startLoop(cb) { - let err; - this._loop = true; - - do { - switch (this._state) { - case GET_INFO: - err = this.getInfo(); - break; - case GET_PAYLOAD_LENGTH_16: - err = this.getPayloadLength16(); - break; - case GET_PAYLOAD_LENGTH_64: - err = this.getPayloadLength64(); - break; - case GET_MASK: - this.getMask(); - break; - case GET_DATA: - err = this.getData(cb); - break; - default: - // `INFLATING` - this._loop = false; - return; - } - } while (this._loop); - - cb(err); - } - - /** - * Reads the first two bytes of a frame. - * - * @return {(RangeError|undefined)} A possible error - * @private - */ - getInfo() { - if (this._bufferedBytes < 2) { - this._loop = false; - return; - } - - const buf = this.consume(2); - - if ((buf[0] & 0x30) !== 0x00) { - this._loop = false; - return error( - RangeError, - 'RSV2 and RSV3 must be clear', - true, - 1002, - 'WS_ERR_UNEXPECTED_RSV_2_3' - ); - } - - const compressed = (buf[0] & 0x40) === 0x40; - - if (compressed && !this._extensions[permessageDeflate.extensionName]) { - this._loop = false; - return error( - RangeError, - 'RSV1 must be clear', - true, - 1002, - 'WS_ERR_UNEXPECTED_RSV_1' - ); - } - - this._fin = (buf[0] & 0x80) === 0x80; - this._opcode = buf[0] & 0x0f; - this._payloadLength = buf[1] & 0x7f; - - if (this._opcode === 0x00) { - if (compressed) { - this._loop = false; - return error( - RangeError, - 'RSV1 must be clear', - true, - 1002, - 'WS_ERR_UNEXPECTED_RSV_1' - ); - } - - if (!this._fragmented) { - this._loop = false; - return error( - RangeError, - 'invalid opcode 0', - true, - 1002, - 'WS_ERR_INVALID_OPCODE' - ); - } - - this._opcode = this._fragmented; - } else if (this._opcode === 0x01 || this._opcode === 0x02) { - if (this._fragmented) { - this._loop = false; - return error( - RangeError, - `invalid opcode ${this._opcode}`, - true, - 1002, - 'WS_ERR_INVALID_OPCODE' - ); - } - - this._compressed = compressed; - } else if (this._opcode > 0x07 && this._opcode < 0x0b) { - if (!this._fin) { - this._loop = false; - return error( - RangeError, - 'FIN must be set', - true, - 1002, - 'WS_ERR_EXPECTED_FIN' - ); - } - - if (compressed) { - this._loop = false; - return error( - RangeError, - 'RSV1 must be clear', - true, - 1002, - 'WS_ERR_UNEXPECTED_RSV_1' - ); - } - - if (this._payloadLength > 0x7d) { - this._loop = false; - return error( - RangeError, - `invalid payload length ${this._payloadLength}`, - true, - 1002, - 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH' - ); - } - } else { - this._loop = false; - return error( - RangeError, - `invalid opcode ${this._opcode}`, - true, - 1002, - 'WS_ERR_INVALID_OPCODE' - ); - } - - if (!this._fin && !this._fragmented) this._fragmented = this._opcode; - this._masked = (buf[1] & 0x80) === 0x80; - - if (this._isServer) { - if (!this._masked) { - this._loop = false; - return error( - RangeError, - 'MASK must be set', - true, - 1002, - 'WS_ERR_EXPECTED_MASK' - ); - } - } else if (this._masked) { - this._loop = false; - return error( - RangeError, - 'MASK must be clear', - true, - 1002, - 'WS_ERR_UNEXPECTED_MASK' - ); - } - - if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16; - else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64; - else return this.haveLength(); - } - - /** - * Gets extended payload length (7+16). - * - * @return {(RangeError|undefined)} A possible error - * @private - */ - getPayloadLength16() { - if (this._bufferedBytes < 2) { - this._loop = false; - return; - } - - this._payloadLength = this.consume(2).readUInt16BE(0); - return this.haveLength(); - } - - /** - * Gets extended payload length (7+64). - * - * @return {(RangeError|undefined)} A possible error - * @private - */ - getPayloadLength64() { - if (this._bufferedBytes < 8) { - this._loop = false; - return; - } - - const buf = this.consume(8); - const num = buf.readUInt32BE(0); - - // - // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned - // if payload length is greater than this number. - // - if (num > Math.pow(2, 53 - 32) - 1) { - this._loop = false; - return error( - RangeError, - 'Unsupported WebSocket frame: payload length > 2^53 - 1', - false, - 1009, - 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH' - ); - } - - this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); - return this.haveLength(); - } - - /** - * Payload length has been read. - * - * @return {(RangeError|undefined)} A possible error - * @private - */ - haveLength() { - if (this._payloadLength && this._opcode < 0x08) { - this._totalPayloadLength += this._payloadLength; - if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { - this._loop = false; - return error( - RangeError, - 'Max payload size exceeded', - false, - 1009, - 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH' - ); - } - } - - if (this._masked) this._state = GET_MASK; - else this._state = GET_DATA; - } - - /** - * Reads mask bytes. - * - * @private - */ - getMask() { - if (this._bufferedBytes < 4) { - this._loop = false; - return; - } - - this._mask = this.consume(4); - this._state = GET_DATA; - } - - /** - * Reads data bytes. - * - * @param {Function} cb Callback - * @return {(Error|RangeError|undefined)} A possible error - * @private - */ - getData(cb) { - let data = EMPTY_BUFFER$2; - - if (this._payloadLength) { - if (this._bufferedBytes < this._payloadLength) { - this._loop = false; - return; - } - - data = this.consume(this._payloadLength); - if (this._masked) unmask(data, this._mask); - } - - if (this._opcode > 0x07) return this.controlMessage(data); - - if (this._compressed) { - this._state = INFLATING; - this.decompress(data, cb); - return; - } - - if (data.length) { - // - // This message is not compressed so its lenght is the sum of the payload - // length of all fragments. - // - this._messageLength = this._totalPayloadLength; - this._fragments.push(data); - } - - return this.dataMessage(); - } - - /** - * Decompresses data. - * - * @param {Buffer} data Compressed data - * @param {Function} cb Callback - * @private - */ - decompress(data, cb) { - const perMessageDeflate = this._extensions[permessageDeflate.extensionName]; - - perMessageDeflate.decompress(data, this._fin, (err, buf) => { - if (err) return cb(err); - - if (buf.length) { - this._messageLength += buf.length; - if (this._messageLength > this._maxPayload && this._maxPayload > 0) { - return cb( - error( - RangeError, - 'Max payload size exceeded', - false, - 1009, - 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH' - ) - ); - } - - this._fragments.push(buf); - } - - const er = this.dataMessage(); - if (er) return cb(er); - - this.startLoop(cb); - }); - } - - /** - * Handles a data message. - * - * @return {(Error|undefined)} A possible error - * @private - */ - dataMessage() { - if (this._fin) { - const messageLength = this._messageLength; - const fragments = this._fragments; - - this._totalPayloadLength = 0; - this._messageLength = 0; - this._fragmented = 0; - this._fragments = []; - - if (this._opcode === 2) { - let data; - - if (this._binaryType === 'nodebuffer') { - data = concat(fragments, messageLength); - } else if (this._binaryType === 'arraybuffer') { - data = toArrayBuffer(concat(fragments, messageLength)); - } else { - data = fragments; - } - - this.emit('message', data); - } else { - const buf = concat(fragments, messageLength); - - if (!isValidUTF8(buf)) { - this._loop = false; - return error( - Error, - 'invalid UTF-8 sequence', - true, - 1007, - 'WS_ERR_INVALID_UTF8' - ); - } - - this.emit('message', buf.toString()); - } - } - - this._state = GET_INFO; - } - - /** - * Handles a control message. - * - * @param {Buffer} data Data to handle - * @return {(Error|RangeError|undefined)} A possible error - * @private - */ - controlMessage(data) { - if (this._opcode === 0x08) { - this._loop = false; - - if (data.length === 0) { - this.emit('conclude', 1005, ''); - this.end(); - } else if (data.length === 1) { - return error( - RangeError, - 'invalid payload length 1', - true, - 1002, - 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH' - ); - } else { - const code = data.readUInt16BE(0); - - if (!isValidStatusCode$1(code)) { - return error( - RangeError, - `invalid status code ${code}`, - true, - 1002, - 'WS_ERR_INVALID_CLOSE_CODE' - ); - } - - const buf = data.slice(2); - - if (!isValidUTF8(buf)) { - return error( - Error, - 'invalid UTF-8 sequence', - true, - 1007, - 'WS_ERR_INVALID_UTF8' - ); - } - - this.emit('conclude', code, buf.toString()); - this.end(); - } - } else if (this._opcode === 0x09) { - this.emit('ping', data); - } else { - this.emit('pong', data); - } - - this._state = GET_INFO; - } -} - -var receiver = Receiver; - -/** - * Builds an error object. - * - * @param {function(new:Error|RangeError)} ErrorCtor The error constructor - * @param {String} message The error message - * @param {Boolean} prefix Specifies whether or not to add a default prefix to - * `message` - * @param {Number} statusCode The status code - * @param {String} errorCode The exposed error code - * @return {(Error|RangeError)} The error - * @private - */ -function error(ErrorCtor, message, prefix, statusCode, errorCode) { - const err = new ErrorCtor( - prefix ? `Invalid WebSocket frame: ${message}` : message - ); - - Error.captureStackTrace(err, error); - err.code = errorCode; - err[kStatusCode$1] = statusCode; - return err; -} - -/* eslint no-unused-vars: ["error", { "varsIgnorePattern": "^net|tls$" }] */ - - - -const { randomFillSync } = require$$0$4; - - -const { EMPTY_BUFFER: EMPTY_BUFFER$1 } = constants; -const { isValidStatusCode } = validation; -const { mask: applyMask, toBuffer: toBuffer$1 } = bufferUtil; - -const mask = Buffer.alloc(4); - -/** - * HyBi Sender implementation. - */ -class Sender { - /** - * Creates a Sender instance. - * - * @param {(net.Socket|tls.Socket)} socket The connection socket - * @param {Object} [extensions] An object containing the negotiated extensions - */ - constructor(socket, extensions) { - this._extensions = extensions || {}; - this._socket = socket; - - this._firstFragment = true; - this._compress = false; - - this._bufferedBytes = 0; - this._deflating = false; - this._queue = []; - } - - /** - * Frames a piece of data according to the HyBi WebSocket protocol. - * - * @param {Buffer} data The data to frame - * @param {Object} options Options object - * @param {Number} options.opcode The opcode - * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be - * modified - * @param {Boolean} [options.fin=false] Specifies whether or not to set the - * FIN bit - * @param {Boolean} [options.mask=false] Specifies whether or not to mask - * `data` - * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the - * RSV1 bit - * @return {Buffer[]} The framed data as a list of `Buffer` instances - * @public - */ - static frame(data, options) { - const merge = options.mask && options.readOnly; - let offset = options.mask ? 6 : 2; - let payloadLength = data.length; - - if (data.length >= 65536) { - offset += 8; - payloadLength = 127; - } else if (data.length > 125) { - offset += 2; - payloadLength = 126; - } - - const target = Buffer.allocUnsafe(merge ? data.length + offset : offset); - - target[0] = options.fin ? options.opcode | 0x80 : options.opcode; - if (options.rsv1) target[0] |= 0x40; - - target[1] = payloadLength; - - if (payloadLength === 126) { - target.writeUInt16BE(data.length, 2); - } else if (payloadLength === 127) { - target.writeUInt32BE(0, 2); - target.writeUInt32BE(data.length, 6); - } - - if (!options.mask) return [target, data]; - - randomFillSync(mask, 0, 4); - - target[1] |= 0x80; - target[offset - 4] = mask[0]; - target[offset - 3] = mask[1]; - target[offset - 2] = mask[2]; - target[offset - 1] = mask[3]; - - if (merge) { - applyMask(data, mask, target, offset, data.length); - return [target]; - } - - applyMask(data, mask, data, 0, data.length); - return [target, data]; - } - - /** - * Sends a close message to the other peer. - * - * @param {Number} [code] The status code component of the body - * @param {String} [data] The message component of the body - * @param {Boolean} [mask=false] Specifies whether or not to mask the message - * @param {Function} [cb] Callback - * @public - */ - close(code, data, mask, cb) { - let buf; - - if (code === undefined) { - buf = EMPTY_BUFFER$1; - } else if (typeof code !== 'number' || !isValidStatusCode(code)) { - throw new TypeError('First argument must be a valid error code number'); - } else if (data === undefined || data === '') { - buf = Buffer.allocUnsafe(2); - buf.writeUInt16BE(code, 0); - } else { - const length = Buffer.byteLength(data); - - if (length > 123) { - throw new RangeError('The message must not be greater than 123 bytes'); - } - - buf = Buffer.allocUnsafe(2 + length); - buf.writeUInt16BE(code, 0); - buf.write(data, 2); - } - - if (this._deflating) { - this.enqueue([this.doClose, buf, mask, cb]); - } else { - this.doClose(buf, mask, cb); - } - } - - /** - * Frames and sends a close message. - * - * @param {Buffer} data The message to send - * @param {Boolean} [mask=false] Specifies whether or not to mask `data` - * @param {Function} [cb] Callback - * @private - */ - doClose(data, mask, cb) { - this.sendFrame( - Sender.frame(data, { - fin: true, - rsv1: false, - opcode: 0x08, - mask, - readOnly: false - }), - cb - ); - } - - /** - * Sends a ping message to the other peer. - * - * @param {*} data The message to send - * @param {Boolean} [mask=false] Specifies whether or not to mask `data` - * @param {Function} [cb] Callback - * @public - */ - ping(data, mask, cb) { - const buf = toBuffer$1(data); - - if (buf.length > 125) { - throw new RangeError('The data size must not be greater than 125 bytes'); - } - - if (this._deflating) { - this.enqueue([this.doPing, buf, mask, toBuffer$1.readOnly, cb]); - } else { - this.doPing(buf, mask, toBuffer$1.readOnly, cb); - } - } - - /** - * Frames and sends a ping message. - * - * @param {Buffer} data The message to send - * @param {Boolean} [mask=false] Specifies whether or not to mask `data` - * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified - * @param {Function} [cb] Callback - * @private - */ - doPing(data, mask, readOnly, cb) { - this.sendFrame( - Sender.frame(data, { - fin: true, - rsv1: false, - opcode: 0x09, - mask, - readOnly - }), - cb - ); - } - - /** - * Sends a pong message to the other peer. - * - * @param {*} data The message to send - * @param {Boolean} [mask=false] Specifies whether or not to mask `data` - * @param {Function} [cb] Callback - * @public - */ - pong(data, mask, cb) { - const buf = toBuffer$1(data); - - if (buf.length > 125) { - throw new RangeError('The data size must not be greater than 125 bytes'); - } - - if (this._deflating) { - this.enqueue([this.doPong, buf, mask, toBuffer$1.readOnly, cb]); - } else { - this.doPong(buf, mask, toBuffer$1.readOnly, cb); - } - } - - /** - * Frames and sends a pong message. - * - * @param {Buffer} data The message to send - * @param {Boolean} [mask=false] Specifies whether or not to mask `data` - * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified - * @param {Function} [cb] Callback - * @private - */ - doPong(data, mask, readOnly, cb) { - this.sendFrame( - Sender.frame(data, { - fin: true, - rsv1: false, - opcode: 0x0a, - mask, - readOnly - }), - cb - ); - } - - /** - * Sends a data message to the other peer. - * - * @param {*} data The message to send - * @param {Object} options Options object - * @param {Boolean} [options.compress=false] Specifies whether or not to - * compress `data` - * @param {Boolean} [options.binary=false] Specifies whether `data` is binary - * or text - * @param {Boolean} [options.fin=false] Specifies whether the fragment is the - * last one - * @param {Boolean} [options.mask=false] Specifies whether or not to mask - * `data` - * @param {Function} [cb] Callback - * @public - */ - send(data, options, cb) { - const buf = toBuffer$1(data); - const perMessageDeflate = this._extensions[permessageDeflate.extensionName]; - let opcode = options.binary ? 2 : 1; - let rsv1 = options.compress; - - if (this._firstFragment) { - this._firstFragment = false; - if (rsv1 && perMessageDeflate) { - rsv1 = buf.length >= perMessageDeflate._threshold; - } - this._compress = rsv1; - } else { - rsv1 = false; - opcode = 0; - } - - if (options.fin) this._firstFragment = true; - - if (perMessageDeflate) { - const opts = { - fin: options.fin, - rsv1, - opcode, - mask: options.mask, - readOnly: toBuffer$1.readOnly - }; - - if (this._deflating) { - this.enqueue([this.dispatch, buf, this._compress, opts, cb]); - } else { - this.dispatch(buf, this._compress, opts, cb); - } - } else { - this.sendFrame( - Sender.frame(buf, { - fin: options.fin, - rsv1: false, - opcode, - mask: options.mask, - readOnly: toBuffer$1.readOnly - }), - cb - ); - } - } - - /** - * Dispatches a data message. - * - * @param {Buffer} data The message to send - * @param {Boolean} [compress=false] Specifies whether or not to compress - * `data` - * @param {Object} options Options object - * @param {Number} options.opcode The opcode - * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be - * modified - * @param {Boolean} [options.fin=false] Specifies whether or not to set the - * FIN bit - * @param {Boolean} [options.mask=false] Specifies whether or not to mask - * `data` - * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the - * RSV1 bit - * @param {Function} [cb] Callback - * @private - */ - dispatch(data, compress, options, cb) { - if (!compress) { - this.sendFrame(Sender.frame(data, options), cb); - return; - } - - const perMessageDeflate = this._extensions[permessageDeflate.extensionName]; - - this._bufferedBytes += data.length; - this._deflating = true; - perMessageDeflate.compress(data, options.fin, (_, buf) => { - if (this._socket.destroyed) { - const err = new Error( - 'The socket was closed while data was being compressed' - ); - - if (typeof cb === 'function') cb(err); - - for (let i = 0; i < this._queue.length; i++) { - const callback = this._queue[i][4]; - - if (typeof callback === 'function') callback(err); - } - - return; - } - - this._bufferedBytes -= data.length; - this._deflating = false; - options.readOnly = false; - this.sendFrame(Sender.frame(buf, options), cb); - this.dequeue(); - }); - } - - /** - * Executes queued send operations. - * - * @private - */ - dequeue() { - while (!this._deflating && this._queue.length) { - const params = this._queue.shift(); - - this._bufferedBytes -= params[1].length; - Reflect.apply(params[0], this, params.slice(1)); - } - } - - /** - * Enqueues a send operation. - * - * @param {Array} params Send operation parameters. - * @private - */ - enqueue(params) { - this._bufferedBytes += params[1].length; - this._queue.push(params); - } - - /** - * Sends a frame. - * - * @param {Buffer[]} list The frame to send - * @param {Function} [cb] Callback - * @private - */ - sendFrame(list, cb) { - if (list.length === 2) { - this._socket.cork(); - this._socket.write(list[0]); - this._socket.write(list[1], cb); - this._socket.uncork(); - } else { - this._socket.write(list[0], cb); - } - } -} - -var sender = Sender; - -/** - * Class representing an event. - * - * @private - */ -class Event { - /** - * Create a new `Event`. - * - * @param {String} type The name of the event - * @param {Object} target A reference to the target to which the event was - * dispatched - */ - constructor(type, target) { - this.target = target; - this.type = type; - } -} - -/** - * Class representing a message event. - * - * @extends Event - * @private - */ -class MessageEvent extends Event { - /** - * Create a new `MessageEvent`. - * - * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The received data - * @param {WebSocket} target A reference to the target to which the event was - * dispatched - */ - constructor(data, target) { - super('message', target); - - this.data = data; - } -} - -/** - * Class representing a close event. - * - * @extends Event - * @private - */ -class CloseEvent extends Event { - /** - * Create a new `CloseEvent`. - * - * @param {Number} code The status code explaining why the connection is being - * closed - * @param {String} reason A human-readable string explaining why the - * connection is closing - * @param {WebSocket} target A reference to the target to which the event was - * dispatched - */ - constructor(code, reason, target) { - super('close', target); - - this.wasClean = target._closeFrameReceived && target._closeFrameSent; - this.reason = reason; - this.code = code; - } -} - -/** - * Class representing an open event. - * - * @extends Event - * @private - */ -class OpenEvent extends Event { - /** - * Create a new `OpenEvent`. - * - * @param {WebSocket} target A reference to the target to which the event was - * dispatched - */ - constructor(target) { - super('open', target); - } -} - -/** - * Class representing an error event. - * - * @extends Event - * @private - */ -class ErrorEvent extends Event { - /** - * Create a new `ErrorEvent`. - * - * @param {Object} error The error that generated this event - * @param {WebSocket} target A reference to the target to which the event was - * dispatched - */ - constructor(error, target) { - super('error', target); - - this.message = error.message; - this.error = error; - } -} - -/** - * This provides methods for emulating the `EventTarget` interface. It's not - * meant to be used directly. - * - * @mixin - */ -const EventTarget = { - /** - * Register an event listener. - * - * @param {String} type A string representing the event type to listen for - * @param {Function} listener The listener to add - * @param {Object} [options] An options object specifies characteristics about - * the event listener - * @param {Boolean} [options.once=false] A `Boolean`` indicating that the - * listener should be invoked at most once after being added. If `true`, - * the listener would be automatically removed when invoked. - * @public - */ - addEventListener(type, listener, options) { - if (typeof listener !== 'function') return; - - function onMessage(data) { - listener.call(this, new MessageEvent(data, this)); - } - - function onClose(code, message) { - listener.call(this, new CloseEvent(code, message, this)); - } - - function onError(error) { - listener.call(this, new ErrorEvent(error, this)); - } - - function onOpen() { - listener.call(this, new OpenEvent(this)); - } - - const method = options && options.once ? 'once' : 'on'; - - if (type === 'message') { - onMessage._listener = listener; - this[method](type, onMessage); - } else if (type === 'close') { - onClose._listener = listener; - this[method](type, onClose); - } else if (type === 'error') { - onError._listener = listener; - this[method](type, onError); - } else if (type === 'open') { - onOpen._listener = listener; - this[method](type, onOpen); - } else { - this[method](type, listener); - } - }, - - /** - * Remove an event listener. - * - * @param {String} type A string representing the event type to remove - * @param {Function} listener The listener to remove - * @public - */ - removeEventListener(type, listener) { - const listeners = this.listeners(type); - - for (let i = 0; i < listeners.length; i++) { - if (listeners[i] === listener || listeners[i]._listener === listener) { - this.removeListener(type, listeners[i]); - } - } - } -}; - -var eventTarget = EventTarget; - -// -// Allowed token characters: -// -// '!', '#', '$', '%', '&', ''', '*', '+', '-', -// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~' -// -// tokenChars[32] === 0 // ' ' -// tokenChars[33] === 1 // '!' -// tokenChars[34] === 0 // '"' -// ... -// -// prettier-ignore -const tokenChars = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31 - 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63 - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127 -]; - -/** - * Adds an offer to the map of extension offers or a parameter to the map of - * parameters. - * - * @param {Object} dest The map of extension offers or parameters - * @param {String} name The extension or parameter name - * @param {(Object|Boolean|String)} elem The extension parameters or the - * parameter value - * @private - */ -function push(dest, name, elem) { - if (dest[name] === undefined) dest[name] = [elem]; - else dest[name].push(elem); -} - -/** - * Parses the `Sec-WebSocket-Extensions` header into an object. - * - * @param {String} header The field value of the header - * @return {Object} The parsed object - * @public - */ -function parse$2(header) { - const offers = Object.create(null); - - if (header === undefined || header === '') return offers; - - let params = Object.create(null); - let mustUnescape = false; - let isEscaping = false; - let inQuotes = false; - let extensionName; - let paramName; - let start = -1; - let end = -1; - let i = 0; - - for (; i < header.length; i++) { - const code = header.charCodeAt(i); - - if (extensionName === undefined) { - if (end === -1 && tokenChars[code] === 1) { - if (start === -1) start = i; - } else if (code === 0x20 /* ' ' */ || code === 0x09 /* '\t' */) { - if (end === -1 && start !== -1) end = i; - } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) { - if (start === -1) { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - - if (end === -1) end = i; - const name = header.slice(start, end); - if (code === 0x2c) { - push(offers, name, params); - params = Object.create(null); - } else { - extensionName = name; - } - - start = end = -1; - } else { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - } else if (paramName === undefined) { - if (end === -1 && tokenChars[code] === 1) { - if (start === -1) start = i; - } else if (code === 0x20 || code === 0x09) { - if (end === -1 && start !== -1) end = i; - } else if (code === 0x3b || code === 0x2c) { - if (start === -1) { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - - if (end === -1) end = i; - push(params, header.slice(start, end), true); - if (code === 0x2c) { - push(offers, extensionName, params); - params = Object.create(null); - extensionName = undefined; - } - - start = end = -1; - } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) { - paramName = header.slice(start, i); - start = end = -1; - } else { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - } else { - // - // The value of a quoted-string after unescaping must conform to the - // token ABNF, so only token characters are valid. - // Ref: https://tools.ietf.org/html/rfc6455#section-9.1 - // - if (isEscaping) { - if (tokenChars[code] !== 1) { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - if (start === -1) start = i; - else if (!mustUnescape) mustUnescape = true; - isEscaping = false; - } else if (inQuotes) { - if (tokenChars[code] === 1) { - if (start === -1) start = i; - } else if (code === 0x22 /* '"' */ && start !== -1) { - inQuotes = false; - end = i; - } else if (code === 0x5c /* '\' */) { - isEscaping = true; - } else { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) { - inQuotes = true; - } else if (end === -1 && tokenChars[code] === 1) { - if (start === -1) start = i; - } else if (start !== -1 && (code === 0x20 || code === 0x09)) { - if (end === -1) end = i; - } else if (code === 0x3b || code === 0x2c) { - if (start === -1) { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - - if (end === -1) end = i; - let value = header.slice(start, end); - if (mustUnescape) { - value = value.replace(/\\/g, ''); - mustUnescape = false; - } - push(params, paramName, value); - if (code === 0x2c) { - push(offers, extensionName, params); - params = Object.create(null); - extensionName = undefined; - } - - paramName = undefined; - start = end = -1; - } else { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - } - } - - if (start === -1 || inQuotes) { - throw new SyntaxError('Unexpected end of input'); - } - - if (end === -1) end = i; - const token = header.slice(start, end); - if (extensionName === undefined) { - push(offers, token, params); - } else { - if (paramName === undefined) { - push(params, token, true); - } else if (mustUnescape) { - push(params, paramName, token.replace(/\\/g, '')); - } else { - push(params, paramName, token); - } - push(offers, extensionName, params); - } - - return offers; -} - -/** - * Builds the `Sec-WebSocket-Extensions` header field value. - * - * @param {Object} extensions The map of extensions and parameters to format - * @return {String} A string representing the given object - * @public - */ -function format$2(extensions) { - return Object.keys(extensions) - .map((extension) => { - let configurations = extensions[extension]; - if (!Array.isArray(configurations)) configurations = [configurations]; - return configurations - .map((params) => { - return [extension] - .concat( - Object.keys(params).map((k) => { - let values = params[k]; - if (!Array.isArray(values)) values = [values]; - return values - .map((v) => (v === true ? k : `${k}=${v}`)) - .join('; '); - }) - ) - .join('; '); - }) - .join(', '); - }) - .join(', '); -} - -var extension = { format: format$2, parse: parse$2 }; - -const { randomBytes, createHash: createHash$1 } = require$$0$4; -const { URL } = Url; - - - - -const { - BINARY_TYPES, - EMPTY_BUFFER, - GUID: GUID$1, - kStatusCode, - kWebSocket: kWebSocket$1, - NOOP -} = constants; -const { addEventListener, removeEventListener } = eventTarget; -const { format: format$1, parse: parse$1 } = extension; -const { toBuffer } = bufferUtil; - -const readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED']; -const protocolVersions = [8, 13]; -const closeTimeout = 30 * 1000; - -/** - * Class representing a WebSocket. - * - * @extends EventEmitter - */ -class WebSocket extends EventEmitter { - /** - * Create a new `WebSocket`. - * - * @param {(String|URL)} address The URL to which to connect - * @param {(String|String[])} [protocols] The subprotocols - * @param {Object} [options] Connection options - */ - constructor(address, protocols, options) { - super(); - - this._binaryType = BINARY_TYPES[0]; - this._closeCode = 1006; - this._closeFrameReceived = false; - this._closeFrameSent = false; - this._closeMessage = ''; - this._closeTimer = null; - this._extensions = {}; - this._protocol = ''; - this._readyState = WebSocket.CONNECTING; - this._receiver = null; - this._sender = null; - this._socket = null; - - if (address !== null) { - this._bufferedAmount = 0; - this._isServer = false; - this._redirects = 0; - - if (Array.isArray(protocols)) { - protocols = protocols.join(', '); - } else if (typeof protocols === 'object' && protocols !== null) { - options = protocols; - protocols = undefined; - } - - initAsClient(this, address, protocols, options); - } else { - this._isServer = true; - } - } - - /** - * This deviates from the WHATWG interface since ws doesn't support the - * required default "blob" type (instead we define a custom "nodebuffer" - * type). - * - * @type {String} - */ - get binaryType() { - return this._binaryType; - } - - set binaryType(type) { - if (!BINARY_TYPES.includes(type)) return; - - this._binaryType = type; - - // - // Allow to change `binaryType` on the fly. - // - if (this._receiver) this._receiver._binaryType = type; - } - - /** - * @type {Number} - */ - get bufferedAmount() { - if (!this._socket) return this._bufferedAmount; - - return this._socket._writableState.length + this._sender._bufferedBytes; - } - - /** - * @type {String} - */ - get extensions() { - return Object.keys(this._extensions).join(); - } - - /** - * @type {Function} - */ - /* istanbul ignore next */ - get onclose() { - return undefined; - } - - /* istanbul ignore next */ - set onclose(listener) {} - - /** - * @type {Function} - */ - /* istanbul ignore next */ - get onerror() { - return undefined; - } - - /* istanbul ignore next */ - set onerror(listener) {} - - /** - * @type {Function} - */ - /* istanbul ignore next */ - get onopen() { - return undefined; - } - - /* istanbul ignore next */ - set onopen(listener) {} - - /** - * @type {Function} - */ - /* istanbul ignore next */ - get onmessage() { - return undefined; - } - - /* istanbul ignore next */ - set onmessage(listener) {} - - /** - * @type {String} - */ - get protocol() { - return this._protocol; - } - - /** - * @type {Number} - */ - get readyState() { - return this._readyState; - } - - /** - * @type {String} - */ - get url() { - return this._url; - } - - /** - * Set up the socket and the internal resources. - * - * @param {(net.Socket|tls.Socket)} socket The network socket between the - * server and client - * @param {Buffer} head The first packet of the upgraded stream - * @param {Number} [maxPayload=0] The maximum allowed message size - * @private - */ - setSocket(socket, head, maxPayload) { - const receiver$1 = new receiver( - this.binaryType, - this._extensions, - this._isServer, - maxPayload - ); - - this._sender = new sender(socket, this._extensions); - this._receiver = receiver$1; - this._socket = socket; - - receiver$1[kWebSocket$1] = this; - socket[kWebSocket$1] = this; - - receiver$1.on('conclude', receiverOnConclude); - receiver$1.on('drain', receiverOnDrain); - receiver$1.on('error', receiverOnError); - receiver$1.on('message', receiverOnMessage); - receiver$1.on('ping', receiverOnPing); - receiver$1.on('pong', receiverOnPong); - - socket.setTimeout(0); - socket.setNoDelay(); - - if (head.length > 0) socket.unshift(head); - - socket.on('close', socketOnClose); - socket.on('data', socketOnData); - socket.on('end', socketOnEnd); - socket.on('error', socketOnError$1); - - this._readyState = WebSocket.OPEN; - this.emit('open'); - } - - /** - * Emit the `'close'` event. - * - * @private - */ - emitClose() { - if (!this._socket) { - this._readyState = WebSocket.CLOSED; - this.emit('close', this._closeCode, this._closeMessage); - return; - } - - if (this._extensions[permessageDeflate.extensionName]) { - this._extensions[permessageDeflate.extensionName].cleanup(); - } - - this._receiver.removeAllListeners(); - this._readyState = WebSocket.CLOSED; - this.emit('close', this._closeCode, this._closeMessage); - } - - /** - * Start a closing handshake. - * - * +----------+ +-----------+ +----------+ - * - - -|ws.close()|-->|close frame|-->|ws.close()|- - - - * | +----------+ +-----------+ +----------+ | - * +----------+ +-----------+ | - * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING - * +----------+ +-----------+ | - * | | | +---+ | - * +------------------------+-->|fin| - - - - - * | +---+ | +---+ - * - - - - -|fin|<---------------------+ - * +---+ - * - * @param {Number} [code] Status code explaining why the connection is closing - * @param {String} [data] A string explaining why the connection is closing - * @public - */ - close(code, data) { - if (this.readyState === WebSocket.CLOSED) return; - if (this.readyState === WebSocket.CONNECTING) { - const msg = 'WebSocket was closed before the connection was established'; - return abortHandshake$1(this, this._req, msg); - } - - if (this.readyState === WebSocket.CLOSING) { - if ( - this._closeFrameSent && - (this._closeFrameReceived || this._receiver._writableState.errorEmitted) - ) { - this._socket.end(); - } - - return; - } - - this._readyState = WebSocket.CLOSING; - this._sender.close(code, data, !this._isServer, (err) => { - // - // This error is handled by the `'error'` listener on the socket. We only - // want to know if the close frame has been sent here. - // - if (err) return; - - this._closeFrameSent = true; - - if ( - this._closeFrameReceived || - this._receiver._writableState.errorEmitted - ) { - this._socket.end(); - } - }); - - // - // Specify a timeout for the closing handshake to complete. - // - this._closeTimer = setTimeout( - this._socket.destroy.bind(this._socket), - closeTimeout - ); - } - - /** - * Send a ping. - * - * @param {*} [data] The data to send - * @param {Boolean} [mask] Indicates whether or not to mask `data` - * @param {Function} [cb] Callback which is executed when the ping is sent - * @public - */ - ping(data, mask, cb) { - if (this.readyState === WebSocket.CONNECTING) { - throw new Error('WebSocket is not open: readyState 0 (CONNECTING)'); - } - - if (typeof data === 'function') { - cb = data; - data = mask = undefined; - } else if (typeof mask === 'function') { - cb = mask; - mask = undefined; - } - - if (typeof data === 'number') data = data.toString(); - - if (this.readyState !== WebSocket.OPEN) { - sendAfterClose(this, data, cb); - return; - } - - if (mask === undefined) mask = !this._isServer; - this._sender.ping(data || EMPTY_BUFFER, mask, cb); - } - - /** - * Send a pong. - * - * @param {*} [data] The data to send - * @param {Boolean} [mask] Indicates whether or not to mask `data` - * @param {Function} [cb] Callback which is executed when the pong is sent - * @public - */ - pong(data, mask, cb) { - if (this.readyState === WebSocket.CONNECTING) { - throw new Error('WebSocket is not open: readyState 0 (CONNECTING)'); - } - - if (typeof data === 'function') { - cb = data; - data = mask = undefined; - } else if (typeof mask === 'function') { - cb = mask; - mask = undefined; - } - - if (typeof data === 'number') data = data.toString(); - - if (this.readyState !== WebSocket.OPEN) { - sendAfterClose(this, data, cb); - return; - } - - if (mask === undefined) mask = !this._isServer; - this._sender.pong(data || EMPTY_BUFFER, mask, cb); - } - - /** - * Send a data message. - * - * @param {*} data The message to send - * @param {Object} [options] Options object - * @param {Boolean} [options.compress] Specifies whether or not to compress - * `data` - * @param {Boolean} [options.binary] Specifies whether `data` is binary or - * text - * @param {Boolean} [options.fin=true] Specifies whether the fragment is the - * last one - * @param {Boolean} [options.mask] Specifies whether or not to mask `data` - * @param {Function} [cb] Callback which is executed when data is written out - * @public - */ - send(data, options, cb) { - if (this.readyState === WebSocket.CONNECTING) { - throw new Error('WebSocket is not open: readyState 0 (CONNECTING)'); - } - - if (typeof options === 'function') { - cb = options; - options = {}; - } - - if (typeof data === 'number') data = data.toString(); - - if (this.readyState !== WebSocket.OPEN) { - sendAfterClose(this, data, cb); - return; - } - - const opts = { - binary: typeof data !== 'string', - mask: !this._isServer, - compress: true, - fin: true, - ...options - }; - - if (!this._extensions[permessageDeflate.extensionName]) { - opts.compress = false; - } - - this._sender.send(data || EMPTY_BUFFER, opts, cb); - } - - /** - * Forcibly close the connection. - * - * @public - */ - terminate() { - if (this.readyState === WebSocket.CLOSED) return; - if (this.readyState === WebSocket.CONNECTING) { - const msg = 'WebSocket was closed before the connection was established'; - return abortHandshake$1(this, this._req, msg); - } - - if (this._socket) { - this._readyState = WebSocket.CLOSING; - this._socket.destroy(); - } - } -} - -/** - * @constant {Number} CONNECTING - * @memberof WebSocket - */ -Object.defineProperty(WebSocket, 'CONNECTING', { - enumerable: true, - value: readyStates.indexOf('CONNECTING') -}); - -/** - * @constant {Number} CONNECTING - * @memberof WebSocket.prototype - */ -Object.defineProperty(WebSocket.prototype, 'CONNECTING', { - enumerable: true, - value: readyStates.indexOf('CONNECTING') -}); - -/** - * @constant {Number} OPEN - * @memberof WebSocket - */ -Object.defineProperty(WebSocket, 'OPEN', { - enumerable: true, - value: readyStates.indexOf('OPEN') -}); - -/** - * @constant {Number} OPEN - * @memberof WebSocket.prototype - */ -Object.defineProperty(WebSocket.prototype, 'OPEN', { - enumerable: true, - value: readyStates.indexOf('OPEN') -}); - -/** - * @constant {Number} CLOSING - * @memberof WebSocket - */ -Object.defineProperty(WebSocket, 'CLOSING', { - enumerable: true, - value: readyStates.indexOf('CLOSING') -}); - -/** - * @constant {Number} CLOSING - * @memberof WebSocket.prototype - */ -Object.defineProperty(WebSocket.prototype, 'CLOSING', { - enumerable: true, - value: readyStates.indexOf('CLOSING') -}); - -/** - * @constant {Number} CLOSED - * @memberof WebSocket - */ -Object.defineProperty(WebSocket, 'CLOSED', { - enumerable: true, - value: readyStates.indexOf('CLOSED') -}); - -/** - * @constant {Number} CLOSED - * @memberof WebSocket.prototype - */ -Object.defineProperty(WebSocket.prototype, 'CLOSED', { - enumerable: true, - value: readyStates.indexOf('CLOSED') -}); - -[ - 'binaryType', - 'bufferedAmount', - 'extensions', - 'protocol', - 'readyState', - 'url' -].forEach((property) => { - Object.defineProperty(WebSocket.prototype, property, { enumerable: true }); -}); - -// -// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes. -// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface -// -['open', 'error', 'close', 'message'].forEach((method) => { - Object.defineProperty(WebSocket.prototype, `on${method}`, { - enumerable: true, - get() { - const listeners = this.listeners(method); - for (let i = 0; i < listeners.length; i++) { - if (listeners[i]._listener) return listeners[i]._listener; - } - - return undefined; - }, - set(listener) { - const listeners = this.listeners(method); - for (let i = 0; i < listeners.length; i++) { - // - // Remove only the listeners added via `addEventListener`. - // - if (listeners[i]._listener) this.removeListener(method, listeners[i]); - } - this.addEventListener(method, listener); - } - }); -}); - -WebSocket.prototype.addEventListener = addEventListener; -WebSocket.prototype.removeEventListener = removeEventListener; - -var websocket = WebSocket; - -/** - * Initialize a WebSocket client. - * - * @param {WebSocket} websocket The client to initialize - * @param {(String|URL)} address The URL to which to connect - * @param {String} [protocols] The subprotocols - * @param {Object} [options] Connection options - * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable - * permessage-deflate - * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the - * handshake request - * @param {Number} [options.protocolVersion=13] Value of the - * `Sec-WebSocket-Version` header - * @param {String} [options.origin] Value of the `Origin` or - * `Sec-WebSocket-Origin` header - * @param {Number} [options.maxPayload=104857600] The maximum allowed message - * size - * @param {Boolean} [options.followRedirects=false] Whether or not to follow - * redirects - * @param {Number} [options.maxRedirects=10] The maximum number of redirects - * allowed - * @private - */ -function initAsClient(websocket, address, protocols, options) { - const opts = { - protocolVersion: protocolVersions[1], - maxPayload: 100 * 1024 * 1024, - perMessageDeflate: true, - followRedirects: false, - maxRedirects: 10, - ...options, - createConnection: undefined, - socketPath: undefined, - hostname: undefined, - protocol: undefined, - timeout: undefined, - method: undefined, - host: undefined, - path: undefined, - port: undefined - }; - - if (!protocolVersions.includes(opts.protocolVersion)) { - throw new RangeError( - `Unsupported protocol version: ${opts.protocolVersion} ` + - `(supported versions: ${protocolVersions.join(', ')})` - ); - } - - let parsedUrl; - - if (address instanceof URL) { - parsedUrl = address; - websocket._url = address.href; - } else { - parsedUrl = new URL(address); - websocket._url = address; - } - - const isUnixSocket = parsedUrl.protocol === 'ws+unix:'; - - if (!parsedUrl.host && (!isUnixSocket || !parsedUrl.pathname)) { - throw new Error(`Invalid URL: ${websocket.url}`); - } - - const isSecure = - parsedUrl.protocol === 'wss:' || parsedUrl.protocol === 'https:'; - const defaultPort = isSecure ? 443 : 80; - const key = randomBytes(16).toString('base64'); - const get = isSecure ? https.get : http.get; - let perMessageDeflate; - - opts.createConnection = isSecure ? tlsConnect : netConnect; - opts.defaultPort = opts.defaultPort || defaultPort; - opts.port = parsedUrl.port || defaultPort; - opts.host = parsedUrl.hostname.startsWith('[') - ? parsedUrl.hostname.slice(1, -1) - : parsedUrl.hostname; - opts.headers = { - 'Sec-WebSocket-Version': opts.protocolVersion, - 'Sec-WebSocket-Key': key, - Connection: 'Upgrade', - Upgrade: 'websocket', - ...opts.headers - }; - opts.path = parsedUrl.pathname + parsedUrl.search; - opts.timeout = opts.handshakeTimeout; - - if (opts.perMessageDeflate) { - perMessageDeflate = new permessageDeflate( - opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, - false, - opts.maxPayload - ); - opts.headers['Sec-WebSocket-Extensions'] = format$1({ - [permessageDeflate.extensionName]: perMessageDeflate.offer() - }); - } - if (protocols) { - opts.headers['Sec-WebSocket-Protocol'] = protocols; - } - if (opts.origin) { - if (opts.protocolVersion < 13) { - opts.headers['Sec-WebSocket-Origin'] = opts.origin; - } else { - opts.headers.Origin = opts.origin; - } - } - if (parsedUrl.username || parsedUrl.password) { - opts.auth = `${parsedUrl.username}:${parsedUrl.password}`; - } - - if (isUnixSocket) { - const parts = opts.path.split(':'); - - opts.socketPath = parts[0]; - opts.path = parts[1]; - } - - let req = (websocket._req = get(opts)); - - if (opts.timeout) { - req.on('timeout', () => { - abortHandshake$1(websocket, req, 'Opening handshake has timed out'); - }); - } - - req.on('error', (err) => { - if (req === null || req.aborted) return; - - req = websocket._req = null; - websocket._readyState = WebSocket.CLOSING; - websocket.emit('error', err); - websocket.emitClose(); - }); - - req.on('response', (res) => { - const location = res.headers.location; - const statusCode = res.statusCode; - - if ( - location && - opts.followRedirects && - statusCode >= 300 && - statusCode < 400 - ) { - if (++websocket._redirects > opts.maxRedirects) { - abortHandshake$1(websocket, req, 'Maximum redirects exceeded'); - return; - } - - req.abort(); - - const addr = new URL(location, address); - - initAsClient(websocket, addr, protocols, options); - } else if (!websocket.emit('unexpected-response', req, res)) { - abortHandshake$1( - websocket, - req, - `Unexpected server response: ${res.statusCode}` - ); - } - }); - - req.on('upgrade', (res, socket, head) => { - websocket.emit('upgrade', res); - - // - // The user may have closed the connection from a listener of the `upgrade` - // event. - // - if (websocket.readyState !== WebSocket.CONNECTING) return; - - req = websocket._req = null; - - const digest = createHash$1('sha1') - .update(key + GUID$1) - .digest('base64'); - - if (res.headers['sec-websocket-accept'] !== digest) { - abortHandshake$1(websocket, socket, 'Invalid Sec-WebSocket-Accept header'); - return; - } - - const serverProt = res.headers['sec-websocket-protocol']; - const protList = (protocols || '').split(/, */); - let protError; - - if (!protocols && serverProt) { - protError = 'Server sent a subprotocol but none was requested'; - } else if (protocols && !serverProt) { - protError = 'Server sent no subprotocol'; - } else if (serverProt && !protList.includes(serverProt)) { - protError = 'Server sent an invalid subprotocol'; - } - - if (protError) { - abortHandshake$1(websocket, socket, protError); - return; - } - - if (serverProt) websocket._protocol = serverProt; - - const secWebSocketExtensions = res.headers['sec-websocket-extensions']; - - if (secWebSocketExtensions !== undefined) { - if (!perMessageDeflate) { - const message = - 'Server sent a Sec-WebSocket-Extensions header but no extension ' + - 'was requested'; - abortHandshake$1(websocket, socket, message); - return; - } - - let extensions; - - try { - extensions = parse$1(secWebSocketExtensions); - } catch (err) { - const message = 'Invalid Sec-WebSocket-Extensions header'; - abortHandshake$1(websocket, socket, message); - return; - } - - const extensionNames = Object.keys(extensions); - - if (extensionNames.length) { - if ( - extensionNames.length !== 1 || - extensionNames[0] !== permessageDeflate.extensionName - ) { - const message = - 'Server indicated an extension that was not requested'; - abortHandshake$1(websocket, socket, message); - return; - } - - try { - perMessageDeflate.accept(extensions[permessageDeflate.extensionName]); - } catch (err) { - const message = 'Invalid Sec-WebSocket-Extensions header'; - abortHandshake$1(websocket, socket, message); - return; - } - - websocket._extensions[permessageDeflate.extensionName] = - perMessageDeflate; - } - } - - websocket.setSocket(socket, head, opts.maxPayload); - }); -} - -/** - * Create a `net.Socket` and initiate a connection. - * - * @param {Object} options Connection options - * @return {net.Socket} The newly created socket used to start the connection - * @private - */ -function netConnect(options) { - options.path = options.socketPath; - return net.connect(options); -} - -/** - * Create a `tls.TLSSocket` and initiate a connection. - * - * @param {Object} options Connection options - * @return {tls.TLSSocket} The newly created socket used to start the connection - * @private - */ -function tlsConnect(options) { - options.path = undefined; - - if (!options.servername && options.servername !== '') { - options.servername = net.isIP(options.host) ? '' : options.host; - } - - return tls.connect(options); -} - -/** - * Abort the handshake and emit an error. - * - * @param {WebSocket} websocket The WebSocket instance - * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to - * abort or the socket to destroy - * @param {String} message The error message - * @private - */ -function abortHandshake$1(websocket, stream, message) { - websocket._readyState = WebSocket.CLOSING; - - const err = new Error(message); - Error.captureStackTrace(err, abortHandshake$1); - - if (stream.setHeader) { - stream.abort(); - - if (stream.socket && !stream.socket.destroyed) { - // - // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if - // called after the request completed. See - // https://github.com/websockets/ws/issues/1869. - // - stream.socket.destroy(); - } - - stream.once('abort', websocket.emitClose.bind(websocket)); - websocket.emit('error', err); - } else { - stream.destroy(err); - stream.once('error', websocket.emit.bind(websocket, 'error')); - stream.once('close', websocket.emitClose.bind(websocket)); - } -} - -/** - * Handle cases where the `ping()`, `pong()`, or `send()` methods are called - * when the `readyState` attribute is `CLOSING` or `CLOSED`. - * - * @param {WebSocket} websocket The WebSocket instance - * @param {*} [data] The data to send - * @param {Function} [cb] Callback - * @private - */ -function sendAfterClose(websocket, data, cb) { - if (data) { - const length = toBuffer(data).length; - - // - // The `_bufferedAmount` property is used only when the peer is a client and - // the opening handshake fails. Under these circumstances, in fact, the - // `setSocket()` method is not called, so the `_socket` and `_sender` - // properties are set to `null`. - // - if (websocket._socket) websocket._sender._bufferedBytes += length; - else websocket._bufferedAmount += length; - } - - if (cb) { - const err = new Error( - `WebSocket is not open: readyState ${websocket.readyState} ` + - `(${readyStates[websocket.readyState]})` - ); - cb(err); - } -} - -/** - * The listener of the `Receiver` `'conclude'` event. - * - * @param {Number} code The status code - * @param {String} reason The reason for closing - * @private - */ -function receiverOnConclude(code, reason) { - const websocket = this[kWebSocket$1]; - - websocket._socket.removeListener('data', socketOnData); - websocket._socket.resume(); - - websocket._closeFrameReceived = true; - websocket._closeMessage = reason; - websocket._closeCode = code; - - if (code === 1005) websocket.close(); - else websocket.close(code, reason); -} - -/** - * The listener of the `Receiver` `'drain'` event. - * - * @private - */ -function receiverOnDrain() { - this[kWebSocket$1]._socket.resume(); -} - -/** - * The listener of the `Receiver` `'error'` event. - * - * @param {(RangeError|Error)} err The emitted error - * @private - */ -function receiverOnError(err) { - const websocket = this[kWebSocket$1]; - - websocket._socket.removeListener('data', socketOnData); - websocket._socket.resume(); - - websocket.close(err[kStatusCode]); - websocket.emit('error', err); -} - -/** - * The listener of the `Receiver` `'finish'` event. - * - * @private - */ -function receiverOnFinish() { - this[kWebSocket$1].emitClose(); -} - -/** - * The listener of the `Receiver` `'message'` event. - * - * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The message - * @private - */ -function receiverOnMessage(data) { - this[kWebSocket$1].emit('message', data); -} - -/** - * The listener of the `Receiver` `'ping'` event. - * - * @param {Buffer} data The data included in the ping frame - * @private - */ -function receiverOnPing(data) { - const websocket = this[kWebSocket$1]; - - websocket.pong(data, !websocket._isServer, NOOP); - websocket.emit('ping', data); -} - -/** - * The listener of the `Receiver` `'pong'` event. - * - * @param {Buffer} data The data included in the pong frame - * @private - */ -function receiverOnPong(data) { - this[kWebSocket$1].emit('pong', data); -} - -/** - * The listener of the `net.Socket` `'close'` event. - * - * @private - */ -function socketOnClose() { - const websocket = this[kWebSocket$1]; - - this.removeListener('close', socketOnClose); - this.removeListener('end', socketOnEnd); - - websocket._readyState = WebSocket.CLOSING; - - // - // The close frame might not have been received or the `'end'` event emitted, - // for example, if the socket was destroyed due to an error. Ensure that the - // `receiver` stream is closed after writing any remaining buffered data to - // it. If the readable side of the socket is in flowing mode then there is no - // buffered data as everything has been already written and `readable.read()` - // will return `null`. If instead, the socket is paused, any possible buffered - // data will be read as a single chunk and emitted synchronously in a single - // `'data'` event. - // - websocket._socket.read(); - websocket._receiver.end(); - - this.removeListener('data', socketOnData); - this[kWebSocket$1] = undefined; - - clearTimeout(websocket._closeTimer); - - if ( - websocket._receiver._writableState.finished || - websocket._receiver._writableState.errorEmitted - ) { - websocket.emitClose(); - } else { - websocket._receiver.on('error', receiverOnFinish); - websocket._receiver.on('finish', receiverOnFinish); - } -} - -/** - * The listener of the `net.Socket` `'data'` event. - * - * @param {Buffer} chunk A chunk of data - * @private - */ -function socketOnData(chunk) { - if (!this[kWebSocket$1]._receiver.write(chunk)) { - this.pause(); - } -} - -/** - * The listener of the `net.Socket` `'end'` event. - * - * @private - */ -function socketOnEnd() { - const websocket = this[kWebSocket$1]; - - websocket._readyState = WebSocket.CLOSING; - websocket._receiver.end(); - this.end(); -} - -/** - * The listener of the `net.Socket` `'error'` event. - * - * @private - */ -function socketOnError$1() { - const websocket = this[kWebSocket$1]; - - this.removeListener('error', socketOnError$1); - this.on('error', NOOP); - - if (websocket) { - websocket._readyState = WebSocket.CLOSING; - this.destroy(); - } -} - -const { Duplex } = Stream; - -/** - * Emits the `'close'` event on a stream. - * - * @param {Duplex} stream The stream. - * @private - */ -function emitClose$1(stream) { - stream.emit('close'); -} - -/** - * The listener of the `'end'` event. - * - * @private - */ -function duplexOnEnd() { - if (!this.destroyed && this._writableState.finished) { - this.destroy(); - } -} - -/** - * The listener of the `'error'` event. - * - * @param {Error} err The error - * @private - */ -function duplexOnError(err) { - this.removeListener('error', duplexOnError); - this.destroy(); - if (this.listenerCount('error') === 0) { - // Do not suppress the throwing behavior. - this.emit('error', err); - } -} - -/** - * Wraps a `WebSocket` in a duplex stream. - * - * @param {WebSocket} ws The `WebSocket` to wrap - * @param {Object} [options] The options for the `Duplex` constructor - * @return {Duplex} The duplex stream - * @public - */ -function createWebSocketStream(ws, options) { - let resumeOnReceiverDrain = true; - let terminateOnDestroy = true; - - function receiverOnDrain() { - if (resumeOnReceiverDrain) ws._socket.resume(); - } - - if (ws.readyState === ws.CONNECTING) { - ws.once('open', function open() { - ws._receiver.removeAllListeners('drain'); - ws._receiver.on('drain', receiverOnDrain); - }); - } else { - ws._receiver.removeAllListeners('drain'); - ws._receiver.on('drain', receiverOnDrain); - } - - const duplex = new Duplex({ - ...options, - autoDestroy: false, - emitClose: false, - objectMode: false, - writableObjectMode: false - }); - - ws.on('message', function message(msg) { - if (!duplex.push(msg)) { - resumeOnReceiverDrain = false; - ws._socket.pause(); - } - }); - - ws.once('error', function error(err) { - if (duplex.destroyed) return; - - // Prevent `ws.terminate()` from being called by `duplex._destroy()`. - // - // - If the `'error'` event is emitted before the `'open'` event, then - // `ws.terminate()` is a noop as no socket is assigned. - // - Otherwise, the error is re-emitted by the listener of the `'error'` - // event of the `Receiver` object. The listener already closes the - // connection by calling `ws.close()`. This allows a close frame to be - // sent to the other peer. If `ws.terminate()` is called right after this, - // then the close frame might not be sent. - terminateOnDestroy = false; - duplex.destroy(err); - }); - - ws.once('close', function close() { - if (duplex.destroyed) return; - - duplex.push(null); - }); - - duplex._destroy = function (err, callback) { - if (ws.readyState === ws.CLOSED) { - callback(err); - process.nextTick(emitClose$1, duplex); - return; - } - - let called = false; - - ws.once('error', function error(err) { - called = true; - callback(err); - }); - - ws.once('close', function close() { - if (!called) callback(err); - process.nextTick(emitClose$1, duplex); - }); - - if (terminateOnDestroy) ws.terminate(); - }; - - duplex._final = function (callback) { - if (ws.readyState === ws.CONNECTING) { - ws.once('open', function open() { - duplex._final(callback); - }); - return; - } - - // If the value of the `_socket` property is `null` it means that `ws` is a - // client websocket and the handshake failed. In fact, when this happens, a - // socket is never assigned to the websocket. Wait for the `'error'` event - // that will be emitted by the websocket. - if (ws._socket === null) return; - - if (ws._socket._writableState.finished) { - callback(); - if (duplex._readableState.endEmitted) duplex.destroy(); - } else { - ws._socket.once('finish', function finish() { - // `duplex` is not destroyed here because the `'end'` event will be - // emitted on `duplex` after this `'finish'` event. The EOF signaling - // `null` chunk is, in fact, pushed when the websocket emits `'close'`. - callback(); - }); - ws.close(); - } - }; - - duplex._read = function () { - if (ws.readyState === ws.OPEN && !resumeOnReceiverDrain) { - resumeOnReceiverDrain = true; - if (!ws._receiver._writableState.needDrain) ws._socket.resume(); - } - }; - - duplex._write = function (chunk, encoding, callback) { - if (ws.readyState === ws.CONNECTING) { - ws.once('open', function open() { - duplex._write(chunk, encoding, callback); - }); - return; - } - - ws.send(chunk, callback); - }; - - duplex.on('end', duplexOnEnd); - duplex.on('error', duplexOnError); - return duplex; -} - -var stream = createWebSocketStream; - -/* eslint no-unused-vars: ["error", { "varsIgnorePattern": "^net|tls|https$" }] */ - - - - - - -const { createHash } = require$$0$4; - - - -const { format, parse } = extension; -const { GUID, kWebSocket } = constants; - -const keyRegex = /^[+/0-9A-Za-z]{22}==$/; - -const RUNNING = 0; -const CLOSING = 1; -const CLOSED = 2; - -/** - * Class representing a WebSocket server. - * - * @extends EventEmitter - */ -class WebSocketServer extends EventEmitter { - /** - * Create a `WebSocketServer` instance. - * - * @param {Object} options Configuration options - * @param {Number} [options.backlog=511] The maximum length of the queue of - * pending connections - * @param {Boolean} [options.clientTracking=true] Specifies whether or not to - * track clients - * @param {Function} [options.handleProtocols] A hook to handle protocols - * @param {String} [options.host] The hostname where to bind the server - * @param {Number} [options.maxPayload=104857600] The maximum allowed message - * size - * @param {Boolean} [options.noServer=false] Enable no server mode - * @param {String} [options.path] Accept only connections matching this path - * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable - * permessage-deflate - * @param {Number} [options.port] The port where to bind the server - * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S - * server to use - * @param {Function} [options.verifyClient] A hook to reject connections - * @param {Function} [callback] A listener for the `listening` event - */ - constructor(options, callback) { - super(); - - options = { - maxPayload: 100 * 1024 * 1024, - perMessageDeflate: false, - handleProtocols: null, - clientTracking: true, - verifyClient: null, - noServer: false, - backlog: null, // use default (511 as implemented in net.js) - server: null, - host: null, - path: null, - port: null, - ...options - }; - - if ( - (options.port == null && !options.server && !options.noServer) || - (options.port != null && (options.server || options.noServer)) || - (options.server && options.noServer) - ) { - throw new TypeError( - 'One and only one of the "port", "server", or "noServer" options ' + - 'must be specified' - ); - } - - if (options.port != null) { - this._server = http.createServer((req, res) => { - const body = http.STATUS_CODES[426]; - - res.writeHead(426, { - 'Content-Length': body.length, - 'Content-Type': 'text/plain' - }); - res.end(body); - }); - this._server.listen( - options.port, - options.host, - options.backlog, - callback - ); - } else if (options.server) { - this._server = options.server; - } - - if (this._server) { - const emitConnection = this.emit.bind(this, 'connection'); - - this._removeListeners = addListeners(this._server, { - listening: this.emit.bind(this, 'listening'), - error: this.emit.bind(this, 'error'), - upgrade: (req, socket, head) => { - this.handleUpgrade(req, socket, head, emitConnection); - } - }); - } - - if (options.perMessageDeflate === true) options.perMessageDeflate = {}; - if (options.clientTracking) this.clients = new Set(); - this.options = options; - this._state = RUNNING; - } - - /** - * Returns the bound address, the address family name, and port of the server - * as reported by the operating system if listening on an IP socket. - * If the server is listening on a pipe or UNIX domain socket, the name is - * returned as a string. - * - * @return {(Object|String|null)} The address of the server - * @public - */ - address() { - if (this.options.noServer) { - throw new Error('The server is operating in "noServer" mode'); - } - - if (!this._server) return null; - return this._server.address(); - } - - /** - * Close the server. - * - * @param {Function} [cb] Callback - * @public - */ - close(cb) { - if (cb) this.once('close', cb); - - if (this._state === CLOSED) { - process.nextTick(emitClose, this); - return; - } - - if (this._state === CLOSING) return; - this._state = CLOSING; - - // - // Terminate all associated clients. - // - if (this.clients) { - for (const client of this.clients) client.terminate(); - } - - const server = this._server; - - if (server) { - this._removeListeners(); - this._removeListeners = this._server = null; - - // - // Close the http server if it was internally created. - // - if (this.options.port != null) { - server.close(emitClose.bind(undefined, this)); - return; - } - } - - process.nextTick(emitClose, this); - } - - /** - * See if a given request should be handled by this server instance. - * - * @param {http.IncomingMessage} req Request object to inspect - * @return {Boolean} `true` if the request is valid, else `false` - * @public - */ - shouldHandle(req) { - if (this.options.path) { - const index = req.url.indexOf('?'); - const pathname = index !== -1 ? req.url.slice(0, index) : req.url; - - if (pathname !== this.options.path) return false; - } - - return true; - } - - /** - * Handle a HTTP Upgrade request. - * - * @param {http.IncomingMessage} req The request object - * @param {(net.Socket|tls.Socket)} socket The network socket between the - * server and client - * @param {Buffer} head The first packet of the upgraded stream - * @param {Function} cb Callback - * @public - */ - handleUpgrade(req, socket, head, cb) { - socket.on('error', socketOnError); - - const key = - req.headers['sec-websocket-key'] !== undefined - ? req.headers['sec-websocket-key'].trim() - : false; - const version = +req.headers['sec-websocket-version']; - const extensions = {}; - - if ( - req.method !== 'GET' || - req.headers.upgrade.toLowerCase() !== 'websocket' || - !key || - !keyRegex.test(key) || - (version !== 8 && version !== 13) || - !this.shouldHandle(req) - ) { - return abortHandshake(socket, 400); - } - - if (this.options.perMessageDeflate) { - const perMessageDeflate = new permessageDeflate( - this.options.perMessageDeflate, - true, - this.options.maxPayload - ); - - try { - const offers = parse(req.headers['sec-websocket-extensions']); - - if (offers[permessageDeflate.extensionName]) { - perMessageDeflate.accept(offers[permessageDeflate.extensionName]); - extensions[permessageDeflate.extensionName] = perMessageDeflate; - } - } catch (err) { - return abortHandshake(socket, 400); - } - } - - // - // Optionally call external client verification handler. - // - if (this.options.verifyClient) { - const info = { - origin: - req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`], - secure: !!(req.socket.authorized || req.socket.encrypted), - req - }; - - if (this.options.verifyClient.length === 2) { - this.options.verifyClient(info, (verified, code, message, headers) => { - if (!verified) { - return abortHandshake(socket, code || 401, message, headers); - } - - this.completeUpgrade(key, extensions, req, socket, head, cb); - }); - return; - } - - if (!this.options.verifyClient(info)) return abortHandshake(socket, 401); - } - - this.completeUpgrade(key, extensions, req, socket, head, cb); - } - - /** - * Upgrade the connection to WebSocket. - * - * @param {String} key The value of the `Sec-WebSocket-Key` header - * @param {Object} extensions The accepted extensions - * @param {http.IncomingMessage} req The request object - * @param {(net.Socket|tls.Socket)} socket The network socket between the - * server and client - * @param {Buffer} head The first packet of the upgraded stream - * @param {Function} cb Callback - * @throws {Error} If called more than once with the same socket - * @private - */ - completeUpgrade(key, extensions, req, socket, head, cb) { - // - // Destroy the socket if the client has already sent a FIN packet. - // - if (!socket.readable || !socket.writable) return socket.destroy(); - - if (socket[kWebSocket]) { - throw new Error( - 'server.handleUpgrade() was called more than once with the same ' + - 'socket, possibly due to a misconfiguration' - ); - } - - if (this._state > RUNNING) return abortHandshake(socket, 503); - - const digest = createHash('sha1') - .update(key + GUID) - .digest('base64'); - - const headers = [ - 'HTTP/1.1 101 Switching Protocols', - 'Upgrade: websocket', - 'Connection: Upgrade', - `Sec-WebSocket-Accept: ${digest}` - ]; - - const ws = new websocket(null); - let protocol = req.headers['sec-websocket-protocol']; - - if (protocol) { - protocol = protocol.split(',').map(trim); - - // - // Optionally call external protocol selection handler. - // - if (this.options.handleProtocols) { - protocol = this.options.handleProtocols(protocol, req); - } else { - protocol = protocol[0]; - } - - if (protocol) { - headers.push(`Sec-WebSocket-Protocol: ${protocol}`); - ws._protocol = protocol; - } - } - - if (extensions[permessageDeflate.extensionName]) { - const params = extensions[permessageDeflate.extensionName].params; - const value = format({ - [permessageDeflate.extensionName]: [params] - }); - headers.push(`Sec-WebSocket-Extensions: ${value}`); - ws._extensions = extensions; - } - - // - // Allow external modification/inspection of handshake headers. - // - this.emit('headers', headers, req); - - socket.write(headers.concat('\r\n').join('\r\n')); - socket.removeListener('error', socketOnError); - - ws.setSocket(socket, head, this.options.maxPayload); - - if (this.clients) { - this.clients.add(ws); - ws.on('close', () => this.clients.delete(ws)); - } - - cb(ws, req); - } -} - -var websocketServer = WebSocketServer; - -/** - * Add event listeners on an `EventEmitter` using a map of - * pairs. - * - * @param {EventEmitter} server The event emitter - * @param {Object.} map The listeners to add - * @return {Function} A function that will remove the added listeners when - * called - * @private - */ -function addListeners(server, map) { - for (const event of Object.keys(map)) server.on(event, map[event]); - - return function removeListeners() { - for (const event of Object.keys(map)) { - server.removeListener(event, map[event]); - } - }; -} - -/** - * Emit a `'close'` event on an `EventEmitter`. - * - * @param {EventEmitter} server The event emitter - * @private - */ -function emitClose(server) { - server._state = CLOSED; - server.emit('close'); -} - -/** - * Handle premature socket errors. - * - * @private - */ -function socketOnError() { - this.destroy(); -} - -/** - * Close the connection when preconditions are not fulfilled. - * - * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request - * @param {Number} code The HTTP response status code - * @param {String} [message] The HTTP response body - * @param {Object} [headers] Additional HTTP response headers - * @private - */ -function abortHandshake(socket, code, message, headers) { - if (socket.writable) { - message = message || http.STATUS_CODES[code]; - headers = { - Connection: 'close', - 'Content-Type': 'text/html', - 'Content-Length': Buffer.byteLength(message), - ...headers - }; - - socket.write( - `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\r\n` + - Object.keys(headers) - .map((h) => `${h}: ${headers[h]}`) - .join('\r\n') + - '\r\n\r\n' + - message - ); - } - - socket.removeListener('error', socketOnError); - socket.destroy(); -} - -/** - * Remove whitespace characters from both ends of a string. - * - * @param {String} str The string - * @return {String} A new string representing `str` stripped of whitespace - * characters from both its beginning and end - * @private - */ -function trim(str) { - return str.trim(); -} - -websocket.createWebSocketStream = stream; -websocket.Server = websocketServer; -websocket.Receiver = receiver; -websocket.Sender = sender; - -var ws = websocket; - -var node = ws; - -var eventemitter3 = createCommonjsModule(function (module) { - -var has = Object.prototype.hasOwnProperty - , prefix = '~'; - -/** - * Constructor to create a storage for our `EE` objects. - * An `Events` instance is a plain object whose properties are event names. - * - * @constructor - * @private - */ -function Events() {} - -// -// We try to not inherit from `Object.prototype`. In some engines creating an -// instance in this way is faster than calling `Object.create(null)` directly. -// If `Object.create(null)` is not supported we prefix the event names with a -// character to make sure that the built-in object properties are not -// overridden or used as an attack vector. -// -if (Object.create) { - Events.prototype = Object.create(null); - - // - // This hack is needed because the `__proto__` property is still inherited in - // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5. - // - if (!new Events().__proto__) prefix = false; -} - -/** - * Representation of a single event listener. - * - * @param {Function} fn The listener function. - * @param {*} context The context to invoke the listener with. - * @param {Boolean} [once=false] Specify if the listener is a one-time listener. - * @constructor - * @private - */ -function EE(fn, context, once) { - this.fn = fn; - this.context = context; - this.once = once || false; -} - -/** - * Add a listener for a given event. - * - * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. - * @param {(String|Symbol)} event The event name. - * @param {Function} fn The listener function. - * @param {*} context The context to invoke the listener with. - * @param {Boolean} once Specify if the listener is a one-time listener. - * @returns {EventEmitter} - * @private - */ -function addListener(emitter, event, fn, context, once) { - if (typeof fn !== 'function') { - throw new TypeError('The listener must be a function'); - } - - var listener = new EE(fn, context || emitter, once) - , evt = prefix ? prefix + event : event; - - if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; - else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); - else emitter._events[evt] = [emitter._events[evt], listener]; - - return emitter; -} - -/** - * Clear event by name. - * - * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. - * @param {(String|Symbol)} evt The Event name. - * @private - */ -function clearEvent(emitter, evt) { - if (--emitter._eventsCount === 0) emitter._events = new Events(); - else delete emitter._events[evt]; -} - -/** - * Minimal `EventEmitter` interface that is molded against the Node.js - * `EventEmitter` interface. - * - * @constructor - * @public - */ -function EventEmitter() { - this._events = new Events(); - this._eventsCount = 0; -} - -/** - * Return an array listing the events for which the emitter has registered - * listeners. - * - * @returns {Array} - * @public - */ -EventEmitter.prototype.eventNames = function eventNames() { - var names = [] - , events - , name; - - if (this._eventsCount === 0) return names; - - for (name in (events = this._events)) { - if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); - } - - if (Object.getOwnPropertySymbols) { - return names.concat(Object.getOwnPropertySymbols(events)); - } - - return names; -}; - -/** - * Return the listeners registered for a given event. - * - * @param {(String|Symbol)} event The event name. - * @returns {Array} The registered listeners. - * @public - */ -EventEmitter.prototype.listeners = function listeners(event) { - var evt = prefix ? prefix + event : event - , handlers = this._events[evt]; - - if (!handlers) return []; - if (handlers.fn) return [handlers.fn]; - - for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) { - ee[i] = handlers[i].fn; - } - - return ee; -}; - -/** - * Return the number of listeners listening to a given event. - * - * @param {(String|Symbol)} event The event name. - * @returns {Number} The number of listeners. - * @public - */ -EventEmitter.prototype.listenerCount = function listenerCount(event) { - var evt = prefix ? prefix + event : event - , listeners = this._events[evt]; - - if (!listeners) return 0; - if (listeners.fn) return 1; - return listeners.length; -}; - -/** - * Calls each of the listeners registered for a given event. - * - * @param {(String|Symbol)} event The event name. - * @returns {Boolean} `true` if the event had listeners, else `false`. - * @public - */ -EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return false; - - var listeners = this._events[evt] - , len = arguments.length - , args - , i; - - if (listeners.fn) { - if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); - - switch (len) { - case 1: return listeners.fn.call(listeners.context), true; - case 2: return listeners.fn.call(listeners.context, a1), true; - case 3: return listeners.fn.call(listeners.context, a1, a2), true; - case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; - case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; - case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; - } - - for (i = 1, args = new Array(len -1); i < len; i++) { - args[i - 1] = arguments[i]; - } - - listeners.fn.apply(listeners.context, args); - } else { - var length = listeners.length - , j; - - for (i = 0; i < length; i++) { - if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); - - switch (len) { - case 1: listeners[i].fn.call(listeners[i].context); break; - case 2: listeners[i].fn.call(listeners[i].context, a1); break; - case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; - case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; - default: - if (!args) for (j = 1, args = new Array(len -1); j < len; j++) { - args[j - 1] = arguments[j]; - } - - listeners[i].fn.apply(listeners[i].context, args); - } - } - } - - return true; -}; - -/** - * Add a listener for a given event. - * - * @param {(String|Symbol)} event The event name. - * @param {Function} fn The listener function. - * @param {*} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @public - */ -EventEmitter.prototype.on = function on(event, fn, context) { - return addListener(this, event, fn, context, false); -}; - -/** - * Add a one-time listener for a given event. - * - * @param {(String|Symbol)} event The event name. - * @param {Function} fn The listener function. - * @param {*} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @public - */ -EventEmitter.prototype.once = function once(event, fn, context) { - return addListener(this, event, fn, context, true); -}; - -/** - * Remove the listeners of a given event. - * - * @param {(String|Symbol)} event The event name. - * @param {Function} fn Only remove the listeners that match this function. - * @param {*} context Only remove the listeners that have this context. - * @param {Boolean} once Only remove one-time listeners. - * @returns {EventEmitter} `this`. - * @public - */ -EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return this; - if (!fn) { - clearEvent(this, evt); - return this; - } - - var listeners = this._events[evt]; - - if (listeners.fn) { - if ( - listeners.fn === fn && - (!once || listeners.once) && - (!context || listeners.context === context) - ) { - clearEvent(this, evt); - } - } else { - for (var i = 0, events = [], length = listeners.length; i < length; i++) { - if ( - listeners[i].fn !== fn || - (once && !listeners[i].once) || - (context && listeners[i].context !== context) - ) { - events.push(listeners[i]); - } - } - - // - // Reset the array, or remove it completely if we have no more listeners. - // - if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; - else clearEvent(this, evt); - } - - return this; -}; - -/** - * Remove all listeners, or those of the specified event. - * - * @param {(String|Symbol)} [event] The event name. - * @returns {EventEmitter} `this`. - * @public - */ -EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { - var evt; - - if (event) { - evt = prefix ? prefix + event : event; - if (this._events[evt]) clearEvent(this, evt); - } else { - this._events = new Events(); - this._eventsCount = 0; - } - - return this; -}; - -// -// Alias methods names because people roll like that. -// -EventEmitter.prototype.off = EventEmitter.prototype.removeListener; -EventEmitter.prototype.addListener = EventEmitter.prototype.on; - -// -// Expose the prefix. -// -EventEmitter.prefixed = prefix; - -// -// Allow `EventEmitter` to be imported as module namespace. -// -EventEmitter.EventEmitter = EventEmitter; - -// -// Expose the module. -// -{ - module.exports = EventEmitter; -} -}); - -class AlpacaStream extends eventemitter3 { - constructor(params) { - super(); - this.params = params; - this.baseURLs = endpoints; - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if (!('paper' in params.credentials) && - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - switch (params.type) { - case 'account': - this.host = params.credentials.paper - ? this.baseURLs.websocket.account.replace('api.', 'paper-api.') - : this.baseURLs.websocket.account; - break; - case 'market_data': - this.host = this.baseURLs.websocket.market_data(this.params.source); - break; - default: - this.host = 'unknown'; - } - this.connection = new node(this.host); - this.connection.onopen = () => { - let message = {}; - switch (this.params.type) { - case 'account': - message = { - action: 'authenticate', - data: { - key_id: params.credentials.key, - secret_key: params.credentials.secret, - }, - }; - break; - case 'market_data': - message = Object.assign({ action: 'auth' }, params.credentials); - break; - } - this.connection.send(JSON.stringify(message)); - this.emit('open', this); - }; - this.connection.onclose = () => this.emit('close', this); - this.connection.onmessage = (event) => __awaiter(this, void 0, void 0, function* () { - let data = event.data; - if (isBlob(data)) { - data = yield event.data.text(); - } - else if (data instanceof ArrayBuffer) { - data = String.fromCharCode(...new Uint8Array(event.data)); - } - let parsed = JSON.parse(data), messages = this.params.type == 'account' ? [parsed] : parsed; - messages.forEach((message) => { - this.emit('message', message); - if ('T' in message && message.msg == 'authenticated') { - this.authenticated = true; - this.emit('authenticated', this); - } - else if ('stream' in message && message.stream == 'authorization') { - if (message.data.status == 'authorized') { - this.authenticated = true; - this.emit('authenticated', this); - } - } - if ('stream' in message && message.stream == 'trade_updates') { - this.emit('trade_updates', parse$3.trade_update(message.data)); - } - const x = { - success: 'success', - subscription: 'subscription', - error: 'error', - t: 'trade', - q: 'quote', - b: 'bar', - }; - if ('T' in message) { - this.emit(x[message.T.split('.')[0]], message); - } - }); - }); - this.connection.onerror = (err) => { - this.emit('error', err); - }; - } - getConnection() { - return this.connection; - } - subscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - this.send(JSON.stringify({ action: 'listen', data: { streams: [channel] } })); - break; - case 'market_data': - let message = { action: 'subscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - unsubscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - this.send(JSON.stringify({ action: 'unlisten', data: { streams: [channel] } })); - break; - case 'market_data': - let message = { action: 'unsubscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - send(message) { - if (!this.authenticated) { - throw new Error('not authenticated'); - } - if (typeof message == 'object') { - message = JSON.stringify(message); - } - this.connection.send(message); - return this; - } -} - -var index = { - AlpacaClient: AlpacaClient, - AlpacaStream: AlpacaStream, -}; - -export { AlpacaClient, AlpacaStream, index as default }; -//# sourceMappingURL=alpaca.bundle.js.map diff --git a/dist/alpaca.bundle.js.map b/dist/alpaca.bundle.js.map deleted file mode 100644 index 4920d02..0000000 --- a/dist/alpaca.bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"alpaca.bundle.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/has-symbols/shams.js","../node_modules/has-symbols/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object-inspect/util.inspect.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../src/parse.ts","../node_modules/unfetch/dist/unfetch.module.js","../node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js","../node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js","../node_modules/punycode/punycode.js","../node_modules/node-fetch/node_modules/tr46/index.js","../node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js","../node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js","../node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js","../node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js","../node_modules/node-fetch/lib/index.mjs","../node_modules/isomorphic-unfetch/index.js","../src/endpoints.ts","../node_modules/bottleneck/lib/parser.js","../node_modules/bottleneck/lib/DLList.js","../node_modules/bottleneck/lib/Events.js","../node_modules/bottleneck/lib/Queues.js","../node_modules/bottleneck/lib/BottleneckError.js","../node_modules/bottleneck/lib/Job.js","../node_modules/bottleneck/lib/LocalDatastore.js","../node_modules/bottleneck/lib/Scripts.js","../node_modules/bottleneck/lib/RedisConnection.js","../node_modules/bottleneck/lib/IORedisConnection.js","../node_modules/bottleneck/lib/RedisDatastore.js","../node_modules/bottleneck/lib/States.js","../node_modules/bottleneck/lib/Sync.js","../node_modules/bottleneck/lib/Group.js","../node_modules/bottleneck/lib/Batcher.js","../node_modules/bottleneck/lib/Bottleneck.js","../node_modules/bottleneck/lib/index.js","../src/client.ts","../node_modules/is-blob/index.js","../node_modules/ws/lib/constants.js","../node_modules/node-gyp-build/index.js","../node_modules/bufferutil/fallback.js","../node_modules/bufferutil/index.js","../node_modules/ws/lib/buffer-util.js","../node_modules/ws/lib/limiter.js","../node_modules/ws/lib/permessage-deflate.js","../node_modules/utf-8-validate/fallback.js","../node_modules/utf-8-validate/index.js","../node_modules/ws/lib/validation.js","../node_modules/ws/lib/receiver.js","../node_modules/ws/lib/sender.js","../node_modules/ws/lib/event-target.js","../node_modules/ws/lib/extension.js","../node_modules/ws/lib/websocket.js","../node_modules/ws/lib/stream.js","../node_modules/ws/lib/websocket-server.js","../node_modules/ws/index.js","../node_modules/isomorphic-ws/node.js","../node_modules/eventemitter3/index.js","../src/stream.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","module.exports = require('util').inspect;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\nvar toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('options \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n return String(obj);\n }\n if (typeof obj === 'bigint') {\n return String(obj) + 'n';\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = seen.slice();\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + String(obj.nodeName).toLowerCase();\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + xs.join(', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + ys.join(', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return String(s).replace(/\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase();\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = Array(opts.indent + 1).join(' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: Array(depth + 1).join(baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + xs.join(',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ((/[^\\w$]/).test(key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n if (sideChannel.has(object)) {\n throw new RangeError('Cyclic object value');\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, true);\n var valueSideChannel = getSideChannel();\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n",null,"export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.module.js.map\n","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n","function r(m){return m && m.default || m;}\nmodule.exports = global.fetch = global.fetch || (\n\ttypeof process=='undefined' ? r(require('unfetch')) : (function(url, opts) {\n\t\treturn r(require('node-fetch'))(String(url).replace(/^\\/\\//g,'https://'), opts);\n\t})\n);\n",null,"\"use strict\";\n\nexports.load = function (received, defaults, onto = {}) {\n var k, ref, v;\n\n for (k in defaults) {\n v = defaults[k];\n onto[k] = (ref = received[k]) != null ? ref : v;\n }\n\n return onto;\n};\n\nexports.overwrite = function (received, defaults, onto = {}) {\n var k, v;\n\n for (k in received) {\n v = received[k];\n\n if (defaults[k] !== void 0) {\n onto[k] = v;\n }\n }\n\n return onto;\n};","\"use strict\";\n\nvar DLList;\nDLList = class DLList {\n constructor(incr, decr) {\n this.incr = incr;\n this.decr = decr;\n this._first = null;\n this._last = null;\n this.length = 0;\n }\n\n push(value) {\n var node;\n this.length++;\n\n if (typeof this.incr === \"function\") {\n this.incr();\n }\n\n node = {\n value,\n prev: this._last,\n next: null\n };\n\n if (this._last != null) {\n this._last.next = node;\n this._last = node;\n } else {\n this._first = this._last = node;\n }\n\n return void 0;\n }\n\n shift() {\n var value;\n\n if (this._first == null) {\n return;\n } else {\n this.length--;\n\n if (typeof this.decr === \"function\") {\n this.decr();\n }\n }\n\n value = this._first.value;\n\n if ((this._first = this._first.next) != null) {\n this._first.prev = null;\n } else {\n this._last = null;\n }\n\n return value;\n }\n\n first() {\n if (this._first != null) {\n return this._first.value;\n }\n }\n\n getArray() {\n var node, ref, results;\n node = this._first;\n results = [];\n\n while (node != null) {\n results.push((ref = node, node = node.next, ref.value));\n }\n\n return results;\n }\n\n forEachShift(cb) {\n var node;\n node = this.shift();\n\n while (node != null) {\n cb(node), node = this.shift();\n }\n\n return void 0;\n }\n\n debug() {\n var node, ref, ref1, ref2, results;\n node = this._first;\n results = [];\n\n while (node != null) {\n results.push((ref = node, node = node.next, {\n value: ref.value,\n prev: (ref1 = ref.prev) != null ? ref1.value : void 0,\n next: (ref2 = ref.next) != null ? ref2.value : void 0\n }));\n }\n\n return results;\n }\n\n};\nmodule.exports = DLList;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events;\nEvents = class Events {\n constructor(instance) {\n this.instance = instance;\n this._events = {};\n\n if (this.instance.on != null || this.instance.once != null || this.instance.removeAllListeners != null) {\n throw new Error(\"An Emitter already exists for this object\");\n }\n\n this.instance.on = (name, cb) => {\n return this._addListener(name, \"many\", cb);\n };\n\n this.instance.once = (name, cb) => {\n return this._addListener(name, \"once\", cb);\n };\n\n this.instance.removeAllListeners = (name = null) => {\n if (name != null) {\n return delete this._events[name];\n } else {\n return this._events = {};\n }\n };\n }\n\n _addListener(name, status, cb) {\n var base;\n\n if ((base = this._events)[name] == null) {\n base[name] = [];\n }\n\n this._events[name].push({\n cb,\n status\n });\n\n return this.instance;\n }\n\n listenerCount(name) {\n if (this._events[name] != null) {\n return this._events[name].length;\n } else {\n return 0;\n }\n }\n\n trigger(name, ...args) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var e, promises;\n\n try {\n if (name !== \"debug\") {\n _this.trigger(\"debug\", `Event triggered: ${name}`, args);\n }\n\n if (_this._events[name] == null) {\n return;\n }\n\n _this._events[name] = _this._events[name].filter(function (listener) {\n return listener.status !== \"none\";\n });\n promises = _this._events[name].map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(function* (listener) {\n var e, returned;\n\n if (listener.status === \"none\") {\n return;\n }\n\n if (listener.status === \"once\") {\n listener.status = \"none\";\n }\n\n try {\n returned = typeof listener.cb === \"function\" ? listener.cb(...args) : void 0;\n\n if (typeof (returned != null ? returned.then : void 0) === \"function\") {\n return yield returned;\n } else {\n return returned;\n }\n } catch (error) {\n e = error;\n\n if (\"name\" !== \"error\") {\n _this.trigger(\"error\", e);\n }\n\n return null;\n }\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n return (yield Promise.all(promises)).find(function (x) {\n return x != null;\n });\n } catch (error) {\n e = error;\n\n if (\"name\" !== \"error\") {\n _this.trigger(\"error\", e);\n }\n\n return null;\n }\n })();\n }\n\n};\nmodule.exports = Events;","\"use strict\";\n\nvar DLList, Events, Queues;\nDLList = require(\"./DLList\");\nEvents = require(\"./Events\");\nQueues = class Queues {\n constructor(num_priorities) {\n var i;\n this.Events = new Events(this);\n this._length = 0;\n\n this._lists = function () {\n var j, ref, results;\n results = [];\n\n for (i = j = 1, ref = num_priorities; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n results.push(new DLList(() => {\n return this.incr();\n }, () => {\n return this.decr();\n }));\n }\n\n return results;\n }.call(this);\n }\n\n incr() {\n if (this._length++ === 0) {\n return this.Events.trigger(\"leftzero\");\n }\n }\n\n decr() {\n if (--this._length === 0) {\n return this.Events.trigger(\"zero\");\n }\n }\n\n push(job) {\n return this._lists[job.options.priority].push(job);\n }\n\n queued(priority) {\n if (priority != null) {\n return this._lists[priority].length;\n } else {\n return this._length;\n }\n }\n\n shiftAll(fn) {\n return this._lists.forEach(function (list) {\n return list.forEachShift(fn);\n });\n }\n\n getFirst(arr = this._lists) {\n var j, len, list;\n\n for (j = 0, len = arr.length; j < len; j++) {\n list = arr[j];\n\n if (list.length > 0) {\n return list;\n }\n }\n\n return [];\n }\n\n shiftLastFrom(priority) {\n return this.getFirst(this._lists.slice(priority).reverse()).shift();\n }\n\n};\nmodule.exports = Queues;","\"use strict\";\n\nvar BottleneckError;\nBottleneckError = class BottleneckError extends Error {};\nmodule.exports = BottleneckError;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, DEFAULT_PRIORITY, Job, NUM_PRIORITIES, parser;\nNUM_PRIORITIES = 10;\nDEFAULT_PRIORITY = 5;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nJob = class Job {\n constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) {\n this.task = task;\n this.args = args;\n this.rejectOnDrop = rejectOnDrop;\n this.Events = Events;\n this._states = _states;\n this.Promise = Promise;\n this.options = parser.load(options, jobDefaults);\n this.options.priority = this._sanitizePriority(this.options.priority);\n\n if (this.options.id === jobDefaults.id) {\n this.options.id = `${this.options.id}-${this._randomIndex()}`;\n }\n\n this.promise = new this.Promise((_resolve, _reject) => {\n this._resolve = _resolve;\n this._reject = _reject;\n });\n this.retryCount = 0;\n }\n\n _sanitizePriority(priority) {\n var sProperty;\n sProperty = ~~priority !== priority ? DEFAULT_PRIORITY : priority;\n\n if (sProperty < 0) {\n return 0;\n } else if (sProperty > NUM_PRIORITIES - 1) {\n return NUM_PRIORITIES - 1;\n } else {\n return sProperty;\n }\n }\n\n _randomIndex() {\n return Math.random().toString(36).slice(2);\n }\n\n doDrop({\n error,\n message = \"This job has been dropped by Bottleneck\"\n } = {}) {\n if (this._states.remove(this.options.id)) {\n if (this.rejectOnDrop) {\n this._reject(error != null ? error : new BottleneckError(message));\n }\n\n this.Events.trigger(\"dropped\", {\n args: this.args,\n options: this.options,\n task: this.task,\n promise: this.promise\n });\n return true;\n } else {\n return false;\n }\n }\n\n _assertStatus(expected) {\n var status;\n status = this._states.jobStatus(this.options.id);\n\n if (!(status === expected || expected === \"DONE\" && status === null)) {\n throw new BottleneckError(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`);\n }\n }\n\n doReceive() {\n this._states.start(this.options.id);\n\n return this.Events.trigger(\"received\", {\n args: this.args,\n options: this.options\n });\n }\n\n doQueue(reachedHWM, blocked) {\n this._assertStatus(\"RECEIVED\");\n\n this._states.next(this.options.id);\n\n return this.Events.trigger(\"queued\", {\n args: this.args,\n options: this.options,\n reachedHWM,\n blocked\n });\n }\n\n doRun() {\n if (this.retryCount === 0) {\n this._assertStatus(\"QUEUED\");\n\n this._states.next(this.options.id);\n } else {\n this._assertStatus(\"EXECUTING\");\n }\n\n return this.Events.trigger(\"scheduled\", {\n args: this.args,\n options: this.options\n });\n }\n\n doExecute(chained, clearGlobalState, run, free) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var error, eventInfo, passed;\n\n if (_this.retryCount === 0) {\n _this._assertStatus(\"RUNNING\");\n\n _this._states.next(_this.options.id);\n } else {\n _this._assertStatus(\"EXECUTING\");\n }\n\n eventInfo = {\n args: _this.args,\n options: _this.options,\n retryCount: _this.retryCount\n };\n\n _this.Events.trigger(\"executing\", eventInfo);\n\n try {\n passed = yield chained != null ? chained.schedule(_this.options, _this.task, ..._this.args) : _this.task(..._this.args);\n\n if (clearGlobalState()) {\n _this.doDone(eventInfo);\n\n yield free(_this.options, eventInfo);\n\n _this._assertStatus(\"DONE\");\n\n return _this._resolve(passed);\n }\n } catch (error1) {\n error = error1;\n return _this._onFailure(error, eventInfo, clearGlobalState, run, free);\n }\n })();\n }\n\n doExpire(clearGlobalState, run, free) {\n var error, eventInfo;\n\n if (this._states.jobStatus(this.options.id === \"RUNNING\")) {\n this._states.next(this.options.id);\n }\n\n this._assertStatus(\"EXECUTING\");\n\n eventInfo = {\n args: this.args,\n options: this.options,\n retryCount: this.retryCount\n };\n error = new BottleneckError(`This job timed out after ${this.options.expiration} ms.`);\n return this._onFailure(error, eventInfo, clearGlobalState, run, free);\n }\n\n _onFailure(error, eventInfo, clearGlobalState, run, free) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var retry, retryAfter;\n\n if (clearGlobalState()) {\n retry = yield _this2.Events.trigger(\"failed\", error, eventInfo);\n\n if (retry != null) {\n retryAfter = ~~retry;\n\n _this2.Events.trigger(\"retry\", `Retrying ${_this2.options.id} after ${retryAfter} ms`, eventInfo);\n\n _this2.retryCount++;\n return run(retryAfter);\n } else {\n _this2.doDone(eventInfo);\n\n yield free(_this2.options, eventInfo);\n\n _this2._assertStatus(\"DONE\");\n\n return _this2._reject(error);\n }\n }\n })();\n }\n\n doDone(eventInfo) {\n this._assertStatus(\"EXECUTING\");\n\n this._states.next(this.options.id);\n\n return this.Events.trigger(\"done\", eventInfo);\n }\n\n};\nmodule.exports = Job;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, LocalDatastore, parser;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nLocalDatastore = class LocalDatastore {\n constructor(instance, storeOptions, storeInstanceOptions) {\n this.instance = instance;\n this.storeOptions = storeOptions;\n this.clientId = this.instance._randomIndex();\n parser.load(storeInstanceOptions, storeInstanceOptions, this);\n this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now();\n this._running = 0;\n this._done = 0;\n this._unblockTime = 0;\n this.ready = this.Promise.resolve();\n this.clients = {};\n\n this._startHeartbeat();\n }\n\n _startHeartbeat() {\n var base;\n\n if (this.heartbeat == null && (this.storeOptions.reservoirRefreshInterval != null && this.storeOptions.reservoirRefreshAmount != null || this.storeOptions.reservoirIncreaseInterval != null && this.storeOptions.reservoirIncreaseAmount != null)) {\n return typeof (base = this.heartbeat = setInterval(() => {\n var amount, incr, maximum, now, reservoir;\n now = Date.now();\n\n if (this.storeOptions.reservoirRefreshInterval != null && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) {\n this._lastReservoirRefresh = now;\n this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount;\n\n this.instance._drainAll(this.computeCapacity());\n }\n\n if (this.storeOptions.reservoirIncreaseInterval != null && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) {\n var _this$storeOptions = this.storeOptions;\n amount = _this$storeOptions.reservoirIncreaseAmount;\n maximum = _this$storeOptions.reservoirIncreaseMaximum;\n reservoir = _this$storeOptions.reservoir;\n this._lastReservoirIncrease = now;\n incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount;\n\n if (incr > 0) {\n this.storeOptions.reservoir += incr;\n return this.instance._drainAll(this.computeCapacity());\n }\n }\n }, this.heartbeatInterval)).unref === \"function\" ? base.unref() : void 0;\n } else {\n return clearInterval(this.heartbeat);\n }\n }\n\n __publish__(message) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n yield _this.yieldLoop();\n return _this.instance.Events.trigger(\"message\", message.toString());\n })();\n }\n\n __disconnect__(flush) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n yield _this2.yieldLoop();\n clearInterval(_this2.heartbeat);\n return _this2.Promise.resolve();\n })();\n }\n\n yieldLoop(t = 0) {\n return new this.Promise(function (resolve, reject) {\n return setTimeout(resolve, t);\n });\n }\n\n computePenalty() {\n var ref;\n return (ref = this.storeOptions.penalty) != null ? ref : 15 * this.storeOptions.minTime || 5000;\n }\n\n __updateSettings__(options) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n yield _this3.yieldLoop();\n parser.overwrite(options, options, _this3.storeOptions);\n\n _this3._startHeartbeat();\n\n _this3.instance._drainAll(_this3.computeCapacity());\n\n return true;\n })();\n }\n\n __running__() {\n var _this4 = this;\n\n return _asyncToGenerator(function* () {\n yield _this4.yieldLoop();\n return _this4._running;\n })();\n }\n\n __queued__() {\n var _this5 = this;\n\n return _asyncToGenerator(function* () {\n yield _this5.yieldLoop();\n return _this5.instance.queued();\n })();\n }\n\n __done__() {\n var _this6 = this;\n\n return _asyncToGenerator(function* () {\n yield _this6.yieldLoop();\n return _this6._done;\n })();\n }\n\n __groupCheck__(time) {\n var _this7 = this;\n\n return _asyncToGenerator(function* () {\n yield _this7.yieldLoop();\n return _this7._nextRequest + _this7.timeout < time;\n })();\n }\n\n computeCapacity() {\n var maxConcurrent, reservoir;\n var _this$storeOptions2 = this.storeOptions;\n maxConcurrent = _this$storeOptions2.maxConcurrent;\n reservoir = _this$storeOptions2.reservoir;\n\n if (maxConcurrent != null && reservoir != null) {\n return Math.min(maxConcurrent - this._running, reservoir);\n } else if (maxConcurrent != null) {\n return maxConcurrent - this._running;\n } else if (reservoir != null) {\n return reservoir;\n } else {\n return null;\n }\n }\n\n conditionsCheck(weight) {\n var capacity;\n capacity = this.computeCapacity();\n return capacity == null || weight <= capacity;\n }\n\n __incrementReservoir__(incr) {\n var _this8 = this;\n\n return _asyncToGenerator(function* () {\n var reservoir;\n yield _this8.yieldLoop();\n reservoir = _this8.storeOptions.reservoir += incr;\n\n _this8.instance._drainAll(_this8.computeCapacity());\n\n return reservoir;\n })();\n }\n\n __currentReservoir__() {\n var _this9 = this;\n\n return _asyncToGenerator(function* () {\n yield _this9.yieldLoop();\n return _this9.storeOptions.reservoir;\n })();\n }\n\n isBlocked(now) {\n return this._unblockTime >= now;\n }\n\n check(weight, now) {\n return this.conditionsCheck(weight) && this._nextRequest - now <= 0;\n }\n\n __check__(weight) {\n var _this10 = this;\n\n return _asyncToGenerator(function* () {\n var now;\n yield _this10.yieldLoop();\n now = Date.now();\n return _this10.check(weight, now);\n })();\n }\n\n __register__(index, weight, expiration) {\n var _this11 = this;\n\n return _asyncToGenerator(function* () {\n var now, wait;\n yield _this11.yieldLoop();\n now = Date.now();\n\n if (_this11.conditionsCheck(weight)) {\n _this11._running += weight;\n\n if (_this11.storeOptions.reservoir != null) {\n _this11.storeOptions.reservoir -= weight;\n }\n\n wait = Math.max(_this11._nextRequest - now, 0);\n _this11._nextRequest = now + wait + _this11.storeOptions.minTime;\n return {\n success: true,\n wait,\n reservoir: _this11.storeOptions.reservoir\n };\n } else {\n return {\n success: false\n };\n }\n })();\n }\n\n strategyIsBlock() {\n return this.storeOptions.strategy === 3;\n }\n\n __submit__(queueLength, weight) {\n var _this12 = this;\n\n return _asyncToGenerator(function* () {\n var blocked, now, reachedHWM;\n yield _this12.yieldLoop();\n\n if (_this12.storeOptions.maxConcurrent != null && weight > _this12.storeOptions.maxConcurrent) {\n throw new BottleneckError(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${_this12.storeOptions.maxConcurrent}`);\n }\n\n now = Date.now();\n reachedHWM = _this12.storeOptions.highWater != null && queueLength === _this12.storeOptions.highWater && !_this12.check(weight, now);\n blocked = _this12.strategyIsBlock() && (reachedHWM || _this12.isBlocked(now));\n\n if (blocked) {\n _this12._unblockTime = now + _this12.computePenalty();\n _this12._nextRequest = _this12._unblockTime + _this12.storeOptions.minTime;\n\n _this12.instance._dropAllQueued();\n }\n\n return {\n reachedHWM,\n blocked,\n strategy: _this12.storeOptions.strategy\n };\n })();\n }\n\n __free__(index, weight) {\n var _this13 = this;\n\n return _asyncToGenerator(function* () {\n yield _this13.yieldLoop();\n _this13._running -= weight;\n _this13._done += weight;\n\n _this13.instance._drainAll(_this13.computeCapacity());\n\n return {\n running: _this13._running\n };\n })();\n }\n\n};\nmodule.exports = LocalDatastore;","\"use strict\";\n\nvar headers, lua, templates;\nlua = require(\"./lua.json\");\nheaders = {\n refs: lua[\"refs.lua\"],\n validate_keys: lua[\"validate_keys.lua\"],\n validate_client: lua[\"validate_client.lua\"],\n refresh_expiration: lua[\"refresh_expiration.lua\"],\n process_tick: lua[\"process_tick.lua\"],\n conditions_check: lua[\"conditions_check.lua\"],\n get_time: lua[\"get_time.lua\"]\n};\n\nexports.allKeys = function (id) {\n return [\n /*\n HASH\n */\n `b_${id}_settings`,\n /*\n HASH\n job index -> weight\n */\n `b_${id}_job_weights`,\n /*\n ZSET\n job index -> expiration\n */\n `b_${id}_job_expirations`,\n /*\n HASH\n job index -> client\n */\n `b_${id}_job_clients`,\n /*\n ZSET\n client -> sum running\n */\n `b_${id}_client_running`,\n /*\n HASH\n client -> num queued\n */\n `b_${id}_client_num_queued`,\n /*\n ZSET\n client -> last job registered\n */\n `b_${id}_client_last_registered`,\n /*\n ZSET\n client -> last seen\n */\n `b_${id}_client_last_seen`];\n};\n\ntemplates = {\n init: {\n keys: exports.allKeys,\n headers: [\"process_tick\"],\n refresh_expiration: true,\n code: lua[\"init.lua\"]\n },\n group_check: {\n keys: exports.allKeys,\n headers: [],\n refresh_expiration: false,\n code: lua[\"group_check.lua\"]\n },\n register_client: {\n keys: exports.allKeys,\n headers: [\"validate_keys\"],\n refresh_expiration: false,\n code: lua[\"register_client.lua\"]\n },\n blacklist_client: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\"],\n refresh_expiration: false,\n code: lua[\"blacklist_client.lua\"]\n },\n heartbeat: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"heartbeat.lua\"]\n },\n update_settings: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"update_settings.lua\"]\n },\n running: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"running.lua\"]\n },\n queued: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\"],\n refresh_expiration: false,\n code: lua[\"queued.lua\"]\n },\n done: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"done.lua\"]\n },\n check: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: false,\n code: lua[\"check.lua\"]\n },\n submit: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: true,\n code: lua[\"submit.lua\"]\n },\n register: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: true,\n code: lua[\"register.lua\"]\n },\n free: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"free.lua\"]\n },\n current_reservoir: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"current_reservoir.lua\"]\n },\n increment_reservoir: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"increment_reservoir.lua\"]\n }\n};\nexports.names = Object.keys(templates);\n\nexports.keys = function (name, id) {\n return templates[name].keys(id);\n};\n\nexports.payload = function (name) {\n var template;\n template = templates[name];\n return Array.prototype.concat(headers.refs, template.headers.map(function (h) {\n return headers[h];\n }), template.refresh_expiration ? headers.refresh_expiration : \"\", template.code).join(\"\\n\");\n};","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, RedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nScripts = require(\"./Scripts\");\n\nRedisConnection = function () {\n class RedisConnection {\n constructor(options = {}) {\n parser.load(options, this.defaults, this);\n\n if (this.Redis == null) {\n this.Redis = eval(\"require\")(\"redis\"); // Obfuscated or else Webpack/Angular will try to inline the optional redis module. To override this behavior: pass the redis module to Bottleneck as the 'Redis' option.\n }\n\n if (this.Events == null) {\n this.Events = new Events(this);\n }\n\n this.terminated = false;\n\n if (this.client == null) {\n this.client = this.Redis.createClient(this.clientOptions);\n }\n\n this.subscriber = this.client.duplicate();\n this.limiters = {};\n this.shas = {};\n this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => {\n return this._loadScripts();\n }).then(() => {\n return {\n client: this.client,\n subscriber: this.subscriber\n };\n });\n }\n\n _setup(client, sub) {\n client.setMaxListeners(0);\n return new this.Promise((resolve, reject) => {\n client.on(\"error\", e => {\n return this.Events.trigger(\"error\", e);\n });\n\n if (sub) {\n client.on(\"message\", (channel, message) => {\n var ref;\n return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0;\n });\n }\n\n if (client.ready) {\n return resolve();\n } else {\n return client.once(\"ready\", resolve);\n }\n });\n }\n\n _loadScript(name) {\n return new this.Promise((resolve, reject) => {\n var payload;\n payload = Scripts.payload(name);\n return this.client.multi([[\"script\", \"load\", payload]]).exec((err, replies) => {\n if (err != null) {\n return reject(err);\n }\n\n this.shas[name] = replies[0];\n return resolve(replies[0]);\n });\n });\n }\n\n _loadScripts() {\n return this.Promise.all(Scripts.names.map(k => {\n return this._loadScript(k);\n }));\n }\n\n __runCommand__(cmd) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n yield _this.ready;\n return new _this.Promise((resolve, reject) => {\n return _this.client.multi([cmd]).exec_atomic(function (err, replies) {\n if (err != null) {\n return reject(err);\n } else {\n return resolve(replies[0]);\n }\n });\n });\n })();\n }\n\n __addLimiter__(instance) {\n return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => {\n return new this.Promise((resolve, reject) => {\n var handler;\n\n handler = chan => {\n if (chan === channel) {\n this.subscriber.removeListener(\"subscribe\", handler);\n this.limiters[channel] = instance;\n return resolve();\n }\n };\n\n this.subscriber.on(\"subscribe\", handler);\n return this.subscriber.subscribe(channel);\n });\n }));\n }\n\n __removeLimiter__(instance) {\n var _this2 = this;\n\n return this.Promise.all([instance.channel(), instance.channel_client()].map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(function* (channel) {\n if (!_this2.terminated) {\n yield new _this2.Promise((resolve, reject) => {\n return _this2.subscriber.unsubscribe(channel, function (err, chan) {\n if (err != null) {\n return reject(err);\n }\n\n if (chan === channel) {\n return resolve();\n }\n });\n });\n }\n\n return delete _this2.limiters[channel];\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }()));\n }\n\n __scriptArgs__(name, id, args, cb) {\n var keys;\n keys = Scripts.keys(name, id);\n return [this.shas[name], keys.length].concat(keys, args, cb);\n }\n\n __scriptFn__(name) {\n return this.client.evalsha.bind(this.client);\n }\n\n disconnect(flush = true) {\n var i, k, len, ref;\n ref = Object.keys(this.limiters);\n\n for (i = 0, len = ref.length; i < len; i++) {\n k = ref[i];\n clearInterval(this.limiters[k]._store.heartbeat);\n }\n\n this.limiters = {};\n this.terminated = true;\n this.client.end(flush);\n this.subscriber.end(flush);\n return this.Promise.resolve();\n }\n\n }\n\n ;\n RedisConnection.prototype.datastore = \"redis\";\n RedisConnection.prototype.defaults = {\n Redis: null,\n clientOptions: {},\n client: null,\n Promise: Promise,\n Events: null\n };\n return RedisConnection;\n}.call(void 0);\n\nmodule.exports = RedisConnection;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, IORedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nScripts = require(\"./Scripts\");\n\nIORedisConnection = function () {\n class IORedisConnection {\n constructor(options = {}) {\n parser.load(options, this.defaults, this);\n\n if (this.Redis == null) {\n this.Redis = eval(\"require\")(\"ioredis\"); // Obfuscated or else Webpack/Angular will try to inline the optional ioredis module. To override this behavior: pass the ioredis module to Bottleneck as the 'Redis' option.\n }\n\n if (this.Events == null) {\n this.Events = new Events(this);\n }\n\n this.terminated = false;\n\n if (this.clusterNodes != null) {\n this.client = new this.Redis.Cluster(this.clusterNodes, this.clientOptions);\n this.subscriber = new this.Redis.Cluster(this.clusterNodes, this.clientOptions);\n } else if (this.client != null && this.client.duplicate == null) {\n this.subscriber = new this.Redis.Cluster(this.client.startupNodes, this.client.options);\n } else {\n if (this.client == null) {\n this.client = new this.Redis(this.clientOptions);\n }\n\n this.subscriber = this.client.duplicate();\n }\n\n this.limiters = {};\n this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => {\n this._loadScripts();\n\n return {\n client: this.client,\n subscriber: this.subscriber\n };\n });\n }\n\n _setup(client, sub) {\n client.setMaxListeners(0);\n return new this.Promise((resolve, reject) => {\n client.on(\"error\", e => {\n return this.Events.trigger(\"error\", e);\n });\n\n if (sub) {\n client.on(\"message\", (channel, message) => {\n var ref;\n return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0;\n });\n }\n\n if (client.status === \"ready\") {\n return resolve();\n } else {\n return client.once(\"ready\", resolve);\n }\n });\n }\n\n _loadScripts() {\n return Scripts.names.forEach(name => {\n return this.client.defineCommand(name, {\n lua: Scripts.payload(name)\n });\n });\n }\n\n __runCommand__(cmd) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var _, deleted;\n\n yield _this.ready;\n\n var _ref = yield _this.client.pipeline([cmd]).exec();\n\n var _ref2 = _slicedToArray(_ref, 1);\n\n var _ref2$ = _slicedToArray(_ref2[0], 2);\n\n _ = _ref2$[0];\n deleted = _ref2$[1];\n return deleted;\n })();\n }\n\n __addLimiter__(instance) {\n return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => {\n return new this.Promise((resolve, reject) => {\n return this.subscriber.subscribe(channel, () => {\n this.limiters[channel] = instance;\n return resolve();\n });\n });\n }));\n }\n\n __removeLimiter__(instance) {\n var _this2 = this;\n\n return [instance.channel(), instance.channel_client()].forEach(\n /*#__PURE__*/\n function () {\n var _ref3 = _asyncToGenerator(function* (channel) {\n if (!_this2.terminated) {\n yield _this2.subscriber.unsubscribe(channel);\n }\n\n return delete _this2.limiters[channel];\n });\n\n return function (_x) {\n return _ref3.apply(this, arguments);\n };\n }());\n }\n\n __scriptArgs__(name, id, args, cb) {\n var keys;\n keys = Scripts.keys(name, id);\n return [keys.length].concat(keys, args, cb);\n }\n\n __scriptFn__(name) {\n return this.client[name].bind(this.client);\n }\n\n disconnect(flush = true) {\n var i, k, len, ref;\n ref = Object.keys(this.limiters);\n\n for (i = 0, len = ref.length; i < len; i++) {\n k = ref[i];\n clearInterval(this.limiters[k]._store.heartbeat);\n }\n\n this.limiters = {};\n this.terminated = true;\n\n if (flush) {\n return this.Promise.all([this.client.quit(), this.subscriber.quit()]);\n } else {\n this.client.disconnect();\n this.subscriber.disconnect();\n return this.Promise.resolve();\n }\n }\n\n }\n\n ;\n IORedisConnection.prototype.datastore = \"ioredis\";\n IORedisConnection.prototype.defaults = {\n Redis: null,\n clientOptions: {},\n clusterNodes: null,\n client: null,\n Promise: Promise,\n Events: null\n };\n return IORedisConnection;\n}.call(void 0);\n\nmodule.exports = IORedisConnection;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, IORedisConnection, RedisConnection, RedisDatastore, parser;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nRedisConnection = require(\"./RedisConnection\");\nIORedisConnection = require(\"./IORedisConnection\");\nRedisDatastore = class RedisDatastore {\n constructor(instance, storeOptions, storeInstanceOptions) {\n this.instance = instance;\n this.storeOptions = storeOptions;\n this.originalId = this.instance.id;\n this.clientId = this.instance._randomIndex();\n parser.load(storeInstanceOptions, storeInstanceOptions, this);\n this.clients = {};\n this.capacityPriorityCounters = {};\n this.sharedConnection = this.connection != null;\n\n if (this.connection == null) {\n this.connection = this.instance.datastore === \"redis\" ? new RedisConnection({\n Redis: this.Redis,\n clientOptions: this.clientOptions,\n Promise: this.Promise,\n Events: this.instance.Events\n }) : this.instance.datastore === \"ioredis\" ? new IORedisConnection({\n Redis: this.Redis,\n clientOptions: this.clientOptions,\n clusterNodes: this.clusterNodes,\n Promise: this.Promise,\n Events: this.instance.Events\n }) : void 0;\n }\n\n this.instance.connection = this.connection;\n this.instance.datastore = this.connection.datastore;\n this.ready = this.connection.ready.then(clients => {\n this.clients = clients;\n return this.runScript(\"init\", this.prepareInitSettings(this.clearDatastore));\n }).then(() => {\n return this.connection.__addLimiter__(this.instance);\n }).then(() => {\n return this.runScript(\"register_client\", [this.instance.queued()]);\n }).then(() => {\n var base;\n\n if (typeof (base = this.heartbeat = setInterval(() => {\n return this.runScript(\"heartbeat\", []).catch(e => {\n return this.instance.Events.trigger(\"error\", e);\n });\n }, this.heartbeatInterval)).unref === \"function\") {\n base.unref();\n }\n\n return this.clients;\n });\n }\n\n __publish__(message) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var client;\n\n var _ref = yield _this.ready;\n\n client = _ref.client;\n return client.publish(_this.instance.channel(), `message:${message.toString()}`);\n })();\n }\n\n onMessage(channel, message) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var capacity, counter, data, drained, e, newCapacity, pos, priorityClient, rawCapacity, type;\n\n try {\n pos = message.indexOf(\":\");\n var _ref2 = [message.slice(0, pos), message.slice(pos + 1)];\n type = _ref2[0];\n data = _ref2[1];\n\n if (type === \"capacity\") {\n return yield _this2.instance._drainAll(data.length > 0 ? ~~data : void 0);\n } else if (type === \"capacity-priority\") {\n var _data$split = data.split(\":\");\n\n var _data$split2 = _slicedToArray(_data$split, 3);\n\n rawCapacity = _data$split2[0];\n priorityClient = _data$split2[1];\n counter = _data$split2[2];\n capacity = rawCapacity.length > 0 ? ~~rawCapacity : void 0;\n\n if (priorityClient === _this2.clientId) {\n drained = yield _this2.instance._drainAll(capacity);\n newCapacity = capacity != null ? capacity - (drained || 0) : \"\";\n return yield _this2.clients.client.publish(_this2.instance.channel(), `capacity-priority:${newCapacity}::${counter}`);\n } else if (priorityClient === \"\") {\n clearTimeout(_this2.capacityPriorityCounters[counter]);\n delete _this2.capacityPriorityCounters[counter];\n return _this2.instance._drainAll(capacity);\n } else {\n return _this2.capacityPriorityCounters[counter] = setTimeout(\n /*#__PURE__*/\n _asyncToGenerator(function* () {\n var e;\n\n try {\n delete _this2.capacityPriorityCounters[counter];\n yield _this2.runScript(\"blacklist_client\", [priorityClient]);\n return yield _this2.instance._drainAll(capacity);\n } catch (error) {\n e = error;\n return _this2.instance.Events.trigger(\"error\", e);\n }\n }), 1000);\n }\n } else if (type === \"message\") {\n return _this2.instance.Events.trigger(\"message\", data);\n } else if (type === \"blocked\") {\n return yield _this2.instance._dropAllQueued();\n }\n } catch (error) {\n e = error;\n return _this2.instance.Events.trigger(\"error\", e);\n }\n })();\n }\n\n __disconnect__(flush) {\n clearInterval(this.heartbeat);\n\n if (this.sharedConnection) {\n return this.connection.__removeLimiter__(this.instance);\n } else {\n return this.connection.disconnect(flush);\n }\n }\n\n runScript(name, args) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n if (!(name === \"init\" || name === \"register_client\")) {\n yield _this3.ready;\n }\n\n return new _this3.Promise((resolve, reject) => {\n var all_args, arr;\n all_args = [Date.now(), _this3.clientId].concat(args);\n\n _this3.instance.Events.trigger(\"debug\", `Calling Redis script: ${name}.lua`, all_args);\n\n arr = _this3.connection.__scriptArgs__(name, _this3.originalId, all_args, function (err, replies) {\n if (err != null) {\n return reject(err);\n }\n\n return resolve(replies);\n });\n return _this3.connection.__scriptFn__(name)(...arr);\n }).catch(e => {\n if (e.message === \"SETTINGS_KEY_NOT_FOUND\") {\n if (name === \"heartbeat\") {\n return _this3.Promise.resolve();\n } else {\n return _this3.runScript(\"init\", _this3.prepareInitSettings(false)).then(() => {\n return _this3.runScript(name, args);\n });\n }\n } else if (e.message === \"UNKNOWN_CLIENT\") {\n return _this3.runScript(\"register_client\", [_this3.instance.queued()]).then(() => {\n return _this3.runScript(name, args);\n });\n } else {\n return _this3.Promise.reject(e);\n }\n });\n })();\n }\n\n prepareArray(arr) {\n var i, len, results, x;\n results = [];\n\n for (i = 0, len = arr.length; i < len; i++) {\n x = arr[i];\n results.push(x != null ? x.toString() : \"\");\n }\n\n return results;\n }\n\n prepareObject(obj) {\n var arr, k, v;\n arr = [];\n\n for (k in obj) {\n v = obj[k];\n arr.push(k, v != null ? v.toString() : \"\");\n }\n\n return arr;\n }\n\n prepareInitSettings(clear) {\n var args;\n args = this.prepareObject(Object.assign({}, this.storeOptions, {\n id: this.originalId,\n version: this.instance.version,\n groupTimeout: this.timeout,\n clientTimeout: this.clientTimeout\n }));\n args.unshift(clear ? 1 : 0, this.instance.version);\n return args;\n }\n\n convertBool(b) {\n return !!b;\n }\n\n __updateSettings__(options) {\n var _this4 = this;\n\n return _asyncToGenerator(function* () {\n yield _this4.runScript(\"update_settings\", _this4.prepareObject(options));\n return parser.overwrite(options, options, _this4.storeOptions);\n })();\n }\n\n __running__() {\n return this.runScript(\"running\", []);\n }\n\n __queued__() {\n return this.runScript(\"queued\", []);\n }\n\n __done__() {\n return this.runScript(\"done\", []);\n }\n\n __groupCheck__() {\n var _this5 = this;\n\n return _asyncToGenerator(function* () {\n return _this5.convertBool((yield _this5.runScript(\"group_check\", [])));\n })();\n }\n\n __incrementReservoir__(incr) {\n return this.runScript(\"increment_reservoir\", [incr]);\n }\n\n __currentReservoir__() {\n return this.runScript(\"current_reservoir\", []);\n }\n\n __check__(weight) {\n var _this6 = this;\n\n return _asyncToGenerator(function* () {\n return _this6.convertBool((yield _this6.runScript(\"check\", _this6.prepareArray([weight]))));\n })();\n }\n\n __register__(index, weight, expiration) {\n var _this7 = this;\n\n return _asyncToGenerator(function* () {\n var reservoir, success, wait;\n\n var _ref4 = yield _this7.runScript(\"register\", _this7.prepareArray([index, weight, expiration]));\n\n var _ref5 = _slicedToArray(_ref4, 3);\n\n success = _ref5[0];\n wait = _ref5[1];\n reservoir = _ref5[2];\n return {\n success: _this7.convertBool(success),\n wait,\n reservoir\n };\n })();\n }\n\n __submit__(queueLength, weight) {\n var _this8 = this;\n\n return _asyncToGenerator(function* () {\n var blocked, e, maxConcurrent, overweight, reachedHWM, strategy;\n\n try {\n var _ref6 = yield _this8.runScript(\"submit\", _this8.prepareArray([queueLength, weight]));\n\n var _ref7 = _slicedToArray(_ref6, 3);\n\n reachedHWM = _ref7[0];\n blocked = _ref7[1];\n strategy = _ref7[2];\n return {\n reachedHWM: _this8.convertBool(reachedHWM),\n blocked: _this8.convertBool(blocked),\n strategy\n };\n } catch (error) {\n e = error;\n\n if (e.message.indexOf(\"OVERWEIGHT\") === 0) {\n var _e$message$split = e.message.split(\":\");\n\n var _e$message$split2 = _slicedToArray(_e$message$split, 3);\n\n overweight = _e$message$split2[0];\n weight = _e$message$split2[1];\n maxConcurrent = _e$message$split2[2];\n throw new BottleneckError(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${maxConcurrent}`);\n } else {\n throw e;\n }\n }\n })();\n }\n\n __free__(index, weight) {\n var _this9 = this;\n\n return _asyncToGenerator(function* () {\n var running;\n running = yield _this9.runScript(\"free\", _this9.prepareArray([index]));\n return {\n running\n };\n })();\n }\n\n};\nmodule.exports = RedisDatastore;","\"use strict\";\n\nvar BottleneckError, States;\nBottleneckError = require(\"./BottleneckError\");\nStates = class States {\n constructor(status1) {\n this.status = status1;\n this._jobs = {};\n this.counts = this.status.map(function () {\n return 0;\n });\n }\n\n next(id) {\n var current, next;\n current = this._jobs[id];\n next = current + 1;\n\n if (current != null && next < this.status.length) {\n this.counts[current]--;\n this.counts[next]++;\n return this._jobs[id]++;\n } else if (current != null) {\n this.counts[current]--;\n return delete this._jobs[id];\n }\n }\n\n start(id) {\n var initial;\n initial = 0;\n this._jobs[id] = initial;\n return this.counts[initial]++;\n }\n\n remove(id) {\n var current;\n current = this._jobs[id];\n\n if (current != null) {\n this.counts[current]--;\n delete this._jobs[id];\n }\n\n return current != null;\n }\n\n jobStatus(id) {\n var ref;\n return (ref = this.status[this._jobs[id]]) != null ? ref : null;\n }\n\n statusJobs(status) {\n var k, pos, ref, results, v;\n\n if (status != null) {\n pos = this.status.indexOf(status);\n\n if (pos < 0) {\n throw new BottleneckError(`status must be one of ${this.status.join(', ')}`);\n }\n\n ref = this._jobs;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n\n if (v === pos) {\n results.push(k);\n }\n }\n\n return results;\n } else {\n return Object.keys(this._jobs);\n }\n }\n\n statusCounts() {\n return this.counts.reduce((acc, v, i) => {\n acc[this.status[i]] = v;\n return acc;\n }, {});\n }\n\n};\nmodule.exports = States;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar DLList, Sync;\nDLList = require(\"./DLList\");\nSync = class Sync {\n constructor(name, Promise) {\n this.schedule = this.schedule.bind(this);\n this.name = name;\n this.Promise = Promise;\n this._running = 0;\n this._queue = new DLList();\n }\n\n isEmpty() {\n return this._queue.length === 0;\n }\n\n _tryToRun() {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var args, cb, error, reject, resolve, returned, task;\n\n if (_this._running < 1 && _this._queue.length > 0) {\n _this._running++;\n\n var _this$_queue$shift = _this._queue.shift();\n\n task = _this$_queue$shift.task;\n args = _this$_queue$shift.args;\n resolve = _this$_queue$shift.resolve;\n reject = _this$_queue$shift.reject;\n cb = yield _asyncToGenerator(function* () {\n try {\n returned = yield task(...args);\n return function () {\n return resolve(returned);\n };\n } catch (error1) {\n error = error1;\n return function () {\n return reject(error);\n };\n }\n })();\n _this._running--;\n\n _this._tryToRun();\n\n return cb();\n }\n })();\n }\n\n schedule(task, ...args) {\n var promise, reject, resolve;\n resolve = reject = null;\n promise = new this.Promise(function (_resolve, _reject) {\n resolve = _resolve;\n return reject = _reject;\n });\n\n this._queue.push({\n task,\n args,\n resolve,\n reject\n });\n\n this._tryToRun();\n\n return promise;\n }\n\n};\nmodule.exports = Sync;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, Group, IORedisConnection, RedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nRedisConnection = require(\"./RedisConnection\");\nIORedisConnection = require(\"./IORedisConnection\");\nScripts = require(\"./Scripts\");\n\nGroup = function () {\n class Group {\n constructor(limiterOptions = {}) {\n this.deleteKey = this.deleteKey.bind(this);\n this.limiterOptions = limiterOptions;\n parser.load(this.limiterOptions, this.defaults, this);\n this.Events = new Events(this);\n this.instances = {};\n this.Bottleneck = require(\"./Bottleneck\");\n\n this._startAutoCleanup();\n\n this.sharedConnection = this.connection != null;\n\n if (this.connection == null) {\n if (this.limiterOptions.datastore === \"redis\") {\n this.connection = new RedisConnection(Object.assign({}, this.limiterOptions, {\n Events: this.Events\n }));\n } else if (this.limiterOptions.datastore === \"ioredis\") {\n this.connection = new IORedisConnection(Object.assign({}, this.limiterOptions, {\n Events: this.Events\n }));\n }\n }\n }\n\n key(key = \"\") {\n var ref;\n return (ref = this.instances[key]) != null ? ref : (() => {\n var limiter;\n limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, {\n id: `${this.id}-${key}`,\n timeout: this.timeout,\n connection: this.connection\n }));\n this.Events.trigger(\"created\", limiter, key);\n return limiter;\n })();\n }\n\n deleteKey(key = \"\") {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var deleted, instance;\n instance = _this.instances[key];\n\n if (_this.connection) {\n deleted = yield _this.connection.__runCommand__(['del', ...Scripts.allKeys(`${_this.id}-${key}`)]);\n }\n\n if (instance != null) {\n delete _this.instances[key];\n yield instance.disconnect();\n }\n\n return instance != null || deleted > 0;\n })();\n }\n\n limiters() {\n var k, ref, results, v;\n ref = this.instances;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n results.push({\n key: k,\n limiter: v\n });\n }\n\n return results;\n }\n\n keys() {\n return Object.keys(this.instances);\n }\n\n clusterKeys() {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var cursor, end, found, i, k, keys, len, next, start;\n\n if (_this2.connection == null) {\n return _this2.Promise.resolve(_this2.keys());\n }\n\n keys = [];\n cursor = null;\n start = `b_${_this2.id}-`.length;\n end = \"_settings\".length;\n\n while (cursor !== 0) {\n var _ref = yield _this2.connection.__runCommand__([\"scan\", cursor != null ? cursor : 0, \"match\", `b_${_this2.id}-*_settings`, \"count\", 10000]);\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n next = _ref2[0];\n found = _ref2[1];\n cursor = ~~next;\n\n for (i = 0, len = found.length; i < len; i++) {\n k = found[i];\n keys.push(k.slice(start, -end));\n }\n }\n\n return keys;\n })();\n }\n\n _startAutoCleanup() {\n var _this3 = this;\n\n var base;\n clearInterval(this.interval);\n return typeof (base = this.interval = setInterval(\n /*#__PURE__*/\n _asyncToGenerator(function* () {\n var e, k, ref, results, time, v;\n time = Date.now();\n ref = _this3.instances;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n\n try {\n if (yield v._store.__groupCheck__(time)) {\n results.push(_this3.deleteKey(k));\n } else {\n results.push(void 0);\n }\n } catch (error) {\n e = error;\n results.push(v.Events.trigger(\"error\", e));\n }\n }\n\n return results;\n }), this.timeout / 2)).unref === \"function\" ? base.unref() : void 0;\n }\n\n updateSettings(options = {}) {\n parser.overwrite(options, this.defaults, this);\n parser.overwrite(options, options, this.limiterOptions);\n\n if (options.timeout != null) {\n return this._startAutoCleanup();\n }\n }\n\n disconnect(flush = true) {\n var ref;\n\n if (!this.sharedConnection) {\n return (ref = this.connection) != null ? ref.disconnect(flush) : void 0;\n }\n }\n\n }\n\n ;\n Group.prototype.defaults = {\n timeout: 1000 * 60 * 5,\n connection: null,\n Promise: Promise,\n id: \"group-key\"\n };\n return Group;\n}.call(void 0);\n\nmodule.exports = Group;","\"use strict\";\n\nvar Batcher, Events, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\n\nBatcher = function () {\n class Batcher {\n constructor(options = {}) {\n this.options = options;\n parser.load(this.options, this.defaults, this);\n this.Events = new Events(this);\n this._arr = [];\n\n this._resetPromise();\n\n this._lastFlush = Date.now();\n }\n\n _resetPromise() {\n return this._promise = new this.Promise((res, rej) => {\n return this._resolve = res;\n });\n }\n\n _flush() {\n clearTimeout(this._timeout);\n this._lastFlush = Date.now();\n\n this._resolve();\n\n this.Events.trigger(\"batch\", this._arr);\n this._arr = [];\n return this._resetPromise();\n }\n\n add(data) {\n var ret;\n\n this._arr.push(data);\n\n ret = this._promise;\n\n if (this._arr.length === this.maxSize) {\n this._flush();\n } else if (this.maxTime != null && this._arr.length === 1) {\n this._timeout = setTimeout(() => {\n return this._flush();\n }, this.maxTime);\n }\n\n return ret;\n }\n\n }\n\n ;\n Batcher.prototype.defaults = {\n maxTime: null,\n maxSize: null,\n Promise: Promise\n };\n return Batcher;\n}.call(void 0);\n\nmodule.exports = Batcher;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Bottleneck,\n DEFAULT_PRIORITY,\n Events,\n Job,\n LocalDatastore,\n NUM_PRIORITIES,\n Queues,\n RedisDatastore,\n States,\n Sync,\n parser,\n splice = [].splice;\nNUM_PRIORITIES = 10;\nDEFAULT_PRIORITY = 5;\nparser = require(\"./parser\");\nQueues = require(\"./Queues\");\nJob = require(\"./Job\");\nLocalDatastore = require(\"./LocalDatastore\");\nRedisDatastore = require(\"./RedisDatastore\");\nEvents = require(\"./Events\");\nStates = require(\"./States\");\nSync = require(\"./Sync\");\n\nBottleneck = function () {\n class Bottleneck {\n constructor(options = {}, ...invalid) {\n var storeInstanceOptions, storeOptions;\n this._addToQueue = this._addToQueue.bind(this);\n\n this._validateOptions(options, invalid);\n\n parser.load(options, this.instanceDefaults, this);\n this._queues = new Queues(NUM_PRIORITIES);\n this._scheduled = {};\n this._states = new States([\"RECEIVED\", \"QUEUED\", \"RUNNING\", \"EXECUTING\"].concat(this.trackDoneStatus ? [\"DONE\"] : []));\n this._limiter = null;\n this.Events = new Events(this);\n this._submitLock = new Sync(\"submit\", this.Promise);\n this._registerLock = new Sync(\"register\", this.Promise);\n storeOptions = parser.load(options, this.storeDefaults, {});\n\n this._store = function () {\n if (this.datastore === \"redis\" || this.datastore === \"ioredis\" || this.connection != null) {\n storeInstanceOptions = parser.load(options, this.redisStoreDefaults, {});\n return new RedisDatastore(this, storeOptions, storeInstanceOptions);\n } else if (this.datastore === \"local\") {\n storeInstanceOptions = parser.load(options, this.localStoreDefaults, {});\n return new LocalDatastore(this, storeOptions, storeInstanceOptions);\n } else {\n throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`);\n }\n }.call(this);\n\n this._queues.on(\"leftzero\", () => {\n var ref;\n return (ref = this._store.heartbeat) != null ? typeof ref.ref === \"function\" ? ref.ref() : void 0 : void 0;\n });\n\n this._queues.on(\"zero\", () => {\n var ref;\n return (ref = this._store.heartbeat) != null ? typeof ref.unref === \"function\" ? ref.unref() : void 0 : void 0;\n });\n }\n\n _validateOptions(options, invalid) {\n if (!(options != null && typeof options === \"object\" && invalid.length === 0)) {\n throw new Bottleneck.prototype.BottleneckError(\"Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.\");\n }\n }\n\n ready() {\n return this._store.ready;\n }\n\n clients() {\n return this._store.clients;\n }\n\n channel() {\n return `b_${this.id}`;\n }\n\n channel_client() {\n return `b_${this.id}_${this._store.clientId}`;\n }\n\n publish(message) {\n return this._store.__publish__(message);\n }\n\n disconnect(flush = true) {\n return this._store.__disconnect__(flush);\n }\n\n chain(_limiter) {\n this._limiter = _limiter;\n return this;\n }\n\n queued(priority) {\n return this._queues.queued(priority);\n }\n\n clusterQueued() {\n return this._store.__queued__();\n }\n\n empty() {\n return this.queued() === 0 && this._submitLock.isEmpty();\n }\n\n running() {\n return this._store.__running__();\n }\n\n done() {\n return this._store.__done__();\n }\n\n jobStatus(id) {\n return this._states.jobStatus(id);\n }\n\n jobs(status) {\n return this._states.statusJobs(status);\n }\n\n counts() {\n return this._states.statusCounts();\n }\n\n _randomIndex() {\n return Math.random().toString(36).slice(2);\n }\n\n check(weight = 1) {\n return this._store.__check__(weight);\n }\n\n _clearGlobalState(index) {\n if (this._scheduled[index] != null) {\n clearTimeout(this._scheduled[index].expiration);\n delete this._scheduled[index];\n return true;\n } else {\n return false;\n }\n }\n\n _free(index, job, options, eventInfo) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var e, running;\n\n try {\n var _ref = yield _this._store.__free__(index, options.weight);\n\n running = _ref.running;\n\n _this.Events.trigger(\"debug\", `Freed ${options.id}`, eventInfo);\n\n if (running === 0 && _this.empty()) {\n return _this.Events.trigger(\"idle\");\n }\n } catch (error1) {\n e = error1;\n return _this.Events.trigger(\"error\", e);\n }\n })();\n }\n\n _run(index, job, wait) {\n var clearGlobalState, free, run;\n job.doRun();\n clearGlobalState = this._clearGlobalState.bind(this, index);\n run = this._run.bind(this, index, job);\n free = this._free.bind(this, index, job);\n return this._scheduled[index] = {\n timeout: setTimeout(() => {\n return job.doExecute(this._limiter, clearGlobalState, run, free);\n }, wait),\n expiration: job.options.expiration != null ? setTimeout(function () {\n return job.doExpire(clearGlobalState, run, free);\n }, wait + job.options.expiration) : void 0,\n job: job\n };\n }\n\n _drainOne(capacity) {\n return this._registerLock.schedule(() => {\n var args, index, next, options, queue;\n\n if (this.queued() === 0) {\n return this.Promise.resolve(null);\n }\n\n queue = this._queues.getFirst();\n\n var _next2 = next = queue.first();\n\n options = _next2.options;\n args = _next2.args;\n\n if (capacity != null && options.weight > capacity) {\n return this.Promise.resolve(null);\n }\n\n this.Events.trigger(\"debug\", `Draining ${options.id}`, {\n args,\n options\n });\n index = this._randomIndex();\n return this._store.__register__(index, options.weight, options.expiration).then(({\n success,\n wait,\n reservoir\n }) => {\n var empty;\n this.Events.trigger(\"debug\", `Drained ${options.id}`, {\n success,\n args,\n options\n });\n\n if (success) {\n queue.shift();\n empty = this.empty();\n\n if (empty) {\n this.Events.trigger(\"empty\");\n }\n\n if (reservoir === 0) {\n this.Events.trigger(\"depleted\", empty);\n }\n\n this._run(index, next, wait);\n\n return this.Promise.resolve(options.weight);\n } else {\n return this.Promise.resolve(null);\n }\n });\n });\n }\n\n _drainAll(capacity, total = 0) {\n return this._drainOne(capacity).then(drained => {\n var newCapacity;\n\n if (drained != null) {\n newCapacity = capacity != null ? capacity - drained : capacity;\n return this._drainAll(newCapacity, total + drained);\n } else {\n return this.Promise.resolve(total);\n }\n }).catch(e => {\n return this.Events.trigger(\"error\", e);\n });\n }\n\n _dropAllQueued(message) {\n return this._queues.shiftAll(function (job) {\n return job.doDrop({\n message\n });\n });\n }\n\n stop(options = {}) {\n var done, waitForExecuting;\n options = parser.load(options, this.stopDefaults);\n\n waitForExecuting = at => {\n var finished;\n\n finished = () => {\n var counts;\n counts = this._states.counts;\n return counts[0] + counts[1] + counts[2] + counts[3] === at;\n };\n\n return new this.Promise((resolve, reject) => {\n if (finished()) {\n return resolve();\n } else {\n return this.on(\"done\", () => {\n if (finished()) {\n this.removeAllListeners(\"done\");\n return resolve();\n }\n });\n }\n });\n };\n\n done = options.dropWaitingJobs ? (this._run = function (index, next) {\n return next.doDrop({\n message: options.dropErrorMessage\n });\n }, this._drainOne = () => {\n return this.Promise.resolve(null);\n }, this._registerLock.schedule(() => {\n return this._submitLock.schedule(() => {\n var k, ref, v;\n ref = this._scheduled;\n\n for (k in ref) {\n v = ref[k];\n\n if (this.jobStatus(v.job.options.id) === \"RUNNING\") {\n clearTimeout(v.timeout);\n clearTimeout(v.expiration);\n v.job.doDrop({\n message: options.dropErrorMessage\n });\n }\n }\n\n this._dropAllQueued(options.dropErrorMessage);\n\n return waitForExecuting(0);\n });\n })) : this.schedule({\n priority: NUM_PRIORITIES - 1,\n weight: 0\n }, () => {\n return waitForExecuting(1);\n });\n\n this._receive = function (job) {\n return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage));\n };\n\n this.stop = () => {\n return this.Promise.reject(new Bottleneck.prototype.BottleneckError(\"stop() has already been called\"));\n };\n\n return done;\n }\n\n _addToQueue(job) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var args, blocked, error, options, reachedHWM, shifted, strategy;\n args = job.args;\n options = job.options;\n\n try {\n var _ref2 = yield _this2._store.__submit__(_this2.queued(), options.weight);\n\n reachedHWM = _ref2.reachedHWM;\n blocked = _ref2.blocked;\n strategy = _ref2.strategy;\n } catch (error1) {\n error = error1;\n\n _this2.Events.trigger(\"debug\", `Could not queue ${options.id}`, {\n args,\n options,\n error\n });\n\n job.doDrop({\n error\n });\n return false;\n }\n\n if (blocked) {\n job.doDrop();\n return true;\n } else if (reachedHWM) {\n shifted = strategy === Bottleneck.prototype.strategy.LEAK ? _this2._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? _this2._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0;\n\n if (shifted != null) {\n shifted.doDrop();\n }\n\n if (shifted == null || strategy === Bottleneck.prototype.strategy.OVERFLOW) {\n if (shifted == null) {\n job.doDrop();\n }\n\n return reachedHWM;\n }\n }\n\n job.doQueue(reachedHWM, blocked);\n\n _this2._queues.push(job);\n\n yield _this2._drainAll();\n return reachedHWM;\n })();\n }\n\n _receive(job) {\n if (this._states.jobStatus(job.options.id) != null) {\n job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`));\n\n return false;\n } else {\n job.doReceive();\n return this._submitLock.schedule(this._addToQueue, job);\n }\n }\n\n submit(...args) {\n var cb, fn, job, options, ref, ref1, task;\n\n if (typeof args[0] === \"function\") {\n var _ref3, _ref4, _splice$call, _splice$call2;\n\n ref = args, (_ref3 = ref, _ref4 = _toArray(_ref3), fn = _ref4[0], args = _ref4.slice(1), _ref3), (_splice$call = splice.call(args, -1), _splice$call2 = _slicedToArray(_splice$call, 1), cb = _splice$call2[0], _splice$call);\n options = parser.load({}, this.jobDefaults);\n } else {\n var _ref5, _ref6, _splice$call3, _splice$call4;\n\n ref1 = args, (_ref5 = ref1, _ref6 = _toArray(_ref5), options = _ref6[0], fn = _ref6[1], args = _ref6.slice(2), _ref5), (_splice$call3 = splice.call(args, -1), _splice$call4 = _slicedToArray(_splice$call3, 1), cb = _splice$call4[0], _splice$call3);\n options = parser.load(options, this.jobDefaults);\n }\n\n task = (...args) => {\n return new this.Promise(function (resolve, reject) {\n return fn(...args, function (...args) {\n return (args[0] != null ? reject : resolve)(args);\n });\n });\n };\n\n job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n job.promise.then(function (args) {\n return typeof cb === \"function\" ? cb(...args) : void 0;\n }).catch(function (args) {\n if (Array.isArray(args)) {\n return typeof cb === \"function\" ? cb(...args) : void 0;\n } else {\n return typeof cb === \"function\" ? cb(args) : void 0;\n }\n });\n return this._receive(job);\n }\n\n schedule(...args) {\n var job, options, task;\n\n if (typeof args[0] === \"function\") {\n var _args = args;\n\n var _args2 = _toArray(_args);\n\n task = _args2[0];\n args = _args2.slice(1);\n options = {};\n } else {\n var _args3 = args;\n\n var _args4 = _toArray(_args3);\n\n options = _args4[0];\n task = _args4[1];\n args = _args4.slice(2);\n }\n\n job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n\n this._receive(job);\n\n return job.promise;\n }\n\n wrap(fn) {\n var schedule, wrapped;\n schedule = this.schedule.bind(this);\n\n wrapped = function wrapped(...args) {\n return schedule(fn.bind(this), ...args);\n };\n\n wrapped.withOptions = function (options, ...args) {\n return schedule(options, fn, ...args);\n };\n\n return wrapped;\n }\n\n updateSettings(options = {}) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n yield _this3._store.__updateSettings__(parser.overwrite(options, _this3.storeDefaults));\n parser.overwrite(options, _this3.instanceDefaults, _this3);\n return _this3;\n })();\n }\n\n currentReservoir() {\n return this._store.__currentReservoir__();\n }\n\n incrementReservoir(incr = 0) {\n return this._store.__incrementReservoir__(incr);\n }\n\n }\n\n ;\n Bottleneck.default = Bottleneck;\n Bottleneck.Events = Events;\n Bottleneck.version = Bottleneck.prototype.version = require(\"./version.json\").version;\n Bottleneck.strategy = Bottleneck.prototype.strategy = {\n LEAK: 1,\n OVERFLOW: 2,\n OVERFLOW_PRIORITY: 4,\n BLOCK: 3\n };\n Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = require(\"./BottleneckError\");\n Bottleneck.Group = Bottleneck.prototype.Group = require(\"./Group\");\n Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = require(\"./RedisConnection\");\n Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = require(\"./IORedisConnection\");\n Bottleneck.Batcher = Bottleneck.prototype.Batcher = require(\"./Batcher\");\n Bottleneck.prototype.jobDefaults = {\n priority: DEFAULT_PRIORITY,\n weight: 1,\n expiration: null,\n id: \"\"\n };\n Bottleneck.prototype.storeDefaults = {\n maxConcurrent: null,\n minTime: 0,\n highWater: null,\n strategy: Bottleneck.prototype.strategy.LEAK,\n penalty: null,\n reservoir: null,\n reservoirRefreshInterval: null,\n reservoirRefreshAmount: null,\n reservoirIncreaseInterval: null,\n reservoirIncreaseAmount: null,\n reservoirIncreaseMaximum: null\n };\n Bottleneck.prototype.localStoreDefaults = {\n Promise: Promise,\n timeout: null,\n heartbeatInterval: 250\n };\n Bottleneck.prototype.redisStoreDefaults = {\n Promise: Promise,\n timeout: null,\n heartbeatInterval: 5000,\n clientTimeout: 10000,\n Redis: null,\n clientOptions: {},\n clusterNodes: null,\n clearDatastore: false,\n connection: null\n };\n Bottleneck.prototype.instanceDefaults = {\n datastore: \"local\",\n connection: null,\n id: \"\",\n rejectOnDrop: true,\n trackDoneStatus: false,\n Promise: Promise\n };\n Bottleneck.prototype.stopDefaults = {\n enqueueErrorMessage: \"This limiter has been stopped and cannot accept new jobs.\",\n dropWaitingJobs: true,\n dropErrorMessage: \"This limiter has been stopped.\"\n };\n return Bottleneck;\n}.call(void 0);\n\nmodule.exports = Bottleneck;","\"use strict\";\n\nmodule.exports = require(\"./Bottleneck\");",null,"'use strict';\n\nmodule.exports = value => {\n\tif (typeof Blob === 'undefined') {\n\t\treturn false;\n\t}\n\n\treturn value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n};\n","'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n EMPTY_BUFFER: Buffer.alloc(0),\n NOOP: () => {}\n};\n","var fs = require('fs')\nvar path = require('path')\nvar os = require('os')\n\n// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'\nvar runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line\n\nvar vars = (process.config && process.config.variables) || {}\nvar prebuildsOnly = !!process.env.PREBUILDS_ONLY\nvar abi = process.versions.modules // TODO: support old node where this is undef\nvar runtime = isElectron() ? 'electron' : 'node'\nvar arch = os.arch()\nvar platform = os.platform()\nvar libc = process.env.LIBC || (isAlpine(platform) ? 'musl' : 'glibc')\nvar armv = process.env.ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''\nvar uv = (process.versions.uv || '').split('.')[0]\n\nmodule.exports = load\n\nfunction load (dir) {\n return runtimeRequire(load.path(dir))\n}\n\nload.path = function (dir) {\n dir = path.resolve(dir || '.')\n\n try {\n var name = runtimeRequire(path.join(dir, 'package.json')).name.toUpperCase().replace(/-/g, '_')\n if (process.env[name + '_PREBUILD']) dir = process.env[name + '_PREBUILD']\n } catch (err) {}\n\n if (!prebuildsOnly) {\n var release = getFirst(path.join(dir, 'build/Release'), matchBuild)\n if (release) return release\n\n var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild)\n if (debug) return debug\n }\n\n var prebuild = resolve(dir)\n if (prebuild) return prebuild\n\n var nearby = resolve(path.dirname(process.execPath))\n if (nearby) return nearby\n\n var target = [\n 'platform=' + platform,\n 'arch=' + arch,\n 'runtime=' + runtime,\n 'abi=' + abi,\n 'uv=' + uv,\n armv ? 'armv=' + armv : '',\n 'libc=' + libc,\n 'node=' + process.versions.node,\n (process.versions && process.versions.electron) ? 'electron=' + process.versions.electron : '',\n typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line\n ].filter(Boolean).join(' ')\n\n throw new Error('No native build was found for ' + target + '\\n loaded from: ' + dir + '\\n')\n\n function resolve (dir) {\n // Find most specific flavor first\n var prebuilds = path.join(dir, 'prebuilds', platform + '-' + arch)\n var parsed = readdirSync(prebuilds).map(parseTags)\n var candidates = parsed.filter(matchTags(runtime, abi))\n var winner = candidates.sort(compareTags(runtime))[0]\n if (winner) return path.join(prebuilds, winner.file)\n }\n}\n\nfunction readdirSync (dir) {\n try {\n return fs.readdirSync(dir)\n } catch (err) {\n return []\n }\n}\n\nfunction getFirst (dir, filter) {\n var files = readdirSync(dir).filter(filter)\n return files[0] && path.join(dir, files[0])\n}\n\nfunction matchBuild (name) {\n return /\\.node$/.test(name)\n}\n\nfunction parseTags (file) {\n var arr = file.split('.')\n var extension = arr.pop()\n var tags = { file: file, specificity: 0 }\n\n if (extension !== 'node') return\n\n for (var i = 0; i < arr.length; i++) {\n var tag = arr[i]\n\n if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') {\n tags.runtime = tag\n } else if (tag === 'napi') {\n tags.napi = true\n } else if (tag.slice(0, 3) === 'abi') {\n tags.abi = tag.slice(3)\n } else if (tag.slice(0, 2) === 'uv') {\n tags.uv = tag.slice(2)\n } else if (tag.slice(0, 4) === 'armv') {\n tags.armv = tag.slice(4)\n } else if (tag === 'glibc' || tag === 'musl') {\n tags.libc = tag\n } else {\n continue\n }\n\n tags.specificity++\n }\n\n return tags\n}\n\nfunction matchTags (runtime, abi) {\n return function (tags) {\n if (tags == null) return false\n if (tags.runtime !== runtime && !runtimeAgnostic(tags)) return false\n if (tags.abi !== abi && !tags.napi) return false\n if (tags.uv && tags.uv !== uv) return false\n if (tags.armv && tags.armv !== armv) return false\n if (tags.libc && tags.libc !== libc) return false\n\n return true\n }\n}\n\nfunction runtimeAgnostic (tags) {\n return tags.runtime === 'node' && tags.napi\n}\n\nfunction compareTags (runtime) {\n // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n return function (a, b) {\n if (a.runtime !== b.runtime) {\n return a.runtime === runtime ? -1 : 1\n } else if (a.abi !== b.abi) {\n return a.abi ? -1 : 1\n } else if (a.specificity !== b.specificity) {\n return a.specificity > b.specificity ? -1 : 1\n } else {\n return 0\n }\n }\n}\n\nfunction isElectron () {\n if (process.versions && process.versions.electron) return true\n if (process.env.ELECTRON_RUN_AS_NODE) return true\n return typeof window !== 'undefined' && window.process && window.process.type === 'renderer'\n}\n\nfunction isAlpine (platform) {\n return platform === 'linux' && fs.existsSync('/etc/alpine-release')\n}\n\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags\nload.matchTags = matchTags\nload.compareTags = compareTags\n","'use strict';\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nconst mask = (source, mask, output, offset, length) => {\n for (var i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n};\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nconst unmask = (buffer, mask) => {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (var i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n};\n\nmodule.exports = { mask, unmask };\n","'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (let i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n const bu = bufferUtil.BufferUtil || bufferUtil;\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bu.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bu.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode, NOOP } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n //\n // An `'error'` event is emitted, only on Node.js < 10.0.0, if the\n // `zlib.DeflateRaw` instance is closed while data is being processed.\n // This can happen if `PerMessageDeflate#cleanup()` is called at the wrong\n // time due to an abnormal WebSocket closure.\n //\n this._deflate.on('error', NOOP);\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0x00) { // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) { // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) { // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80 || // overlong\n buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0 // surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) { // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80 || // overlong\n buf[i] === 0xf4 && buf[i + 1] > 0x8f || buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = isValidUTF8;\n","'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n","'use strict';\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\ntry {\n let isValidUTF8 = require('utf-8-validate');\n\n /* istanbul ignore if */\n if (typeof isValidUTF8 === 'object') {\n isValidUTF8 = isValidUTF8.Validation.isValidUTF8; // utf-8-validate@<3.0.0\n }\n\n module.exports = {\n isValidStatusCode,\n isValidUTF8(buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8\n };\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {String} [binaryType=nodebuffer] The type for binary data\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Boolean} [isServer=false] Specifies whether to operate in client or\n * server mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(binaryType, extensions, isServer, maxPayload) {\n super();\n\n this._binaryType = binaryType || BINARY_TYPES[0];\n this[kWebSocket] = undefined;\n this._extensions = extensions || {};\n this._isServer = !!isServer;\n this._maxPayload = maxPayload | 0;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n if (this._masked) unmask(data, this._mask);\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its lenght is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf.toString());\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, '');\n this.end();\n } else if (data.length === 1) {\n return error(\n RangeError,\n 'invalid payload length 1',\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = data.slice(2);\n\n if (!isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf.toString());\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst mask = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n */\n constructor(socket, extensions) {\n this._extensions = extensions || {};\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {Buffer} data The data to frame\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {Buffer[]} The framed data as a list of `Buffer` instances\n * @public\n */\n static frame(data, options) {\n const merge = options.mask && options.readOnly;\n let offset = options.mask ? 6 : 2;\n let payloadLength = data.length;\n\n if (data.length >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (data.length > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? data.length + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(data.length, 2);\n } else if (payloadLength === 127) {\n target.writeUInt32BE(0, 2);\n target.writeUInt32BE(data.length, 6);\n }\n\n if (!options.mask) return [target, data];\n\n randomFillSync(mask, 0, 4);\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (merge) {\n applyMask(data, mask, target, offset, data.length);\n return [target];\n }\n\n applyMask(data, mask, data, 0, data.length);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {String} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || data === '') {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n buf.write(data, 2);\n }\n\n if (this._deflating) {\n this.enqueue([this.doClose, buf, mask, cb]);\n } else {\n this.doClose(buf, mask, cb);\n }\n }\n\n /**\n * Frames and sends a close message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @private\n */\n doClose(data, mask, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x08,\n mask,\n readOnly: false\n }),\n cb\n );\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPing, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPing(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a ping message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPing(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x09,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPong, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPong(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a pong message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPong(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x0a,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const buf = toBuffer(data);\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (rsv1 && perMessageDeflate) {\n rsv1 = buf.length >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n fin: options.fin,\n rsv1,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, this._compress, opts, cb]);\n } else {\n this.dispatch(buf, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(buf, {\n fin: options.fin,\n rsv1: false,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a data message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += data.length;\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const callback = this._queue[i][4];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= data.length;\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[1].length;\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[1].length;\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n","'use strict';\n\n/**\n * Class representing an event.\n *\n * @private\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @param {Object} target A reference to the target to which the event was\n * dispatched\n */\n constructor(type, target) {\n this.target = target;\n this.type = type;\n }\n}\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n * @private\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The received data\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(data, target) {\n super('message', target);\n\n this.data = data;\n }\n}\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n * @private\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {Number} code The status code explaining why the connection is being\n * closed\n * @param {String} reason A human-readable string explaining why the\n * connection is closing\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(code, reason, target) {\n super('close', target);\n\n this.wasClean = target._closeFrameReceived && target._closeFrameSent;\n this.reason = reason;\n this.code = code;\n }\n}\n\n/**\n * Class representing an open event.\n *\n * @extends Event\n * @private\n */\nclass OpenEvent extends Event {\n /**\n * Create a new `OpenEvent`.\n *\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(target) {\n super('open', target);\n }\n}\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n * @private\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {Object} error The error that generated this event\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(error, target) {\n super('error', target);\n\n this.message = error.message;\n this.error = error;\n }\n}\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean`` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, listener, options) {\n if (typeof listener !== 'function') return;\n\n function onMessage(data) {\n listener.call(this, new MessageEvent(data, this));\n }\n\n function onClose(code, message) {\n listener.call(this, new CloseEvent(code, message, this));\n }\n\n function onError(error) {\n listener.call(this, new ErrorEvent(error, this));\n }\n\n function onOpen() {\n listener.call(this, new OpenEvent(this));\n }\n\n const method = options && options.once ? 'once' : 'on';\n\n if (type === 'message') {\n onMessage._listener = listener;\n this[method](type, onMessage);\n } else if (type === 'close') {\n onClose._listener = listener;\n this[method](type, onClose);\n } else if (type === 'error') {\n onError._listener = listener;\n this[method](type, onError);\n } else if (type === 'open') {\n onOpen._listener = listener;\n this[method](type, onOpen);\n } else {\n this[method](type, listener);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} listener The listener to remove\n * @public\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners(type);\n\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i] === listener || listeners[i]._listener === listener) {\n this.removeListener(type, listeners[i]);\n }\n }\n }\n};\n\nmodule.exports = EventTarget;\n","'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n\n if (header === undefined || header === '') return offers;\n\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 /* ' ' */ || code === 0x09 /* '\\t' */) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst { addEventListener, removeEventListener } = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = '';\n this._closeTimer = null;\n this._extensions = {};\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (Array.isArray(protocols)) {\n protocols = protocols.join(', ');\n } else if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = undefined;\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onclose(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onerror(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onopen(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onmessage(listener) {}\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Number} [maxPayload=0] The maximum allowed message size\n * @private\n */\n setSocket(socket, head, maxPayload) {\n const receiver = new Receiver(\n this.binaryType,\n this._extensions,\n this._isServer,\n maxPayload\n );\n\n this._sender = new Sender(socket, this._extensions);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {String} [data] A string explaining why the connection is closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i]._listener) return listeners[i]._listener;\n }\n\n return undefined;\n },\n set(listener) {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n //\n // Remove only the listeners added via `addEventListener`.\n //\n if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n }\n this.addEventListener(method, listener);\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {String} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n parsedUrl = new URL(address);\n websocket._url = address;\n }\n\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n\n if (!parsedUrl.host && (!isUnixSocket || !parsedUrl.pathname)) {\n throw new Error(`Invalid URL: ${websocket.url}`);\n }\n\n const isSecure =\n parsedUrl.protocol === 'wss:' || parsedUrl.protocol === 'https:';\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols) {\n opts.headers['Sec-WebSocket-Protocol'] = protocols;\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req.aborted) return;\n\n req = websocket._req = null;\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n const addr = new URL(location, address);\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n const protList = (protocols || '').split(/, */);\n let protError;\n\n if (!protocols && serverProt) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (protocols && !serverProt) {\n protError = 'Server sent no subprotocol';\n } else if (serverProt && !protList.includes(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (extensionNames.length) {\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message =\n 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n }\n\n websocket.setSocket(socket, head, opts.maxPayload);\n });\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {String} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._socket.removeListener('data', socketOnData);\n websocket._socket.resume();\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n this[kWebSocket]._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n websocket._socket.removeListener('data', socketOnData);\n websocket._socket.resume();\n\n websocket.close(err[kStatusCode]);\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The message\n * @private\n */\nfunction receiverOnMessage(data) {\n this[kWebSocket].emit('message', data);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk and emitted synchronously in a single\n // `'data'` event.\n //\n websocket._socket.read();\n websocket._receiver.end();\n\n this.removeListener('data', socketOnData);\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let resumeOnReceiverDrain = true;\n let terminateOnDestroy = true;\n\n function receiverOnDrain() {\n if (resumeOnReceiverDrain) ws._socket.resume();\n }\n\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n });\n } else {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n }\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg) {\n if (!duplex.push(msg)) {\n resumeOnReceiverDrain = false;\n ws._socket.pause();\n }\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.readyState === ws.OPEN && !resumeOnReceiverDrain) {\n resumeOnReceiverDrain = true;\n if (!ws._receiver._writableState.needDrain) ws._socket.resume();\n }\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst https = require('https');\nconst net = require('net');\nconst tls = require('tls');\nconst { createHash } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst WebSocket = require('./websocket');\nconst { format, parse } = require('./extension');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) this.clients = new Set();\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Close the server.\n *\n * @param {Function} [cb] Callback\n * @public\n */\n close(cb) {\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSED) {\n process.nextTick(emitClose, this);\n return;\n }\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n //\n // Terminate all associated clients.\n //\n if (this.clients) {\n for (const client of this.clients) client.terminate();\n }\n\n const server = this._server;\n\n if (server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // Close the http server if it was internally created.\n //\n if (this.options.port != null) {\n server.close(emitClose.bind(undefined, this));\n return;\n }\n }\n\n process.nextTick(emitClose, this);\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key =\n req.headers['sec-websocket-key'] !== undefined\n ? req.headers['sec-websocket-key'].trim()\n : false;\n const version = +req.headers['sec-websocket-version'];\n const extensions = {};\n\n if (\n req.method !== 'GET' ||\n req.headers.upgrade.toLowerCase() !== 'websocket' ||\n !key ||\n !keyRegex.test(key) ||\n (version !== 8 && version !== 13) ||\n !this.shouldHandle(req)\n ) {\n return abortHandshake(socket, 400);\n }\n\n if (this.options.perMessageDeflate) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = parse(req.headers['sec-websocket-extensions']);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Object} extensions The accepted extensions\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(key, extensions, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new WebSocket(null);\n let protocol = req.headers['sec-websocket-protocol'];\n\n if (protocol) {\n protocol = protocol.split(',').map(trim);\n\n //\n // Optionally call external protocol selection handler.\n //\n if (this.options.handleProtocols) {\n protocol = this.options.handleProtocols(protocol, req);\n } else {\n protocol = protocol[0];\n }\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, this.options.maxPayload);\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => this.clients.delete(ws));\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n if (socket.writable) {\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.write(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n }\n\n socket.removeListener('error', socketOnError);\n socket.destroy();\n}\n\n/**\n * Remove whitespace characters from both ends of a string.\n *\n * @param {String} str The string\n * @return {String} A new string representing `str` stripped of whitespace\n * characters from both its beginning and end\n * @private\n */\nfunction trim(str) {\n return str.trim();\n}\n","'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nmodule.exports = WebSocket;\n","\"use strict\";\n\nmodule.exports = require('ws');","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n",null,null],"names":["hasSymbolSham","toStr","implementation","bind","undefined","$TypeError","require$$0","hasOwn","GetIntrinsic","has","isArray","isRegExp","inspect","decode","encode","push","defaults","utils","sideChannel","getSideChannel","parse","stringify","error","toUnicode","toASCII","punycode","usm","conversions","Impl","require$$1","Blob","isBlob","URL","whatwgUrl","URL$1","fetch","global","DLList","asyncGeneratorStep","_asyncToGenerator","Events","Queues","BottleneckError","DEFAULT_PRIORITY","Job","NUM_PRIORITIES","parser","LocalDatastore","RedisConnection","Scripts","require$$2","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","IORedisConnection","RedisDatastore","require$$3","States","Sync","require$$4","require$$5","require$$6","require$$7","require$$9","require$$10","require$$11","require$$12","require$$13","isofetch","Bottleneck","qs","require","mask","unmask","kStatusCode","NOOP","Limiter","isValidUTF8","BINARY_TYPES","EMPTY_BUFFER","kWebSocket","isValidStatusCode","PerMessageDeflate","toBuffer","format","createHash","GUID","receiver","Receiver","Sender","socketOnError","abortHandshake","emitClose","WebSocket","EventEmitter"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AACnB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,E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"} \ No newline at end of file diff --git a/dist/alpaca.bundle.min.js b/dist/alpaca.bundle.min.js deleted file mode 100644 index c8b059a..0000000 --- a/dist/alpaca.bundle.min.js +++ /dev/null @@ -1 +0,0 @@ -import require$$0$3 from"util";import Stream from"stream";import http from"http";import Url from"url";import https from"https";import zlib from"zlib";import EventEmitter from"events";import net from"net";import tls from"tls";import require$$0$4 from"crypto";import fs from"fs";import path from"path";import os from"os";function __awaiter(e,a,p,t){return new(p||(p=Promise))((function(d,i){function r(e){try{s(t.next(e))}catch(e){i(e)}}function n(e){try{s(t.throw(e))}catch(e){i(e)}}function s(e){var a;e.done?d(e.value):(a=e.value,a instanceof p?a:new p((function(e){e(a)}))).then(r,n)}s((t=t.apply(e,a||[])).next())}))}var shams=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},a=Symbol("test"),p=Object(a);if("string"==typeof a)return!1;if("[object Symbol]"!==Object.prototype.toString.call(a))return!1;if("[object Symbol]"!==Object.prototype.toString.call(p))return!1;for(a in e[a]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var t=Object.getOwnPropertySymbols(e);if(1!==t.length||t[0]!==a)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,a))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var d=Object.getOwnPropertyDescriptor(e,a);if(42!==d.value||!0!==d.enumerable)return!1}return!0},origSymbol="undefined"!=typeof Symbol&&Symbol,hasSymbols$1=function(){return"function"==typeof origSymbol&&("function"==typeof Symbol&&("symbol"==typeof origSymbol("foo")&&("symbol"==typeof Symbol("bar")&&shams())))},ERROR_MESSAGE="Function.prototype.bind called on incompatible ",slice=Array.prototype.slice,toStr$1=Object.prototype.toString,funcType="[object Function]",implementation$1=function(e){var a=this;if("function"!=typeof a||toStr$1.call(a)!==funcType)throw new TypeError(ERROR_MESSAGE+a);for(var p,t=slice.call(arguments,1),d=function(){if(this instanceof p){var d=a.apply(this,t.concat(slice.call(arguments)));return Object(d)===d?d:this}return a.apply(e,t.concat(slice.call(arguments)))},i=Math.max(0,a.length-t.length),r=[],n=0;n1&&"boolean"!=typeof a)throw new $TypeError$1('"allowMissing" argument must be a boolean');var p=stringToPath(e),t=p.length>0?p[0]:"",d=getBaseIntrinsic("%"+t+"%",a),i=d.name,r=d.value,n=!1,s=d.alias;s&&(t=s[0],$spliceApply(p,$concat([0,1],s)));for(var o=1,l=!0;o=p.length){var h=$gOPD(r,m);r=(l=!!h)&&"get"in h&&!("originalValue"in h.get)?h.get:r[m]}else l=src(r,m),r=r[m];l&&!n&&(INTRINSICS[i]=r)}}return r},commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getAugmentedNamespace(e){if(e.__esModule)return e;var a=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(p){var t=Object.getOwnPropertyDescriptor(e,p);Object.defineProperty(a,p,t.get?t:{enumerable:!0,get:function(){return e[p]}})})),a}function createCommonjsModule(e){var a={exports:{}};return e(a,a.exports),a.exports}function commonjsRequire(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.')}var callBind=createCommonjsModule((function(e){var a=getIntrinsic("%Function.prototype.apply%"),p=getIntrinsic("%Function.prototype.call%"),t=getIntrinsic("%Reflect.apply%",!0)||functionBind.call(p,a),d=getIntrinsic("%Object.getOwnPropertyDescriptor%",!0),i=getIntrinsic("%Object.defineProperty%",!0),r=getIntrinsic("%Math.max%");if(i)try{i({},"a",{value:1})}catch(e){i=null}e.exports=function(e){var a=t(functionBind,p,arguments);if(d&&i){var n=d(a,"length");n.configurable&&i(a,"length",{value:1+r(0,e.length-(arguments.length-1))})}return a};var n=function(){return t(functionBind,a,arguments)};i?i(e.exports,"apply",{value:n}):e.exports.apply=n})),$indexOf=callBind(getIntrinsic("String.prototype.indexOf")),callBound=function(e,a){var p=getIntrinsic(e,!!a);return"function"==typeof p&&$indexOf(e,".prototype.")>-1?callBind(p):p},util_inspect=require$$0$3.inspect,hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,hasWeakMap="function"==typeof WeakMap&&WeakMap.prototype,weakMapHas=hasWeakMap?WeakMap.prototype.has:null,hasWeakSet="function"==typeof WeakSet&&WeakSet.prototype,weakSetHas=hasWeakSet?WeakSet.prototype.has:null,hasWeakRef="function"==typeof WeakRef&&WeakRef.prototype,weakRefDeref=hasWeakRef?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,match=String.prototype.match,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),inspectCustom=util_inspect.custom,inspectSymbol=inspectCustom&&isSymbol(inspectCustom)?inspectCustom:null,toStringTag="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null,objectInspect=function e(a,p,t,d){var i=p||{};if(has$3(i,"quoteStyle")&&"single"!==i.quoteStyle&&"double"!==i.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has$3(i,"maxStringLength")&&("number"==typeof i.maxStringLength?i.maxStringLength<0&&i.maxStringLength!==1/0:null!==i.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var r=!has$3(i,"customInspect")||i.customInspect;if("boolean"!=typeof r&&"symbol"!==r)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has$3(i,"indent")&&null!==i.indent&&"\t"!==i.indent&&!(parseInt(i.indent,10)===i.indent&&i.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===a)return"undefined";if(null===a)return"null";if("boolean"==typeof a)return a?"true":"false";if("string"==typeof a)return inspectString(a,i);if("number"==typeof a)return 0===a?1/0/a>0?"0":"-0":String(a);if("bigint"==typeof a)return String(a)+"n";var n=void 0===i.depth?5:i.depth;if(void 0===t&&(t=0),t>=n&&n>0&&"object"==typeof a)return isArray$3(a)?"[Array]":"[Object]";var s=getIndent(i,t);if(void 0===d)d=[];else if(indexOf(d,a)>=0)return"[Circular]";function o(a,p,r){if(p&&(d=d.slice()).push(p),r){var n={depth:i.depth};return has$3(i,"quoteStyle")&&(n.quoteStyle=i.quoteStyle),e(a,n,t+1,d)}return e(a,i,t+1,d)}if("function"==typeof a){var l=nameOf(a),m=arrObjKeys(a,o);return"[Function"+(l?": "+l:" (anonymous)")+"]"+(m.length>0?" { "+m.join(", ")+" }":"")}if(isSymbol(a)){var u=hasShammedSymbols?String(a).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(a);return"object"!=typeof a||hasShammedSymbols?u:markBoxed(u)}if(isElement(a)){for(var c="<"+String(a.nodeName).toLowerCase(),h=a.attributes||[],v=0;v"}if(isArray$3(a)){if(0===a.length)return"[]";var f=arrObjKeys(a,o);return s&&!singleLineValues(f)?"["+indentedJoin(f,s)+"]":"[ "+f.join(", ")+" ]"}if(isError(a)){var _=arrObjKeys(a,o);return 0===_.length?"["+String(a)+"]":"{ ["+String(a)+"] "+_.join(", ")+" }"}if("object"==typeof a&&r){if(inspectSymbol&&"function"==typeof a[inspectSymbol])return a[inspectSymbol]();if("symbol"!==r&&"function"==typeof a.inspect)return a.inspect()}if(isMap(a)){var y=[];return mapForEach.call(a,(function(e,p){y.push(o(p,a,!0)+" => "+o(e,a))})),collectionOf("Map",mapSize.call(a),y,s)}if(isSet(a)){var w=[];return setForEach.call(a,(function(e){w.push(o(e,a))})),collectionOf("Set",setSize.call(a),w,s)}if(isWeakMap(a))return weakCollectionOf("WeakMap");if(isWeakSet(a))return weakCollectionOf("WeakSet");if(isWeakRef(a))return weakCollectionOf("WeakRef");if(isNumber(a))return markBoxed(o(Number(a)));if(isBigInt(a))return markBoxed(o(bigIntValueOf.call(a)));if(isBoolean(a))return markBoxed(booleanValueOf.call(a));if(isString(a))return markBoxed(o(String(a)));if(!isDate(a)&&!isRegExp$1(a)){var g=arrObjKeys(a,o),b=gPO?gPO(a)===Object.prototype:a instanceof Object||a.constructor===Object,S=a instanceof Object?"":"null prototype",N=!b&&toStringTag&&Object(a)===a&&toStringTag in a?toStr(a).slice(8,-1):S?"Object":"",T=(b||"function"!=typeof a.constructor?"":a.constructor.name?a.constructor.name+" ":"")+(N||S?"["+[].concat(N||[],S||[]).join(": ")+"] ":"");return 0===g.length?T+"{}":s?T+"{"+indentedJoin(g,s)+"}":T+"{ "+g.join(", ")+" }"}return String(a)};function wrapQuotes(e,a,p){var t="double"===(p.quoteStyle||a)?'"':"'";return t+e+t}function quote(e){return String(e).replace(/"/g,""")}function isArray$3(e){return!("[object Array]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isDate(e){return!("[object Date]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isRegExp$1(e){return!("[object RegExp]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isError(e){return!("[object Error]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isString(e){return!("[object String]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isNumber(e){return!("[object Number]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isBoolean(e){return!("[object Boolean]"!==toStr(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isSymbol(e){if(hasShammedSymbols)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!symToString)return!1;try{return symToString.call(e),!0}catch(e){}return!1}function isBigInt(e){if(!e||"object"!=typeof e||!bigIntValueOf)return!1;try{return bigIntValueOf.call(e),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(e){return e in this};function has$3(e,a){return hasOwn.call(e,a)}function toStr(e){return objectToString.call(e)}function nameOf(e){if(e.name)return e.name;var a=match.call(functionToString.call(e),/^function\s*([\w$]+)/);return a?a[1]:null}function indexOf(e,a){if(e.indexOf)return e.indexOf(a);for(var p=0,t=e.length;pa.maxStringLength){var p=e.length-a.maxStringLength,t="... "+p+" more character"+(p>1?"s":"");return inspectString(e.slice(0,a.maxStringLength),a)+t}return wrapQuotes(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,lowbyte),"single",a)}function lowbyte(e){var a=e.charCodeAt(0),p={8:"b",9:"t",10:"n",12:"f",13:"r"}[a];return p?"\\"+p:"\\x"+(a<16?"0":"")+a.toString(16).toUpperCase()}function markBoxed(e){return"Object("+e+")"}function weakCollectionOf(e){return e+" { ? }"}function collectionOf(e,a,p,t){return e+" ("+a+") {"+(t?indentedJoin(p,t):p.join(", "))+"}"}function singleLineValues(e){for(var a=0;a=0)return!1;return!0}function getIndent(e,a){var p;if("\t"===e.indent)p="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;p=Array(e.indent+1).join(" ")}return{base:p,prev:Array(a+1).join(p)}}function indentedJoin(e,a){if(0===e.length)return"";var p="\n"+a.prev+a.base;return p+e.join(","+p)+"\n"+a.prev}function arrObjKeys(e,a){var p=isArray$3(e),t=[];if(p){t.length=e.length;for(var d=0;d1;){var a=e.pop(),p=a.obj[a.prop];if(isArray$2(p)){for(var t=[],d=0;d=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||d===formats.RFC1738&&(40===s||41===s)?r+=i.charAt(n):s<128?r+=hexTable[s]:s<2048?r+=hexTable[192|s>>6]+hexTable[128|63&s]:s<55296||s>=57344?r+=hexTable[224|s>>12]+hexTable[128|s>>6&63]+hexTable[128|63&s]:(n+=1,s=65536+((1023&s)<<10|1023&i.charCodeAt(n)),r+=hexTable[240|s>>18]+hexTable[128|s>>12&63]+hexTable[128|s>>6&63]+hexTable[128|63&s])}return r},compact=function(e){for(var a=[{obj:{o:e},prop:"o"}],p=[],t=0;t0?f.join(",")||null:void 0}];else if(isArray$1(n))_=n;else{var w=Object.keys(f);_=s?w.sort(s):w}for(var g=0;g<_.length;++g){var b=_[g],S="object"==typeof b&&void 0!==b.value?b.value:f[b];if(!i||null!==S){var N=isArray$1(f)?"function"==typeof t?t(p,b):p:p+(o?"."+b:"["+b+"]");v.set(a,!0);var T=sideChannel();pushToArray(y,e(S,N,t,d,i,r,n,s,o,l,m,u,c,h,T))}}return y},normalizeStringifyOptions=function(e){if(!e)return defaults$1;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var a=e.charset||defaults$1.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var p=formats.default;if(void 0!==e.format){if(!has$1.call(formats.formatters,e.format))throw new TypeError("Unknown format option provided.");p=e.format}var t=formats.formatters[p],d=defaults$1.filter;return("function"==typeof e.filter||isArray$1(e.filter))&&(d=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:defaults$1.addQueryPrefix,allowDots:void 0===e.allowDots?defaults$1.allowDots:!!e.allowDots,charset:a,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:defaults$1.charsetSentinel,delimiter:void 0===e.delimiter?defaults$1.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:defaults$1.encode,encoder:"function"==typeof e.encoder?e.encoder:defaults$1.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:defaults$1.encodeValuesOnly,filter:d,format:p,formatter:t,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:defaults$1.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:defaults$1.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:defaults$1.strictNullHandling}},stringify_1=function(e,a){var p,t=e,d=normalizeStringifyOptions(a);"function"==typeof d.filter?t=(0,d.filter)("",t):isArray$1(d.filter)&&(p=d.filter);var i,r=[];if("object"!=typeof t||null===t)return"";i=a&&a.arrayFormat in arrayPrefixGenerators?a.arrayFormat:a&&"indices"in a?a.indices?"indices":"repeat":"indices";var n=arrayPrefixGenerators[i];p||(p=Object.keys(t)),d.sort&&p.sort(d.sort);for(var s=sideChannel(),o=0;o0?u+m:""},has=Object.prototype.hasOwnProperty,isArray=Array.isArray,defaults={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:utils$1.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},interpretNumericEntities=function(e){return e.replace(/&#(\d+);/g,(function(e,a){return String.fromCharCode(parseInt(a,10))}))},parseArrayValue=function(e,a){return e&&"string"==typeof e&&a.comma&&e.indexOf(",")>-1?e.split(","):e},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function(e,a){var p,t={},d=a.ignoreQueryPrefix?e.replace(/^\?/,""):e,i=a.parameterLimit===1/0?void 0:a.parameterLimit,r=d.split(a.delimiter,i),n=-1,s=a.charset;if(a.charsetSentinel)for(p=0;p-1&&(l=isArray(l)?[l]:l),has.call(t,o)?t[o]=utils$1.combine(t[o],l):t[o]=l}return t},parseObject=function(e,a,p,t){for(var d=t?a:parseArrayValue(a,p),i=e.length-1;i>=0;--i){var r,n=e[i];if("[]"===n&&p.parseArrays)r=[].concat(d);else{r=p.plainObjects?Object.create(null):{};var s="["===n.charAt(0)&&"]"===n.charAt(n.length-1)?n.slice(1,-1):n,o=parseInt(s,10);p.parseArrays||""!==s?!isNaN(o)&&n!==s&&String(o)===s&&o>=0&&p.parseArrays&&o<=p.arrayLimit?(r=[])[o]=d:r[s]=d:r={0:d}}d=r}return d},parseKeys=function(e,a,p,t){if(e){var d=p.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,i=/(\[[^[\]]*])/g,r=p.depth>0&&/(\[[^[\]]*])/.exec(d),n=r?d.slice(0,r.index):d,s=[];if(n){if(!p.plainObjects&&has.call(Object.prototype,n)&&!p.allowPrototypes)return;s.push(n)}for(var o=0;p.depth>0&&null!==(r=i.exec(d))&&oe,buying_power:number(e.buying_power),regt_buying_power:number(e.regt_buying_power),daytrading_buying_power:number(e.daytrading_buying_power),cash:number(e.cash),created_at:new Date(e.created_at),portfolio_value:number(e.portfolio_value),multiplier:number(e.multiplier),equity:number(e.equity),last_equity:number(e.last_equity),long_market_value:number(e.long_market_value),short_market_value:number(e.short_market_value),initial_margin:number(e.initial_margin),maintenance_margin:number(e.maintenance_margin),last_maintenance_margin:number(e.last_maintenance_margin),sma:number(e.sma),status:e.status})}catch(e){throw new Error(`Account parsing failed. ${e.message}`)}}function clock(e){if(e)try{return{raw:()=>e,timestamp:new Date(e.timestamp),is_open:e.is_open,next_open:new Date(e.next_open),next_close:new Date(e.next_close)}}catch(e){throw new Error(`Order parsing failed. ${e.message}`)}}function latestTrade(e){if(e)try{return Object.assign(Object.assign({},e),{raw:()=>e,trade:Object.assign(Object.assign({},e.trade),{t:new Date(e.trade.t)})})}catch(e){throw new Error(`Latest trade parsing failed. ${e.message}`)}}function order(e){if(e)try{return Object.assign(Object.assign({},e),{raw:()=>e,created_at:new Date(e.created_at),updated_at:new Date(e.updated_at),submitted_at:new Date(e.submitted_at),filled_at:new Date(e.filled_at),expired_at:new Date(e.expired_at),canceled_at:new Date(e.canceled_at),failed_at:new Date(e.failed_at),replaced_at:new Date(e.replaced_at),qty:number(e.qty),filled_qty:number(e.filled_qty),type:e.type,side:e.side,time_in_force:e.time_in_force,limit_price:number(e.limit_price),stop_price:number(e.stop_price),filled_avg_price:number(e.filled_avg_price),status:e.status,legs:orders(e.legs),trail_price:number(e.trail_price),trail_percent:number(e.trail_percent),hwm:number(e.hwm),order_class:e.order_class})}catch(e){throw new Error(`Order parsing failed. ${e.message}`)}}function orders(e){return e?e.map((e=>order(e))):void 0}function canceled_order(e){if(!e)return;let a=e.body;delete e.body;try{return Object.assign(Object.assign({},e),{order:Object.assign(Object.assign({},a),{raw:()=>a,created_at:new Date(a.created_at),updated_at:new Date(a.updated_at),submitted_at:new Date(a.submitted_at),filled_at:new Date(a.filled_at),expired_at:new Date(a.expired_at),canceled_at:new Date(a.canceled_at),failed_at:new Date(a.failed_at),replaced_at:new Date(a.replaced_at),qty:number(a.qty),filled_qty:number(a.filled_qty),type:a.type,side:a.side,time_in_force:a.time_in_force,limit_price:number(a.limit_price),stop_price:number(a.stop_price),filled_avg_price:number(a.filled_avg_price),status:a.status,legs:orders(a.legs),trail_price:number(a.trail_price),trail_percent:number(a.trail_percent),hwm:number(a.hwm),order_class:a.order_class})})}catch(e){throw new Error(`Order parsing failed. ${e.message}`)}}function canceled_orders(e){return e?e.map((e=>canceled_order(e))):void 0}function position(e){if(e)try{return Object.assign(Object.assign({},e),{raw:()=>e,avg_entry_price:number(e.avg_entry_price),qty:number(e.qty),side:e.side,market_value:number(e.market_value),cost_basis:number(e.cost_basis),unrealized_pl:number(e.unrealized_pl),unrealized_plpc:number(e.unrealized_plpc),unrealized_intraday_pl:number(e.unrealized_intraday_pl),unrealized_intraday_plpc:number(e.unrealized_intraday_plpc),current_price:number(e.current_price),lastday_price:number(e.lastday_price),change_today:number(e.change_today)})}catch(e){throw new Error(`Position parsing failed. ${e.message}`)}}function positions(e){return e?e.map((e=>position(e))):void 0}function tradeActivity(e){if(e)try{return Object.assign(Object.assign({},e),{raw:()=>e,cum_qty:number(e.cum_qty),leaves_qty:number(e.leaves_qty),price:number(e.price),qty:number(e.qty),side:e.side,type:e.type})}catch(e){throw new Error(`TradeActivity parsing failed. ${e.message}`)}}function nonTradeActivity(e){if(e)try{return Object.assign(Object.assign({},e),{raw:()=>e,net_amount:number(e.net_amount),qty:number(e.qty),per_share_amount:number(e.per_share_amount)})}catch(e){throw new Error(`NonTradeActivity parsing failed. ${e.message}`)}}function activities(e){if(e)try{return e.map((e=>"FILL"===e.activity_type?tradeActivity(e):nonTradeActivity(e)))}catch(e){throw new Error(`Activity parsing failed. ${e.message}`)}}function pageOfTrades(e){if(e)try{return{raw:()=>e,trades:(null==e.trades?[]:e.trades).map((e=>Object.assign(Object.assign({raw:()=>e},e),{t:new Date(e.t)}))),symbol:e.symbol,next_page_token:e.next_page_token}}catch(e){throw new Error(`PageOfTrades parsing failed "${e.message}"`)}}function pageOfQuotes(e){if(e)try{return{raw:()=>e,quotes:(null==e.quotes?[]:e.quotes).map((e=>Object.assign(Object.assign({raw:()=>e},e),{t:new Date(e.t)}))),symbol:e.symbol,next_page_token:e.next_page_token}}catch(e){throw new Error(`PageOfTrades parsing failed "${e.message}"`)}}function pageOfBars(e){if(e)try{return{raw:()=>e,bars:(null==e.bars?[]:e.bars).map((e=>Object.assign(Object.assign({raw:()=>e},e),{t:new Date(e.t)}))),symbol:e.symbol,next_page_token:e.next_page_token}}catch(e){throw new Error(`PageOfTrades parsing failed "${e.message}"`)}}function snapshot(e){if(e)try{return Object.assign(Object.assign({},e),{raw:()=>e,latestTrade:e.latestTrade?Object.assign(Object.assign({},e.latestTrade),{t:new Date(e.latestTrade.t)}):null,latestQuote:e.latestQuote?Object.assign(Object.assign({},e.latestQuote),{t:new Date(e.latestQuote.t)}):null,minuteBar:e.minuteBar?Object.assign(Object.assign({},e.minuteBar),{t:new Date(e.minuteBar.t)}):null,dailyBar:e.dailyBar?Object.assign(Object.assign({},e.dailyBar),{t:new Date(e.dailyBar.t)}):null,prevDailyBar:e.prevDailyBar?Object.assign(Object.assign({},e.prevDailyBar),{t:new Date(e.prevDailyBar.t)}):null})}catch(e){throw new Error(`Snapshot parsing failed "${e.message}"`)}}function snapshots(e){let a={};for(let[p,t]of Object.entries(e))a[p]=snapshot(t);return a}function number(e){if(void 0===e||null==e)return e;const a=parseFloat(e);return Number.isNaN(a)?null:a}function trade_update(e){if(e)return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({raw:()=>e,event:e.event,execution_id:e.execution_id,order:order(e.order)},e.event_id&&{event_id:number(e.event_id)}),e.at&&{at:new Date(e.at)}),e.timestamp&&{timestamp:new Date(e.timestamp)}),e.position_qty&&{position_qty:number(e.position_qty)}),e.price&&{price:number(e.price)}),e.qty&&{qty:number(e.qty)})}var parse$3={account:account,activities:activities,clock:clock,nonTradeActivity:nonTradeActivity,order:order,orders:orders,canceled_orders:canceled_orders,position:position,positions:positions,tradeActivity:tradeActivity,pageOfTrades:pageOfTrades,pageOfQuotes:pageOfQuotes,pageOfBars:pageOfBars,snapshot:snapshot,snapshots:snapshots,trade_update:trade_update,latestTrade:latestTrade};function unfetch_module(e,a){return a=a||{},new Promise((function(p,t){var d=new XMLHttpRequest,i=[],r=[],n={},s=function(){return{ok:2==(d.status/100|0),statusText:d.statusText,status:d.status,url:d.responseURL,text:function(){return Promise.resolve(d.responseText)},json:function(){return Promise.resolve(d.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([d.response]))},clone:s,headers:{keys:function(){return i},entries:function(){return r},get:function(e){return n[e.toLowerCase()]},has:function(e){return e.toLowerCase()in n}}}};for(var o in d.open(a.method||"get",e,!0),d.onload=function(){d.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,a,p){i.push(a=a.toLowerCase()),r.push([a,p]),n[a]=n[a]?n[a]+","+p:p})),p(s())},d.onerror=t,d.withCredentials="include"==a.credentials,a.headers)d.setRequestHeader(o,a.headers[o]);d.send(a.body||null)}))}var unfetch_module$1=Object.freeze({__proto__:null,default:unfetch_module}),conversions={},lib$2=conversions;function sign(e){return e<0?-1:1}function evenRound(e){return e%1==.5&&0==(1&e)?Math.floor(e):Math.round(e)}function createNumberConversion(e,a){a.unsigned||--e;const p=a.unsigned?0:-Math.pow(2,e),t=Math.pow(2,e)-1,d=a.moduloBitLength?Math.pow(2,a.moduloBitLength):Math.pow(2,e),i=a.moduloBitLength?Math.pow(2,a.moduloBitLength-1):Math.pow(2,e-1);return function(e,r){r||(r={});let n=+e;if(r.enforceRange){if(!Number.isFinite(n))throw new TypeError("Argument is not a finite number");if(n=sign(n)*Math.floor(Math.abs(n)),nt)throw new TypeError("Argument is not in byte range");return n}if(!isNaN(n)&&r.clamp)return n=evenRound(n),nt&&(n=t),n;if(!Number.isFinite(n)||0===n)return 0;if(n=sign(n)*Math.floor(Math.abs(n)),n%=d,!a.unsigned&&n>=i)return n-d;if(a.unsigned)if(n<0)n+=d;else if(-0===n)return 0;return n}}conversions.void=function(){},conversions.boolean=function(e){return!!e},conversions.byte=createNumberConversion(8,{unsigned:!1}),conversions.octet=createNumberConversion(8,{unsigned:!0}),conversions.short=createNumberConversion(16,{unsigned:!1}),conversions["unsigned short"]=createNumberConversion(16,{unsigned:!0}),conversions.long=createNumberConversion(32,{unsigned:!1}),conversions["unsigned long"]=createNumberConversion(32,{unsigned:!0}),conversions["long long"]=createNumberConversion(32,{unsigned:!1,moduloBitLength:64}),conversions["unsigned long long"]=createNumberConversion(32,{unsigned:!0,moduloBitLength:64}),conversions.double=function(e){const a=+e;if(!Number.isFinite(a))throw new TypeError("Argument is not a finite floating-point value");return a},conversions["unrestricted double"]=function(e){const a=+e;if(isNaN(a))throw new TypeError("Argument is NaN");return a},conversions.float=conversions.double,conversions["unrestricted float"]=conversions["unrestricted double"],conversions.DOMString=function(e,a){return a||(a={}),a.treatNullAsEmptyString&&null===e?"":String(e)},conversions.ByteString=function(e,a){const p=String(e);let t;for(let e=0;void 0!==(t=p.codePointAt(e));++e)if(t>255)throw new TypeError("Argument is not a valid bytestring");return p},conversions.USVString=function(e){const a=String(e),p=a.length,t=[];for(let e=0;e57343)t.push(String.fromCodePoint(d));else if(56320<=d&&d<=57343)t.push(String.fromCodePoint(65533));else if(e===p-1)t.push(String.fromCodePoint(65533));else{const p=a.charCodeAt(e+1);if(56320<=p&&p<=57343){const a=1023&d,i=1023&p;t.push(String.fromCodePoint(65536+1024*a+i)),++e}else t.push(String.fromCodePoint(65533))}}return t.join("")},conversions.Date=function(e,a){if(!(e instanceof Date))throw new TypeError("Argument is not a Date object");if(!isNaN(e))return e},conversions.RegExp=function(e,a){return e instanceof RegExp||(e=new RegExp(e)),e};var utils=createCommonjsModule((function(e){e.exports.mixin=function(e,a){const p=Object.getOwnPropertyNames(a);for(let t=0;t= 0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode;function error$1(e){throw new RangeError(errors[e])}function map(e,a){const p=[];let t=e.length;for(;t--;)p[t]=a(e[t]);return p}function mapDomain(e,a){const p=e.split("@");let t="";p.length>1&&(t=p[0]+"@",e=p[1]);return t+map((e=e.replace(regexSeparators,".")).split("."),a).join(".")}function ucs2decode(e){const a=[];let p=0;const t=e.length;for(;p=55296&&d<=56319&&pString.fromCodePoint(...e),basicToDigit=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:base},digitToBasic=function(e,a){return e+22+75*(e<26)-((0!=a)<<5)},adapt=function(e,a,p){let t=0;for(e=p?floor(e/damp):e>>1,e+=floor(e/a);e>baseMinusTMin*tMax>>1;t+=base)e=floor(e/baseMinusTMin);return floor(t+(baseMinusTMin+1)*e/(e+skew))},decode=function(e){const a=[],p=e.length;let t=0,d=initialN,i=initialBias,r=e.lastIndexOf(delimiter);r<0&&(r=0);for(let p=0;p=128&&error$1("not-basic"),a.push(e.charCodeAt(p));for(let n=r>0?r+1:0;n=p&&error$1("invalid-input");const r=basicToDigit(e.charCodeAt(n++));(r>=base||r>floor((maxInt-t)/a))&&error$1("overflow"),t+=r*a;const s=d<=i?tMin:d>=i+tMax?tMax:d-i;if(rfloor(maxInt/o)&&error$1("overflow"),a*=o}const s=a.length+1;i=adapt(t-r,s,0==r),floor(t/s)>maxInt-d&&error$1("overflow"),d+=floor(t/s),t%=s,a.splice(t++,0,d)}return String.fromCodePoint(...a)},encode=function(e){const a=[];let p=(e=ucs2decode(e)).length,t=initialN,d=0,i=initialBias;for(const p of e)p<128&&a.push(stringFromCharCode(p));let r=a.length,n=r;for(r&&a.push(delimiter);n=t&&afloor((maxInt-d)/s)&&error$1("overflow"),d+=(p-t)*s,t=p;for(const p of e)if(pmaxInt&&error$1("overflow"),p==t){let e=d;for(let p=base;;p+=base){const t=p<=i?tMin:p>=i+tMax?tMax:p-i;if(e=e)return d;d[0][0]>e?p=t-1:a=t+1}return null}var regexAstralSymbols=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function countSymbols(e){return e.replace(regexAstralSymbols,"_").length}function mapChars(e,a,p){for(var t=!1,d="",i=countSymbols(e),r=0;r253||0===r.length)&&(d.error=!0);for(var n=0;n63||0===i.length){d.error=!0;break}}return d.error?null:i.join(".")},toUnicode=function(e,a){var p=processing(e,a,PROCESSING_OPTIONS.NONTRANSITIONAL);return{domain:p.string,error:p.error}},PROCESSING_OPTIONS_1=PROCESSING_OPTIONS,tr46={toASCII:toASCII,toUnicode:toUnicode,PROCESSING_OPTIONS:PROCESSING_OPTIONS_1},urlStateMachine=createCommonjsModule((function(e){const a={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},p=Symbol("failure");function t(e){return punycode_1.ucs2.decode(e).length}function d(e,a){const p=e[a];return isNaN(p)?void 0:String.fromCodePoint(p)}function i(e){return e>=48&&e<=57}function r(e){return e>=65&&e<=90||e>=97&&e<=122}function n(e){return i(e)||e>=65&&e<=70||e>=97&&e<=102}function s(e){return"."===e||"%2e"===e.toLowerCase()}function o(e){return 2===e.length&&r(e.codePointAt(0))&&(":"===e[1]||"|"===e[1])}function l(e){return void 0!==a[e]}function m(e){return l(e.scheme)}function u(e){let a=e.toString(16).toUpperCase();return 1===a.length&&(a="0"+a),"%"+a}function c(e){return e<=31||e>126}const h=new Set([32,34,35,60,62,63,96,123,125]);function v(e){return c(e)||h.has(e)}const f=new Set([47,58,59,61,64,91,92,93,94,124]);function _(e){return v(e)||f.has(e)}function y(e,a){const p=String.fromCodePoint(e);return a(e)?function(e){const a=new Buffer(e);let p="";for(let e=0;e=2&&"0"===e.charAt(0)&&"x"===e.charAt(1).toLowerCase()?(e=e.substring(2),a=16):e.length>=2&&"0"===e.charAt(0)&&(e=e.substring(1),a=8),""===e)return 0;return(10===a?/[^0-9]/:16===a?/[^0-9A-Fa-f]/:/[^0-7]/).test(e)?p:parseInt(e,a)}function g(e,a){if("["===e[0])return"]"!==e[e.length-1]?p:function(e){const a=[0,0,0,0,0,0,0,0];let t=0,r=null,s=0;if(58===(e=punycode_1.ucs2.decode(e))[s]){if(58!==e[s+1])return p;s+=2,++t,r=t}for(;s6)return p;let r=0;for(;void 0!==e[s];){let n=null;if(r>0){if(!(46===e[s]&&r<4))return p;++s}if(!i(e[s]))return p;for(;i(e[s]);){const a=parseInt(d(e,s));if(null===n)n=a;else{if(0===n)return p;n=10*n+a}if(n>255)return p;++s}a[t]=256*a[t]+n,++r,2!==r&&4!==r||++t}if(4!==r)return p;break}if(58===e[s]){if(++s,void 0===e[s])return p}else if(void 0!==e[s])return p;a[t]=o,++t}if(null!==r){let e=t-r;for(t=7;0!==t&&e>0;){const p=a[r+e-1];a[r+e-1]=a[t],a[t]=p,--t,--e}}else if(null===r&&8!==t)return p;return a}(e.substring(1,e.length-1));if(!a)return function(e){if(a=e,-1!==a.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/))return p;var a;let t="";const d=punycode_1.ucs2.decode(e);for(let e=0;e1&&a.pop(),a.length>4)return e;const t=[];for(const d of a){if(""===d)return e;const a=w(d);if(a===p)return e;t.push(a)}for(let e=0;e255)return p;if(t[t.length-1]>=Math.pow(256,5-t.length))return p;let d=t.pop(),i=0;for(const e of t)d+=e*Math.pow(256,3-i),++i;return d}(r);return"number"==typeof s||s===p?s:r}function b(e){return"number"==typeof e?function(e){let a="",p=e;for(let e=1;e<=4;++e)a=String(p%256)+a,4!==e&&(a="."+a),p=Math.floor(p/256);return a}(e):e instanceof Array?"["+function(e){let a="";const p=function(e){let a=null,p=1,t=null,d=0;for(let i=0;ip&&(a=t,p=d),t=null,d=0):(null===t&&(t=i),++d);return d>p&&(a=t,p=d),{idx:a,len:p}}(e).idx;let t=!1;for(let d=0;d<=7;++d)t&&0===e[d]||(t&&(t=!1),p!==d?(a+=e[d].toString(16),7!==d&&(a+=":")):(a+=0===d?"::":":",t=!0));return a}(e)+"]":e}function S(e){const a=e.path;var p;0!==a.length&&("file"===e.scheme&&1===a.length&&(p=a[0],/^[A-Za-z]:$/.test(p))||a.pop())}function N(e){return""!==e.username||""!==e.password}function T(e,a,t,d,i){if(this.pointer=0,this.input=e,this.base=a||null,this.encodingOverride=t||"utf-8",this.stateOverride=i,this.url=d,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};const e=function(e){return e.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,"")}(this.input);e!==this.input&&(this.parseError=!0),this.input=e}const r=function(e){return e.replace(/\u0009|\u000A|\u000D/g,"")}(this.input);for(r!==this.input&&(this.parseError=!0),this.input=r,this.state=i||"scheme start",this.buffer="",this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=punycode_1.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){const e=this.input[this.pointer],a=isNaN(e)?void 0:String.fromCodePoint(e),t=this["parse "+this.state](e,a);if(!t)break;if(t===p){this.failure=!0;break}}}T.prototype["parse scheme start"]=function(e,a){if(r(e))this.buffer+=a.toLowerCase(),this.state="scheme";else{if(this.stateOverride)return this.parseError=!0,p;this.state="no scheme",--this.pointer}return!0},T.prototype["parse scheme"]=function(e,a){if(function(e){return r(e)||i(e)}(e)||43===e||45===e||46===e)this.buffer+=a.toLowerCase();else if(58===e){if(this.stateOverride){if(m(this.url)&&!l(this.buffer))return!1;if(!m(this.url)&&l(this.buffer))return!1;if((N(this.url)||null!==this.url.port)&&"file"===this.buffer)return!1;if("file"===this.url.scheme&&(""===this.url.host||null===this.url.host))return!1}if(this.url.scheme=this.buffer,this.buffer="",this.stateOverride)return!1;"file"===this.url.scheme?(47===this.input[this.pointer+1]&&47===this.input[this.pointer+2]||(this.parseError=!0),this.state="file"):m(this.url)&&null!==this.base&&this.base.scheme===this.url.scheme?this.state="special relative or authority":m(this.url)?this.state="special authority slashes":47===this.input[this.pointer+1]?(this.state="path or authority",++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(""),this.state="cannot-be-a-base-URL path")}else{if(this.stateOverride)return this.parseError=!0,p;this.buffer="",this.state="no scheme",this.pointer=-1}return!0},T.prototype["parse no scheme"]=function(e){return null===this.base||this.base.cannotBeABaseURL&&35!==e?p:(this.base.cannotBeABaseURL&&35===e?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.url.cannotBeABaseURL=!0,this.state="fragment"):"file"===this.base.scheme?(this.state="file",--this.pointer):(this.state="relative",--this.pointer),!0)},T.prototype["parse special relative or authority"]=function(e){return 47===e&&47===this.input[this.pointer+1]?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="relative",--this.pointer),!0},T.prototype["parse path or authority"]=function(e){return 47===e?this.state="authority":(this.state="path",--this.pointer),!0},T.prototype["parse relative"]=function(e){return this.url.scheme=this.base.scheme,isNaN(e)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):47===e?this.state="relative slash":63===e?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):35===e?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):m(this.url)&&92===e?(this.parseError=!0,this.state="relative slash"):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state="path",--this.pointer),!0},T.prototype["parse relative slash"]=function(e){return!m(this.url)||47!==e&&92!==e?47===e?this.state="authority":(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state="path",--this.pointer):(92===e&&(this.parseError=!0),this.state="special authority ignore slashes"),!0},T.prototype["parse special authority slashes"]=function(e){return 47===e&&47===this.input[this.pointer+1]?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="special authority ignore slashes",--this.pointer),!0},T.prototype["parse special authority ignore slashes"]=function(e){return 47!==e&&92!==e?(this.state="authority",--this.pointer):this.parseError=!0,!0},T.prototype["parse authority"]=function(e,a){if(64===e){this.parseError=!0,this.atFlag&&(this.buffer="%40"+this.buffer),this.atFlag=!0;const e=t(this.buffer);for(let a=0;aMath.pow(2,16)-1)return this.parseError=!0,p;this.url.port=e===(d=this.url.scheme,a[d])?null:e,this.buffer=""}if(this.stateOverride)return!1;this.state="path start",--this.pointer}var d;return!0};const E=new Set([47,92,63,35]);T.prototype["parse file"]=function(e){var a,p;return this.url.scheme="file",47===e||92===e?(92===e&&(this.parseError=!0),this.state="file slash"):null!==this.base&&"file"===this.base.scheme?isNaN(e)?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query):63===e?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):35===e?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):(this.input.length-this.pointer-1==0||(a=e,p=this.input[this.pointer+1],!r(a)||58!==p&&124!==p)||this.input.length-this.pointer-1>=2&&!E.has(this.input[this.pointer+2])?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),S(this.url)):this.parseError=!0,this.state="path",--this.pointer):(this.state="path",--this.pointer),!0},T.prototype["parse file slash"]=function(e){var a;return 47===e||92===e?(92===e&&(this.parseError=!0),this.state="file host"):(null!==this.base&&"file"===this.base.scheme&&(2===(a=this.base.path[0]).length&&r(a.codePointAt(0))&&":"===a[1]?this.url.path.push(this.base.path[0]):this.url.host=this.base.host),this.state="path",--this.pointer),!0},T.prototype["parse file host"]=function(e,a){if(isNaN(e)||47===e||92===e||63===e||35===e)if(--this.pointer,!this.stateOverride&&o(this.buffer))this.parseError=!0,this.state="path";else if(""===this.buffer){if(this.url.host="",this.stateOverride)return!1;this.state="path start"}else{let e=g(this.buffer,m(this.url));if(e===p)return p;if("localhost"===e&&(e=""),this.url.host=e,this.stateOverride)return!1;this.buffer="",this.state="path start"}else this.buffer+=a;return!0},T.prototype["parse path start"]=function(e){return m(this.url)?(92===e&&(this.parseError=!0),this.state="path",47!==e&&92!==e&&--this.pointer):this.stateOverride||63!==e?this.stateOverride||35!==e?void 0!==e&&(this.state="path",47!==e&&--this.pointer):(this.url.fragment="",this.state="fragment"):(this.url.query="",this.state="query"),!0},T.prototype["parse path"]=function(e){if(isNaN(e)||47===e||m(this.url)&&92===e||!this.stateOverride&&(63===e||35===e)){if(m(this.url)&&92===e&&(this.parseError=!0),".."===(a=(a=this.buffer).toLowerCase())||"%2e."===a||".%2e"===a||"%2e%2e"===a?(S(this.url),47===e||m(this.url)&&92===e||this.url.path.push("")):!s(this.buffer)||47===e||m(this.url)&&92===e?s(this.buffer)||("file"===this.url.scheme&&0===this.url.path.length&&o(this.buffer)&&(""!==this.url.host&&null!==this.url.host&&(this.parseError=!0,this.url.host=""),this.buffer=this.buffer[0]+":"),this.url.path.push(this.buffer)):this.url.path.push(""),this.buffer="","file"===this.url.scheme&&(void 0===e||63===e||35===e))for(;this.url.path.length>1&&""===this.url.path[0];)this.parseError=!0,this.url.path.shift();63===e&&(this.url.query="",this.state="query"),35===e&&(this.url.fragment="",this.state="fragment")}else 37!==e||n(this.input[this.pointer+1])&&n(this.input[this.pointer+2])||(this.parseError=!0),this.buffer+=y(e,v);var a;return!0},T.prototype["parse cannot-be-a-base-URL path"]=function(e){return 63===e?(this.url.query="",this.state="query"):35===e?(this.url.fragment="",this.state="fragment"):(isNaN(e)||37===e||(this.parseError=!0),37!==e||n(this.input[this.pointer+1])&&n(this.input[this.pointer+2])||(this.parseError=!0),isNaN(e)||(this.url.path[0]=this.url.path[0]+y(e,c))),!0},T.prototype["parse query"]=function(e,a){if(isNaN(e)||!this.stateOverride&&35===e){m(this.url)&&"ws"!==this.url.scheme&&"wss"!==this.url.scheme||(this.encodingOverride="utf-8");const a=new Buffer(this.buffer);for(let e=0;e126||34===a[e]||35===a[e]||60===a[e]||62===a[e]?this.url.query+=u(a[e]):this.url.query+=String.fromCodePoint(a[e]);this.buffer="",35===e&&(this.url.fragment="",this.state="fragment")}else 37!==e||n(this.input[this.pointer+1])&&n(this.input[this.pointer+2])||(this.parseError=!0),this.buffer+=a;return!0},T.prototype["parse fragment"]=function(e){return isNaN(e)||(0===e?this.parseError=!0:(37!==e||n(this.input[this.pointer+1])&&n(this.input[this.pointer+2])||(this.parseError=!0),this.url.fragment+=y(e,c))),!0},e.exports.serializeURL=function(e,a){let p=e.scheme+":";if(null!==e.host?(p+="//",""===e.username&&""===e.password||(p+=e.username,""!==e.password&&(p+=":"+e.password),p+="@"),p+=b(e.host),null!==e.port&&(p+=":"+e.port)):null===e.host&&"file"===e.scheme&&(p+="//"),e.cannotBeABaseURL)p+=e.path[0];else for(const a of e.path)p+="/"+a;return null!==e.query&&(p+="?"+e.query),a||null===e.fragment||(p+="#"+e.fragment),p},e.exports.serializeURLOrigin=function(a){switch(a.scheme){case"blob":try{return e.exports.serializeURLOrigin(e.exports.parseURL(a.path[0]))}catch(e){return"null"}case"ftp":case"gopher":case"http":case"https":case"ws":case"wss":return function(e){let a=e.scheme+"://";return a+=b(e.host),null!==e.port&&(a+=":"+e.port),a}({scheme:a.scheme,host:a.host,port:a.port});case"file":return"file://";default:return"null"}},e.exports.basicURLParse=function(e,a){void 0===a&&(a={});const p=new T(e,a.baseURL,a.encodingOverride,a.url,a.stateOverride);return p.failure?"failure":p.url},e.exports.setTheUsername=function(e,a){e.username="";const p=punycode_1.ucs2.decode(a);for(let a=0;a!!e&&e[a]instanceof URLImpl_1.implementation,create(e,a){let t=Object.create(p.prototype);return this.setup(t,e,a),t},setup(e,p,t){t||(t={}),t.wrapper=e,e[a]=new URLImpl_1.implementation(p,t),e[a][utils.wrapperSymbol]=e},interface:p,expose:{Window:{URL:p},Worker:{URL:p}}}})),URL$2=URL_1.interface,serializeURL=urlStateMachine.serializeURL,serializeURLOrigin=urlStateMachine.serializeURLOrigin,basicURLParse=urlStateMachine.basicURLParse,setTheUsername=urlStateMachine.setTheUsername,setThePassword=urlStateMachine.setThePassword,serializeHost=urlStateMachine.serializeHost,serializeInteger=urlStateMachine.serializeInteger,parseURL$1=urlStateMachine.parseURL,publicApi={URL:URL$2,serializeURL:serializeURL,serializeURLOrigin:serializeURLOrigin,basicURLParse:basicURLParse,setTheUsername:setTheUsername,setThePassword:setThePassword,serializeHost:serializeHost,serializeInteger:serializeInteger,parseURL:parseURL$1};const Readable=Stream.Readable,BUFFER=Symbol("buffer"),TYPE=Symbol("type");class Blob$1{constructor(){this[TYPE]="";const e=arguments[0],a=arguments[1],p=[];let t=0;if(e){const a=e,d=Number(a.length);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:{},t=p.size;let d=void 0===t?0:t;var i=p.timeout;let r=void 0===i?0:i;null==e?e=null:isURLSearchParams(e)?e=Buffer.from(e.toString()):isBlob$1(e)||Buffer.isBuffer(e)||("[object ArrayBuffer]"===Object.prototype.toString.call(e)?e=Buffer.from(e):ArrayBuffer.isView(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):e instanceof Stream||(e=Buffer.from(String(e)))),this[INTERNALS]={body:e,disturbed:!1,error:null},this.size=d,this.timeout=r,e instanceof Stream&&e.on("error",(function(e){const p="AbortError"===e.name?e:new FetchError(`Invalid response body while trying to fetch ${a.url}: ${e.message}`,"system",e);a[INTERNALS].error=p}))}function consumeBody(){var e=this;if(this[INTERNALS].disturbed)return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[INTERNALS].disturbed=!0,this[INTERNALS].error)return Body.Promise.reject(this[INTERNALS].error);let a=this.body;if(null===a)return Body.Promise.resolve(Buffer.alloc(0));if(isBlob$1(a)&&(a=a.stream()),Buffer.isBuffer(a))return Body.Promise.resolve(a);if(!(a instanceof Stream))return Body.Promise.resolve(Buffer.alloc(0));let p=[],t=0,d=!1;return new Body.Promise((function(i,r){let n;e.timeout&&(n=setTimeout((function(){d=!0,r(new FetchError(`Response timeout while trying to fetch ${e.url} (over ${e.timeout}ms)`,"body-timeout"))}),e.timeout)),a.on("error",(function(a){"AbortError"===a.name?(d=!0,r(a)):r(new FetchError(`Invalid response body while trying to fetch ${e.url}: ${a.message}`,"system",a))})),a.on("data",(function(a){if(!d&&null!==a){if(e.size&&t+a.length>e.size)return d=!0,void r(new FetchError(`content size at ${e.url} over limit: ${e.size}`,"max-size"));t+=a.length,p.push(a)}})),a.on("end",(function(){if(!d){clearTimeout(n);try{i(Buffer.concat(p,t))}catch(a){r(new FetchError(`Could not create Buffer from response body for ${e.url}: ${a.message}`,"system",a))}}}))}))}function convertBody(e,a){if("function"!=typeof convert)throw new Error("The package `encoding` must be installed to use the textConverted() function");const p=a.get("content-type");let t,d,i="utf-8";return p&&(t=/charset=([^;]*)/i.exec(p)),d=e.slice(0,1024).toString(),!t&&d&&(t=/0&&void 0!==arguments[0]?arguments[0]:void 0;if(this[MAP]=Object.create(null),e instanceof Headers){const a=e.raw(),p=Object.keys(a);for(const e of p)for(const p of a[e])this.append(e,p)}else if(null==e);else{if("object"!=typeof e)throw new TypeError("Provided initializer must be an object");{const a=e[Symbol.iterator];if(null!=a){if("function"!=typeof a)throw new TypeError("Header pairs must be iterable");const p=[];for(const a of e){if("object"!=typeof a||"function"!=typeof a[Symbol.iterator])throw new TypeError("Each header pair must be iterable");p.push(Array.from(a))}for(const e of p){if(2!==e.length)throw new TypeError("Each header pair must be a name/value tuple");this.append(e[0],e[1])}}else for(const a of Object.keys(e)){const p=e[a];this.append(a,p)}}}}get(e){validateName(e=`${e}`);const a=find(this[MAP],e);return void 0===a?null:this[MAP][a].join(", ")}forEach(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,p=getHeaders(this),t=0;for(;t1&&void 0!==arguments[1]?arguments[1]:"key+value";const p=Object.keys(e[MAP]).sort();return p.map("key"===a?function(e){return e.toLowerCase()}:"value"===a?function(a){return e[MAP][a].join(", ")}:function(a){return[a.toLowerCase(),e[MAP][a].join(", ")]})}Headers.prototype.entries=Headers.prototype[Symbol.iterator],Object.defineProperty(Headers.prototype,Symbol.toStringTag,{value:"Headers",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(Headers.prototype,{get:{enumerable:!0},forEach:{enumerable:!0},set:{enumerable:!0},append:{enumerable:!0},has:{enumerable:!0},delete:{enumerable:!0},keys:{enumerable:!0},values:{enumerable:!0},entries:{enumerable:!0}});const INTERNAL=Symbol("internal");function createHeadersIterator(e,a){const p=Object.create(HeadersIteratorPrototype);return p[INTERNAL]={target:e,kind:a,index:0},p}const HeadersIteratorPrototype=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==HeadersIteratorPrototype)throw new TypeError("Value of `this` is not a HeadersIterator");var e=this[INTERNAL];const a=e.target,p=e.kind,t=e.index,d=getHeaders(a,p);return t>=d.length?{value:void 0,done:!0}:(this[INTERNAL].index=t+1,{value:d[t],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));function exportNodeCompatibleHeaders(e){const a=Object.assign({__proto__:null},e[MAP]),p=find(e[MAP],"Host");return void 0!==p&&(a[p]=a[p][0]),a}function createHeadersLenient(e){const a=new Headers;for(const p of Object.keys(e))if(!invalidTokenRegex.test(p))if(Array.isArray(e[p]))for(const t of e[p])invalidHeaderCharRegex.test(t)||(void 0===a[MAP][p]?a[MAP][p]=[t]:a[MAP][p].push(t));else invalidHeaderCharRegex.test(e[p])||(a[MAP][p]=[e[p]]);return a}Object.defineProperty(HeadersIteratorPrototype,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});const INTERNALS$1=Symbol("Response internals"),STATUS_CODES=http.STATUS_CODES;class Response{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Body.call(this,e,a);const p=a.status||200,t=new Headers(a.headers);if(null!=e&&!t.has("Content-Type")){const a=extractContentType(e);a&&t.append("Content-Type",a)}this[INTERNALS$1]={url:a.url,status:p,statusText:a.statusText||STATUS_CODES[p],headers:t,counter:a.counter}}get url(){return this[INTERNALS$1].url||""}get status(){return this[INTERNALS$1].status}get ok(){return this[INTERNALS$1].status>=200&&this[INTERNALS$1].status<300}get redirected(){return this[INTERNALS$1].counter>0}get statusText(){return this[INTERNALS$1].statusText}get headers(){return this[INTERNALS$1].headers}clone(){return new Response(clone(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}}Body.mixIn(Response.prototype),Object.defineProperties(Response.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}}),Object.defineProperty(Response.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});const INTERNALS$2=Symbol("Request internals"),URL$1=Url.URL||publicApi.URL,parse_url=Url.parse,format_url=Url.format;function parseURL(e){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(e)&&(e=new URL$1(e).toString()),parse_url(e)}const streamDestructionSupported="destroy"in Stream.Readable.prototype;function isRequest(e){return"object"==typeof e&&"object"==typeof e[INTERNALS$2]}function isAbortSignal(e){const a=e&&"object"==typeof e&&Object.getPrototypeOf(e);return!(!a||"AbortSignal"!==a.constructor.name)}class Request{constructor(e){let a,p=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};isRequest(e)?a=parseURL(e.url):(a=e&&e.href?parseURL(e.href):parseURL(`${e}`),e={});let t=p.method||e.method||"GET";if(t=t.toUpperCase(),(null!=p.body||isRequest(e)&&null!==e.body)&&("GET"===t||"HEAD"===t))throw new TypeError("Request with GET/HEAD method cannot have body");let d=null!=p.body?p.body:isRequest(e)&&null!==e.body?clone(e):null;Body.call(this,d,{timeout:p.timeout||e.timeout||0,size:p.size||e.size||0});const i=new Headers(p.headers||e.headers||{});if(null!=d&&!i.has("Content-Type")){const e=extractContentType(d);e&&i.append("Content-Type",e)}let r=isRequest(e)?e.signal:null;if("signal"in p&&(r=p.signal),null!=r&&!isAbortSignal(r))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[INTERNALS$2]={method:t,redirect:p.redirect||e.redirect||"follow",headers:i,parsedURL:a,signal:r},this.follow=void 0!==p.follow?p.follow:void 0!==e.follow?e.follow:20,this.compress=void 0!==p.compress?p.compress:void 0===e.compress||e.compress,this.counter=p.counter||e.counter||0,this.agent=p.agent||e.agent}get method(){return this[INTERNALS$2].method}get url(){return format_url(this[INTERNALS$2].parsedURL)}get headers(){return this[INTERNALS$2].headers}get redirect(){return this[INTERNALS$2].redirect}get signal(){return this[INTERNALS$2].signal}clone(){return new Request(this)}}function getNodeRequestOptions(e){const a=e[INTERNALS$2].parsedURL,p=new Headers(e[INTERNALS$2].headers);if(p.has("Accept")||p.set("Accept","*/*"),!a.protocol||!a.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(a.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(e.signal&&e.body instanceof Stream.Readable&&!streamDestructionSupported)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let t=null;if(null==e.body&&/^(POST|PUT)$/i.test(e.method)&&(t="0"),null!=e.body){const a=getTotalBytes(e);"number"==typeof a&&(t=String(a))}t&&p.set("Content-Length",t),p.has("User-Agent")||p.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),e.compress&&!p.has("Accept-Encoding")&&p.set("Accept-Encoding","gzip,deflate");let d=e.agent;return"function"==typeof d&&(d=d(a)),p.has("Connection")||d||p.set("Connection","close"),Object.assign({},a,{method:e.method,headers:exportNodeCompatibleHeaders(p),agent:d})}function AbortError(e){Error.call(this,e),this.type="aborted",this.message=e,Error.captureStackTrace(this,this.constructor)}Body.mixIn(Request.prototype),Object.defineProperty(Request.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(Request.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}}),AbortError.prototype=Object.create(Error.prototype),AbortError.prototype.constructor=AbortError,AbortError.prototype.name="AbortError";const URL$1$1=Url.URL||publicApi.URL,PassThrough$1=Stream.PassThrough,isDomainOrSubdomain=function(e,a){const p=new URL$1$1(a).hostname,t=new URL$1$1(e).hostname;return p===t||"."===p[p.length-t.length-1]&&p.endsWith(t)};function fetch$1(e,a){if(!fetch$1.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return Body.Promise=fetch$1.Promise,new fetch$1.Promise((function(p,t){const d=new Request(e,a),i=getNodeRequestOptions(d),r=("https:"===i.protocol?https:http).request,n=d.signal;let s=null;const o=function(){let e=new AbortError("The user aborted a request.");t(e),d.body&&d.body instanceof Stream.Readable&&d.body.destroy(e),s&&s.body&&s.body.emit("error",e)};if(n&&n.aborted)return void o();const l=function(){o(),c()},m=r(i);let u;function c(){m.abort(),n&&n.removeEventListener("abort",l),clearTimeout(u)}n&&n.addEventListener("abort",l),d.timeout&&m.once("socket",(function(e){u=setTimeout((function(){t(new FetchError(`network timeout at: ${d.url}`,"request-timeout")),c()}),d.timeout)})),m.on("error",(function(e){t(new FetchError(`request to ${d.url} failed, reason: ${e.message}`,"system",e)),c()})),m.on("response",(function(e){clearTimeout(u);const a=createHeadersLenient(e.headers);if(fetch$1.isRedirect(e.statusCode)){const i=a.get("Location");let r=null;try{r=null===i?null:new URL$1$1(i,d.url).toString()}catch(e){if("manual"!==d.redirect)return t(new FetchError(`uri requested responds with an invalid redirect URL: ${i}`,"invalid-redirect")),void c()}switch(d.redirect){case"error":return t(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${d.url}`,"no-redirect")),void c();case"manual":if(null!==r)try{a.set("Location",r)}catch(e){t(e)}break;case"follow":if(null===r)break;if(d.counter>=d.follow)return t(new FetchError(`maximum redirect reached at: ${d.url}`,"max-redirect")),void c();const i={headers:new Headers(d.headers),follow:d.follow,counter:d.counter+1,agent:d.agent,compress:d.compress,method:d.method,body:d.body,signal:d.signal,timeout:d.timeout,size:d.size};if(!isDomainOrSubdomain(d.url,r))for(const e of["authorization","www-authenticate","cookie","cookie2"])i.headers.delete(e);return 303!==e.statusCode&&d.body&&null===getTotalBytes(d)?(t(new FetchError("Cannot follow redirect with body being a readable stream","unsupported-redirect")),void c()):(303!==e.statusCode&&(301!==e.statusCode&&302!==e.statusCode||"POST"!==d.method)||(i.method="GET",i.body=void 0,i.headers.delete("content-length")),p(fetch$1(new Request(r,i))),void c())}}e.once("end",(function(){n&&n.removeEventListener("abort",l)}));let i=e.pipe(new PassThrough$1);const r={url:d.url,status:e.statusCode,statusText:e.statusMessage,headers:a,size:d.size,timeout:d.timeout,counter:d.counter},o=a.get("Content-Encoding");if(!d.compress||"HEAD"===d.method||null===o||204===e.statusCode||304===e.statusCode)return s=new Response(i,r),void p(s);const m={flush:zlib.Z_SYNC_FLUSH,finishFlush:zlib.Z_SYNC_FLUSH};if("gzip"==o||"x-gzip"==o)return i=i.pipe(zlib.createGunzip(m)),s=new Response(i,r),void p(s);if("deflate"!=o&&"x-deflate"!=o){if("br"==o&&"function"==typeof zlib.createBrotliDecompress)return i=i.pipe(zlib.createBrotliDecompress()),s=new Response(i,r),void p(s);s=new Response(i,r),p(s)}else{e.pipe(new PassThrough$1).once("data",(function(e){i=8==(15&e[0])?i.pipe(zlib.createInflate()):i.pipe(zlib.createInflateRaw()),s=new Response(i,r),p(s)}))}})),writeToStream(m,d)}))}fetch$1.isRedirect=function(e){return 301===e||302===e||303===e||307===e||308===e},fetch$1.Promise=global.Promise;var lib$1=Object.freeze({__proto__:null,default:fetch$1,Headers:Headers,Request:Request,Response:Response,FetchError:FetchError}),require$$0$2=getAugmentedNamespace(unfetch_module$1),require$$1=getAugmentedNamespace(lib$1);function r(e){return e&&e.default||e}var isomorphicUnfetch=commonjsGlobal.fetch=commonjsGlobal.fetch||("undefined"==typeof process?r(require$$0$2):function(e,a){return r(require$$1)(String(e).replace(/^\/\//g,"https://"),a)});const endpoints={rest:{beta:"https://data.alpaca.markets/v1beta1",account:"https://api.alpaca.markets/v2",market_data_v2:"https://data.alpaca.markets/v2",market_data_v1:"https://data.alpaca.markets/v1"},websocket:{account:"wss://api.alpaca.markets/stream",market_data:(e="iex")=>`wss://stream.data.alpaca.markets/v2/${e}`}};var load$1=function(e,a,p={}){var t,d,i;for(t in a)i=a[t],p[t]=null!=(d=e[t])?d:i;return p},overwrite=function(e,a,p={}){var t,d;for(t in e)d=e[t],void 0!==a[t]&&(p[t]=d);return p},parser$8={load:load$1,overwrite:overwrite},DLList$2;DLList$2=class{constructor(e,a){this.incr=e,this.decr=a,this._first=null,this._last=null,this.length=0}push(e){var a;this.length++,"function"==typeof this.incr&&this.incr(),a={value:e,prev:this._last,next:null},null!=this._last?(this._last.next=a,this._last=a):this._first=this._last=a}shift(){var e;if(null!=this._first)return this.length--,"function"==typeof this.decr&&this.decr(),e=this._first.value,null!=(this._first=this._first.next)?this._first.prev=null:this._last=null,e}first(){if(null!=this._first)return this._first.value}getArray(){var e,a,p;for(e=this._first,p=[];null!=e;)p.push((a=e,e=e.next,a.value));return p}forEachShift(e){var a;for(a=this.shift();null!=a;)e(a),a=this.shift()}debug(){var e,a,p,t,d;for(e=this._first,d=[];null!=e;)d.push((a=e,e=e.next,{value:a.value,prev:null!=(p=a.prev)?p.value:void 0,next:null!=(t=a.next)?t.value:void 0}));return d}};var DLList_1=DLList$2,Events$6;function asyncGeneratorStep$8(e,a,p,t,d,i,r){try{var n=e[i](r),s=n.value}catch(e){return void p(e)}n.done?a(s):Promise.resolve(s).then(t,d)}function _asyncToGenerator$8(e){return function(){var a=this,p=arguments;return new Promise((function(t,d){var i=e.apply(a,p);function r(e){asyncGeneratorStep$8(i,t,d,r,n,"next",e)}function n(e){asyncGeneratorStep$8(i,t,d,r,n,"throw",e)}r(void 0)}))}}Events$6=class{constructor(e){if(this.instance=e,this._events={},null!=this.instance.on||null!=this.instance.once||null!=this.instance.removeAllListeners)throw new Error("An Emitter already exists for this object");this.instance.on=(e,a)=>this._addListener(e,"many",a),this.instance.once=(e,a)=>this._addListener(e,"once",a),this.instance.removeAllListeners=(e=null)=>null!=e?delete this._events[e]:this._events={}}_addListener(e,a,p){var t;return null==(t=this._events)[e]&&(t[e]=[]),this._events[e].push({cb:p,status:a}),this.instance}listenerCount(e){return null!=this._events[e]?this._events[e].length:0}trigger(e,...a){var p=this;return _asyncToGenerator$8((function*(){var t,d;try{if("debug"!==e&&p.trigger("debug",`Event triggered: ${e}`,a),null==p._events[e])return;return p._events[e]=p._events[e].filter((function(e){return"none"!==e.status})),d=p._events[e].map(function(){var e=_asyncToGenerator$8((function*(e){var t,d;if("none"!==e.status){"once"===e.status&&(e.status="none");try{return"function"==typeof(null!=(d="function"==typeof e.cb?e.cb(...a):void 0)?d.then:void 0)?yield d:d}catch(e){return t=e,p.trigger("error",t),null}}}));return function(a){return e.apply(this,arguments)}}()),(yield Promise.all(d)).find((function(e){return null!=e}))}catch(e){return t=e,p.trigger("error",t),null}}))()}};var Events_1=Events$6,DLList$1,Events$5,Queues$1;DLList$1=DLList_1,Events$5=Events_1,Queues$1=class{constructor(e){this.Events=new Events$5(this),this._length=0,this._lists=function(){var a,p,t;for(t=[],a=1,p=e;1<=p?a<=p:a>=p;1<=p?++a:--a)t.push(new DLList$1((()=>this.incr()),(()=>this.decr())));return t}.call(this)}incr(){if(0==this._length++)return this.Events.trigger("leftzero")}decr(){if(0==--this._length)return this.Events.trigger("zero")}push(e){return this._lists[e.options.priority].push(e)}queued(e){return null!=e?this._lists[e].length:this._length}shiftAll(e){return this._lists.forEach((function(a){return a.forEachShift(e)}))}getFirst(e=this._lists){var a,p,t;for(a=0,p=e.length;a0)return t;return[]}shiftLastFrom(e){return this.getFirst(this._lists.slice(e).reverse()).shift()}};var Queues_1=Queues$1,BottleneckError$4;BottleneckError$4=class extends Error{};var BottleneckError_1=BottleneckError$4,BottleneckError$3,DEFAULT_PRIORITY$1,Job$1,NUM_PRIORITIES$1,parser$7;function asyncGeneratorStep$7(e,a,p,t,d,i,r){try{var n=e[i](r),s=n.value}catch(e){return void p(e)}n.done?a(s):Promise.resolve(s).then(t,d)}function _asyncToGenerator$7(e){return function(){var a=this,p=arguments;return new Promise((function(t,d){var i=e.apply(a,p);function r(e){asyncGeneratorStep$7(i,t,d,r,n,"next",e)}function n(e){asyncGeneratorStep$7(i,t,d,r,n,"throw",e)}r(void 0)}))}}NUM_PRIORITIES$1=10,DEFAULT_PRIORITY$1=5,parser$7=parser$8,BottleneckError$3=BottleneckError_1,Job$1=class{constructor(e,a,p,t,d,i,r,n){this.task=e,this.args=a,this.rejectOnDrop=d,this.Events=i,this._states=r,this.Promise=n,this.options=parser$7.load(p,t),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===t.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise(((e,a)=>{this._resolve=e,this._reject=a})),this.retryCount=0}_sanitizePriority(e){var a;return(a=~~e!==e?DEFAULT_PRIORITY$1:e)<0?0:a>NUM_PRIORITIES$1-1?NUM_PRIORITIES$1-1:a}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:e,message:a="This job has been dropped by Bottleneck"}={}){return!!this._states.remove(this.options.id)&&(this.rejectOnDrop&&this._reject(null!=e?e:new BottleneckError$3(a)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0)}_assertStatus(e){var a;if((a=this._states.jobStatus(this.options.id))!==e&&("DONE"!==e||null!==a))throw new BottleneckError$3(`Invalid job status ${a}, expected ${e}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(e,a){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:e,blocked:a})}doRun(){return 0===this.retryCount?(this._assertStatus("QUEUED"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),this.Events.trigger("scheduled",{args:this.args,options:this.options})}doExecute(e,a,p,t){var d=this;return _asyncToGenerator$7((function*(){var i,r,n;0===d.retryCount?(d._assertStatus("RUNNING"),d._states.next(d.options.id)):d._assertStatus("EXECUTING"),r={args:d.args,options:d.options,retryCount:d.retryCount},d.Events.trigger("executing",r);try{if(n=yield null!=e?e.schedule(d.options,d.task,...d.args):d.task(...d.args),a())return d.doDone(r),yield t(d.options,r),d._assertStatus("DONE"),d._resolve(n)}catch(e){return i=e,d._onFailure(i,r,a,p,t)}}))()}doExpire(e,a,p){var t,d;return this._states.jobStatus("RUNNING"===this.options.id)&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),d={args:this.args,options:this.options,retryCount:this.retryCount},t=new BottleneckError$3(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(t,d,e,a,p)}_onFailure(e,a,p,t,d){var i=this;return _asyncToGenerator$7((function*(){var r,n;if(p())return null!=(r=yield i.Events.trigger("failed",e,a))?(n=~~r,i.Events.trigger("retry",`Retrying ${i.options.id} after ${n} ms`,a),i.retryCount++,t(n)):(i.doDone(a),yield d(i.options,a),i._assertStatus("DONE"),i._reject(e))}))()}doDone(e){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",e)}};var Job_1=Job$1,BottleneckError$2,LocalDatastore$1,parser$6;function asyncGeneratorStep$6(e,a,p,t,d,i,r){try{var n=e[i](r),s=n.value}catch(e){return void p(e)}n.done?a(s):Promise.resolve(s).then(t,d)}function _asyncToGenerator$6(e){return function(){var a=this,p=arguments;return new Promise((function(t,d){var i=e.apply(a,p);function r(e){asyncGeneratorStep$6(i,t,d,r,n,"next",e)}function n(e){asyncGeneratorStep$6(i,t,d,r,n,"throw",e)}r(void 0)}))}}parser$6=parser$8,BottleneckError$2=BottleneckError_1,LocalDatastore$1=class{constructor(e,a,p){this.instance=e,this.storeOptions=a,this.clientId=this.instance._randomIndex(),parser$6.load(p,p,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var e;return null==this.heartbeat&&(null!=this.storeOptions.reservoirRefreshInterval&&null!=this.storeOptions.reservoirRefreshAmount||null!=this.storeOptions.reservoirIncreaseInterval&&null!=this.storeOptions.reservoirIncreaseAmount)?"function"==typeof(e=this.heartbeat=setInterval((()=>{var e,a,p,t,d;if(t=Date.now(),null!=this.storeOptions.reservoirRefreshInterval&&t>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=t,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),null!=this.storeOptions.reservoirIncreaseInterval&&t>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval){var i=this.storeOptions;if(e=i.reservoirIncreaseAmount,p=i.reservoirIncreaseMaximum,d=i.reservoir,this._lastReservoirIncrease=t,(a=null!=p?Math.min(e,p-d):e)>0)return this.storeOptions.reservoir+=a,this.instance._drainAll(this.computeCapacity())}}),this.heartbeatInterval)).unref?e.unref():void 0:clearInterval(this.heartbeat)}__publish__(e){var a=this;return _asyncToGenerator$6((function*(){return yield a.yieldLoop(),a.instance.Events.trigger("message",e.toString())}))()}__disconnect__(e){var a=this;return _asyncToGenerator$6((function*(){return yield a.yieldLoop(),clearInterval(a.heartbeat),a.Promise.resolve()}))()}yieldLoop(e=0){return new this.Promise((function(a,p){return setTimeout(a,e)}))}computePenalty(){var e;return null!=(e=this.storeOptions.penalty)?e:15*this.storeOptions.minTime||5e3}__updateSettings__(e){var a=this;return _asyncToGenerator$6((function*(){return yield a.yieldLoop(),parser$6.overwrite(e,e,a.storeOptions),a._startHeartbeat(),a.instance._drainAll(a.computeCapacity()),!0}))()}__running__(){var e=this;return _asyncToGenerator$6((function*(){return yield e.yieldLoop(),e._running}))()}__queued__(){var e=this;return _asyncToGenerator$6((function*(){return yield e.yieldLoop(),e.instance.queued()}))()}__done__(){var e=this;return _asyncToGenerator$6((function*(){return yield e.yieldLoop(),e._done}))()}__groupCheck__(e){var a=this;return _asyncToGenerator$6((function*(){return yield a.yieldLoop(),a._nextRequest+a.timeout=e}check(e,a){return this.conditionsCheck(e)&&this._nextRequest-a<=0}__check__(e){var a=this;return _asyncToGenerator$6((function*(){var p;return yield a.yieldLoop(),p=Date.now(),a.check(e,p)}))()}__register__(e,a,p){var t=this;return _asyncToGenerator$6((function*(){var e,p;return yield t.yieldLoop(),e=Date.now(),t.conditionsCheck(a)?(t._running+=a,null!=t.storeOptions.reservoir&&(t.storeOptions.reservoir-=a),p=Math.max(t._nextRequest-e,0),t._nextRequest=e+p+t.storeOptions.minTime,{success:!0,wait:p,reservoir:t.storeOptions.reservoir}):{success:!1}}))()}strategyIsBlock(){return 3===this.storeOptions.strategy}__submit__(e,a){var p=this;return _asyncToGenerator$6((function*(){var t,d,i;if(yield p.yieldLoop(),null!=p.storeOptions.maxConcurrent&&a>p.storeOptions.maxConcurrent)throw new BottleneckError$2(`Impossible to add a job having a weight of ${a} to a limiter having a maxConcurrent setting of ${p.storeOptions.maxConcurrent}`);return d=Date.now(),i=null!=p.storeOptions.highWater&&e===p.storeOptions.highWater&&!p.check(a,d),(t=p.strategyIsBlock()&&(i||p.isBlocked(d)))&&(p._unblockTime=d+p.computePenalty(),p._nextRequest=p._unblockTime+p.storeOptions.minTime,p.instance._dropAllQueued()),{reachedHWM:i,blocked:t,strategy:p.storeOptions.strategy}}))()}__free__(e,a){var p=this;return _asyncToGenerator$6((function*(){return yield p.yieldLoop(),p._running-=a,p._done+=a,p.instance._drainAll(p.computeCapacity()),{running:p._running}}))()}};var LocalDatastore_1=LocalDatastore$1,require$$0$1={"blacklist_client.lua":"local blacklist = ARGV[num_static_argv + 1]\n\nif redis.call('zscore', client_last_seen_key, blacklist) then\n redis.call('zadd', client_last_seen_key, 0, blacklist)\nend\n\n\nreturn {}\n","check.lua":"local weight = tonumber(ARGV[num_static_argv + 1])\n\nlocal capacity = process_tick(now, false)['capacity']\nlocal nextRequest = tonumber(redis.call('hget', settings_key, 'nextRequest'))\n\nreturn conditions_check(capacity, weight) and nextRequest - now <= 0\n","conditions_check.lua":"local conditions_check = function (capacity, weight)\n return capacity == nil or weight <= capacity\nend\n","current_reservoir.lua":"return process_tick(now, false)['reservoir']\n","done.lua":"process_tick(now, false)\n\nreturn tonumber(redis.call('hget', settings_key, 'done'))\n","free.lua":"local index = ARGV[num_static_argv + 1]\n\nredis.call('zadd', job_expirations_key, 0, index)\n\nreturn process_tick(now, false)['running']\n","get_time.lua":"redis.replicate_commands()\n\nlocal get_time = function ()\n local time = redis.call('time')\n\n return tonumber(time[1]..string.sub(time[2], 1, 3))\nend\n","group_check.lua":"return not (redis.call('exists', settings_key) == 1)\n","heartbeat.lua":"process_tick(now, true)\n","increment_reservoir.lua":"local incr = tonumber(ARGV[num_static_argv + 1])\n\nredis.call('hincrby', settings_key, 'reservoir', incr)\n\nlocal reservoir = process_tick(now, true)['reservoir']\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn reservoir\n","init.lua":"local clear = tonumber(ARGV[num_static_argv + 1])\nlocal limiter_version = ARGV[num_static_argv + 2]\nlocal num_local_argv = num_static_argv + 2\n\nif clear == 1 then\n redis.call('del', unpack(KEYS))\nend\n\nif redis.call('exists', settings_key) == 0 then\n -- Create\n local args = {'hmset', settings_key}\n\n for i = num_local_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\n end\n\n redis.call(unpack(args))\n redis.call('hmset', settings_key,\n 'nextRequest', now,\n 'lastReservoirRefresh', now,\n 'lastReservoirIncrease', now,\n 'running', 0,\n 'done', 0,\n 'unblockTime', 0,\n 'capacityPriorityCounter', 0\n )\n\nelse\n -- Apply migrations\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'version'\n )\n local id = settings[1]\n local current_version = settings[2]\n\n if current_version ~= limiter_version then\n local version_digits = {}\n for k, v in string.gmatch(current_version, \"([^.]+)\") do\n table.insert(version_digits, tonumber(k))\n end\n\n -- 2.10.0\n if version_digits[2] < 10 then\n redis.call('hsetnx', settings_key, 'reservoirRefreshInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirRefreshAmount', '')\n redis.call('hsetnx', settings_key, 'lastReservoirRefresh', '')\n redis.call('hsetnx', settings_key, 'done', 0)\n redis.call('hset', settings_key, 'version', '2.10.0')\n end\n\n -- 2.11.1\n if version_digits[2] < 11 or (version_digits[2] == 11 and version_digits[3] < 1) then\n if redis.call('hstrlen', settings_key, 'lastReservoirRefresh') == 0 then\n redis.call('hmset', settings_key,\n 'lastReservoirRefresh', now,\n 'version', '2.11.1'\n )\n end\n end\n\n -- 2.14.0\n if version_digits[2] < 14 then\n local old_running_key = 'b_'..id..'_running'\n local old_executing_key = 'b_'..id..'_executing'\n\n if redis.call('exists', old_running_key) == 1 then\n redis.call('rename', old_running_key, job_weights_key)\n end\n if redis.call('exists', old_executing_key) == 1 then\n redis.call('rename', old_executing_key, job_expirations_key)\n end\n redis.call('hset', settings_key, 'version', '2.14.0')\n end\n\n -- 2.15.2\n if version_digits[2] < 15 or (version_digits[2] == 15 and version_digits[3] < 2) then\n redis.call('hsetnx', settings_key, 'capacityPriorityCounter', 0)\n redis.call('hset', settings_key, 'version', '2.15.2')\n end\n\n -- 2.17.0\n if version_digits[2] < 17 then\n redis.call('hsetnx', settings_key, 'clientTimeout', 10000)\n redis.call('hset', settings_key, 'version', '2.17.0')\n end\n\n -- 2.18.0\n if version_digits[2] < 18 then\n redis.call('hsetnx', settings_key, 'reservoirIncreaseInterval', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseAmount', '')\n redis.call('hsetnx', settings_key, 'reservoirIncreaseMaximum', '')\n redis.call('hsetnx', settings_key, 'lastReservoirIncrease', now)\n redis.call('hset', settings_key, 'version', '2.18.0')\n end\n\n end\n\n process_tick(now, false)\nend\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n","process_tick.lua":"local process_tick = function (now, always_publish)\n\n local compute_capacity = function (maxConcurrent, running, reservoir)\n if maxConcurrent ~= nil and reservoir ~= nil then\n return math.min((maxConcurrent - running), reservoir)\n elseif maxConcurrent ~= nil then\n return maxConcurrent - running\n elseif reservoir ~= nil then\n return reservoir\n else\n return nil\n end\n end\n\n local settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'running',\n 'reservoir',\n 'reservoirRefreshInterval',\n 'reservoirRefreshAmount',\n 'lastReservoirRefresh',\n 'reservoirIncreaseInterval',\n 'reservoirIncreaseAmount',\n 'reservoirIncreaseMaximum',\n 'lastReservoirIncrease',\n 'capacityPriorityCounter',\n 'clientTimeout'\n )\n local id = settings[1]\n local maxConcurrent = tonumber(settings[2])\n local running = tonumber(settings[3])\n local reservoir = tonumber(settings[4])\n local reservoirRefreshInterval = tonumber(settings[5])\n local reservoirRefreshAmount = tonumber(settings[6])\n local lastReservoirRefresh = tonumber(settings[7])\n local reservoirIncreaseInterval = tonumber(settings[8])\n local reservoirIncreaseAmount = tonumber(settings[9])\n local reservoirIncreaseMaximum = tonumber(settings[10])\n local lastReservoirIncrease = tonumber(settings[11])\n local capacityPriorityCounter = tonumber(settings[12])\n local clientTimeout = tonumber(settings[13])\n\n local initial_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n --\n -- Process 'running' changes\n --\n local expired = redis.call('zrangebyscore', job_expirations_key, '-inf', '('..now)\n\n if #expired > 0 then\n redis.call('zremrangebyscore', job_expirations_key, '-inf', '('..now)\n\n local flush_batch = function (batch, acc)\n local weights = redis.call('hmget', job_weights_key, unpack(batch))\n redis.call('hdel', job_weights_key, unpack(batch))\n local clients = redis.call('hmget', job_clients_key, unpack(batch))\n redis.call('hdel', job_clients_key, unpack(batch))\n\n -- Calculate sum of removed weights\n for i = 1, #weights do\n acc['total'] = acc['total'] + (tonumber(weights[i]) or 0)\n end\n\n -- Calculate sum of removed weights by client\n local client_weights = {}\n for i = 1, #clients do\n local removed = tonumber(weights[i]) or 0\n if removed > 0 then\n acc['client_weights'][clients[i]] = (acc['client_weights'][clients[i]] or 0) + removed\n end\n end\n end\n\n local acc = {\n ['total'] = 0,\n ['client_weights'] = {}\n }\n local batch_size = 1000\n\n -- Compute changes to Zsets and apply changes to Hashes\n for i = 1, #expired, batch_size do\n local batch = {}\n for j = i, math.min(i + batch_size - 1, #expired) do\n table.insert(batch, expired[j])\n end\n\n flush_batch(batch, acc)\n end\n\n -- Apply changes to Zsets\n if acc['total'] > 0 then\n redis.call('hincrby', settings_key, 'done', acc['total'])\n running = tonumber(redis.call('hincrby', settings_key, 'running', -acc['total']))\n end\n\n for client, weight in pairs(acc['client_weights']) do\n redis.call('zincrby', client_running_key, -weight, client)\n end\n end\n\n --\n -- Process 'reservoir' changes\n --\n local reservoirRefreshActive = reservoirRefreshInterval ~= nil and reservoirRefreshAmount ~= nil\n if reservoirRefreshActive and now >= lastReservoirRefresh + reservoirRefreshInterval then\n reservoir = reservoirRefreshAmount\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirRefresh', now\n )\n end\n\n local reservoirIncreaseActive = reservoirIncreaseInterval ~= nil and reservoirIncreaseAmount ~= nil\n if reservoirIncreaseActive and now >= lastReservoirIncrease + reservoirIncreaseInterval then\n local num_intervals = math.floor((now - lastReservoirIncrease) / reservoirIncreaseInterval)\n local incr = reservoirIncreaseAmount * num_intervals\n if reservoirIncreaseMaximum ~= nil then\n incr = math.min(incr, reservoirIncreaseMaximum - (reservoir or 0))\n end\n if incr > 0 then\n reservoir = (reservoir or 0) + incr\n end\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'lastReservoirIncrease', lastReservoirIncrease + (num_intervals * reservoirIncreaseInterval)\n )\n end\n\n --\n -- Clear unresponsive clients\n --\n local unresponsive = redis.call('zrangebyscore', client_last_seen_key, '-inf', (now - clientTimeout))\n local unresponsive_lookup = {}\n local terminated_clients = {}\n for i = 1, #unresponsive do\n unresponsive_lookup[unresponsive[i]] = true\n if tonumber(redis.call('zscore', client_running_key, unresponsive[i])) == 0 then\n table.insert(terminated_clients, unresponsive[i])\n end\n end\n if #terminated_clients > 0 then\n redis.call('zrem', client_running_key, unpack(terminated_clients))\n redis.call('hdel', client_num_queued_key, unpack(terminated_clients))\n redis.call('zrem', client_last_registered_key, unpack(terminated_clients))\n redis.call('zrem', client_last_seen_key, unpack(terminated_clients))\n end\n\n --\n -- Broadcast capacity changes\n --\n local final_capacity = compute_capacity(maxConcurrent, running, reservoir)\n\n if always_publish or (initial_capacity ~= nil and final_capacity == nil) then\n -- always_publish or was not unlimited, now unlimited\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n\n elseif initial_capacity ~= nil and final_capacity ~= nil and final_capacity > initial_capacity then\n -- capacity was increased\n -- send the capacity message to the limiter having the lowest number of running jobs\n -- the tiebreaker is the limiter having not registered a job in the longest time\n\n local lowest_concurrency_value = nil\n local lowest_concurrency_clients = {}\n local lowest_concurrency_last_registered = {}\n local client_concurrencies = redis.call('zrange', client_running_key, 0, -1, 'withscores')\n\n for i = 1, #client_concurrencies, 2 do\n local client = client_concurrencies[i]\n local concurrency = tonumber(client_concurrencies[i+1])\n\n if (\n lowest_concurrency_value == nil or lowest_concurrency_value == concurrency\n ) and (\n not unresponsive_lookup[client]\n ) and (\n tonumber(redis.call('hget', client_num_queued_key, client)) > 0\n ) then\n lowest_concurrency_value = concurrency\n table.insert(lowest_concurrency_clients, client)\n local last_registered = tonumber(redis.call('zscore', client_last_registered_key, client))\n table.insert(lowest_concurrency_last_registered, last_registered)\n end\n end\n\n if #lowest_concurrency_clients > 0 then\n local position = 1\n local earliest = lowest_concurrency_last_registered[1]\n\n for i,v in ipairs(lowest_concurrency_last_registered) do\n if v < earliest then\n position = i\n earliest = v\n end\n end\n\n local next_client = lowest_concurrency_clients[position]\n redis.call('publish', 'b_'..id,\n 'capacity-priority:'..(final_capacity or '')..\n ':'..next_client..\n ':'..capacityPriorityCounter\n )\n redis.call('hincrby', settings_key, 'capacityPriorityCounter', '1')\n else\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\n end\n end\n\n return {\n ['capacity'] = final_capacity,\n ['running'] = running,\n ['reservoir'] = reservoir\n }\nend\n","queued.lua":"local clientTimeout = tonumber(redis.call('hget', settings_key, 'clientTimeout'))\nlocal valid_clients = redis.call('zrangebyscore', client_last_seen_key, (now - clientTimeout), 'inf')\nlocal client_queued = redis.call('hmget', client_num_queued_key, unpack(valid_clients))\n\nlocal sum = 0\nfor i = 1, #client_queued do\n sum = sum + tonumber(client_queued[i])\nend\n\nreturn sum\n","refresh_expiration.lua":"local refresh_expiration = function (now, nextRequest, groupTimeout)\n\n if groupTimeout ~= nil then\n local ttl = (nextRequest + groupTimeout) - now\n\n for i = 1, #KEYS do\n redis.call('pexpire', KEYS[i], ttl)\n end\n end\n\nend\n","refs.lua":"local settings_key = KEYS[1]\nlocal job_weights_key = KEYS[2]\nlocal job_expirations_key = KEYS[3]\nlocal job_clients_key = KEYS[4]\nlocal client_running_key = KEYS[5]\nlocal client_num_queued_key = KEYS[6]\nlocal client_last_registered_key = KEYS[7]\nlocal client_last_seen_key = KEYS[8]\n\nlocal now = tonumber(ARGV[1])\nlocal client = ARGV[2]\n\nlocal num_static_argv = 2\n","register.lua":"local index = ARGV[num_static_argv + 1]\nlocal weight = tonumber(ARGV[num_static_argv + 2])\nlocal expiration = tonumber(ARGV[num_static_argv + 3])\n\nlocal state = process_tick(now, false)\nlocal capacity = state['capacity']\nlocal reservoir = state['reservoir']\n\nlocal settings = redis.call('hmget', settings_key,\n 'nextRequest',\n 'minTime',\n 'groupTimeout'\n)\nlocal nextRequest = tonumber(settings[1])\nlocal minTime = tonumber(settings[2])\nlocal groupTimeout = tonumber(settings[3])\n\nif conditions_check(capacity, weight) then\n\n redis.call('hincrby', settings_key, 'running', weight)\n redis.call('hset', job_weights_key, index, weight)\n if expiration ~= nil then\n redis.call('zadd', job_expirations_key, now + expiration, index)\n end\n redis.call('hset', job_clients_key, index, client)\n redis.call('zincrby', client_running_key, weight, client)\n redis.call('hincrby', client_num_queued_key, client, -1)\n redis.call('zadd', client_last_registered_key, now, client)\n\n local wait = math.max(nextRequest - now, 0)\n local newNextRequest = now + wait + minTime\n\n if reservoir == nil then\n redis.call('hset', settings_key,\n 'nextRequest', newNextRequest\n )\n else\n reservoir = reservoir - weight\n redis.call('hmset', settings_key,\n 'reservoir', reservoir,\n 'nextRequest', newNextRequest\n )\n end\n\n refresh_expiration(now, newNextRequest, groupTimeout)\n\n return {true, wait, reservoir}\n\nelse\n return {false}\nend\n","register_client.lua":"local queued = tonumber(ARGV[num_static_argv + 1])\n\n-- Could have been re-registered concurrently\nif not redis.call('zscore', client_last_seen_key, client) then\n redis.call('zadd', client_running_key, 0, client)\n redis.call('hset', client_num_queued_key, client, queued)\n redis.call('zadd', client_last_registered_key, 0, client)\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n\nreturn {}\n","running.lua":"return process_tick(now, false)['running']\n","submit.lua":"local queueLength = tonumber(ARGV[num_static_argv + 1])\nlocal weight = tonumber(ARGV[num_static_argv + 2])\n\nlocal capacity = process_tick(now, false)['capacity']\n\nlocal settings = redis.call('hmget', settings_key,\n 'id',\n 'maxConcurrent',\n 'highWater',\n 'nextRequest',\n 'strategy',\n 'unblockTime',\n 'penalty',\n 'minTime',\n 'groupTimeout'\n)\nlocal id = settings[1]\nlocal maxConcurrent = tonumber(settings[2])\nlocal highWater = tonumber(settings[3])\nlocal nextRequest = tonumber(settings[4])\nlocal strategy = tonumber(settings[5])\nlocal unblockTime = tonumber(settings[6])\nlocal penalty = tonumber(settings[7])\nlocal minTime = tonumber(settings[8])\nlocal groupTimeout = tonumber(settings[9])\n\nif maxConcurrent ~= nil and weight > maxConcurrent then\n return redis.error_reply('OVERWEIGHT:'..weight..':'..maxConcurrent)\nend\n\nlocal reachedHWM = (highWater ~= nil and queueLength == highWater\n and not (\n conditions_check(capacity, weight)\n and nextRequest - now <= 0\n )\n)\n\nlocal blocked = strategy == 3 and (reachedHWM or unblockTime >= now)\n\nif blocked then\n local computedPenalty = penalty\n if computedPenalty == nil then\n if minTime == 0 then\n computedPenalty = 5000\n else\n computedPenalty = 15 * minTime\n end\n end\n\n local newNextRequest = now + computedPenalty + minTime\n\n redis.call('hmset', settings_key,\n 'unblockTime', now + computedPenalty,\n 'nextRequest', newNextRequest\n )\n\n local clients_queued_reset = redis.call('hkeys', client_num_queued_key)\n local queued_reset = {}\n for i = 1, #clients_queued_reset do\n table.insert(queued_reset, clients_queued_reset[i])\n table.insert(queued_reset, 0)\n end\n redis.call('hmset', client_num_queued_key, unpack(queued_reset))\n\n redis.call('publish', 'b_'..id, 'blocked:')\n\n refresh_expiration(now, newNextRequest, groupTimeout)\nend\n\nif not blocked and not reachedHWM then\n redis.call('hincrby', client_num_queued_key, client, 1)\nend\n\nreturn {reachedHWM, blocked, strategy}\n","update_settings.lua":"local args = {'hmset', settings_key}\n\nfor i = num_static_argv + 1, #ARGV do\n table.insert(args, ARGV[i])\nend\n\nredis.call(unpack(args))\n\nprocess_tick(now, true)\n\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\nrefresh_expiration(0, 0, groupTimeout)\n\nreturn {}\n","validate_client.lua":"if not redis.call('zscore', client_last_seen_key, client) then\n return redis.error_reply('UNKNOWN_CLIENT')\nend\n\nredis.call('zadd', client_last_seen_key, now, client)\n","validate_keys.lua":"if not (redis.call('exists', settings_key) == 1) then\n return redis.error_reply('SETTINGS_KEY_NOT_FOUND')\nend\n"},Scripts$3=createCommonjsModule((function(e,a){var p,t,d;p={refs:(t=require$$0$1)["refs.lua"],validate_keys:t["validate_keys.lua"],validate_client:t["validate_client.lua"],refresh_expiration:t["refresh_expiration.lua"],process_tick:t["process_tick.lua"],conditions_check:t["conditions_check.lua"],get_time:t["get_time.lua"]},a.allKeys=function(e){return[`b_${e}_settings`,`b_${e}_job_weights`,`b_${e}_job_expirations`,`b_${e}_job_clients`,`b_${e}_client_running`,`b_${e}_client_num_queued`,`b_${e}_client_last_registered`,`b_${e}_client_last_seen`]},d={init:{keys:a.allKeys,headers:["process_tick"],refresh_expiration:!0,code:t["init.lua"]},group_check:{keys:a.allKeys,headers:[],refresh_expiration:!1,code:t["group_check.lua"]},register_client:{keys:a.allKeys,headers:["validate_keys"],refresh_expiration:!1,code:t["register_client.lua"]},blacklist_client:{keys:a.allKeys,headers:["validate_keys","validate_client"],refresh_expiration:!1,code:t["blacklist_client.lua"]},heartbeat:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:t["heartbeat.lua"]},update_settings:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!0,code:t["update_settings.lua"]},running:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:t["running.lua"]},queued:{keys:a.allKeys,headers:["validate_keys","validate_client"],refresh_expiration:!1,code:t["queued.lua"]},done:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:t["done.lua"]},check:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick","conditions_check"],refresh_expiration:!1,code:t["check.lua"]},submit:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick","conditions_check"],refresh_expiration:!0,code:t["submit.lua"]},register:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick","conditions_check"],refresh_expiration:!0,code:t["register.lua"]},free:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!0,code:t["free.lua"]},current_reservoir:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!1,code:t["current_reservoir.lua"]},increment_reservoir:{keys:a.allKeys,headers:["validate_keys","validate_client","process_tick"],refresh_expiration:!0,code:t["increment_reservoir.lua"]}},a.names=Object.keys(d),a.keys=function(e,a){return d[e].keys(a)},a.payload=function(e){var a;return a=d[e],Array.prototype.concat(p.refs,a.headers.map((function(e){return p[e]})),a.refresh_expiration?p.refresh_expiration:"",a.code).join("\n")}})),Events$4,RedisConnection$2,Scripts$2,parser$5;function asyncGeneratorStep$5(e,a,p,t,d,i,r){try{var n=e[i](r),s=n.value}catch(e){return void p(e)}n.done?a(s):Promise.resolve(s).then(t,d)}function _asyncToGenerator$5(e){return function(){var a=this,p=arguments;return new Promise((function(t,d){var i=e.apply(a,p);function r(e){asyncGeneratorStep$5(i,t,d,r,n,"next",e)}function n(e){asyncGeneratorStep$5(i,t,d,r,n,"throw",e)}r(void 0)}))}}parser$5=parser$8,Events$4=Events_1,Scripts$2=Scripts$3,RedisConnection$2=function(){class RedisConnection{constructor(options={}){parser$5.load(options,this.defaults,this),null==this.Redis&&(this.Redis=eval("require")("redis")),null==this.Events&&(this.Events=new Events$4(this)),this.terminated=!1,null==this.client&&(this.client=this.Redis.createClient(this.clientOptions)),this.subscriber=this.client.duplicate(),this.limiters={},this.shas={},this.ready=this.Promise.all([this._setup(this.client,!1),this._setup(this.subscriber,!0)]).then((()=>this._loadScripts())).then((()=>({client:this.client,subscriber:this.subscriber})))}_setup(e,a){return e.setMaxListeners(0),new this.Promise(((p,t)=>(e.on("error",(e=>this.Events.trigger("error",e))),a&&e.on("message",((e,a)=>{var p;return null!=(p=this.limiters[e])?p._store.onMessage(e,a):void 0})),e.ready?p():e.once("ready",p))))}_loadScript(e){return new this.Promise(((a,p)=>{var t;return t=Scripts$2.payload(e),this.client.multi([["script","load",t]]).exec(((t,d)=>null!=t?p(t):(this.shas[e]=d[0],a(d[0]))))}))}_loadScripts(){return this.Promise.all(Scripts$2.names.map((e=>this._loadScript(e))))}__runCommand__(e){var a=this;return _asyncToGenerator$5((function*(){return yield a.ready,new a.Promise(((p,t)=>a.client.multi([e]).exec_atomic((function(e,a){return null!=e?t(e):p(a[0])}))))}))()}__addLimiter__(e){return this.Promise.all([e.channel(),e.channel_client()].map((a=>new this.Promise(((p,t)=>{var d;return d=t=>{if(t===a)return this.subscriber.removeListener("subscribe",d),this.limiters[a]=e,p()},this.subscriber.on("subscribe",d),this.subscriber.subscribe(a)})))))}__removeLimiter__(e){var a=this;return this.Promise.all([e.channel(),e.channel_client()].map(function(){var e=_asyncToGenerator$5((function*(e){return a.terminated||(yield new a.Promise(((p,t)=>a.subscriber.unsubscribe(e,(function(a,d){return null!=a?t(a):d===e?p():void 0}))))),delete a.limiters[e]}));return function(a){return e.apply(this,arguments)}}()))}__scriptArgs__(e,a,p,t){var d;return d=Scripts$2.keys(e,a),[this.shas[e],d.length].concat(d,p,t)}__scriptFn__(e){return this.client.evalsha.bind(this.client)}disconnect(e=!0){var a,p,t,d;for(a=0,t=(d=Object.keys(this.limiters)).length;a(this._loadScripts(),{client:this.client,subscriber:this.subscriber})))}_setup(e,a){return e.setMaxListeners(0),new this.Promise(((p,t)=>(e.on("error",(e=>this.Events.trigger("error",e))),a&&e.on("message",((e,a)=>{var p;return null!=(p=this.limiters[e])?p._store.onMessage(e,a):void 0})),"ready"===e.status?p():e.once("ready",p))))}_loadScripts(){return Scripts$1.names.forEach((e=>this.client.defineCommand(e,{lua:Scripts$1.payload(e)})))}__runCommand__(e){var a=this;return _asyncToGenerator$4((function*(){yield a.ready;var p=_slicedToArray$3(yield a.client.pipeline([e]).exec(),1);return _slicedToArray$3(p[0],2)[1]}))()}__addLimiter__(e){return this.Promise.all([e.channel(),e.channel_client()].map((a=>new this.Promise(((p,t)=>this.subscriber.subscribe(a,(()=>(this.limiters[a]=e,p()))))))))}__removeLimiter__(e){var a=this;return[e.channel(),e.channel_client()].forEach(function(){var e=_asyncToGenerator$4((function*(e){return a.terminated||(yield a.subscriber.unsubscribe(e)),delete a.limiters[e]}));return function(a){return e.apply(this,arguments)}}())}__scriptArgs__(e,a,p,t){var d;return[(d=Scripts$1.keys(e,a)).length].concat(d,p,t)}__scriptFn__(e){return this.client[e].bind(this.client)}disconnect(e=!0){var a,p,t,d;for(a=0,t=(d=Object.keys(this.limiters)).length;a(this.clients=e,this.runScript("init",this.prepareInitSettings(this.clearDatastore))))).then((()=>this.connection.__addLimiter__(this.instance))).then((()=>this.runScript("register_client",[this.instance.queued()]))).then((()=>{var e;return"function"==typeof(e=this.heartbeat=setInterval((()=>this.runScript("heartbeat",[]).catch((e=>this.instance.Events.trigger("error",e)))),this.heartbeatInterval)).unref&&e.unref(),this.clients}))}__publish__(e){var a=this;return _asyncToGenerator$3((function*(){return(yield a.ready).client.publish(a.instance.channel(),`message:${e.toString()}`)}))()}onMessage(e,a){var p=this;return _asyncToGenerator$3((function*(){var e,t,d,i,r,n,s,o,l,m;try{s=a.indexOf(":");var u=[a.slice(0,s),a.slice(s+1)];if(d=u[1],"capacity"===(m=u[0]))return yield p.instance._drainAll(d.length>0?~~d:void 0);if("capacity-priority"===m){var c=_slicedToArray$2(d.split(":"),3);return l=c[0],o=c[1],t=c[2],e=l.length>0?~~l:void 0,o===p.clientId?(i=yield p.instance._drainAll(e),n=null!=e?e-(i||0):"",yield p.clients.client.publish(p.instance.channel(),`capacity-priority:${n}::${t}`)):""===o?(clearTimeout(p.capacityPriorityCounters[t]),delete p.capacityPriorityCounters[t],p.instance._drainAll(e)):p.capacityPriorityCounters[t]=setTimeout(_asyncToGenerator$3((function*(){var a;try{return delete p.capacityPriorityCounters[t],yield p.runScript("blacklist_client",[o]),yield p.instance._drainAll(e)}catch(e){return a=e,p.instance.Events.trigger("error",a)}})),1e3)}if("message"===m)return p.instance.Events.trigger("message",d);if("blocked"===m)return yield p.instance._dropAllQueued()}catch(e){return r=e,p.instance.Events.trigger("error",r)}}))()}__disconnect__(e){return clearInterval(this.heartbeat),this.sharedConnection?this.connection.__removeLimiter__(this.instance):this.connection.disconnect(e)}runScript(e,a){var p=this;return _asyncToGenerator$3((function*(){return"init"!==e&&"register_client"!==e&&(yield p.ready),new p.Promise(((t,d)=>{var i,r;return i=[Date.now(),p.clientId].concat(a),p.instance.Events.trigger("debug",`Calling Redis script: ${e}.lua`,i),r=p.connection.__scriptArgs__(e,p.originalId,i,(function(e,a){return null!=e?d(e):t(a)})),p.connection.__scriptFn__(e)(...r)})).catch((t=>"SETTINGS_KEY_NOT_FOUND"===t.message?"heartbeat"===e?p.Promise.resolve():p.runScript("init",p.prepareInitSettings(!1)).then((()=>p.runScript(e,a))):"UNKNOWN_CLIENT"===t.message?p.runScript("register_client",[p.instance.queued()]).then((()=>p.runScript(e,a))):p.Promise.reject(t)))}))()}prepareArray(e){var a,p,t,d;for(t=[],a=0,p=e.length;a(e[this.status[p]]=a,e)),{})}};var States_1=States$1,DLList,Sync$1;function asyncGeneratorStep$2(e,a,p,t,d,i,r){try{var n=e[i](r),s=n.value}catch(e){return void p(e)}n.done?a(s):Promise.resolve(s).then(t,d)}function _asyncToGenerator$2(e){return function(){var a=this,p=arguments;return new Promise((function(t,d){var i=e.apply(a,p);function r(e){asyncGeneratorStep$2(i,t,d,r,n,"next",e)}function n(e){asyncGeneratorStep$2(i,t,d,r,n,"throw",e)}r(void 0)}))}}DLList=DLList_1,Sync$1=class{constructor(e,a){this.schedule=this.schedule.bind(this),this.name=e,this.Promise=a,this._running=0,this._queue=new DLList}isEmpty(){return 0===this._queue.length}_tryToRun(){var e=this;return _asyncToGenerator$2((function*(){var a,p,t,d,i,r,n;if(e._running<1&&e._queue.length>0){e._running++;var s=e._queue.shift();return n=s.task,a=s.args,i=s.resolve,d=s.reject,p=yield _asyncToGenerator$2((function*(){try{return r=yield n(...a),function(){return i(r)}}catch(e){return t=e,function(){return d(t)}}}))(),e._running--,e._tryToRun(),p()}}))()}schedule(e,...a){var p,t,d;return d=t=null,p=new this.Promise((function(e,a){return d=e,t=a})),this._queue.push({task:e,args:a,resolve:d,reject:t}),this._tryToRun(),p}};var Sync_1=Sync$1,version="2.19.5",require$$8={version:version},require$$0=Bottleneck_1,Events$2,Group,IORedisConnection,RedisConnection,Scripts,parser$2;function _slicedToArray$1(e,a){return _arrayWithHoles$1(e)||_iterableToArrayLimit$1(e,a)||_nonIterableRest$1()}function _nonIterableRest$1(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArrayLimit$1(e,a){var p=[],t=!0,d=!1,i=void 0;try{for(var r,n=e[Symbol.iterator]();!(t=(r=n.next()).done)&&(p.push(r.value),!a||p.length!==a);t=!0);}catch(e){d=!0,i=e}finally{try{t||null==n.return||n.return()}finally{if(d)throw i}}return p}function _arrayWithHoles$1(e){if(Array.isArray(e))return e}function asyncGeneratorStep$1(e,a,p,t,d,i,r){try{var n=e[i](r),s=n.value}catch(e){return void p(e)}n.done?a(s):Promise.resolve(s).then(t,d)}function _asyncToGenerator$1(e){return function(){var a=this,p=arguments;return new Promise((function(t,d){var i=e.apply(a,p);function r(e){asyncGeneratorStep$1(i,t,d,r,n,"next",e)}function n(e){asyncGeneratorStep$1(i,t,d,r,n,"throw",e)}r(void 0)}))}}parser$2=parser$8,Events$2=Events_1,RedisConnection=RedisConnection_1,IORedisConnection=IORedisConnection_1,Scripts=Scripts$3,Group=function(){class e{constructor(e={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=e,parser$2.load(this.limiterOptions,this.defaults,this),this.Events=new Events$2(this),this.instances={},this.Bottleneck=require$$0,this._startAutoCleanup(),this.sharedConnection=null!=this.connection,null==this.connection&&("redis"===this.limiterOptions.datastore?this.connection=new RedisConnection(Object.assign({},this.limiterOptions,{Events:this.Events})):"ioredis"===this.limiterOptions.datastore&&(this.connection=new IORedisConnection(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(e=""){var a;return null!=(a=this.instances[e])?a:(()=>{var a;return a=this.instances[e]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${e}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",a,e),a})()}deleteKey(e=""){var a=this;return _asyncToGenerator$1((function*(){var p,t;return t=a.instances[e],a.connection&&(p=yield a.connection.__runCommand__(["del",...Scripts.allKeys(`${a.id}-${e}`)])),null!=t&&(delete a.instances[e],yield t.disconnect()),null!=t||p>0}))()}limiters(){var e,a,p,t;for(e in p=[],a=this.instances)t=a[e],p.push({key:e,limiter:t});return p}keys(){return Object.keys(this.instances)}clusterKeys(){var e=this;return _asyncToGenerator$1((function*(){var a,p,t,d,i,r,n,s;if(null==e.connection)return e.Promise.resolve(e.keys());for(r=[],a=null,s=`b_${e.id}-`.length,p="_settings".length;0!==a;){var o=_slicedToArray$1(yield e.connection.__runCommand__(["scan",null!=a?a:0,"match",`b_${e.id}-*_settings`,"count",1e4]),2);for(a=~~o[0],d=0,n=(t=o[1]).length;dthis._resolve=e))}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(e){var a;return this._arr.push(e),a=this._promise,this._arr.length===this.maxSize?this._flush():null!=this.maxTime&&1===this._arr.length&&(this._timeout=setTimeout((()=>this._flush()),this.maxTime)),a}}return e.prototype.defaults={maxTime:null,maxSize:null,Promise:Promise},e}.call(void 0);var Batcher_1=Batcher;function _slicedToArray(e,a){return _arrayWithHoles(e)||_iterableToArrayLimit(e,a)||_nonIterableRest()}function _iterableToArrayLimit(e,a){var p=[],t=!0,d=!1,i=void 0;try{for(var r,n=e[Symbol.iterator]();!(t=(r=n.next()).done)&&(p.push(r.value),!a||p.length!==a);t=!0);}catch(e){d=!0,i=e}finally{try{t||null==n.return||n.return()}finally{if(d)throw i}}return p}function _toArray(e){return _arrayWithHoles(e)||_iterableToArray(e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function _arrayWithHoles(e){if(Array.isArray(e))return e}function asyncGeneratorStep(e,a,p,t,d,i,r){try{var n=e[i](r),s=n.value}catch(e){return void p(e)}n.done?a(s):Promise.resolve(s).then(t,d)}function _asyncToGenerator(e){return function(){var a=this,p=arguments;return new Promise((function(t,d){var i=e.apply(a,p);function r(e){asyncGeneratorStep(i,t,d,r,n,"next",e)}function n(e){asyncGeneratorStep(i,t,d,r,n,"throw",e)}r(void 0)}))}}var Bottleneck,DEFAULT_PRIORITY,Events,Job,LocalDatastore,NUM_PRIORITIES,Queues,RedisDatastore,States,Sync,parser,splice=[].splice;NUM_PRIORITIES=10,DEFAULT_PRIORITY=5,parser=parser$8,Queues=Queues_1,Job=Job_1,LocalDatastore=LocalDatastore_1,RedisDatastore=RedisDatastore_1,Events=Events_1,States=States_1,Sync=Sync_1,Bottleneck=function(){class e{constructor(a={},...p){var t,d;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(a,p),parser.load(a,this.instanceDefaults,this),this._queues=new Queues(NUM_PRIORITIES),this._scheduled={},this._states=new States(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new Events(this),this._submitLock=new Sync("submit",this.Promise),this._registerLock=new Sync("register",this.Promise),d=parser.load(a,this.storeDefaults,{}),this._store=function(){if("redis"===this.datastore||"ioredis"===this.datastore||null!=this.connection)return t=parser.load(a,this.redisStoreDefaults,{}),new RedisDatastore(this,d,t);if("local"===this.datastore)return t=parser.load(a,this.localStoreDefaults,{}),new LocalDatastore(this,d,t);throw new e.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}.call(this),this._queues.on("leftzero",(()=>{var e;return null!=(e=this._store.heartbeat)&&"function"==typeof e.ref?e.ref():void 0})),this._queues.on("zero",(()=>{var e;return null!=(e=this._store.heartbeat)&&"function"==typeof e.unref?e.unref():void 0}))}_validateOptions(a,p){if(null==a||"object"!=typeof a||0!==p.length)throw new e.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(e){return this._store.__publish__(e)}disconnect(e=!0){return this._store.__disconnect__(e)}chain(e){return this._limiter=e,this}queued(e){return this._queues.queued(e)}clusterQueued(){return this._store.__queued__()}empty(){return 0===this.queued()&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(e){return this._states.jobStatus(e)}jobs(e){return this._states.statusJobs(e)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(e=1){return this._store.__check__(e)}_clearGlobalState(e){return null!=this._scheduled[e]&&(clearTimeout(this._scheduled[e].expiration),delete this._scheduled[e],!0)}_free(e,a,p,t){var d=this;return _asyncToGenerator((function*(){var a,i;try{if(i=(yield d._store.__free__(e,p.weight)).running,d.Events.trigger("debug",`Freed ${p.id}`,t),0===i&&d.empty())return d.Events.trigger("idle")}catch(e){return a=e,d.Events.trigger("error",a)}}))()}_run(e,a,p){var t,d,i;return a.doRun(),t=this._clearGlobalState.bind(this,e),i=this._run.bind(this,e,a),d=this._free.bind(this,e,a),this._scheduled[e]={timeout:setTimeout((()=>a.doExecute(this._limiter,t,i,d)),p),expiration:null!=a.options.expiration?setTimeout((function(){return a.doExpire(t,i,d)}),p+a.options.expiration):void 0,job:a}}_drainOne(e){return this._registerLock.schedule((()=>{var a,p,t,d,i;if(0===this.queued())return this.Promise.resolve(null);i=this._queues.getFirst();var r=t=i.first();return d=r.options,a=r.args,null!=e&&d.weight>e?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${d.id}`,{args:a,options:d}),p=this._randomIndex(),this._store.__register__(p,d.weight,d.expiration).then((({success:e,wait:r,reservoir:n})=>{var s;return this.Events.trigger("debug",`Drained ${d.id}`,{success:e,args:a,options:d}),e?(i.shift(),(s=this.empty())&&this.Events.trigger("empty"),0===n&&this.Events.trigger("depleted",s),this._run(p,t,r),this.Promise.resolve(d.weight)):this.Promise.resolve(null)})))}))}_drainAll(e,a=0){return this._drainOne(e).then((p=>{var t;return null!=p?(t=null!=e?e-p:e,this._drainAll(t,a+p)):this.Promise.resolve(a)})).catch((e=>this.Events.trigger("error",e)))}_dropAllQueued(e){return this._queues.shiftAll((function(a){return a.doDrop({message:e})}))}stop(a={}){var p,t;return a=parser.load(a,this.stopDefaults),t=e=>{var a;return a=()=>{var a;return(a=this._states.counts)[0]+a[1]+a[2]+a[3]===e},new this.Promise(((e,p)=>a()?e():this.on("done",(()=>{if(a())return this.removeAllListeners("done"),e()}))))},p=a.dropWaitingJobs?(this._run=function(e,p){return p.doDrop({message:a.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule((()=>this._submitLock.schedule((()=>{var e,p,d;for(e in p=this._scheduled)d=p[e],"RUNNING"===this.jobStatus(d.job.options.id)&&(clearTimeout(d.timeout),clearTimeout(d.expiration),d.job.doDrop({message:a.dropErrorMessage}));return this._dropAllQueued(a.dropErrorMessage),t(0)}))))):this.schedule({priority:NUM_PRIORITIES-1,weight:0},(()=>t(1))),this._receive=function(p){return p._reject(new e.prototype.BottleneckError(a.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new e.prototype.BottleneckError("stop() has already been called")),p}_addToQueue(a){var p=this;return _asyncToGenerator((function*(){var t,d,i,r,n,s,o;t=a.args,r=a.options;try{var l=yield p._store.__submit__(p.queued(),r.weight);n=l.reachedHWM,d=l.blocked,o=l.strategy}catch(e){return i=e,p.Events.trigger("debug",`Could not queue ${r.id}`,{args:t,options:r,error:i}),a.doDrop({error:i}),!1}return d?(a.doDrop(),!0):n&&(null!=(s=o===e.prototype.strategy.LEAK?p._queues.shiftLastFrom(r.priority):o===e.prototype.strategy.OVERFLOW_PRIORITY?p._queues.shiftLastFrom(r.priority+1):o===e.prototype.strategy.OVERFLOW?a:void 0)&&s.doDrop(),null==s||o===e.prototype.strategy.OVERFLOW)?(null==s&&a.doDrop(),n):(a.doQueue(n,d),p._queues.push(a),yield p._drainAll(),n)}))()}_receive(a){return null!=this._states.jobStatus(a.options.id)?(a._reject(new e.prototype.BottleneckError(`A job with the same id already exists (id=${a.options.id})`)),!1):(a.doReceive(),this._submitLock.schedule(this._addToQueue,a))}submit(...e){var a,p,t,d,i,r,n,s;"function"==typeof e[0]?(i=_toArray(e),p=i[0],e=i.slice(1),r=_slicedToArray(splice.call(e,-1),1),a=r[0],d=parser.load({},this.jobDefaults)):(d=(n=_toArray(e))[0],p=n[1],e=n.slice(2),s=_slicedToArray(splice.call(e,-1),1),a=s[0],d=parser.load(d,this.jobDefaults));return(t=new Job(((...e)=>new this.Promise((function(a,t){return p(...e,(function(...e){return(null!=e[0]?t:a)(e)}))}))),e,d,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise)).promise.then((function(e){return"function"==typeof a?a(...e):void 0})).catch((function(e){return Array.isArray(e)?"function"==typeof a?a(...e):void 0:"function"==typeof a?a(e):void 0})),this._receive(t)}schedule(...e){var a,p,t;if("function"==typeof e[0]){var d=_toArray(e);t=d[0],e=d.slice(1),p={}}else{var i=_toArray(e);p=i[0],t=i[1],e=i.slice(2)}return a=new Job(t,e,p,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(a),a.promise}wrap(e){var a,p;return a=this.schedule.bind(this),(p=function(...p){return a(e.bind(this),...p)}).withOptions=function(p,...t){return a(p,e,...t)},p}updateSettings(e={}){var a=this;return _asyncToGenerator((function*(){return yield a._store.__updateSettings__(parser.overwrite(e,a.storeDefaults)),parser.overwrite(e,a.instanceDefaults,a),a}))()}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(e=0){return this._store.__incrementReservoir__(e)}}return e.default=e,e.Events=Events,e.version=e.prototype.version=require$$8.version,e.strategy=e.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},e.BottleneckError=e.prototype.BottleneckError=BottleneckError_1,e.Group=e.prototype.Group=Group_1,e.RedisConnection=e.prototype.RedisConnection=RedisConnection_1,e.IORedisConnection=e.prototype.IORedisConnection=IORedisConnection_1,e.Batcher=e.prototype.Batcher=Batcher_1,e.prototype.jobDefaults={priority:DEFAULT_PRIORITY,weight:1,expiration:null,id:""},e.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:e.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},e.prototype.localStoreDefaults={Promise:Promise,timeout:null,heartbeatInterval:250},e.prototype.redisStoreDefaults={Promise:Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},e.prototype.instanceDefaults={datastore:"local",connection:null,id:"",rejectOnDrop:!0,trackDoneStatus:!1,Promise:Promise},e.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},e}.call(void 0);var Bottleneck_1=Bottleneck,lib=require$$0;const unifetch="undefined"!=typeof fetch?fetch:isomorphicUnfetch;class AlpacaClient{constructor(e){if(this.params=e,this.baseURLs=endpoints,this.limiter=new lib({reservoir:200,reservoirRefreshAmount:200,reservoirRefreshInterval:6e4,maxConcurrent:1,minTime:200}),"endpoints"in e&&(this.baseURLs=Object.assign(endpoints,e.endpoints)),"paper"in e.credentials||"key"in e.credentials&&e.credentials.key.startsWith("A")||(e.credentials.paper=!0),"access_token"in e.credentials&&("key"in e.credentials||"secret"in e.credentials))throw new Error("can't create client with both default and oauth credentials")}isAuthenticated(){return __awaiter(this,void 0,void 0,(function*(){try{return yield this.getAccount(),!0}catch(e){return!1}}))}getAccount(){return __awaiter(this,void 0,void 0,(function*(){return parse$3.account(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/account`}))}))}getOrder(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.order(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/orders/${e.order_id||e.client_order_id}`,data:{nested:e.nested}}))}))}getOrders(e={}){return __awaiter(this,void 0,void 0,(function*(){return parse$3.orders(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/orders`,data:Object.assign(Object.assign({},e),{symbols:e.symbols?e.symbols.join(","):void 0})}))}))}placeOrder(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.order(yield this.request({method:"POST",url:`${this.baseURLs.rest.account}/orders`,data:e}))}))}replaceOrder(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.order(yield this.request({method:"PATCH",url:`${this.baseURLs.rest.account}/orders/${e.order_id}`,data:e}))}))}cancelOrder(e){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/orders/${e.order_id}`,isJSON:!1})}cancelOrders(){return __awaiter(this,void 0,void 0,(function*(){return parse$3.canceled_orders(yield this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/orders`}))}))}getPosition(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.position(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/positions/${e.symbol}`}))}))}getPositions(){return __awaiter(this,void 0,void 0,(function*(){return parse$3.positions(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/positions`}))}))}closePosition(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.order(yield this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/positions/${e.symbol}`,data:e}))}))}closePositions(e){var a;return __awaiter(this,void 0,void 0,(function*(){return parse$3.orders(yield this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify(null!==(a=e.cancel_orders)&&void 0!==a&&a)}`}))}))}getAsset(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/assets/${e.asset_id_or_symbol}`})}getAssets(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/assets`,data:e})}getWatchlist(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`})}getWatchlists(){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/watchlists`})}createWatchlist(e){return this.request({method:"POST",url:`${this.baseURLs.rest.account}/watchlists`,data:e})}updateWatchlist(e){return this.request({method:"PUT",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`,data:e})}addToWatchlist(e){return this.request({method:"POST",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`,data:e})}removeFromWatchlist(e){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}/${e.symbol}`})}deleteWatchlist(e){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/watchlists/${e.uuid}`})}getCalendar(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/calendar`,data:e})}getNews(e){return"symbols"in e&&Array.isArray(e.symbols)&&(e.symbols=e.symbols.join(",")),this.request({method:"GET",url:`${this.baseURLs.rest.beta}/news`,data:e})}getClock(){return __awaiter(this,void 0,void 0,(function*(){return parse$3.clock(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/clock`}))}))}getAccountConfigurations(){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/configurations`})}updateAccountConfigurations(e){return this.request({method:"PATCH",url:`${this.baseURLs.rest.account}/account/configurations`,data:e})}getAccountActivities(e){return __awaiter(this,void 0,void 0,(function*(){return e.activity_types&&Array.isArray(e.activity_types)&&(e.activity_types=e.activity_types.join(",")),parse$3.activities(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/activities${e.activity_type?"/".concat(e.activity_type):""}`,data:Object.assign(Object.assign({},e),{activity_type:void 0})}))}))}getPortfolioHistory(e){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/portfolio/history`,data:e})}getBars_v1(e){return __awaiter(this,void 0,void 0,(function*(){const a=Object.assign(Object.assign({},e),{symbols:e.symbols.join(",")});return yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/bars/${e.timeframe}`,data:a})}))}getLastTrade_v1(e){return __awaiter(this,void 0,void 0,(function*(){return yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/last/stocks/${e.symbol}`})}))}getLastQuote_v1(e){return __awaiter(this,void 0,void 0,(function*(){return yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${e.symbol}`})}))}getTrades(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.pageOfTrades(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/trades`,data:Object.assign(Object.assign({},e),{symbol:void 0})}))}))}getQuotes(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.pageOfQuotes(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/quotes`,data:Object.assign(Object.assign({},e),{symbol:void 0})}))}))}getBars(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.pageOfBars(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/bars`,data:Object.assign(Object.assign({},e),{symbol:void 0})}))}))}getLatestTrade({symbol:e,feed:a,limit:p}){return __awaiter(this,void 0,void 0,(function*(){let t="";return(a||p)&&(t="?".concat(lib$3.stringify({feed:a,limit:p}))),parse$3.latestTrade(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e}/trades/latest`.concat(t)}))}))}getSnapshot(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.snapshot(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e.symbol}/snapshot`}))}))}getSnapshots(e){return __awaiter(this,void 0,void 0,(function*(){return parse$3.snapshots(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${e.symbols.join(",")}`}))}))}request(e){return __awaiter(this,void 0,void 0,(function*(){let a={};"access_token"in this.params.credentials?a.Authorization=`Bearer ${this.params.credentials.access_token}`:(a["APCA-API-KEY-ID"]=this.params.credentials.key,a["APCA-API-SECRET-KEY"]=this.params.credentials.secret),this.params.credentials.paper&&(e.url=e.url.replace("api.","paper-api."));let p="";if(e.data){for(let[a,p]of Object.entries(e.data))p instanceof Date&&(e.data[a]=p.toISOString());["POST","PATCH","PUT"].includes(e.method)||(p="?".concat(lib$3.stringify(e.data)),e.data=void 0)}const t=()=>unifetch(e.url.concat(p),{method:e.method,headers:a,body:JSON.stringify(e.data)}),d=this.params.rate_limit?()=>this.limiter.schedule(t):t;let i,r={};try{if(i=yield d(),null!=e.isJSON&&!e.isJSON)return i.ok;r=yield i.json()}catch(e){throw console.error(e),r}if("code"in r||"message"in r)throw r;return r}))}}var isBlob=e=>"undefined"!=typeof Blob&&(e instanceof Blob||"[object Blob]"===Object.prototype.toString.call(e)),constants={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),EMPTY_BUFFER:Buffer.alloc(0),NOOP:()=>{}},runtimeRequire="function"==typeof __webpack_require__?__non_webpack_require__:commonjsRequire,vars=process.config&&process.config.variables||{},prebuildsOnly=!!process.env.PREBUILDS_ONLY,abi=process.versions.modules,runtime=isElectron()?"electron":"node",arch=os.arch(),platform=os.platform(),libc=process.env.LIBC||(isAlpine(platform)?"musl":"glibc"),armv=process.env.ARM_VERSION||("arm64"===arch?"8":vars.arm_version)||"",uv=(process.versions.uv||"").split(".")[0],nodeGypBuild=load;function load(e){return runtimeRequire(load.path(e))}function readdirSync(e){try{return fs.readdirSync(e)}catch(e){return[]}}function getFirst(e,a){var p=readdirSync(e).filter(a);return p[0]&&path.join(e,p[0])}function matchBuild(e){return/\.node$/.test(e)}function parseTags(e){var a=e.split("."),p={file:e,specificity:0};if("node"===a.pop()){for(var t=0;tp.specificity?-1:1:0}}function isElectron(){return!(!process.versions||!process.versions.electron)||(!!process.env.ELECTRON_RUN_AS_NODE||"undefined"!=typeof window&&window.process&&"renderer"===window.process.type)}function isAlpine(e){return"linux"===e&&fs.existsSync("/etc/alpine-release")}load.path=function(e){e=path.resolve(e||".");try{var a=runtimeRequire(path.join(e,"package.json")).name.toUpperCase().replace(/-/g,"_");process.env[a+"_PREBUILD"]&&(e=process.env[a+"_PREBUILD"])}catch(e){}if(!prebuildsOnly){var p=getFirst(path.join(e,"build/Release"),matchBuild);if(p)return p;var t=getFirst(path.join(e,"build/Debug"),matchBuild);if(t)return t}var d=n(e);if(d)return d;var i=n(path.dirname(process.execPath));if(i)return i;var r=["platform="+platform,"arch="+arch,"runtime="+runtime,"abi="+abi,"uv="+uv,armv?"armv="+armv:"","libc="+libc,"node="+process.versions.node,process.versions&&process.versions.electron?"electron="+process.versions.electron:"","function"==typeof __webpack_require__?"webpack=true":""].filter(Boolean).join(" ");throw new Error("No native build was found for "+r+"\n loaded from: "+e+"\n");function n(e){var a=path.join(e,"prebuilds",platform+"-"+arch),p=readdirSync(a).map(parseTags).filter(matchTags(runtime,abi)).sort(compareTags(runtime))[0];if(p)return path.join(a,p.file)}},load.parseTags=parseTags,load.matchTags=matchTags,load.compareTags=compareTags;const mask$1=(e,a,p,t,d)=>{for(var i=0;i{const p=e.length;for(var t=0;t{this.pending--,this[kRun]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[kRun]()}[kRun](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[kDone])}}}var limiter=Limiter;const{kStatusCode:kStatusCode$2,NOOP:NOOP$1}=constants,TRAILER=Buffer.from([0,0,255,255]),kPerMessageDeflate=Symbol("permessage-deflate"),kTotalLength=Symbol("total-length"),kCallback=Symbol("callback"),kBuffers=Symbol("buffers"),kError=Symbol("error");let zlibLimiter;class PerMessageDeflate{constructor(e,a,p){if(this._maxPayload=0|p,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!a,this._deflate=null,this._inflate=null,this.params=null,!zlibLimiter){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;zlibLimiter=new limiter(e)}}static get extensionName(){return"permessage-deflate"}offer(){const e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){const e=this._deflate[kCallback];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const a=this._options,p=e.find((e=>!(!1===a.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===a.serverMaxWindowBits||"number"==typeof a.serverMaxWindowBits&&a.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof a.clientMaxWindowBits&&!e.client_max_window_bits)));if(!p)throw new Error("None of the extension offers can be accepted");return a.serverNoContextTakeover&&(p.server_no_context_takeover=!0),a.clientNoContextTakeover&&(p.client_no_context_takeover=!0),"number"==typeof a.serverMaxWindowBits&&(p.server_max_window_bits=a.serverMaxWindowBits),"number"==typeof a.clientMaxWindowBits?p.client_max_window_bits=a.clientMaxWindowBits:!0!==p.client_max_window_bits&&!1!==a.clientMaxWindowBits||delete p.client_max_window_bits,p}acceptAsClient(e){const a=e[0];if(!1===this._options.clientNoContextTakeover&&a.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(a.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&a.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(a.client_max_window_bits=this._options.clientMaxWindowBits);return a}normalizeParams(e){return e.forEach((e=>{Object.keys(e).forEach((a=>{let p=e[a];if(p.length>1)throw new Error(`Parameter "${a}" must have only a single value`);if(p=p[0],"client_max_window_bits"===a){if(!0!==p){const e=+p;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${a}": ${p}`);p=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${a}": ${p}`)}else if("server_max_window_bits"===a){const e=+p;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${a}": ${p}`);p=e}else{if("client_no_context_takeover"!==a&&"server_no_context_takeover"!==a)throw new Error(`Unknown parameter "${a}"`);if(!0!==p)throw new TypeError(`Invalid value for parameter "${a}": ${p}`)}e[a]=p}))})),e}decompress(e,a,p){zlibLimiter.add((t=>{this._decompress(e,a,((e,a)=>{t(),p(e,a)}))}))}compress(e,a,p){zlibLimiter.add((t=>{this._compress(e,a,((e,a)=>{t(),p(e,a)}))}))}_decompress(e,a,p){const t=this._isServer?"client":"server";if(!this._inflate){const e=`${t}_max_window_bits`,a="number"!=typeof this.params[e]?zlib.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=zlib.createInflateRaw({...this._options.zlibInflateOptions,windowBits:a}),this._inflate[kPerMessageDeflate]=this,this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],this._inflate.on("error",inflateOnError),this._inflate.on("data",inflateOnData)}this._inflate[kCallback]=p,this._inflate.write(e),a&&this._inflate.write(TRAILER),this._inflate.flush((()=>{const e=this._inflate[kError];if(e)return this._inflate.close(),this._inflate=null,void p(e);const d=bufferUtil.concat(this._inflate[kBuffers],this._inflate[kTotalLength]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],a&&this.params[`${t}_no_context_takeover`]&&this._inflate.reset()),p(null,d)}))}_compress(e,a,p){const t=this._isServer?"server":"client";if(!this._deflate){const e=`${t}_max_window_bits`,a="number"!=typeof this.params[e]?zlib.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=zlib.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:a}),this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],this._deflate.on("error",NOOP$1),this._deflate.on("data",deflateOnData)}this._deflate[kCallback]=p,this._deflate.write(e),this._deflate.flush(zlib.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=bufferUtil.concat(this._deflate[kBuffers],this._deflate[kTotalLength]);a&&(e=e.slice(0,e.length-4)),this._deflate[kCallback]=null,this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],a&&this.params[`${t}_no_context_takeover`]&&this._deflate.reset(),p(null,e)}))}}var permessageDeflate=PerMessageDeflate;function deflateOnData(e){this[kBuffers].push(e),this[kTotalLength]+=e.length}function inflateOnData(e){this[kTotalLength]+=e.length,this[kPerMessageDeflate]._maxPayload<1||this[kTotalLength]<=this[kPerMessageDeflate]._maxPayload?this[kBuffers].push(e):(this[kError]=new RangeError("Max payload size exceeded"),this[kError].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[kError][kStatusCode$2]=1009,this.removeListener("data",inflateOnData),this.reset())}function inflateOnError(e){this[kPerMessageDeflate]._inflate=null,e[kStatusCode$2]=1007,this[kCallback](e)}function isValidUTF8$1(e){const a=e.length;let p=0;for(;p=a||128!=(192&e[p+1])||128!=(192&e[p+2])||224===e[p]&&128==(224&e[p+1])||237===e[p]&&160==(224&e[p+1]))return!1;p+=3}else{if(240!=(248&e[p]))return!1;if(p+3>=a||128!=(192&e[p+1])||128!=(192&e[p+2])||128!=(192&e[p+3])||240===e[p]&&128==(240&e[p+1])||244===e[p]&&e[p+1]>143||e[p]>244)return!1;p+=4}return!0}var fallback=isValidUTF8$1,utf8Validate=createCommonjsModule((function(e){try{e.exports=nodeGypBuild(__dirname)}catch(a){e.exports=fallback}})),validation=createCommonjsModule((function(e){function a(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999}function p(e){const a=e.length;let p=0;for(;p=a||128!=(192&e[p+1])||128!=(192&e[p+2])||224===e[p]&&128==(224&e[p+1])||237===e[p]&&160==(224&e[p+1]))return!1;p+=3}else{if(240!=(248&e[p]))return!1;if(p+3>=a||128!=(192&e[p+1])||128!=(192&e[p+2])||128!=(192&e[p+3])||240===e[p]&&128==(240&e[p+1])||244===e[p]&&e[p+1]>143||e[p]>244)return!1;p+=4}return!0}try{let t=utf8Validate;"object"==typeof t&&(t=t.Validation.isValidUTF8),e.exports={isValidStatusCode:a,isValidUTF8:e=>e.length<150?p(e):t(e)}}catch(t){e.exports={isValidStatusCode:a,isValidUTF8:p}}}));const{Writable:Writable}=Stream,{BINARY_TYPES:BINARY_TYPES$1,EMPTY_BUFFER:EMPTY_BUFFER$2,kStatusCode:kStatusCode$1,kWebSocket:kWebSocket$2}=constants,{concat:concat,toArrayBuffer:toArrayBuffer,unmask:unmask}=bufferUtil,{isValidStatusCode:isValidStatusCode$1,isValidUTF8:isValidUTF8}=validation,GET_INFO=0,GET_PAYLOAD_LENGTH_16=1,GET_PAYLOAD_LENGTH_64=2,GET_MASK=3,GET_DATA=4,INFLATING=5;class Receiver extends Writable{constructor(e,a,p,t){super(),this._binaryType=e||BINARY_TYPES$1[0],this[kWebSocket$2]=void 0,this._extensions=a||{},this._isServer=!!p,this._maxPayload=0|t,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=GET_INFO,this._loop=!1}_write(e,a,p){if(8===this._opcode&&this._state==GET_INFO)return p();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(p)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=p.length?a.set(this._buffers.shift(),t):(a.set(new Uint8Array(p.buffer,p.byteOffset,e),t),this._buffers[0]=p.slice(e)),e-=p.length}while(e>0);return a}startLoop(e){let a;this._loop=!0;do{switch(this._state){case GET_INFO:a=this.getInfo();break;case GET_PAYLOAD_LENGTH_16:a=this.getPayloadLength16();break;case GET_PAYLOAD_LENGTH_64:a=this.getPayloadLength64();break;case GET_MASK:this.getMask();break;case GET_DATA:a=this.getData(e);break;default:return void(this._loop=!1)}}while(this._loop);e(a)}getInfo(){if(this._bufferedBytes<2)return void(this._loop=!1);const e=this.consume(2);if(0!=(48&e[0]))return this._loop=!1,error(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");const a=64==(64&e[0]);if(a&&!this._extensions[permessageDeflate.extensionName])return this._loop=!1,error(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=128==(128&e[0]),this._opcode=15&e[0],this._payloadLength=127&e[1],0===this._opcode){if(a)return this._loop=!1,error(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,error(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return this._loop=!1,error(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=a}else{if(!(this._opcode>7&&this._opcode<11))return this._loop=!1,error(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin)return this._loop=!1,error(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(a)return this._loop=!1,error(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125)return this._loop=!1,error(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=128==(128&e[1]),this._isServer){if(!this._masked)return this._loop=!1,error(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,error(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(126===this._payloadLength)this._state=GET_PAYLOAD_LENGTH_16;else{if(127!==this._payloadLength)return this.haveLength();this._state=GET_PAYLOAD_LENGTH_64}}getPayloadLength16(){if(!(this._bufferedBytes<2))return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength();this._loop=!1}getPayloadLength64(){if(this._bufferedBytes<8)return void(this._loop=!1);const e=this.consume(8),a=e.readUInt32BE(0);return a>Math.pow(2,21)-1?(this._loop=!1,error(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=a*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,error(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=GET_MASK:this._state=GET_DATA}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=GET_DATA)}getData(e){let a=EMPTY_BUFFER$2;if(this._payloadLength){if(this._bufferedBytes7?this.controlMessage(a):this._compressed?(this._state=INFLATING,void this.decompress(a,e)):(a.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(a)),this.dataMessage())}decompress(e,a){this._extensions[permessageDeflate.extensionName].decompress(e,this._fin,((e,p)=>{if(e)return a(e);if(p.length){if(this._messageLength+=p.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return a(error(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(p)}const t=this.dataMessage();if(t)return a(t);this.startLoop(a)}))}dataMessage(){if(this._fin){const e=this._messageLength,a=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let p;p="nodebuffer"===this._binaryType?concat(a,e):"arraybuffer"===this._binaryType?toArrayBuffer(concat(a,e)):a,this.emit("message",p)}else{const p=concat(a,e);if(!isValidUTF8(p))return this._loop=!1,error(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",p.toString())}}this._state=GET_INFO}controlMessage(e){if(8===this._opcode)if(this._loop=!1,0===e.length)this.emit("conclude",1005,""),this.end();else{if(1===e.length)return error(RangeError,"invalid payload length 1",!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");{const a=e.readUInt16BE(0);if(!isValidStatusCode$1(a))return error(RangeError,`invalid status code ${a}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");const p=e.slice(2);if(!isValidUTF8(p))return error(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",a,p.toString()),this.end()}}else 9===this._opcode?this.emit("ping",e):this.emit("pong",e);this._state=GET_INFO}}var receiver=Receiver;function error(e,a,p,t,d){const i=new e(p?`Invalid WebSocket frame: ${a}`:a);return Error.captureStackTrace(i,error),i.code=d,i[kStatusCode$1]=t,i}const{randomFillSync:randomFillSync}=require$$0$4,{EMPTY_BUFFER:EMPTY_BUFFER$1}=constants,{isValidStatusCode:isValidStatusCode}=validation,{mask:applyMask,toBuffer:toBuffer$1}=bufferUtil,mask=Buffer.alloc(4);class Sender{constructor(e,a){this._extensions=a||{},this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,a){const p=a.mask&&a.readOnly;let t=a.mask?6:2,d=e.length;e.length>=65536?(t+=8,d=127):e.length>125&&(t+=2,d=126);const i=Buffer.allocUnsafe(p?e.length+t:t);return i[0]=a.fin?128|a.opcode:a.opcode,a.rsv1&&(i[0]|=64),i[1]=d,126===d?i.writeUInt16BE(e.length,2):127===d&&(i.writeUInt32BE(0,2),i.writeUInt32BE(e.length,6)),a.mask?(randomFillSync(mask,0,4),i[1]|=128,i[t-4]=mask[0],i[t-3]=mask[1],i[t-2]=mask[2],i[t-1]=mask[3],p?(applyMask(e,mask,i,t,e.length),[i]):(applyMask(e,mask,e,0,e.length),[i,e])):[i,e]}close(e,a,p,t){let d;if(void 0===e)d=EMPTY_BUFFER$1;else{if("number"!=typeof e||!isValidStatusCode(e))throw new TypeError("First argument must be a valid error code number");if(void 0===a||""===a)d=Buffer.allocUnsafe(2),d.writeUInt16BE(e,0);else{const p=Buffer.byteLength(a);if(p>123)throw new RangeError("The message must not be greater than 123 bytes");d=Buffer.allocUnsafe(2+p),d.writeUInt16BE(e,0),d.write(a,2)}}this._deflating?this.enqueue([this.doClose,d,p,t]):this.doClose(d,p,t)}doClose(e,a,p){this.sendFrame(Sender.frame(e,{fin:!0,rsv1:!1,opcode:8,mask:a,readOnly:!1}),p)}ping(e,a,p){const t=toBuffer$1(e);if(t.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPing,t,a,toBuffer$1.readOnly,p]):this.doPing(t,a,toBuffer$1.readOnly,p)}doPing(e,a,p,t){this.sendFrame(Sender.frame(e,{fin:!0,rsv1:!1,opcode:9,mask:a,readOnly:p}),t)}pong(e,a,p){const t=toBuffer$1(e);if(t.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPong,t,a,toBuffer$1.readOnly,p]):this.doPong(t,a,toBuffer$1.readOnly,p)}doPong(e,a,p,t){this.sendFrame(Sender.frame(e,{fin:!0,rsv1:!1,opcode:10,mask:a,readOnly:p}),t)}send(e,a,p){const t=toBuffer$1(e),d=this._extensions[permessageDeflate.extensionName];let i=a.binary?2:1,r=a.compress;if(this._firstFragment?(this._firstFragment=!1,r&&d&&(r=t.length>=d._threshold),this._compress=r):(r=!1,i=0),a.fin&&(this._firstFragment=!0),d){const e={fin:a.fin,rsv1:r,opcode:i,mask:a.mask,readOnly:toBuffer$1.readOnly};this._deflating?this.enqueue([this.dispatch,t,this._compress,e,p]):this.dispatch(t,this._compress,e,p)}else this.sendFrame(Sender.frame(t,{fin:a.fin,rsv1:!1,opcode:i,mask:a.mask,readOnly:toBuffer$1.readOnly}),p)}dispatch(e,a,p,t){if(!a)return void this.sendFrame(Sender.frame(e,p),t);const d=this._extensions[permessageDeflate.extensionName];this._bufferedBytes+=e.length,this._deflating=!0,d.compress(e,p.fin,((a,d)=>{if(this._socket.destroyed){const e=new Error("The socket was closed while data was being compressed");"function"==typeof t&&t(e);for(let a=0;a{let p=e[a];return Array.isArray(p)||(p=[p]),p.map((e=>[a].concat(Object.keys(e).map((a=>{let p=e[a];return Array.isArray(p)||(p=[p]),p.map((e=>!0===e?a:`${a}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")}var extension={format:format$2,parse:parse$2};const{randomBytes:randomBytes,createHash:createHash$1}=require$$0$4,{URL:URL}=Url,{BINARY_TYPES:BINARY_TYPES,EMPTY_BUFFER:EMPTY_BUFFER,GUID:GUID$1,kStatusCode:kStatusCode,kWebSocket:kWebSocket$1,NOOP:NOOP}=constants,{addEventListener:addEventListener,removeEventListener:removeEventListener}=eventTarget,{format:format$1,parse:parse$1}=extension,{toBuffer:toBuffer}=bufferUtil,readyStates=["CONNECTING","OPEN","CLOSING","CLOSED"],protocolVersions=[8,13],closeTimeout=3e4;class WebSocket extends EventEmitter{constructor(e,a,p){super(),this._binaryType=BINARY_TYPES[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage="",this._closeTimer=null,this._extensions={},this._protocol="",this._readyState=WebSocket.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==e?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,Array.isArray(a)?a=a.join(", "):"object"==typeof a&&null!==a&&(p=a,a=void 0),initAsClient(this,e,a,p)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){BINARY_TYPES.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get onclose(){}set onclose(e){}get onerror(){}set onerror(e){}get onopen(){}set onopen(e){}get onmessage(){}set onmessage(e){}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,a,p){const t=new receiver(this.binaryType,this._extensions,this._isServer,p);this._sender=new sender(e,this._extensions),this._receiver=t,this._socket=e,t[kWebSocket$1]=this,e[kWebSocket$1]=this,t.on("conclude",receiverOnConclude),t.on("drain",receiverOnDrain),t.on("error",receiverOnError),t.on("message",receiverOnMessage),t.on("ping",receiverOnPing),t.on("pong",receiverOnPong),e.setTimeout(0),e.setNoDelay(),a.length>0&&e.unshift(a),e.on("close",socketOnClose),e.on("data",socketOnData),e.on("end",socketOnEnd),e.on("error",socketOnError$1),this._readyState=WebSocket.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=WebSocket.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[permessageDeflate.extensionName]&&this._extensions[permessageDeflate.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=WebSocket.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,a){if(this.readyState!==WebSocket.CLOSED){if(this.readyState===WebSocket.CONNECTING){const e="WebSocket was closed before the connection was established";return abortHandshake$1(this,this._req,e)}this.readyState!==WebSocket.CLOSING?(this._readyState=WebSocket.CLOSING,this._sender.close(e,a,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),closeTimeout)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end()}}ping(e,a,p){if(this.readyState===WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(p=e,e=a=void 0):"function"==typeof a&&(p=a,a=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===WebSocket.OPEN?(void 0===a&&(a=!this._isServer),this._sender.ping(e||EMPTY_BUFFER,a,p)):sendAfterClose(this,e,p)}pong(e,a,p){if(this.readyState===WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(p=e,e=a=void 0):"function"==typeof a&&(p=a,a=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===WebSocket.OPEN?(void 0===a&&(a=!this._isServer),this._sender.pong(e||EMPTY_BUFFER,a,p)):sendAfterClose(this,e,p)}send(e,a,p){if(this.readyState===WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof a&&(p=a,a={}),"number"==typeof e&&(e=e.toString()),this.readyState!==WebSocket.OPEN)return void sendAfterClose(this,e,p);const t={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...a};this._extensions[permessageDeflate.extensionName]||(t.compress=!1),this._sender.send(e||EMPTY_BUFFER,t,p)}terminate(){if(this.readyState!==WebSocket.CLOSED){if(this.readyState===WebSocket.CONNECTING){const e="WebSocket was closed before the connection was established";return abortHandshake$1(this,this._req,e)}this._socket&&(this._readyState=WebSocket.CLOSING,this._socket.destroy())}}}Object.defineProperty(WebSocket,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")}),Object.defineProperty(WebSocket.prototype,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")}),Object.defineProperty(WebSocket,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")}),Object.defineProperty(WebSocket.prototype,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")}),Object.defineProperty(WebSocket,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")}),Object.defineProperty(WebSocket.prototype,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")}),Object.defineProperty(WebSocket,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")}),Object.defineProperty(WebSocket.prototype,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","protocol","readyState","url"].forEach((e=>{Object.defineProperty(WebSocket.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(WebSocket.prototype,`on${e}`,{enumerable:!0,get(){const a=this.listeners(e);for(let e=0;e{abortHandshake$1(e,u,"Opening handshake has timed out")})),u.on("error",(a=>{null===u||u.aborted||(u=e._req=null,e._readyState=WebSocket.CLOSING,e.emit("error",a),e.emitClose())})),u.on("response",(i=>{const r=i.headers.location,n=i.statusCode;if(r&&d.followRedirects&&n>=300&&n<400){if(++e._redirects>d.maxRedirects)return void abortHandshake$1(e,u,"Maximum redirects exceeded");u.abort();const i=new URL(r,a);initAsClient(e,i,p,t)}else e.emit("unexpected-response",u,i)||abortHandshake$1(e,u,`Unexpected server response: ${i.statusCode}`)})),u.on("upgrade",((a,t,i)=>{if(e.emit("upgrade",a),e.readyState!==WebSocket.CONNECTING)return;u=e._req=null;const r=createHash$1("sha1").update(o+GUID$1).digest("base64");if(a.headers["sec-websocket-accept"]!==r)return void abortHandshake$1(e,t,"Invalid Sec-WebSocket-Accept header");const n=a.headers["sec-websocket-protocol"],s=(p||"").split(/, */);let l;if(!p&&n?l="Server sent a subprotocol but none was requested":p&&!n?l="Server sent no subprotocol":n&&!s.includes(n)&&(l="Server sent an invalid subprotocol"),l)return void abortHandshake$1(e,t,l);n&&(e._protocol=n);const c=a.headers["sec-websocket-extensions"];if(void 0!==c){if(!m){return void abortHandshake$1(e,t,"Server sent a Sec-WebSocket-Extensions header but no extension was requested")}let a;try{a=parse$1(c)}catch(a){return void abortHandshake$1(e,t,"Invalid Sec-WebSocket-Extensions header")}const p=Object.keys(a);if(p.length){if(1!==p.length||p[0]!==permessageDeflate.extensionName){return void abortHandshake$1(e,t,"Server indicated an extension that was not requested")}try{m.accept(a[permessageDeflate.extensionName])}catch(a){return void abortHandshake$1(e,t,"Invalid Sec-WebSocket-Extensions header")}e._extensions[permessageDeflate.extensionName]=m}}e.setSocket(t,i,d.maxPayload)}))}function netConnect(e){return e.path=e.socketPath,net.connect(e)}function tlsConnect(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=net.isIP(e.host)?"":e.host),tls.connect(e)}function abortHandshake$1(e,a,p){e._readyState=WebSocket.CLOSING;const t=new Error(p);Error.captureStackTrace(t,abortHandshake$1),a.setHeader?(a.abort(),a.socket&&!a.socket.destroyed&&a.socket.destroy(),a.once("abort",e.emitClose.bind(e)),e.emit("error",t)):(a.destroy(t),a.once("error",e.emit.bind(e,"error")),a.once("close",e.emitClose.bind(e)))}function sendAfterClose(e,a,p){if(a){const p=toBuffer(a).length;e._socket?e._sender._bufferedBytes+=p:e._bufferedAmount+=p}if(p){p(new Error(`WebSocket is not open: readyState ${e.readyState} (${readyStates[e.readyState]})`))}}function receiverOnConclude(e,a){const p=this[kWebSocket$1];p._socket.removeListener("data",socketOnData),p._socket.resume(),p._closeFrameReceived=!0,p._closeMessage=a,p._closeCode=e,1005===e?p.close():p.close(e,a)}function receiverOnDrain(){this[kWebSocket$1]._socket.resume()}function receiverOnError(e){const a=this[kWebSocket$1];a._socket.removeListener("data",socketOnData),a._socket.resume(),a.close(e[kStatusCode]),a.emit("error",e)}function receiverOnFinish(){this[kWebSocket$1].emitClose()}function receiverOnMessage(e){this[kWebSocket$1].emit("message",e)}function receiverOnPing(e){const a=this[kWebSocket$1];a.pong(e,!a._isServer,NOOP),a.emit("ping",e)}function receiverOnPong(e){this[kWebSocket$1].emit("pong",e)}function socketOnClose(){const e=this[kWebSocket$1];this.removeListener("close",socketOnClose),this.removeListener("end",socketOnEnd),e._readyState=WebSocket.CLOSING,e._socket.read(),e._receiver.end(),this.removeListener("data",socketOnData),this[kWebSocket$1]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",receiverOnFinish),e._receiver.on("finish",receiverOnFinish))}function socketOnData(e){this[kWebSocket$1]._receiver.write(e)||this.pause()}function socketOnEnd(){const e=this[kWebSocket$1];e._readyState=WebSocket.CLOSING,e._receiver.end(),this.end()}function socketOnError$1(){const e=this[kWebSocket$1];this.removeListener("error",socketOnError$1),this.on("error",NOOP),e&&(e._readyState=WebSocket.CLOSING,this.destroy())}const{Duplex:Duplex}=Stream;function emitClose$1(e){e.emit("close")}function duplexOnEnd(){!this.destroyed&&this._writableState.finished&&this.destroy()}function duplexOnError(e){this.removeListener("error",duplexOnError),this.destroy(),0===this.listenerCount("error")&&this.emit("error",e)}function createWebSocketStream(e,a){let p=!0,t=!0;function d(){p&&e._socket.resume()}e.readyState===e.CONNECTING?e.once("open",(function(){e._receiver.removeAllListeners("drain"),e._receiver.on("drain",d)})):(e._receiver.removeAllListeners("drain"),e._receiver.on("drain",d));const i=new Duplex({...a,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",(function(a){i.push(a)||(p=!1,e._socket.pause())})),e.once("error",(function(e){i.destroyed||(t=!1,i.destroy(e))})),e.once("close",(function(){i.destroyed||i.push(null)})),i._destroy=function(a,p){if(e.readyState===e.CLOSED)return p(a),void process.nextTick(emitClose$1,i);let d=!1;e.once("error",(function(e){d=!0,p(e)})),e.once("close",(function(){d||p(a),process.nextTick(emitClose$1,i)})),t&&e.terminate()},i._final=function(a){e.readyState!==e.CONNECTING?null!==e._socket&&(e._socket._writableState.finished?(a(),i._readableState.endEmitted&&i.destroy()):(e._socket.once("finish",(function(){a()})),e.close())):e.once("open",(function(){i._final(a)}))},i._read=function(){e.readyState!==e.OPEN||p||(p=!0,e._receiver._writableState.needDrain||e._socket.resume())},i._write=function(a,p,t){e.readyState!==e.CONNECTING?e.send(a,t):e.once("open",(function(){i._write(a,p,t)}))},i.on("end",duplexOnEnd),i.on("error",duplexOnError),i}var stream=createWebSocketStream;const{createHash:createHash}=require$$0$4,{format:format,parse:parse}=extension,{GUID:GUID,kWebSocket:kWebSocket}=constants,keyRegex=/^[+/0-9A-Za-z]{22}==$/,RUNNING=0,CLOSING=1,CLOSED=2;class WebSocketServer extends EventEmitter{constructor(e,a){if(super(),null==(e={maxPayload:104857600,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,...e}).port&&!e.server&&!e.noServer||null!=e.port&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=e.port?(this._server=http.createServer(((e,a)=>{const p=http.STATUS_CODES[426];a.writeHead(426,{"Content-Length":p.length,"Content-Type":"text/plain"}),a.end(p)})),this._server.listen(e.port,e.host,e.backlog,a)):e.server&&(this._server=e.server),this._server){const e=this.emit.bind(this,"connection");this._removeListeners=addListeners(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(a,p,t)=>{this.handleUpgrade(a,p,t,e)}})}!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set),this.options=e,this._state=RUNNING}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(e&&this.once("close",e),this._state===CLOSED)return void process.nextTick(emitClose,this);if(this._state===CLOSING)return;if(this._state=CLOSING,this.clients)for(const e of this.clients)e.terminate();const a=this._server;a&&(this._removeListeners(),this._removeListeners=this._server=null,null!=this.options.port)?a.close(emitClose.bind(void 0,this)):process.nextTick(emitClose,this)}shouldHandle(e){if(this.options.path){const a=e.url.indexOf("?");if((-1!==a?e.url.slice(0,a):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,a,p,t){a.on("error",socketOnError);const d=void 0!==e.headers["sec-websocket-key"]&&e.headers["sec-websocket-key"].trim(),i=+e.headers["sec-websocket-version"],r={};if("GET"!==e.method||"websocket"!==e.headers.upgrade.toLowerCase()||!d||!keyRegex.test(d)||8!==i&&13!==i||!this.shouldHandle(e))return abortHandshake(a,400);if(this.options.perMessageDeflate){const p=new permessageDeflate(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const a=parse(e.headers["sec-websocket-extensions"]);a[permessageDeflate.extensionName]&&(p.accept(a[permessageDeflate.extensionName]),r[permessageDeflate.extensionName]=p)}catch(e){return abortHandshake(a,400)}}if(this.options.verifyClient){const n={origin:e.headers[""+(8===i?"sec-websocket-origin":"origin")],secure:!(!e.socket.authorized&&!e.socket.encrypted),req:e};if(2===this.options.verifyClient.length)return void this.options.verifyClient(n,((i,n,s,o)=>{if(!i)return abortHandshake(a,n||401,s,o);this.completeUpgrade(d,r,e,a,p,t)}));if(!this.options.verifyClient(n))return abortHandshake(a,401)}this.completeUpgrade(d,r,e,a,p,t)}completeUpgrade(e,a,p,t,d,i){if(!t.readable||!t.writable)return t.destroy();if(t[kWebSocket])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>RUNNING)return abortHandshake(t,503);const r=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${createHash("sha1").update(e+GUID).digest("base64")}`],n=new websocket(null);let s=p.headers["sec-websocket-protocol"];if(s&&(s=s.split(",").map(trim),s=this.options.handleProtocols?this.options.handleProtocols(s,p):s[0],s&&(r.push(`Sec-WebSocket-Protocol: ${s}`),n._protocol=s)),a[permessageDeflate.extensionName]){const e=a[permessageDeflate.extensionName].params,p=format({[permessageDeflate.extensionName]:[e]});r.push(`Sec-WebSocket-Extensions: ${p}`),n._extensions=a}this.emit("headers",r,p),t.write(r.concat("\r\n").join("\r\n")),t.removeListener("error",socketOnError),n.setSocket(t,d,this.options.maxPayload),this.clients&&(this.clients.add(n),n.on("close",(()=>this.clients.delete(n)))),i(n,p)}}var websocketServer=WebSocketServer;function addListeners(e,a){for(const p of Object.keys(a))e.on(p,a[p]);return function(){for(const p of Object.keys(a))e.removeListener(p,a[p])}}function emitClose(e){e._state=CLOSED,e.emit("close")}function socketOnError(){this.destroy()}function abortHandshake(e,a,p,t){e.writable&&(p=p||http.STATUS_CODES[a],t={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(p),...t},e.write(`HTTP/1.1 ${a} ${http.STATUS_CODES[a]}\r\n`+Object.keys(t).map((e=>`${e}: ${t[e]}`)).join("\r\n")+"\r\n\r\n"+p)),e.removeListener("error",socketOnError),e.destroy()}function trim(e){return e.trim()}websocket.createWebSocketStream=stream,websocket.Server=websocketServer,websocket.Receiver=receiver,websocket.Sender=sender;var ws=websocket,node=ws,eventemitter3=createCommonjsModule((function(e){var a=Object.prototype.hasOwnProperty,p="~";function t(){}function d(e,a,p){this.fn=e,this.context=a,this.once=p||!1}function i(e,a,t,i,r){if("function"!=typeof t)throw new TypeError("The listener must be a function");var n=new d(t,i||e,r),s=p?p+a:a;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],n]:e._events[s].push(n):(e._events[s]=n,e._eventsCount++),e}function r(e,a){0==--e._eventsCount?e._events=new t:delete e._events[a]}function n(){this._events=new t,this._eventsCount=0}Object.create&&(t.prototype=Object.create(null),(new t).__proto__||(p=!1)),n.prototype.eventNames=function(){var e,t,d=[];if(0===this._eventsCount)return d;for(t in e=this._events)a.call(e,t)&&d.push(p?t.slice(1):t);return Object.getOwnPropertySymbols?d.concat(Object.getOwnPropertySymbols(e)):d},n.prototype.listeners=function(e){var a=p?p+e:e,t=this._events[a];if(!t)return[];if(t.fn)return[t.fn];for(var d=0,i=t.length,r=new Array(i);d{let a={};switch(this.params.type){case"account":a={action:"authenticate",data:{key_id:e.credentials.key,secret_key:e.credentials.secret}};break;case"market_data":a=Object.assign({action:"auth"},e.credentials)}this.connection.send(JSON.stringify(a)),this.emit("open",this)},this.connection.onclose=()=>this.emit("close",this),this.connection.onmessage=e=>__awaiter(this,void 0,void 0,(function*(){let a=e.data;isBlob(a)?a=yield e.data.text():a instanceof ArrayBuffer&&(a=String.fromCharCode(...new Uint8Array(e.data)));let p=JSON.parse(a);("account"==this.params.type?[p]:p).forEach((e=>{this.emit("message",e),("T"in e&&"authenticated"==e.msg||"stream"in e&&"authorization"==e.stream&&"authorized"==e.data.status)&&(this.authenticated=!0,this.emit("authenticated",this)),"stream"in e&&"trade_updates"==e.stream&&this.emit("trade_updates",parse$3.trade_update(e.data));const a={success:"success",subscription:"subscription",error:"error",t:"trade",q:"quote",b:"bar"};"T"in e&&this.emit(a[e.T.split(".")[0]],e)}))})),this.connection.onerror=e=>{this.emit("error",e)}}getConnection(){return this.connection}subscribe(e,a=[]){switch(this.params.type){case"account":this.send(JSON.stringify({action:"listen",data:{streams:[e]}}));break;case"market_data":let p={action:"subscribe"};p[e]=a,this.send(JSON.stringify(p))}return this}unsubscribe(e,a=[]){switch(this.params.type){case"account":this.send(JSON.stringify({action:"unlisten",data:{streams:[e]}}));break;case"market_data":let p={action:"unsubscribe"};p[e]=a,this.send(JSON.stringify(p))}return this}send(e){if(!this.authenticated)throw new Error("not authenticated");return"object"==typeof e&&(e=JSON.stringify(e)),this.connection.send(e),this}}var index={AlpacaClient:AlpacaClient,AlpacaStream:AlpacaStream};export{AlpacaClient,AlpacaStream,index as default}; diff --git a/dist/alpaca.js b/dist/alpaca.js deleted file mode 100644 index 2ef6bf9..0000000 --- a/dist/alpaca.js +++ /dev/null @@ -1,792 +0,0 @@ -/*! - * alpaca@6.3.20 - * released under the permissive ISC license - */ - -import qs from 'qs'; -import isofetch from 'isomorphic-unfetch'; -import Bottleneck from 'bottleneck'; -import isBlob from 'is-blob'; -import WebSocket from 'isomorphic-ws'; -import EventEmitter from 'eventemitter3'; - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function account(rawAccount) { - if (!rawAccount) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawAccount), { raw: () => rawAccount, buying_power: number(rawAccount.buying_power), regt_buying_power: number(rawAccount.regt_buying_power), daytrading_buying_power: number(rawAccount.daytrading_buying_power), cash: number(rawAccount.cash), created_at: new Date(rawAccount.created_at), portfolio_value: number(rawAccount.portfolio_value), multiplier: number(rawAccount.multiplier), equity: number(rawAccount.equity), last_equity: number(rawAccount.last_equity), long_market_value: number(rawAccount.long_market_value), short_market_value: number(rawAccount.short_market_value), initial_margin: number(rawAccount.initial_margin), maintenance_margin: number(rawAccount.maintenance_margin), last_maintenance_margin: number(rawAccount.last_maintenance_margin), sma: number(rawAccount.sma), status: rawAccount.status }); - } - catch (err) { - throw new Error(`Account parsing failed. ${err.message}`); - } -} -function clock(rawClock) { - if (!rawClock) { - return undefined; - } - try { - return { - raw: () => rawClock, - timestamp: new Date(rawClock.timestamp), - is_open: rawClock.is_open, - next_open: new Date(rawClock.next_open), - next_close: new Date(rawClock.next_close), - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function latestTrade(raw) { - if (!raw) { - return undefined; - } - try { - return Object.assign(Object.assign({}, raw), { raw: () => raw, trade: Object.assign(Object.assign({}, raw.trade), { t: new Date(raw.trade.t) }) }); - } - catch (err) { - throw new Error(`Latest trade parsing failed. ${err.message}`); - } -} -function order(rawOrder) { - if (!rawOrder) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawOrder), { raw: () => rawOrder, created_at: new Date(rawOrder.created_at), updated_at: new Date(rawOrder.updated_at), submitted_at: new Date(rawOrder.submitted_at), filled_at: new Date(rawOrder.filled_at), expired_at: new Date(rawOrder.expired_at), canceled_at: new Date(rawOrder.canceled_at), failed_at: new Date(rawOrder.failed_at), replaced_at: new Date(rawOrder.replaced_at), qty: number(rawOrder.qty), filled_qty: number(rawOrder.filled_qty), type: rawOrder.type, side: rawOrder.side, time_in_force: rawOrder.time_in_force, limit_price: number(rawOrder.limit_price), stop_price: number(rawOrder.stop_price), filled_avg_price: number(rawOrder.filled_avg_price), status: rawOrder.status, legs: orders(rawOrder.legs), trail_price: number(rawOrder.trail_price), trail_percent: number(rawOrder.trail_percent), hwm: number(rawOrder.hwm), order_class: rawOrder.order_class }); - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function orders(rawOrders) { - return rawOrders ? rawOrders.map((value) => order(value)) : undefined; -} -function canceled_order(input) { - if (!input) { - return undefined; - } - let order = input.body; - delete input.body; - try { - return Object.assign(Object.assign({}, input), { order: Object.assign(Object.assign({}, order), { raw: () => order, created_at: new Date(order.created_at), updated_at: new Date(order.updated_at), submitted_at: new Date(order.submitted_at), filled_at: new Date(order.filled_at), expired_at: new Date(order.expired_at), canceled_at: new Date(order.canceled_at), failed_at: new Date(order.failed_at), replaced_at: new Date(order.replaced_at), qty: number(order.qty), filled_qty: number(order.filled_qty), type: order.type, side: order.side, time_in_force: order.time_in_force, limit_price: number(order.limit_price), stop_price: number(order.stop_price), filled_avg_price: number(order.filled_avg_price), status: order.status, legs: orders(order.legs), trail_price: number(order.trail_price), trail_percent: number(order.trail_percent), hwm: number(order.hwm), order_class: order.order_class }) }); - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function canceled_orders(rawOrderCancelations) { - return rawOrderCancelations - ? rawOrderCancelations.map((value) => canceled_order(value)) - : undefined; -} -function position(rawPosition) { - if (!rawPosition) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawPosition), { raw: () => rawPosition, avg_entry_price: number(rawPosition.avg_entry_price), qty: number(rawPosition.qty), side: rawPosition.side, market_value: number(rawPosition.market_value), cost_basis: number(rawPosition.cost_basis), unrealized_pl: number(rawPosition.unrealized_pl), unrealized_plpc: number(rawPosition.unrealized_plpc), unrealized_intraday_pl: number(rawPosition.unrealized_intraday_pl), unrealized_intraday_plpc: number(rawPosition.unrealized_intraday_plpc), current_price: number(rawPosition.current_price), lastday_price: number(rawPosition.lastday_price), change_today: number(rawPosition.change_today) }); - } - catch (err) { - throw new Error(`Position parsing failed. ${err.message}`); - } -} -function positions(rawPositions) { - return rawPositions ? rawPositions.map((pos) => position(pos)) : undefined; -} -function tradeActivity(rawTradeActivity) { - if (!rawTradeActivity) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawTradeActivity), { raw: () => rawTradeActivity, cum_qty: number(rawTradeActivity.cum_qty), leaves_qty: number(rawTradeActivity.leaves_qty), price: number(rawTradeActivity.price), qty: number(rawTradeActivity.qty), side: rawTradeActivity.side, type: rawTradeActivity.type }); - } - catch (err) { - throw new Error(`TradeActivity parsing failed. ${err.message}`); - } -} -function nonTradeActivity(rawNonTradeActivity) { - if (!rawNonTradeActivity) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawNonTradeActivity), { raw: () => rawNonTradeActivity, net_amount: number(rawNonTradeActivity.net_amount), qty: number(rawNonTradeActivity.qty), per_share_amount: number(rawNonTradeActivity.per_share_amount) }); - } - catch (err) { - throw new Error(`NonTradeActivity parsing failed. ${err.message}`); - } -} -function activities(rawActivities) { - if (!rawActivities) { - return undefined; - } - try { - return rawActivities.map((rawActivity) => rawActivity.activity_type === 'FILL' - ? tradeActivity(rawActivity) - : nonTradeActivity(rawActivity)); - } - catch (err) { - throw new Error(`Activity parsing failed. ${err.message}`); - } -} -function pageOfTrades(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - trades: (page.trades == null ? [] : page.trades).map((trade) => (Object.assign(Object.assign({ raw: () => trade }, trade), { t: new Date(trade.t) }))), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfQuotes(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - quotes: (page.quotes == null ? [] : page.quotes).map((quote) => (Object.assign(Object.assign({ raw: () => quote }, quote), { t: new Date(quote.t) }))), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfBars(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - bars: (page.bars == null ? [] : page.bars).map((bar) => (Object.assign(Object.assign({ raw: () => bar }, bar), { t: new Date(bar.t) }))), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function snapshot(raw) { - if (!raw) { - return undefined; - } - try { - return Object.assign(Object.assign({}, raw), { raw: () => raw, latestTrade: raw.latestTrade - ? Object.assign(Object.assign({}, raw.latestTrade), { t: new Date(raw.latestTrade.t) }) : null, latestQuote: raw.latestQuote - ? Object.assign(Object.assign({}, raw.latestQuote), { t: new Date(raw.latestQuote.t) }) : null, minuteBar: raw.minuteBar - ? Object.assign(Object.assign({}, raw.minuteBar), { t: new Date(raw.minuteBar.t) }) : null, dailyBar: raw.dailyBar - ? Object.assign(Object.assign({}, raw.dailyBar), { t: new Date(raw.dailyBar.t) }) : null, prevDailyBar: raw.prevDailyBar - ? Object.assign(Object.assign({}, raw.prevDailyBar), { t: new Date(raw.prevDailyBar.t) }) : null }); - } - catch (err) { - throw new Error(`Snapshot parsing failed "${err.message}"`); - } -} -function snapshots(raw) { - let parsed = {}; - for (let [key, value] of Object.entries(raw)) { - parsed[key] = snapshot(value); - } - return parsed; -} -function number(numStr) { - if (typeof numStr === 'undefined' || numStr == null) { - return numStr; - } - const value = parseFloat(numStr); - if (Number.isNaN(value)) { - return null; - } - return value; -} -function trade_update(rawTradeUpdate) { - if (!rawTradeUpdate) - return undefined; - return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ raw: () => rawTradeUpdate, event: rawTradeUpdate.event, execution_id: rawTradeUpdate.execution_id, order: order(rawTradeUpdate.order) }, (rawTradeUpdate.event_id && { - event_id: number(rawTradeUpdate.event_id), - })), (rawTradeUpdate.at && { at: new Date(rawTradeUpdate.at) })), (rawTradeUpdate.timestamp && { - timestamp: new Date(rawTradeUpdate.timestamp), - })), (rawTradeUpdate.position_qty && { - position_qty: number(rawTradeUpdate.position_qty), - })), (rawTradeUpdate.price && { price: number(rawTradeUpdate.price) })), (rawTradeUpdate.qty && { qty: number(rawTradeUpdate.qty) })); -} -var parse = { - account, - activities, - clock, - nonTradeActivity, - order, - orders, - canceled_orders, - position, - positions, - tradeActivity, - pageOfTrades, - pageOfQuotes, - pageOfBars, - snapshot, - snapshots, - trade_update, - latestTrade, -}; - -const endpoints = { - rest: { - beta: 'https://data.alpaca.markets/v1beta1', - account: 'https://api.alpaca.markets/v2', - market_data_v2: 'https://data.alpaca.markets/v2', - market_data_v1: 'https://data.alpaca.markets/v1', - }, - websocket: { - account: 'wss://api.alpaca.markets/stream', - market_data: (source = 'iex') => `wss://stream.data.alpaca.markets/v2/${source}`, - }, -}; - -const unifetch = typeof fetch !== 'undefined' ? fetch : isofetch; -class AlpacaClient { - constructor(params) { - this.params = params; - this.baseURLs = endpoints; - this.limiter = new Bottleneck({ - reservoir: 200, - reservoirRefreshAmount: 200, - reservoirRefreshInterval: 60 * 1000, - maxConcurrent: 1, - minTime: 200, - }); - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if (!('paper' in params.credentials) && - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - if ('access_token' in params.credentials && - ('key' in params.credentials || 'secret' in params.credentials)) { - throw new Error("can't create client with both default and oauth credentials"); - } - } - isAuthenticated() { - return __awaiter(this, void 0, void 0, function* () { - try { - yield this.getAccount(); - return true; - } - catch (_a) { - return false; - } - }); - } - getAccount() { - return __awaiter(this, void 0, void 0, function* () { - return parse.account(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account`, - })); - }); - } - getOrder(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.order(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders/${params.order_id || params.client_order_id}`, - data: { nested: params.nested }, - })); - }); - } - getOrders(params = {}) { - return __awaiter(this, void 0, void 0, function* () { - return parse.orders(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders`, - data: Object.assign(Object.assign({}, params), { symbols: params.symbols ? params.symbols.join(',') : undefined }), - })); - }); - } - placeOrder(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.order(yield this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/orders`, - data: params, - })); - }); - } - replaceOrder(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.order(yield this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - data: params, - })); - }); - } - cancelOrder(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - isJSON: false, - }); - } - cancelOrders() { - return __awaiter(this, void 0, void 0, function* () { - return parse.canceled_orders(yield this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders`, - })); - }); - } - getPosition(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.position(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - })); - }); - } - getPositions() { - return __awaiter(this, void 0, void 0, function* () { - return parse.positions(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions`, - })); - }); - } - closePosition(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.order(yield this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - data: params, - })); - }); - } - closePositions(params) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - return parse.orders(yield this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify((_a = params.cancel_orders) !== null && _a !== void 0 ? _a : false)}`, - })); - }); - } - getAsset(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets/${params.asset_id_or_symbol}`, - }); - } - getAssets(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets`, - data: params, - }); - } - getWatchlist(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getWatchlists() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists`, - }); - } - createWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists`, - data: params, - }); - } - updateWatchlist(params) { - return this.request({ - method: 'PUT', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - addToWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - removeFromWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}/${params.symbol}`, - }); - } - deleteWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getCalendar(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/calendar`, - data: params, - }); - } - getNews(params) { - if ('symbols' in params && Array.isArray(params.symbols)) { - params.symbols = params.symbols.join(','); - } - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.beta}/news`, - data: params, - }); - } - getClock() { - return __awaiter(this, void 0, void 0, function* () { - return parse.clock(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/clock`, - })); - }); - } - getAccountConfigurations() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/configurations`, - }); - } - updateAccountConfigurations(params) { - return this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/account/configurations`, - data: params, - }); - } - getAccountActivities(params) { - return __awaiter(this, void 0, void 0, function* () { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params.activity_types.join(','); - } - return parse.activities(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/activities${params.activity_type ? '/'.concat(params.activity_type) : ''}`, - data: Object.assign(Object.assign({}, params), { activity_type: undefined }), - })); - }); - } - getPortfolioHistory(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/portfolio/history`, - data: params, - }); - } - getBars_v1(params) { - return __awaiter(this, void 0, void 0, function* () { - const transformed = Object.assign(Object.assign({}, params), { symbols: params.symbols.join(',') }); - return yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/bars/${params.timeframe}`, - data: transformed, - }); - }); - } - getLastTrade_v1(params) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last/stocks/${params.symbol}`, - }); - }); - } - getLastQuote_v1(params) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${params.symbol}`, - }); - }); - } - getTrades(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.pageOfTrades(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/trades`, - data: Object.assign(Object.assign({}, params), { symbol: undefined }), - })); - }); - } - getQuotes(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.pageOfQuotes(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/quotes`, - data: Object.assign(Object.assign({}, params), { symbol: undefined }), - })); - }); - } - getBars(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.pageOfBars(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/bars`, - data: Object.assign(Object.assign({}, params), { symbol: undefined }), - })); - }); - } - getLatestTrade({ symbol, feed, limit, }) { - return __awaiter(this, void 0, void 0, function* () { - let query = ''; - if (feed || limit) { - query = '?'.concat(qs.stringify({ feed, limit })); - } - return parse.latestTrade(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${symbol}/trades/latest`.concat(query), - })); - }); - } - getSnapshot(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.snapshot(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/snapshot`, - })); - }); - } - getSnapshots(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse.snapshots(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${params.symbols.join(',')}`, - })); - }); - } - request(params) { - return __awaiter(this, void 0, void 0, function* () { - let headers = {}; - if ('access_token' in this.params.credentials) { - headers['Authorization'] = `Bearer ${this.params.credentials.access_token}`; - } - else { - headers['APCA-API-KEY-ID'] = this.params.credentials.key; - headers['APCA-API-SECRET-KEY'] = this.params.credentials.secret; - } - if (this.params.credentials.paper) { - params.url = params.url.replace('api.', 'paper-api.'); - } - let query = ''; - if (params.data) { - for (let [key, value] of Object.entries(params.data)) { - if (value instanceof Date) { - params.data[key] = value.toISOString(); - } - } - if (!['POST', 'PATCH', 'PUT'].includes(params.method)) { - query = '?'.concat(qs.stringify(params.data)); - params.data = undefined; - } - } - const makeCall = () => unifetch(params.url.concat(query), { - method: params.method, - headers, - body: JSON.stringify(params.data), - }), func = this.params.rate_limit - ? () => this.limiter.schedule(makeCall) - : makeCall; - let resp, result = {}; - try { - resp = yield func(); - if (!(params.isJSON == undefined ? true : params.isJSON)) { - return resp.ok; - } - result = yield resp.json(); - } - catch (e) { - console.error(e); - throw result; - } - if ('code' in result || 'message' in result) { - throw result; - } - return result; - }); - } -} - -class AlpacaStream extends EventEmitter { - constructor(params) { - super(); - this.params = params; - this.baseURLs = endpoints; - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if (!('paper' in params.credentials) && - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - switch (params.type) { - case 'account': - this.host = params.credentials.paper - ? this.baseURLs.websocket.account.replace('api.', 'paper-api.') - : this.baseURLs.websocket.account; - break; - case 'market_data': - this.host = this.baseURLs.websocket.market_data(this.params.source); - break; - default: - this.host = 'unknown'; - } - this.connection = new WebSocket(this.host); - this.connection.onopen = () => { - let message = {}; - switch (this.params.type) { - case 'account': - message = { - action: 'authenticate', - data: { - key_id: params.credentials.key, - secret_key: params.credentials.secret, - }, - }; - break; - case 'market_data': - message = Object.assign({ action: 'auth' }, params.credentials); - break; - } - this.connection.send(JSON.stringify(message)); - this.emit('open', this); - }; - this.connection.onclose = () => this.emit('close', this); - this.connection.onmessage = (event) => __awaiter(this, void 0, void 0, function* () { - let data = event.data; - if (isBlob(data)) { - data = yield event.data.text(); - } - else if (data instanceof ArrayBuffer) { - data = String.fromCharCode(...new Uint8Array(event.data)); - } - let parsed = JSON.parse(data), messages = this.params.type == 'account' ? [parsed] : parsed; - messages.forEach((message) => { - this.emit('message', message); - if ('T' in message && message.msg == 'authenticated') { - this.authenticated = true; - this.emit('authenticated', this); - } - else if ('stream' in message && message.stream == 'authorization') { - if (message.data.status == 'authorized') { - this.authenticated = true; - this.emit('authenticated', this); - } - } - if ('stream' in message && message.stream == 'trade_updates') { - this.emit('trade_updates', parse.trade_update(message.data)); - } - const x = { - success: 'success', - subscription: 'subscription', - error: 'error', - t: 'trade', - q: 'quote', - b: 'bar', - }; - if ('T' in message) { - this.emit(x[message.T.split('.')[0]], message); - } - }); - }); - this.connection.onerror = (err) => { - this.emit('error', err); - }; - } - getConnection() { - return this.connection; - } - subscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - this.send(JSON.stringify({ action: 'listen', data: { streams: [channel] } })); - break; - case 'market_data': - let message = { action: 'subscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - unsubscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - this.send(JSON.stringify({ action: 'unlisten', data: { streams: [channel] } })); - break; - case 'market_data': - let message = { action: 'unsubscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - send(message) { - if (!this.authenticated) { - throw new Error('not authenticated'); - } - if (typeof message == 'object') { - message = JSON.stringify(message); - } - this.connection.send(message); - return this; - } -} - -var index = { - AlpacaClient: AlpacaClient, - AlpacaStream: AlpacaStream, -}; - -export { AlpacaClient, AlpacaStream, index as default }; -//# sourceMappingURL=alpaca.js.map diff --git a/dist/alpaca.js.map b/dist/alpaca.js.map deleted file mode 100644 index 9c49b9f..0000000 --- a/dist/alpaca.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"alpaca.js","sources":["../node_modules/tslib/tslib.es6.js","../src/parse.ts","../src/endpoints.ts","../src/client.ts","../src/stream.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null,null],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/alpaca.min.js b/dist/alpaca.min.js deleted file mode 100644 index 2c5dee2..0000000 --- a/dist/alpaca.min.js +++ /dev/null @@ -1 +0,0 @@ -import t from"qs";import e from"isomorphic-unfetch";import s from"bottleneck";import a from"is-blob";import r from"isomorphic-ws";import i from"eventemitter3";function n(t,e,s,a){return new(s||(s=Promise))((function(r,i){function n(t){try{c(a.next(t))}catch(t){i(t)}}function o(t){try{c(a.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(n,o)}c((a=a.apply(t,e||[])).next())}))}function o(t){if(t)try{return Object.assign(Object.assign({},t),{raw:()=>t,created_at:new Date(t.created_at),updated_at:new Date(t.updated_at),submitted_at:new Date(t.submitted_at),filled_at:new Date(t.filled_at),expired_at:new Date(t.expired_at),canceled_at:new Date(t.canceled_at),failed_at:new Date(t.failed_at),replaced_at:new Date(t.replaced_at),qty:p(t.qty),filled_qty:p(t.filled_qty),type:t.type,side:t.side,time_in_force:t.time_in_force,limit_price:p(t.limit_price),stop_price:p(t.stop_price),filled_avg_price:p(t.filled_avg_price),status:t.status,legs:c(t.legs),trail_price:p(t.trail_price),trail_percent:p(t.trail_percent),hwm:p(t.hwm),order_class:t.order_class})}catch(t){throw new Error(`Order parsing failed. ${t.message}`)}}function c(t){return t?t.map((t=>o(t))):void 0}function d(t){if(t)try{return Object.assign(Object.assign({},t),{raw:()=>t,avg_entry_price:p(t.avg_entry_price),qty:p(t.qty),side:t.side,market_value:p(t.market_value),cost_basis:p(t.cost_basis),unrealized_pl:p(t.unrealized_pl),unrealized_plpc:p(t.unrealized_plpc),unrealized_intraday_pl:p(t.unrealized_intraday_pl),unrealized_intraday_plpc:p(t.unrealized_intraday_plpc),current_price:p(t.current_price),lastday_price:p(t.lastday_price),change_today:p(t.change_today)})}catch(t){throw new Error(`Position parsing failed. ${t.message}`)}}function u(t){if(t)try{return Object.assign(Object.assign({},t),{raw:()=>t,cum_qty:p(t.cum_qty),leaves_qty:p(t.leaves_qty),price:p(t.price),qty:p(t.qty),side:t.side,type:t.type})}catch(t){throw new Error(`TradeActivity parsing failed. ${t.message}`)}}function l(t){if(t)try{return Object.assign(Object.assign({},t),{raw:()=>t,net_amount:p(t.net_amount),qty:p(t.qty),per_share_amount:p(t.per_share_amount)})}catch(t){throw new Error(`NonTradeActivity parsing failed. ${t.message}`)}}function h(t){if(t)try{return Object.assign(Object.assign({},t),{raw:()=>t,latestTrade:t.latestTrade?Object.assign(Object.assign({},t.latestTrade),{t:new Date(t.latestTrade.t)}):null,latestQuote:t.latestQuote?Object.assign(Object.assign({},t.latestQuote),{t:new Date(t.latestQuote.t)}):null,minuteBar:t.minuteBar?Object.assign(Object.assign({},t.minuteBar),{t:new Date(t.minuteBar.t)}):null,dailyBar:t.dailyBar?Object.assign(Object.assign({},t.dailyBar),{t:new Date(t.dailyBar.t)}):null,prevDailyBar:t.prevDailyBar?Object.assign(Object.assign({},t.prevDailyBar),{t:new Date(t.prevDailyBar.t)}):null})}catch(t){throw new Error(`Snapshot parsing failed "${t.message}"`)}}function p(t){if(void 0===t||null==t)return t;const e=parseFloat(t);return Number.isNaN(e)?null:e}var m={account:function(t){if(t)try{return Object.assign(Object.assign({},t),{raw:()=>t,buying_power:p(t.buying_power),regt_buying_power:p(t.regt_buying_power),daytrading_buying_power:p(t.daytrading_buying_power),cash:p(t.cash),created_at:new Date(t.created_at),portfolio_value:p(t.portfolio_value),multiplier:p(t.multiplier),equity:p(t.equity),last_equity:p(t.last_equity),long_market_value:p(t.long_market_value),short_market_value:p(t.short_market_value),initial_margin:p(t.initial_margin),maintenance_margin:p(t.maintenance_margin),last_maintenance_margin:p(t.last_maintenance_margin),sma:p(t.sma),status:t.status})}catch(t){throw new Error(`Account parsing failed. ${t.message}`)}},activities:function(t){if(t)try{return t.map((t=>"FILL"===t.activity_type?u(t):l(t)))}catch(t){throw new Error(`Activity parsing failed. ${t.message}`)}},clock:function(t){if(t)try{return{raw:()=>t,timestamp:new Date(t.timestamp),is_open:t.is_open,next_open:new Date(t.next_open),next_close:new Date(t.next_close)}}catch(t){throw new Error(`Order parsing failed. ${t.message}`)}},nonTradeActivity:l,order:o,orders:c,canceled_orders:function(t){return t?t.map((t=>function(t){if(!t)return;let e=t.body;delete t.body;try{return Object.assign(Object.assign({},t),{order:Object.assign(Object.assign({},e),{raw:()=>e,created_at:new Date(e.created_at),updated_at:new Date(e.updated_at),submitted_at:new Date(e.submitted_at),filled_at:new Date(e.filled_at),expired_at:new Date(e.expired_at),canceled_at:new Date(e.canceled_at),failed_at:new Date(e.failed_at),replaced_at:new Date(e.replaced_at),qty:p(e.qty),filled_qty:p(e.filled_qty),type:e.type,side:e.side,time_in_force:e.time_in_force,limit_price:p(e.limit_price),stop_price:p(e.stop_price),filled_avg_price:p(e.filled_avg_price),status:e.status,legs:c(e.legs),trail_price:p(e.trail_price),trail_percent:p(e.trail_percent),hwm:p(e.hwm),order_class:e.order_class})})}catch(t){throw new Error(`Order parsing failed. ${t.message}`)}}(t))):void 0},position:d,positions:function(t){return t?t.map((t=>d(t))):void 0},tradeActivity:u,pageOfTrades:function(t){if(t)try{return{raw:()=>t,trades:(null==t.trades?[]:t.trades).map((t=>Object.assign(Object.assign({raw:()=>t},t),{t:new Date(t.t)}))),symbol:t.symbol,next_page_token:t.next_page_token}}catch(t){throw new Error(`PageOfTrades parsing failed "${t.message}"`)}},pageOfQuotes:function(t){if(t)try{return{raw:()=>t,quotes:(null==t.quotes?[]:t.quotes).map((t=>Object.assign(Object.assign({raw:()=>t},t),{t:new Date(t.t)}))),symbol:t.symbol,next_page_token:t.next_page_token}}catch(t){throw new Error(`PageOfTrades parsing failed "${t.message}"`)}},pageOfBars:function(t){if(t)try{return{raw:()=>t,bars:(null==t.bars?[]:t.bars).map((t=>Object.assign(Object.assign({raw:()=>t},t),{t:new Date(t.t)}))),symbol:t.symbol,next_page_token:t.next_page_token}}catch(t){throw new Error(`PageOfTrades parsing failed "${t.message}"`)}},snapshot:h,snapshots:function(t){let e={};for(let[s,a]of Object.entries(t))e[s]=h(a);return e},trade_update:function(t){if(t)return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({raw:()=>t,event:t.event,execution_id:t.execution_id,order:o(t.order)},t.event_id&&{event_id:p(t.event_id)}),t.at&&{at:new Date(t.at)}),t.timestamp&&{timestamp:new Date(t.timestamp)}),t.position_qty&&{position_qty:p(t.position_qty)}),t.price&&{price:p(t.price)}),t.qty&&{qty:p(t.qty)})},latestTrade:function(t){if(t)try{return Object.assign(Object.assign({},t),{raw:()=>t,trade:Object.assign(Object.assign({},t.trade),{t:new Date(t.trade.t)})})}catch(t){throw new Error(`Latest trade parsing failed. ${t.message}`)}}};const _={rest:{beta:"https://data.alpaca.markets/v1beta1",account:"https://api.alpaca.markets/v2",market_data_v2:"https://data.alpaca.markets/v2",market_data_v1:"https://data.alpaca.markets/v1"},websocket:{account:"wss://api.alpaca.markets/stream",market_data:(t="iex")=>`wss://stream.data.alpaca.markets/v2/${t}`}},y="undefined"!=typeof fetch?fetch:e;class b{constructor(t){if(this.params=t,this.baseURLs=_,this.limiter=new s({reservoir:200,reservoirRefreshAmount:200,reservoirRefreshInterval:6e4,maxConcurrent:1,minTime:200}),"endpoints"in t&&(this.baseURLs=Object.assign(_,t.endpoints)),"paper"in t.credentials||"key"in t.credentials&&t.credentials.key.startsWith("A")||(t.credentials.paper=!0),"access_token"in t.credentials&&("key"in t.credentials||"secret"in t.credentials))throw new Error("can't create client with both default and oauth credentials")}isAuthenticated(){return n(this,void 0,void 0,(function*(){try{return yield this.getAccount(),!0}catch(t){return!1}}))}getAccount(){return n(this,void 0,void 0,(function*(){return m.account(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/account`}))}))}getOrder(t){return n(this,void 0,void 0,(function*(){return m.order(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/orders/${t.order_id||t.client_order_id}`,data:{nested:t.nested}}))}))}getOrders(t={}){return n(this,void 0,void 0,(function*(){return m.orders(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/orders`,data:Object.assign(Object.assign({},t),{symbols:t.symbols?t.symbols.join(","):void 0})}))}))}placeOrder(t){return n(this,void 0,void 0,(function*(){return m.order(yield this.request({method:"POST",url:`${this.baseURLs.rest.account}/orders`,data:t}))}))}replaceOrder(t){return n(this,void 0,void 0,(function*(){return m.order(yield this.request({method:"PATCH",url:`${this.baseURLs.rest.account}/orders/${t.order_id}`,data:t}))}))}cancelOrder(t){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/orders/${t.order_id}`,isJSON:!1})}cancelOrders(){return n(this,void 0,void 0,(function*(){return m.canceled_orders(yield this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/orders`}))}))}getPosition(t){return n(this,void 0,void 0,(function*(){return m.position(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/positions/${t.symbol}`}))}))}getPositions(){return n(this,void 0,void 0,(function*(){return m.positions(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/positions`}))}))}closePosition(t){return n(this,void 0,void 0,(function*(){return m.order(yield this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/positions/${t.symbol}`,data:t}))}))}closePositions(t){var e;return n(this,void 0,void 0,(function*(){return m.orders(yield this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify(null!==(e=t.cancel_orders)&&void 0!==e&&e)}`}))}))}getAsset(t){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/assets/${t.asset_id_or_symbol}`})}getAssets(t){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/assets`,data:t})}getWatchlist(t){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/watchlists/${t.uuid}`})}getWatchlists(){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/watchlists`})}createWatchlist(t){return this.request({method:"POST",url:`${this.baseURLs.rest.account}/watchlists`,data:t})}updateWatchlist(t){return this.request({method:"PUT",url:`${this.baseURLs.rest.account}/watchlists/${t.uuid}`,data:t})}addToWatchlist(t){return this.request({method:"POST",url:`${this.baseURLs.rest.account}/watchlists/${t.uuid}`,data:t})}removeFromWatchlist(t){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/watchlists/${t.uuid}/${t.symbol}`})}deleteWatchlist(t){return this.request({method:"DELETE",url:`${this.baseURLs.rest.account}/watchlists/${t.uuid}`})}getCalendar(t){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/calendar`,data:t})}getNews(t){return"symbols"in t&&Array.isArray(t.symbols)&&(t.symbols=t.symbols.join(",")),this.request({method:"GET",url:`${this.baseURLs.rest.beta}/news`,data:t})}getClock(){return n(this,void 0,void 0,(function*(){return m.clock(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/clock`}))}))}getAccountConfigurations(){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/configurations`})}updateAccountConfigurations(t){return this.request({method:"PATCH",url:`${this.baseURLs.rest.account}/account/configurations`,data:t})}getAccountActivities(t){return n(this,void 0,void 0,(function*(){return t.activity_types&&Array.isArray(t.activity_types)&&(t.activity_types=t.activity_types.join(",")),m.activities(yield this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/activities${t.activity_type?"/".concat(t.activity_type):""}`,data:Object.assign(Object.assign({},t),{activity_type:void 0})}))}))}getPortfolioHistory(t){return this.request({method:"GET",url:`${this.baseURLs.rest.account}/account/portfolio/history`,data:t})}getBars_v1(t){return n(this,void 0,void 0,(function*(){const e=Object.assign(Object.assign({},t),{symbols:t.symbols.join(",")});return yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/bars/${t.timeframe}`,data:e})}))}getLastTrade_v1(t){return n(this,void 0,void 0,(function*(){return yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/last/stocks/${t.symbol}`})}))}getLastQuote_v1(t){return n(this,void 0,void 0,(function*(){return yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${t.symbol}`})}))}getTrades(t){return n(this,void 0,void 0,(function*(){return m.pageOfTrades(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${t.symbol}/trades`,data:Object.assign(Object.assign({},t),{symbol:void 0})}))}))}getQuotes(t){return n(this,void 0,void 0,(function*(){return m.pageOfQuotes(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${t.symbol}/quotes`,data:Object.assign(Object.assign({},t),{symbol:void 0})}))}))}getBars(t){return n(this,void 0,void 0,(function*(){return m.pageOfBars(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${t.symbol}/bars`,data:Object.assign(Object.assign({},t),{symbol:void 0})}))}))}getLatestTrade({symbol:e,feed:s,limit:a}){return n(this,void 0,void 0,(function*(){let r="";return(s||a)&&(r="?".concat(t.stringify({feed:s,limit:a}))),m.latestTrade(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${e}/trades/latest`.concat(r)}))}))}getSnapshot(t){return n(this,void 0,void 0,(function*(){return m.snapshot(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/${t.symbol}/snapshot`}))}))}getSnapshots(t){return n(this,void 0,void 0,(function*(){return m.snapshots(yield this.request({method:"GET",url:`${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${t.symbols.join(",")}`}))}))}request(e){return n(this,void 0,void 0,(function*(){let s={};"access_token"in this.params.credentials?s.Authorization=`Bearer ${this.params.credentials.access_token}`:(s["APCA-API-KEY-ID"]=this.params.credentials.key,s["APCA-API-SECRET-KEY"]=this.params.credentials.secret),this.params.credentials.paper&&(e.url=e.url.replace("api.","paper-api."));let a="";if(e.data){for(let[t,s]of Object.entries(e.data))s instanceof Date&&(e.data[t]=s.toISOString());["POST","PATCH","PUT"].includes(e.method)||(a="?".concat(t.stringify(e.data)),e.data=void 0)}const r=()=>y(e.url.concat(a),{method:e.method,headers:s,body:JSON.stringify(e.data)}),i=this.params.rate_limit?()=>this.limiter.schedule(r):r;let n,o={};try{if(n=yield i(),null!=e.isJSON&&!e.isJSON)return n.ok;o=yield n.json()}catch(t){throw console.error(t),o}if("code"in o||"message"in o)throw o;return o}))}}class g extends i{constructor(t){switch(super(),this.params=t,this.baseURLs=_,"endpoints"in t&&(this.baseURLs=Object.assign(_,t.endpoints)),"paper"in t.credentials||"key"in t.credentials&&t.credentials.key.startsWith("A")||(t.credentials.paper=!0),t.type){case"account":this.host=t.credentials.paper?this.baseURLs.websocket.account.replace("api.","paper-api."):this.baseURLs.websocket.account;break;case"market_data":this.host=this.baseURLs.websocket.market_data(this.params.source);break;default:this.host="unknown"}this.connection=new r(this.host),this.connection.onopen=()=>{let e={};switch(this.params.type){case"account":e={action:"authenticate",data:{key_id:t.credentials.key,secret_key:t.credentials.secret}};break;case"market_data":e=Object.assign({action:"auth"},t.credentials)}this.connection.send(JSON.stringify(e)),this.emit("open",this)},this.connection.onclose=()=>this.emit("close",this),this.connection.onmessage=t=>n(this,void 0,void 0,(function*(){let e=t.data;a(e)?e=yield t.data.text():e instanceof ArrayBuffer&&(e=String.fromCharCode(...new Uint8Array(t.data)));let s=JSON.parse(e);("account"==this.params.type?[s]:s).forEach((t=>{this.emit("message",t),("T"in t&&"authenticated"==t.msg||"stream"in t&&"authorization"==t.stream&&"authorized"==t.data.status)&&(this.authenticated=!0,this.emit("authenticated",this)),"stream"in t&&"trade_updates"==t.stream&&this.emit("trade_updates",m.trade_update(t.data));const e={success:"success",subscription:"subscription",error:"error",t:"trade",q:"quote",b:"bar"};"T"in t&&this.emit(e[t.T.split(".")[0]],t)}))})),this.connection.onerror=t=>{this.emit("error",t)}}getConnection(){return this.connection}subscribe(t,e=[]){switch(this.params.type){case"account":this.send(JSON.stringify({action:"listen",data:{streams:[t]}}));break;case"market_data":let s={action:"subscribe"};s[t]=e,this.send(JSON.stringify(s))}return this}unsubscribe(t,e=[]){switch(this.params.type){case"account":this.send(JSON.stringify({action:"unlisten",data:{streams:[t]}}));break;case"market_data":let s={action:"unsubscribe"};s[t]=e,this.send(JSON.stringify(s))}return this}send(t){if(!this.authenticated)throw new Error("not authenticated");return"object"==typeof t&&(t=JSON.stringify(t)),this.connection.send(t),this}}var f={AlpacaClient:b,AlpacaStream:g};export{b as AlpacaClient,g as AlpacaStream,f as default}; diff --git a/dist/cjs/client.cjs b/dist/cjs/client.cjs deleted file mode 100644 index 12da8fb..0000000 --- a/dist/cjs/client.cjs +++ /dev/null @@ -1,407 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AlpacaClient = void 0; -const qs_1 = __importDefault(require("qs")); -const parse_js_1 = __importDefault(require("./parse.cjs")); -const isomorphic_unfetch_1 = __importDefault(require("isomorphic-unfetch")); -const endpoints_js_1 = __importDefault(require("./endpoints.cjs")); -const bottleneck_1 = __importDefault(require("bottleneck")); -const unifetch = typeof fetch !== 'undefined' ? fetch : isomorphic_unfetch_1.default; -class AlpacaClient { - constructor(params) { - this.params = params; - this.baseURLs = endpoints_js_1.default; - this.limiter = new bottleneck_1.default({ - reservoir: 200, - reservoirRefreshAmount: 200, - reservoirRefreshInterval: 60 * 1000, - // also use maxConcurrent and/or minTime for safety - maxConcurrent: 1, - minTime: 200, - }); - // override endpoints if custom provided - if ('endpoi.cts' in params) { - this.baseURLs = Object.assign(endpoints_js_1.default, params.endpoints); - } - if ( - // if not specified - !('paper' in params.credentials) && - // and live key isn't already provided - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - if ('access_token' in params.credentials && - ('key' in params.credentials || 'secret' in params.credentials)) { - throw new Error("can't create client with both default and oauth credentials"); - } - } - isAuthenticated() { - return __awaiter(this, void 0, void 0, function* () { - try { - yield this.getAccount(); - return true; - } - catch (_a) { - return false; - } - }); - } - getAccount() { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.account(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account`, - })); - }); - } - getOrder(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.order(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders/${params.order_id || params.client_order_id}`, - data: { nested: params.nested }, - })); - }); - } - getOrders(params = {}) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.orders(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders`, - data: Object.assign(Object.assign({}, params), { symbols: params.symbols ? params.symbols.join(',') : undefined }), - })); - }); - } - placeOrder(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.order(yield this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/orders`, - data: params, - })); - }); - } - replaceOrder(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.order(yield this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - data: params, - })); - }); - } - cancelOrder(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - isJSON: false, - }); - } - cancelOrders() { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.canceled_orders(yield this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders`, - })); - }); - } - getPosition(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.position(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - })); - }); - } - getPositions() { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.positions(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions`, - })); - }); - } - closePosition(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.order(yield this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - data: params, - })); - }); - } - closePositions(params) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.orders(yield this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify((_a = params.cancel_orders) !== null && _a !== void 0 ? _a : false)}`, - })); - }); - } - getAsset(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets/${params.asset_id_or_symbol}`, - }); - } - getAssets(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets`, - data: params, - }); - } - getWatchlist(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getWatchlists() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists`, - }); - } - createWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists`, - data: params, - }); - } - updateWatchlist(params) { - return this.request({ - method: 'PUT', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - addToWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - removeFromWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}/${params.symbol}`, - }); - } - deleteWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getCalendar(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/calendar`, - data: params, - }); - } - getNews(params) { - // transform symbols if necessary - if ('symbols' in params && Array.isArray(params.symbols)) { - params.symbols = params.symbols.join(','); - } - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.beta}/news`, - data: params, - }); - } - getClock() { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.clock(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/clock`, - })); - }); - } - getAccountConfigurations() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/configurations`, - }); - } - updateAccountConfigurations(params) { - return this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/account/configurations`, - data: params, - }); - } - getAccountActivities(params) { - return __awaiter(this, void 0, void 0, function* () { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params.activity_types.join(','); - } - return parse_js_1.default.activities(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/activities${params.activity_type ? '/'.concat(params.activity_type) : ''}`, - data: Object.assign(Object.assign({}, params), { activity_type: undefined }), - })); - }); - } - getPortfolioHistory(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/portfolio/history`, - data: params, - }); - } - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - getBars_v1(params) { - return __awaiter(this, void 0, void 0, function* () { - const transformed = Object.assign(Object.assign({}, params), { symbols: params.symbols.join(',') }); - return yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/bars/${params.timeframe}`, - data: transformed, - }); - }); - } - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - getLastTrade_v1(params) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last/stocks/${params.symbol}`, - }); - }); - } - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - getLastQuote_v1(params) { - return __awaiter(this, void 0, void 0, function* () { - return yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${params.symbol}`, - }); - }); - } - getTrades(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.pageOfTrades(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/trades`, - data: Object.assign(Object.assign({}, params), { symbol: undefined }), - })); - }); - } - getQuotes(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.pageOfQuotes(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/quotes`, - data: Object.assign(Object.assign({}, params), { symbol: undefined }), - })); - }); - } - getBars(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.pageOfBars(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/bars`, - data: Object.assign(Object.assign({}, params), { symbol: undefined }), - })); - }); - } - getLatestTrade({ symbol, feed, limit, }) { - return __awaiter(this, void 0, void 0, function* () { - let query = ''; - if (feed || limit) { - query = '?'.concat(qs_1.default.stringify({ feed, limit })); - } - return parse_js_1.default.latestTrade(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${symbol}/trades/latest`.concat(query), - })); - }); - } - getSnapshot(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.snapshot(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/snapshot`, - })); - }); - } - getSnapshots(params) { - return __awaiter(this, void 0, void 0, function* () { - return parse_js_1.default.snapshots(yield this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${params.symbols.join(',')}`, - })); - }); - } - request(params) { - return __awaiter(this, void 0, void 0, function* () { - let headers = {}; - if ('access_token' in this.params.credentials) { - headers['Authorization'] = `Bearer ${this.params.credentials.access_token}`; - } - else { - headers['APCA-API-KEY-ID'] = this.params.credentials.key; - headers['APCA-API-SECRET-KEY'] = this.params.credentials.secret; - } - if (this.params.credentials.paper) { - params.url = params.url.replace('api.', 'paper-api.'); - } - let query = ''; - if (params.data) { - // translate dates to ISO strings - for (let [key, value] of Object.entries(params.data)) { - if (value instanceof Date) { - params.data[key] = value.toISOString(); - } - } - // build query - if (!['POST', 'PATCH', 'PUT'].includes(params.method)) { - query = '?'.concat(qs_1.default.stringify(params.data)); - params.data = undefined; - } - } - const makeCall = () => unifetch(params.url.concat(query), { - method: params.method, - headers, - body: JSON.stringify(params.data), - }), func = this.params.rate_limit - ? () => this.limiter.schedule(makeCall) - : makeCall; - let resp, result = {}; - try { - resp = yield func(); - if (!(params.isJSON == undefined ? true : params.isJSON)) { - return resp.ok; - } - result = yield resp.json(); - } - catch (e) { - console.error(e); - throw result; - } - if ('code' in result || 'message' in result) { - throw result; - } - return result; - }); - } -} -exports.AlpacaClient = AlpacaClient; diff --git a/dist/cjs/client.d.cts b/dist/cjs/client.d.cts deleted file mode 100644 index f07566f..0000000 --- a/dist/cjs/client.d.cts +++ /dev/null @@ -1,61 +0,0 @@ -import { Account, Order, Position, Asset, Watchlist, Calendar, Clock, AccountConfigurations, PortfolioHistory, Activity, DefaultCredentials, OAuthCredentials, OrderCancelation, PageOfTrades, PageOfQuotes, PageOfBars, Bar_v1, LastQuote_v1, LastTrade_v1, Snapshot, NewsPage, LatestTrade, Endpoints } from './entities.cjs'; -import { GetOrder, GetOrders, PlaceOrder, ReplaceOrder, CancelOrder, GetPosition, ClosePosition, GetAsset, GetAssets, GetWatchList, CreateWatchList, UpdateWatchList, AddToWatchList, RemoveFromWatchList, DeleteWatchList, GetCalendar, UpdateAccountConfigurations, GetAccountActivities, GetPortfolioHistory, GetBars, GetBars_v1, GetTrades, GetQuotes, GetLastTrade_v1, GetLastQuote_v1, GetSnapshot, GetSnapshots, ClosePositions, GetNews, GetLatestTrade } from './params.cjs'; -export declare class AlpacaClient { - params: { - rate_limit?: boolean; - endpoints?: Endpoints | Map; - credentials?: DefaultCredentials | OAuthCredentials; - }; - private baseURLs; - private limiter; - constructor(params: { - rate_limit?: boolean; - endpoints?: Endpoints | Map; - credentials?: DefaultCredentials | OAuthCredentials; - }); - isAuthenticated(): Promise; - getAccount(): Promise; - getOrder(params: GetOrder): Promise; - getOrders(params?: GetOrders): Promise; - placeOrder(params: PlaceOrder): Promise; - replaceOrder(params: ReplaceOrder): Promise; - cancelOrder(params: CancelOrder): Promise; - cancelOrders(): Promise; - getPosition(params: GetPosition): Promise; - getPositions(): Promise; - closePosition(params: ClosePosition): Promise; - closePositions(params: ClosePositions): Promise; - getAsset(params: GetAsset): Promise; - getAssets(params?: GetAssets): Promise; - getWatchlist(params: GetWatchList): Promise; - getWatchlists(): Promise; - createWatchlist(params: CreateWatchList): Promise; - updateWatchlist(params: UpdateWatchList): Promise; - addToWatchlist(params: AddToWatchList): Promise; - removeFromWatchlist(params: RemoveFromWatchList): Promise; - deleteWatchlist(params: DeleteWatchList): Promise; - getCalendar(params?: GetCalendar): Promise; - getNews(params?: GetNews): Promise; - getClock(): Promise; - getAccountConfigurations(): Promise; - updateAccountConfigurations(params: UpdateAccountConfigurations): Promise; - getAccountActivities(params: GetAccountActivities): Promise; - getPortfolioHistory(params?: GetPortfolioHistory): Promise; - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - getBars_v1(params: GetBars_v1): Promise<{ - [symbol: string]: Bar_v1[]; - }>; - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - getLastTrade_v1(params: GetLastTrade_v1): Promise; - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - getLastQuote_v1(params: GetLastQuote_v1): Promise; - getTrades(params: GetTrades): Promise; - getQuotes(params: GetQuotes): Promise; - getBars(params: GetBars): Promise; - getLatestTrade({ symbol, feed, limit, }: GetLatestTrade): Promise; - getSnapshot(params: GetSnapshot): Promise; - getSnapshots(params: GetSnapshots): Promise<{ - [key: string]: Snapshot; - }>; - private request; -} diff --git a/dist/cjs/endpoints.cjs b/dist/cjs/endpoints.cjs deleted file mode 100644 index 873bb23..0000000 --- a/dist/cjs/endpoints.cjs +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const endpoints = { - rest: { - beta: 'https://data.alpaca.markets/v1beta1', - account: 'https://api.alpaca.markets/v2', - market_data_v2: 'https://data.alpaca.markets/v2', - market_data_v1: 'https://data.alpaca.markets/v1', - }, - websocket: { - account: 'wss://api.alpaca.markets/stream', - market_data: (source = 'iex') => `wss://stream.data.alpaca.markets/v2/${source}`, - }, -}; -exports.default = endpoints; diff --git a/dist/cjs/endpoints.d.cts b/dist/cjs/endpoints.d.cts deleted file mode 100644 index 138d526..0000000 --- a/dist/cjs/endpoints.d.cts +++ /dev/null @@ -1,3 +0,0 @@ -import { Endpoints } from './entities'; -declare const endpoints: Endpoints; -export default endpoints; diff --git a/dist/cjs/entities.cjs b/dist/cjs/entities.cjs deleted file mode 100644 index c8ad2e5..0000000 --- a/dist/cjs/entities.cjs +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/dist/cjs/entities.d.cts b/dist/cjs/entities.d.cts deleted file mode 100644 index 7ce6656..0000000 --- a/dist/cjs/entities.d.cts +++ /dev/null @@ -1,1585 +0,0 @@ -export interface Endpoints { - rest: { - beta: 'https://data.alpaca.markets/v1beta1'; - account: 'https://api.alpaca.markets/v2'; - market_data_v2: 'https://data.alpaca.markets/v2'; - market_data_v1: 'https://data.alpaca.markets/v1'; - }; - websocket: { - account: 'wss://api.alpaca.markets/stream'; - market_data: (source: DataSource) => string; - }; -} -/** - * Your Alpaca key id and secret. - * Can be passed to the AlpacaClient and AlpacaStream. - */ -export interface DefaultCredentials { - key: string; - secret: string; - paper?: boolean; -} -/** - * Client ID for Oauth requests on behalf of users. - * Can be passed to the AlpacaClient. - */ -export interface OAuthCredentials { - access_token: String; - paper?: boolean; -} -/** - * The account information with unparsed types, exactly as Alpaca provides it. - * We encourage you to use the Account interface, which has many of these fields parsed. - */ -export interface RawAccount { - account_blocked: boolean; - account_number: string; - buying_power: string; - cash: string; - created_at: string; - currency: string; - daytrade_count: number; - daytrading_buying_power: string; - equity: string; - id: string; - initial_margin: string; - last_equity: string; - last_maintenance_margin: string; - long_market_value: string; - maintenance_margin: string; - multiplier: string; - pattern_day_trader: boolean; - portfolio_value: string; - regt_buying_power: string; - short_market_value: string; - shorting_enabled: boolean; - sma: string; - status: string; - trade_suspended_by_user: boolean; - trading_blocked: boolean; - transfers_blocked: boolean; -} -/** - * The following are the possible account status values. Most likely, the account status - * is ACTIVE unless there is any problem. The account status may get in ACCOUNT_UPDATED - * when personal information is being updated from the dashboard, in which case you may - * not be allowed trading for a short period of time until the change is approved. - */ -export declare type AccountStatus = -/** - * The account is onboarding. - */ -'ONBOARDING' -/** - * The account application submission failed for some reason. - */ - | 'SUBMISSION_FAILED' -/** - * The account application has been submitted for review. - */ - | 'SUBMITTED' -/** - * The account information is being updated. - */ - | 'ACCOUNT_UPDATED' -/** - * The final account approval is pending. - */ - | 'APPROVAL_PENDING' -/** - * The account is active for trading. - */ - | 'ACTIVE' -/** - * The account application has been rejected. - */ - | 'REJECTED'; -/** - * Information related to an Alpaca account, such as account status, funds, and various - * flags relevant to an account's ability to trade. - */ -export interface Account { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawAccount; - /** - * If true, the account activity by user is prohibited. - */ - account_blocked: boolean; - /** - * Account number. - */ - account_number: string; - /** - * Current available $ buying power; If multiplier = 4, this is your daytrade buying - * power which is calculated as (last_equity - (last) maintenance_margin) * 4; If - * multiplier = 2, buying_power = max(equity – initial_margin,0) * 2; If multiplier = 1, - * buying_power = cash - */ - buying_power: number; - /** - * Cash balance - */ - cash: number; - /** - * Timestamp this account was created at - */ - created_at: Date; - /** - * "USD" - */ - currency: string; - /** - * The current number of daytrades that have been made in the last 5 trading days - * (inclusive of today) - */ - daytrade_count: number; - /** - * Your buying power for day trades (continuously updated value) - */ - daytrading_buying_power: number; - /** - * Cash + long_market_value + short_market_value - */ - equity: number; - /** - * Account ID. - */ - id: string; - /** - * Reg T initial margin requirement (continuously updated value) - */ - initial_margin: number; - /** - * Equity as of previous trading day at 16:00:00 ET - */ - last_equity: number; - /** - * Your maintenance margin requirement on the previous trading day - */ - last_maintenance_margin: number; - /** - * Real-time MtM value of all long positions held in the account - */ - long_market_value: number; - /** - * Maintenance margin requirement (continuously updated value) - */ - maintenance_margin: number; - /** - * Buying power multiplier that represents account margin classification; valid values 1 - * (standard limited margin account with 1x buying power), 2 (reg T margin account with - * 2x intraday and overnight buying power; this is the default for all non-PDT accounts - * with $2,000 or more equity), 4 (PDT account with 4x intraday buying power and 2x reg - * T overnight buying power) - */ - multiplier: number; - /** - * Whether or not the account has been flagged as a pattern day trader - */ - pattern_day_trader: boolean; - /** - * Total value of cash + holding positions (This field is deprecated. It is equivalent - * to the equity field.) - */ - portfolio_value: number; - /** - * Your buying power under Regulation T (your excess equity - equity minus margin - * value - times your margin multiplier) - */ - regt_buying_power: number; - /** - * Real-time MtM value of all short positions held in the account - */ - short_market_value: number; - /** - * Flag to denote whether or not the account is permitted to short - */ - shorting_enabled: boolean; - /** - * Value of special memorandum account (will be used at a later date to provide - * additional buying_power) - */ - sma: number; - /** - * The following are the possible account status values. Most likely, the account status - * is ACTIVE unless there is any problem. The account status may get in ACCOUNT_UPDATED - * when personal information is being updated from the dashboard, in which case you may - * not be allowed trading for a short period of time until the change is approved. - */ - status: AccountStatus; - /** - * User setting. If true, the account is not allowed to place orders. - */ - trade_suspended_by_user: boolean; - /** - * If true, the account is not allowed to place orders. - */ - trading_blocked: boolean; - /** - * If true, the account is not allowed to request money transfers. - */ - transfers_blocked: boolean; -} -export interface AccountConfigurations { - /** - * both, entry, or exit. Controls Day Trading Margin Call (DTMC) checks. - */ - dtbp_check: 'both' | 'entry' | 'exit'; - /** - * If true, account becomes long-only mode. - */ - no_shorting: boolean; - /** - * If true, new orders are blocked. - */ - suspend_trade: boolean; - /** - * all or none. If none, emails for order fills are not sent. - */ - trade_confirm_email: 'all' | 'none'; -} -export interface AccountUpdate { - id: string; - created_at: string; - updated_at: string; - deleted_at: any; - status: string; - currency: string; - cash: string; - cash_withdrawable: string; -} -export interface AggregateMinute { - ev: string; - T: string; - v: number; - av: number; - op: number; - vw: number; - o: number; - c: number; - h: number; - l: number; - a: number; - s: number; - e: number; -} -export declare type AssetExchange = 'AMEX' | 'ARCA' | 'BATS' | 'NYSE' | 'NASDAQ' | 'NYSEARCA'; -export declare type AssetStatus = 'active' | 'inactive'; -/** - * The assets API serves as the master list of assets available for trade and data - * consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. Some - * assets are only available for data consumption via Polygon, and are not tradable with - * Alpaca. These assets will be marked with the flag tradable=false. - */ -export interface Asset { - /** - * Asset ID - */ - id: string; - /** - * "us_equity" - */ - class: string; - /** - * AMEX, ARCA, BATS, NYSE, NASDAQ or NYSEARCA - */ - exchange: AssetExchange; - /** - * Asset symbol - */ - symbol: string; - /** - * active or inactive - */ - status: AssetStatus; - /** - * Asset is tradable on Alpaca or not - */ - tradable: boolean; - /** - * Asset is marginable or not - */ - marginable: boolean; - /** - * Asset is shortable or not - */ - shortable: boolean; - /** - * Asset is easy-to-borrow or not (filtering for easy_to_borrow = True is the best way - * to check whether the name is currently available to short at Alpaca). - */ - easy_to_borrow: boolean; - /** - * Asset is fractionable or not. - */ - fractionable: boolean; -} -/** - * Contains the time of open and close for a market on a particular day from 1970 to 2029 - */ -export interface Calendar { - /** - * Date string in YYYY-MM-DD format - */ - date: string; - /** - * The time the market opens at on this date in HH:MM format - */ - open: string; - /** - * The time the market closes at on this date in HH:MM format - */ - close: string; -} -export interface RawClock { - timestamp: string; - is_open: boolean; - next_open: string; - next_close: string; -} -/** - * The clock API serves the current market timestamp, whether or not the market is - * currently open, as well as the times of the next market open and close. - */ -export interface Clock { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawClock; - /** - * Current timestamp - */ - timestamp: Date; - /** - * Whether or not the market is open - */ - is_open: boolean; - /** - * Next market open timestamp - */ - next_open: Date; - /** - * Next market close timestamp - */ - next_close: Date; -} -/** A trade which occurred. */ -export interface RawTrade { - /** Trade symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: string; - /** Exchange where the trade happened. */ - x: string; - /** Trade price. */ - p: number; - /** Trade size. */ - s: number; - /** Trade conditions. */ - c: string[]; - /** Trade ID. */ - i: number; - /** Tape. */ - z: string; -} -/** A page of one or many trades. */ -export interface RawPageOfTrades { - /** Array of trades. */ - trades: RawTrade[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A trade which occurred. */ -export interface Trade { - /** Get the raw data as it came from Alpaca. */ - raw(): RawTrade; - /** Trade symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: Date; - /** Exchange where the trade happened. */ - x: string; - /** Trade price. */ - p: number; - /** Trade size. */ - s: number; - /** Trade conditions. */ - c: string[]; - /** Trade ID. */ - i: number; - /** Tape. */ - z: string; -} -/** A page of one or many trades. */ -export interface PageOfTrades { - /** Get the raw data as it came from Alpaca. */ - raw(): RawPageOfTrades; - /** Array of trades. */ - trades: Trade[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A quote for a symbol. */ -export interface RawQuote { - /** Quote symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: string; - /** Ask exchange. */ - ax: string; - /** Ask price. */ - ap: number; - /** Ask size. */ - as: number; - /** Bid exchange. */ - bx: string; - /** Bid price. */ - bp: number; - /** Bid size. */ - bs: number; - /** Quote conditions. */ - c: string[]; -} -/** A page of one or many quotes. */ -export interface RawPageOfQuotes { - /** Array of quotes. */ - quotes: RawQuote[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A quote for a symbol. */ -export interface Quote { - /** Get the raw data as it came from Alpaca. */ - raw(): RawQuote; - /** Quote symbol. */ - S: string; - /** Timestamp in Date format. */ - t: Date; - /** Ask exchange. */ - ax: string; - /** Ask price. */ - ap: number; - /** Ask size. */ - as: number; - /** Bid exchange. */ - bx: string; - /** Bid price. */ - bp: number; - /** Bid size. */ - bs: number; - /** Quote conditions. */ - c: string[]; -} -/** A page of one or many quotes. */ -export interface PageOfQuotes { - /** Get the raw data as it came from Alpaca. */ - raw(): RawPageOfQuotes; - /** Array of quotes. */ - quotes: Quote[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A bar for a symbol. */ -export interface RawBar { - /** Bar symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: string; - /** Open price. */ - o: number; - /** High price. */ - h: number; - /** Low price. */ - l: number; - /** Close price. */ - c: number; - /** Volume. */ - v: number; -} -/** A page of one or many bars. */ -export interface RawPageOfBars { - /** Array of bars. */ - bars: RawBar[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A bar for a symbol. */ -export interface Bar { - /** Get the raw data as it came from Alpaca. */ - raw(): RawBar; - /** Bar symbol. */ - S: string; - /** Timestamp in Date format. */ - t: Date; - /** Open price. */ - o: number; - /** High price. */ - h: number; - /** Low price. */ - l: number; - /** Close price. */ - c: number; - /** Volume. */ - v: number; -} -/** A page of one or many bars. */ -export interface PageOfBars { - /** Get the raw data as it came from Alpaca. */ - raw(): RawPageOfBars; - /** Array of bars. */ - bars: Bar[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** - * The parsed result of an order cancelation request. - */ -export interface OrderCancelation { - id: string; - status: number; - order: Order; -} -/** - * The id, http status code and order as part of the cancel all orders request. - */ -export interface RawOrderCancelation { - id: string; - status: number; - body: RawOrder; -} -/** - * The order entity with unparsed fields, exactly as Alpaca provides it. - * We encourage you to use the Order interface, which has many of these fields parsed. - */ -export interface RawOrder { - id: string; - client_order_id: string; - created_at: string; - updated_at: string; - submitted_at: string; - filled_at: string; - expired_at: string; - canceled_at: string; - failed_at: string; - replaced_at: string; - replaced_by: string; - replaces: string; - asset_id: string; - symbol: string; - asset_class: string; - qty: string; - filled_qty: string; - type: string; - side: string; - time_in_force: string; - limit_price: string; - stop_price: string; - filled_avg_price: string; - status: string; - extended_hours: boolean; - legs: RawOrder[]; - trail_price: string; - trail_percent: string; - hwm: string; - order_class?: OrderClass; -} -/** - * Price and volume data during a particular time interval - */ -export interface Bar_v1 { - /** - * the beginning time of this bar as a Unix epoch in seconds - */ - t: number; - /** - * open price - */ - o: number; - /** - * high price - */ - h: number; - /** - * low price - */ - l: number; - /** - * close price - */ - c: number; - /** - * volume - */ - v: number; -} -/** - * Last quote details for a symbol - */ -export interface LastQuote_v1 { - status: string; - symbol: string; - last: { - /** - * the current ask price - */ - askprice: number; - /** - * the current ask size - */ - asksize: number; - /** - * the exchange code of the ask quote - */ - askexchange: number; - /** - * the current bid price - */ - bidprice: number; - /** - * the current bid size - */ - bidsize: number; - /** - * the exchange code of the bid quote - */ - bidexchange: number; - /** - * epoch timestamp in nanoseconds - */ - timestamp: number; - }; -} -/** - * Last trade details for a symbol - */ -export interface LastTrade_v1 { - status: string; - symbol: string; - last: { - /** - * last trade price - */ - price: number; - /** - * last trade volume size - */ - size: number; - /** - * exchange code where the last trade was made - */ - exchange: number; - /** - * condition flag 1 - */ - cond1: number; - /** - * condition flag 2 - */ - cond2: number; - /** - * condition flag 3 - */ - cond3: number; - /** - * condition flag 4 - */ - cond4: number; - /** - * epoch timestamp in nanoseconds - */ - timestamp: number; - }; -} -export interface RawSnapshot { - symbol: string; - latestTrade: { - t: string; - x: string; - p: number; - s: number; - c?: string[] | null; - i: number; - z: string; - }; - latestQuote: { - t: string; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c?: string[] | null; - }; - minuteBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - dailyBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - prevDailyBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; -} -export interface Snapshot { - /** Get the raw data as it came from Alpaca. */ - raw(): RawSnapshot; - symbol: string; - latestTrade: { - t: Date; - x: string; - p: number; - s: number; - c?: string[] | null; - i: number; - z: string; - }; - latestQuote: { - t: Date; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c?: string[] | null; - }; - minuteBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - dailyBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - prevDailyBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; -} -export declare type DataSource = 'iex' | 'sip'; -export declare type OrderType = 'market' | 'limit' | 'stop' | 'stop_limit' | 'trailing_stop'; -export declare type OrderClass = 'simple' | 'bracket' | 'oto' | 'oco'; -export declare type OrderSide = 'buy' | 'sell'; -export declare type OrderTimeInForce = -/** - * A day order is eligible for execution only on the day it is live. By default, the - * order is only valid during Regular Trading Hours (9:30am - 4:00pm ET). If unfilled - * after the closing auction, it is automatically canceled. If submitted after the - * close, it is queued and submitted the following trading day. However, if marked as - * eligible for extended hours, the order can also execute during supported extended - * hours. - */ -'day' -/** - * The order is good until canceled. Non-marketable GTC limit orders are subject to - * price adjustments to offset corporate actions affecting the issue. We do not - * currently support Do Not Reduce(DNR) orders to opt out of such price adjustments. - */ - | 'gtc' -/** - * Use this TIF with a market/limit order type to submit "market on open" (MOO) and - * "limit on open" (LOO) orders. This order is eligible to execute only in the market - * opening auction. Any unfilled orders after the open will be cancelled. OPG orders - * submitted after 9:28am but before 7:00pm ET will be rejected. OPG orders submitted - * after 7:00pm will be queued and routed to the following day's opening auction. On - * open/on close orders are routed to the primary exchange. Such orders do not - * necessarily execute exactly at 9:30am / 4:00pm ET but execute per the exchange's - * auction rules. - */ - | 'opg' -/** - * Use this TIF with a market/limit order type to submit "market on close" (MOC) and - * "limit on close" (LOC) orders. This order is eligible to execute only in the market - * closing auction. Any unfilled orders after the close will be cancelled. CLS orders - * submitted after 3:50pm but before 7:00pm ET will be rejected. CLS orders submitted - * after 7:00pm will be queued and routed to the following day's closing auction. Only - * available with API v2. - */ - | 'cls' -/** - * An Immediate Or Cancel (IOC) order requires all or part of the order to be executed - * immediately. Any unfilled portion of the order is canceled. Only available with API - * v2. - */ - | 'ioc' -/** - * A Fill or Kill (FOK) order is only executed if the entire order quantity can be - * filled, otherwise the order is canceled. Only available with API v2. - */ - | 'fok'; -export declare type OrderStatus = -/** - * The order has been received by Alpaca, and routed to exchanges for execution. This - * is the usual initial state of an order. - */ -'new' -/** - * The order has been partially filled. - */ - | 'partially_filled' -/** - * The order has been filled, and no further updates will occur for the order. - */ - | 'filled' -/** - * The order is done executing for the day, and will not receive further updates until - * the next trading day. - */ - | 'done_for_day' -/** - * The order has been canceled, and no further updates will occur for the order. This - * can be either due to a cancel request by the user, or the order has been canceled by - * the exchanges due to its time-in-force. - */ - | 'canceled' -/** - * The order has expired, and no further updates will occur for the order. - */ - | 'expired' -/** - * The order was replaced by another order, or was updated due to a market event such - * as corporate action. - */ - | 'replaced' -/** - * The order is waiting to be canceled. - */ - | 'pending_cancel' -/** - * The order is waiting to be replaced by another order. The order will reject cancel - * request while in this state. - */ - | 'pending_replace' -/** - * (Uncommon) The order has been received by Alpaca, but hasn't yet been routed to the - * execution venue. This could be seen often out side of trading session hours. - */ - | 'accepted' -/** - * (Uncommon) The order has been received by Alpaca, and routed to the exchanges, but - * has not yet been accepted for execution. This state only occurs on rare occasions. - */ - | 'pending_new' -/** - * (Uncommon) The order has been received by exchanges, and is evaluated for pricing. - * This state only occurs on rare occasions. - */ - | 'accepted_for_bidding' -/** - * (Uncommon) The order has been stopped, and a trade is guaranteed for the order, - * usually at a stated price or better, but has not yet occurred. This state only - * occurs on rare occasions. - */ - | 'stopped' -/** - * (Uncommon) The order has been rejected, and no further updates will occur for the - * order. This state occurs on rare occasions and may occur based on various conditions - * decided by the exchanges. - */ - | 'rejected' -/** - * (Uncommon) The order has been suspended, and is not eligible for trading. This state - * only occurs on rare occasions. - */ - | 'suspended' -/** - * (Uncommon) The order has been completed for the day (either filled or done for day), - * but remaining settlement calculations are still pending. This state only occurs on - * rare occasions. - */ - | 'calculated'; -export interface RawLatestTrade { - symbol: string; - trade: { - t: string; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; - }; -} -export interface LatestTrade { - raw(): RawLatestTrade; - symbol: string; - trade: { - t: Date; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; - }; -} -/** - * An Order in Alpaca - */ -export interface Order { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawOrder; - /** - * Order id - */ - id: string; - /** - * Client unique order id - */ - client_order_id: string; - /** - * When the order was created - */ - created_at: Date; - /** - * When the order was last updated - */ - updated_at: Date; - /** - * When the order was submitted - */ - submitted_at: Date; - /** - * When the order was filled - */ - filled_at: Date; - /** - * When the order expired - */ - expired_at: Date; - /** - * When the order was canceled - */ - canceled_at: Date; - /** - * When the order failed - */ - failed_at: Date; - /** - * When the order was last replaced - */ - replaced_at: Date; - /** - * The order ID that this order was replaced by - */ - replaced_by: string; - /** - * The order ID that this order replaces - */ - replaces: string; - /** - * Asset ID - */ - asset_id: string; - /** - * Asset symbol - */ - symbol: string; - /** - * Asset class - */ - asset_class: string; - /** - * Ordered quantity - */ - qty: number; - /** - * Filled quantity - */ - filled_qty: number; - /** - * Order type (market, limit, stop, stop_limit, trailing_stop) - */ - type: OrderType; - /** - * Buy or sell - */ - side: OrderSide; - /** - * Order Time in Force - */ - time_in_force: OrderTimeInForce; - /** - * Limit price - */ - limit_price: number; - /** - * Stop price - */ - stop_price: number; - /** - * Filled average price - */ - filled_avg_price: number; - /** - * The status of the order - */ - status: OrderStatus; - /** - * If true, eligible for execution outside regular trading hours. - */ - extended_hours: boolean; - /** - * When querying non-simple order_class orders in a nested style, an array of Order - * entities associated with this order. Otherwise, null. - */ - legs: Order[]; - /** - * The dollar value away from the high water mark for trailing stop orders. - */ - trail_price: number; - /** - * The percent value away from the high water mark for trailing stop orders. - */ - trail_percent: number; - /** - * The highest (lowest) market price seen since the trailing stop order was submitted. - */ - hwm: number; - /** - * Mostly used for non-simple orders such as bracket, one-triggers-other, or one-cancels-other. - */ - order_class: OrderClass; -} -/** - * Timeseries data for equity and profit loss information of the account - */ -export interface PortfolioHistory { - /** - * time of each data element, left-labeled (the beginning of time window) - */ - timestamp: number[]; - /** - * equity value of the account in dollar amount as of the end of each time window - */ - equity: number[]; - /** - * profit/loss in dollar from the base value - */ - profit_loss: number[]; - /** - * profit/loss in percentage from the base value - */ - profit_loss_pct: number[]; - /** - * basis in dollar of the profit loss calculation - */ - base_value: number; - /** - * time window size of each data element - */ - timeframe: '1Min' | '5Min' | '15Min' | '1H' | '1D'; -} -/** - * A position with unparsed fields, exactly as Alpaca provides it. - * We encourage you to use the Position interface, which has many of these fields parsed. - */ -export interface RawPosition { - asset_id: string; - symbol: string; - exchange: string; - asset_class: string; - avg_entry_price: string; - qty: string; - side: string; - market_value: string | null; - cost_basis: string; - unrealized_pl: string | null; - unrealized_plpc: string | null; - unrealized_intraday_pl: string | null; - unrealized_intraday_plpc: string | null; - current_price: string | null; - lastday_price: string | null; - change_today: string | null; -} -export declare type PositionSide = 'long' | 'short'; -/** - * A position in Alpaca - */ -export interface Position { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawPosition; - /** - * Asset ID - */ - asset_id: string; - /** - * Symbol name of the asset - */ - symbol: string; - /** - * Exchange name of the asset - */ - exchange: string; - /** - * Asset class name - */ - asset_class: string; - /** - * Average entry price of the position - */ - avg_entry_price: number; - /** - * The number of shares - */ - qty: number; - /** - * long or short - */ - side: PositionSide; - /** - * Total dollar amount of the position - */ - market_value: number | null; - /** - * Total cost basis in dollar - */ - cost_basis: number; - /** - * Unrealized profit/loss in dollars - */ - unrealized_pl: number | null; - /** - * Unrealized profit/loss percent (by a factor of 1) - */ - unrealized_plpc: number | null; - /** - * Unrealized profit/loss in dollars for the day - */ - unrealized_intraday_pl: number | null; - /** - * Unrealized profit/loss percent (by a factor of 1) - */ - unrealized_intraday_plpc: number | null; - /** - * Current asset price per share - */ - current_price: number | null; - /** - * Last day's asset price per share based on the closing value of the last trading day - */ - lastday_price: number | null; - /** - * Percent change from last day price (by a factor of 1) - */ - change_today: number | null; -} -export declare type ActivityType = -/** - * Order fills (both partial and full fills) - */ -'FILL' -/** - * Cash transactions (both CSD and CSR) - */ - | 'TRANS' -/** - * Miscellaneous or rarely used activity types (All types except those in TRANS, DIV, - * or FILL) - */ - | 'MISC' -/** - * ACATS IN/OUT (Cash) - */ - | 'ACATC' -/** - * ACATS IN/OUT (Securities) - */ - | 'ACATS' -/** - * Cash disbursement(+) - */ - | 'CSD' -/** - * Cash receipt(-) - */ - | 'CSR' -/** - * Dividends - */ - | 'DIV' -/** - * Dividend (capital gain long term) - */ - | 'DIVCGL' -/** - * Dividend (capital gain short term) - */ - | 'DIVCGS' -/** - * Dividend fee - */ - | 'DIVFEE' -/** - * Dividend adjusted (Foreign Tax Withheld) - */ - | 'DIVFT' -/** - * Dividend adjusted (NRA Withheld) - */ - | 'DIVNRA' -/** - * Dividend return of capital - */ - | 'DIVROC' -/** - * Dividend adjusted (Tefra Withheld) - */ - | 'DIVTW' -/** - * Dividend (tax exempt) - */ - | 'DIVTXEX' -/** - * Interest (credit/margin) - */ - | 'INT' -/** - * Interest adjusted (NRA Withheld) - */ - | 'INTNRA' -/** - * Interest adjusted (Tefra Withheld) - */ - | 'INTTW' -/** - * Journal entry - */ - | 'JNL' -/** - * Journal entry (cash) - */ - | 'JNLC' -/** - * Journal entry (stock) - */ - | 'JNLS' -/** - * Merger/Acquisition - */ - | 'MA' -/** - * Name change - */ - | 'NC' -/** - * Option assignment - */ - | 'OPASN' -/** - * Option expiration - */ - | 'OPEXP' -/** - * Option exercise - */ - | 'OPXRC' -/** - * Pass Thru Charge - */ - | 'PTC' -/** - * Pass Thru Rebate - */ - | 'PTR' -/** - * Reorg CA - */ - | 'REORG' -/** - * Symbol change - */ - | 'SC' -/** - * Stock spinoff - */ - | 'SSO' -/** - * Stock split - */ - | 'SSP'; -export interface RawTradeActivity { - activity_type: Extract; - cum_qty: string; - id: string; - leaves_qty: string; - price: string; - qty: string; - side: string; - symbol: string; - transaction_time: string; - order_id: string; - type: string; -} -export interface RawNonTradeActivity { - activity_type: Exclude; - id: string; - date: string; - net_amount: string; - symbol: string; - qty: string; - per_share_amount: string; -} -export declare type TradeActivityType = 'fill' | 'partial_fill'; -export declare type TradeActivitySide = 'buy' | 'sell'; -export interface TradeActivity { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawTradeActivity; - /** - * FILL - */ - activity_type: Extract; - /** - * The cumulative quantity of shares involved in the execution. - */ - cum_qty: number; - /** - * An id for the activity. Always in "::" format. Can be sent as page_token in requests - * to facilitate the paging of results. - */ - id: string; - /** - * For partially_filled orders, the quantity of shares that are left to be filled. - */ - leaves_qty: number; - /** - * The per-share price that the trade was executed at. - */ - price: number; - /** - * The number of shares involved in the trade execution. - */ - qty: number; - /** - * buy or sell - */ - side: TradeActivitySide; - /** - * The symbol of the security being traded. - */ - symbol: string; - /** - * The time at which the execution occurred. - */ - transaction_time: string; - /** - * The id for the order that filled. - */ - order_id: string; - /** - * fill or partial_fill - */ - type: TradeActivityType; -} -export interface NonTradeActivity { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawNonTradeActivity; - /** - * Activity type - */ - activity_type: Exclude; - /** - * An ID for the activity, always in "::" format. Can be sent as page_token in requests - * to facilitate the paging of results. - */ - id: string; - /** - * The date on which the activity occurred or on which the transaction associated with - * the activity settled. - */ - date: string; - /** - * The net amount of money (positive or negative) associated with the activity. - */ - net_amount: number; - /** - * The symbol of the security involved with the activity. Not present for all activity - * types. - */ - symbol: string; - /** - * For dividend activities, the number of shares that contributed to the payment. Not - * present for other activity types. - */ - qty: number; - /** - * For dividend activities, the average amount paid per share. Not present for other - * activity types. - */ - per_share_amount: number; -} -export declare type RawActivity = RawTradeActivity | RawNonTradeActivity; -export declare type Activity = TradeActivity | NonTradeActivity; -/** - * The following type mirrors OrderStatus almost exactly, - * but differs slightly in its wording for each event. - * See https://alpaca.markets/docs/api-references/broker-api/events/#trade-events - * for an updated list of these events and their detailed descriptions. - */ -export declare type TradeUpdateEvent = 'new' | 'fill' | 'partial_fill' | 'canceled' | 'expired' | 'done_for_day' | 'replaced' | 'rejected' | 'pending_new' | 'stopped' | 'pending_cancel' | 'pending_replace' | 'calculated' | 'suspended' | 'order_replace_rejected' | 'order_cancel_rejected'; -export interface RawTradeUpdate { - event: TradeUpdateEvent; - execution_id: string; - order: RawOrder; - event_id?: string; - at?: string; - timestamp?: string; - position_qty?: string; - price?: string; - qty?: string; -} -export interface TradeUpdate { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw: () => RawTradeUpdate; - /** - * Trade update event type - */ - event: TradeUpdateEvent; - /** - * Corresponding execution of an order. - * If an order gets filled over two executions (a partial_fill for example), - * you will receive two events with different IDs. - */ - execution_id: string; - /** - * Monotonically increasing 64-bit integer. - * Haven't yet observed this property in practice, but it is - * on Alpaca's docs here: https://alpaca.markets/docs/api-references/broker-api/events/#trade-events, - * including for completeness. - */ - event_id?: number; - /** - * The associated order that a trade_update event comes with - */ - order: Order; - /** - * The timestamp of the trade update event. - * Alpaca docs at https://alpaca.markets/docs/api-references/broker-api/events/#trade-events - * are confusing. They say the 'at' property will contain the timestamp of - * the event, but currently as of 3/10/22 this is in the 'timestamp' property - * instead. Including both for completeness. - */ - at?: Date; - /** - * The timestamp of the trade update event. - * Alpaca docs at https://alpaca.markets/docs/api-references/broker-api/events/#trade-events - * are confusing. They say the 'at' property will contain the timestamp of - * the event, but currently as of 3/10/22 this is in the 'timestamp' property - * instead. Including both for completeness. - */ - timestamp?: Date; - /** - * The size of your total position, after a fill or partial fill event, in shares. - */ - position_qty?: number; - /** - * The average price per share at which the order was filled or partially filled - */ - price?: number; - /** - * The amount of shares that were filled in a trade update of type fill or partial_fill. - * Equivalent to the order.filled_qty property, which is preferred. - */ - qty?: number; -} -export interface Watchlist { - /** - * account ID - */ - account_id: string; - /** - * the content of this watchlist, in the order as registered by the client - */ - assets: Asset[]; - /** - * When the watchlist was created - */ - created_at: string; - /** - * watchlist id - */ - id: string; - /** - * user-defined watchlist name (up to 64 characters) - */ - name: string; - /** - * When the watchlist was last updated - */ - updated_at: string; -} -export interface News { - id: number; - headline: string; - author: string; - created_at: Date; - updated_at: Date; - summary: string; - url: string; - images: any[]; - symbols: string[]; - source: string; -} -export interface NewsPage { - news: News[]; - next_page_token: string; -} -export declare type Channel = 'trades' | 'quotes' | 'bars' | 'trade_updates'; -export interface Message { - T: 'success' | 'error' | 'subscription'; - code?: number; - msg: string; - [key: string]: any; -} diff --git a/dist/cjs/index.cjs b/dist/cjs/index.cjs deleted file mode 100644 index d175cfd..0000000 --- a/dist/cjs/index.cjs +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AlpacaStream = exports.AlpacaClient = void 0; -var client_js_1 = require("./client.cjs"); -Object.defineProperty(exports, "AlpacaClient", { enumerable: true, get: function () { return client_js_1.AlpacaClient; } }); -var stream_js_1 = require("./stream.cjs"); -Object.defineProperty(exports, "AlpacaStream", { enumerable: true, get: function () { return stream_js_1.AlpacaStream; } }); -const client_js_2 = require("./client.cjs"); -const stream_js_2 = require("./stream.cjs"); -exports.default = { - AlpacaClient: client_js_2.AlpacaClient, - AlpacaStream: stream_js_2.AlpacaStream, -}; diff --git a/dist/cjs/index.d.cts b/dist/cjs/index.d.cts deleted file mode 100644 index a4fa41b..0000000 --- a/dist/cjs/index.d.cts +++ /dev/null @@ -1,11 +0,0 @@ -export { AlpacaClient } from './client.cjs'; -export { AlpacaStream } from './stream.cjs'; -import { AlpacaClient } from './client.cjs'; -import { AlpacaStream } from './stream.cjs'; -declare const _default: { - AlpacaClient: typeof AlpacaClient; - AlpacaStream: typeof AlpacaStream; -}; -export default _default; -export { Account, Order, OrderCancelation, Position, Asset, Watchlist, Calendar, Clock, DefaultCredentials, OAuthCredentials, AccountConfigurations, NonTradeActivity, TradeActivity, Activity, PortfolioHistory, Bar, Bar_v1, Quote, LastQuote_v1, LastTrade_v1, Trade, PageOfBars, PageOfQuotes, PageOfTrades, Snapshot, DataSource, Channel, Message, } from './entities'; -export { GetOrder, GetOrders, PlaceOrder, ReplaceOrder, CancelOrder, GetPosition, ClosePosition, GetAsset, GetAssets, GetWatchList, CreateWatchList, UpdateWatchList, AddToWatchList, RemoveFromWatchList, DeleteWatchList, GetCalendar, UpdateAccountConfigurations, GetAccountActivities, GetPortfolioHistory, GetBars, GetBars_v1, GetTrades, GetQuotes, GetSnapshot, GetSnapshots, GetLastTrade_v1, GetLastQuote_v1, BarsV1Timeframe, BarsTimeframe, } from './params'; diff --git a/dist/cjs/params.cjs b/dist/cjs/params.cjs deleted file mode 100644 index c8ad2e5..0000000 --- a/dist/cjs/params.cjs +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/dist/cjs/params.d.cts b/dist/cjs/params.d.cts deleted file mode 100644 index b3f1f6c..0000000 --- a/dist/cjs/params.d.cts +++ /dev/null @@ -1,177 +0,0 @@ -import { OrderSide, OrderType, OrderTimeInForce, DataSource } from './entities.cjs'; -export interface AddToWatchList { - uuid: string; - symbol: string; -} -export interface CancelOrder { - order_id: string; -} -export interface ClosePosition { - symbol: string; - qty?: number; - percentage?: number; -} -export interface ClosePositions { - cancel_orders?: boolean; -} -export interface CreateWatchList { - name: string; - symbols?: string[]; -} -export interface DeleteWatchList { - uuid: string; -} -export interface GetAccountActivities { - activity_type?: string; - activity_types?: string | string[]; - date?: string; - until?: string; - after?: string; - direction?: 'asc' | 'desc'; - page_size?: number; - page_token?: string; -} -export interface GetAsset { - asset_id_or_symbol: string; -} -export interface GetAssets { - status?: 'active' | 'inactive'; - asset_class?: string; -} -export interface GetCalendar { - start?: Date; - end?: Date; -} -export interface GetTrades { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; -} -export interface GetQuotes { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; -} -export interface GetSnapshot { - symbol: string; -} -export interface GetSnapshots { - symbols: string[]; -} -export interface GetBars { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; - timeframe: BarsTimeframe; - adjustment?: 'all' | 'dividend' | 'raw' | 'split'; -} -export interface GetBars_v1 { - timeframe: BarsV1Timeframe; - symbols: string[]; - limit?: number; - start?: Date; - end?: Date; - after?: Date; - until?: Date; -} -export interface GetLastQuote_v1 { - symbol: string; -} -export interface GetLastTrade_v1 { - symbol: string; -} -export interface GetOrder { - order_id?: string; - client_order_id?: string; - nested?: boolean; -} -export interface GetOrders { - status?: 'open' | 'closed' | 'all'; - limit?: number; - after?: Date; - until?: Date; - direction?: 'asc' | 'desc'; - nested?: boolean; - symbols?: string[]; -} -export interface GetPortfolioHistory { - period?: string; - timeframe?: string; - date_end?: Date; - extended_hours?: boolean; -} -export interface GetPosition { - symbol: string; -} -export interface GetWatchList { - uuid: string; -} -export interface PlaceOrder { - symbol: string; - side: OrderSide; - type: OrderType; - time_in_force: OrderTimeInForce; - qty?: number; - notional?: number; - limit_price?: number; - stop_price?: number; - extended_hours?: boolean; - client_order_id?: string; - trail_price?: number; - trail_percent?: number; - order_class?: 'simple' | 'bracket' | 'oco' | 'oto'; - take_profit?: { - limit_price: number; - }; - stop_loss?: { - stop_price: number; - limit_price?: number; - }; -} -export interface RemoveFromWatchList { - uuid: string; - symbol: string; -} -export interface ReplaceOrder { - order_id: string; - qty?: number; - time_in_force?: OrderTimeInForce; - limit_price?: number; - stop_price?: number; - client_order_id?: string; -} -export declare type BarsV1Timeframe = '1Min' | '5Min' | '15Min' | '1Day'; -/** Also supports arbitrary minute, hour, and day values. E.g., '37Min', '6Hour', '3Day' */ -export declare type BarsTimeframe = BarsV1Timeframe | '30Min' | '1Hour' | '2Hour' | '4Hour'; -export interface UpdateAccountConfigurations { - dtbp_check?: string; - no_shorting?: boolean; - suspend_trade?: boolean; - trade_confirm_email?: string; -} -export interface GetLatestTrade { - symbol: string; - feed?: DataSource; - limit?: number; -} -export interface UpdateWatchList { - uuid: string; - name?: string; - symbols?: string[]; -} -export interface GetNews { - symbols?: string[] | string; - start?: Date; - end?: Date; - limit?: number; - sort?: 'ASC' | 'DESC'; - include_content?: boolean; - exclude_contentless?: boolean; - page_token?: string; -} diff --git a/dist/cjs/parse.cjs b/dist/cjs/parse.cjs deleted file mode 100644 index ce35f44..0000000 --- a/dist/cjs/parse.cjs +++ /dev/null @@ -1,234 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function account(rawAccount) { - if (!rawAccount) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawAccount), { raw: () => rawAccount, buying_power: number(rawAccount.buying_power), regt_buying_power: number(rawAccount.regt_buying_power), daytrading_buying_power: number(rawAccount.daytrading_buying_power), cash: number(rawAccount.cash), created_at: new Date(rawAccount.created_at), portfolio_value: number(rawAccount.portfolio_value), multiplier: number(rawAccount.multiplier), equity: number(rawAccount.equity), last_equity: number(rawAccount.last_equity), long_market_value: number(rawAccount.long_market_value), short_market_value: number(rawAccount.short_market_value), initial_margin: number(rawAccount.initial_margin), maintenance_margin: number(rawAccount.maintenance_margin), last_maintenance_margin: number(rawAccount.last_maintenance_margin), sma: number(rawAccount.sma), status: rawAccount.status }); - } - catch (err) { - throw new Error(`Account parsing failed. ${err.message}`); - } -} -function clock(rawClock) { - if (!rawClock) { - return undefined; - } - try { - return { - raw: () => rawClock, - timestamp: new Date(rawClock.timestamp), - is_open: rawClock.is_open, - next_open: new Date(rawClock.next_open), - next_close: new Date(rawClock.next_close), - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function latestTrade(raw) { - if (!raw) { - return undefined; - } - try { - return Object.assign(Object.assign({}, raw), { raw: () => raw, trade: Object.assign(Object.assign({}, raw.trade), { t: new Date(raw.trade.t) }) }); - } - catch (err) { - throw new Error(`Latest trade parsing failed. ${err.message}`); - } -} -function order(rawOrder) { - if (!rawOrder) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawOrder), { raw: () => rawOrder, created_at: new Date(rawOrder.created_at), updated_at: new Date(rawOrder.updated_at), submitted_at: new Date(rawOrder.submitted_at), filled_at: new Date(rawOrder.filled_at), expired_at: new Date(rawOrder.expired_at), canceled_at: new Date(rawOrder.canceled_at), failed_at: new Date(rawOrder.failed_at), replaced_at: new Date(rawOrder.replaced_at), qty: number(rawOrder.qty), filled_qty: number(rawOrder.filled_qty), type: rawOrder.type, side: rawOrder.side, time_in_force: rawOrder.time_in_force, limit_price: number(rawOrder.limit_price), stop_price: number(rawOrder.stop_price), filled_avg_price: number(rawOrder.filled_avg_price), status: rawOrder.status, legs: orders(rawOrder.legs), trail_price: number(rawOrder.trail_price), trail_percent: number(rawOrder.trail_percent), hwm: number(rawOrder.hwm), order_class: rawOrder.order_class }); - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function orders(rawOrders) { - return rawOrders ? rawOrders.map((value) => order(value)) : undefined; -} -function canceled_order(input) { - if (!input) { - return undefined; - } - let order = input.body; - // we don't want this field anymore - delete input.body; - try { - return Object.assign(Object.assign({}, input), { order: Object.assign(Object.assign({}, order), { raw: () => order, created_at: new Date(order.created_at), updated_at: new Date(order.updated_at), submitted_at: new Date(order.submitted_at), filled_at: new Date(order.filled_at), expired_at: new Date(order.expired_at), canceled_at: new Date(order.canceled_at), failed_at: new Date(order.failed_at), replaced_at: new Date(order.replaced_at), qty: number(order.qty), filled_qty: number(order.filled_qty), type: order.type, side: order.side, time_in_force: order.time_in_force, limit_price: number(order.limit_price), stop_price: number(order.stop_price), filled_avg_price: number(order.filled_avg_price), status: order.status, legs: orders(order.legs), trail_price: number(order.trail_price), trail_percent: number(order.trail_percent), hwm: number(order.hwm), order_class: order.order_class }) }); - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function canceled_orders(rawOrderCancelations) { - return rawOrderCancelations - ? rawOrderCancelations.map((value) => canceled_order(value)) - : undefined; -} -function position(rawPosition) { - if (!rawPosition) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawPosition), { raw: () => rawPosition, avg_entry_price: number(rawPosition.avg_entry_price), qty: number(rawPosition.qty), side: rawPosition.side, market_value: number(rawPosition.market_value), cost_basis: number(rawPosition.cost_basis), unrealized_pl: number(rawPosition.unrealized_pl), unrealized_plpc: number(rawPosition.unrealized_plpc), unrealized_intraday_pl: number(rawPosition.unrealized_intraday_pl), unrealized_intraday_plpc: number(rawPosition.unrealized_intraday_plpc), current_price: number(rawPosition.current_price), lastday_price: number(rawPosition.lastday_price), change_today: number(rawPosition.change_today) }); - } - catch (err) { - throw new Error(`Position parsing failed. ${err.message}`); - } -} -function positions(rawPositions) { - return rawPositions ? rawPositions.map((pos) => position(pos)) : undefined; -} -function tradeActivity(rawTradeActivity) { - if (!rawTradeActivity) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawTradeActivity), { raw: () => rawTradeActivity, cum_qty: number(rawTradeActivity.cum_qty), leaves_qty: number(rawTradeActivity.leaves_qty), price: number(rawTradeActivity.price), qty: number(rawTradeActivity.qty), side: rawTradeActivity.side, type: rawTradeActivity.type }); - } - catch (err) { - throw new Error(`TradeActivity parsing failed. ${err.message}`); - } -} -function nonTradeActivity(rawNonTradeActivity) { - if (!rawNonTradeActivity) { - return undefined; - } - try { - return Object.assign(Object.assign({}, rawNonTradeActivity), { raw: () => rawNonTradeActivity, net_amount: number(rawNonTradeActivity.net_amount), qty: number(rawNonTradeActivity.qty), per_share_amount: number(rawNonTradeActivity.per_share_amount) }); - } - catch (err) { - throw new Error(`NonTradeActivity parsing failed. ${err.message}`); - } -} -function activities(rawActivities) { - if (!rawActivities) { - return undefined; - } - try { - return rawActivities.map((rawActivity) => rawActivity.activity_type === 'FILL' - ? tradeActivity(rawActivity) - : nonTradeActivity(rawActivity)); - } - catch (err) { - throw new Error(`Activity parsing failed. ${err.message}`); - } -} -function pageOfTrades(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - trades: (page.trades == null ? [] : page.trades).map((trade) => (Object.assign(Object.assign({ raw: () => trade }, trade), { t: new Date(trade.t) }))), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfQuotes(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - quotes: (page.quotes == null ? [] : page.quotes).map((quote) => (Object.assign(Object.assign({ raw: () => quote }, quote), { t: new Date(quote.t) }))), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfBars(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - bars: (page.bars == null ? [] : page.bars).map((bar) => (Object.assign(Object.assign({ raw: () => bar }, bar), { t: new Date(bar.t) }))), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function snapshot(raw) { - if (!raw) { - return undefined; - } - try { - return Object.assign(Object.assign({}, raw), { raw: () => raw, latestTrade: raw.latestTrade - ? Object.assign(Object.assign({}, raw.latestTrade), { t: new Date(raw.latestTrade.t) }) : null, latestQuote: raw.latestQuote - ? Object.assign(Object.assign({}, raw.latestQuote), { t: new Date(raw.latestQuote.t) }) : null, minuteBar: raw.minuteBar - ? Object.assign(Object.assign({}, raw.minuteBar), { t: new Date(raw.minuteBar.t) }) : null, dailyBar: raw.dailyBar - ? Object.assign(Object.assign({}, raw.dailyBar), { t: new Date(raw.dailyBar.t) }) : null, prevDailyBar: raw.prevDailyBar - ? Object.assign(Object.assign({}, raw.prevDailyBar), { t: new Date(raw.prevDailyBar.t) }) : null }); - } - catch (err) { - throw new Error(`Snapshot parsing failed "${err.message}"`); - } -} -function snapshots(raw) { - let parsed = {}; - for (let [key, value] of Object.entries(raw)) { - parsed[key] = snapshot(value); - } - return parsed; -} -function number(numStr) { - if (typeof numStr === 'undefined' || numStr == null) { - return numStr; - } - const value = parseFloat(numStr); - if (Number.isNaN(value)) { - return null; - } - return value; -} -function trade_update(rawTradeUpdate) { - if (!rawTradeUpdate) - return undefined; - return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ raw: () => rawTradeUpdate, event: rawTradeUpdate.event, execution_id: rawTradeUpdate.execution_id, order: order(rawTradeUpdate.order) }, (rawTradeUpdate.event_id && { - event_id: number(rawTradeUpdate.event_id), - })), (rawTradeUpdate.at && { at: new Date(rawTradeUpdate.at) })), (rawTradeUpdate.timestamp && { - timestamp: new Date(rawTradeUpdate.timestamp), - })), (rawTradeUpdate.position_qty && { - position_qty: number(rawTradeUpdate.position_qty), - })), (rawTradeUpdate.price && { price: number(rawTradeUpdate.price) })), (rawTradeUpdate.qty && { qty: number(rawTradeUpdate.qty) })); -} -exports.default = { - account, - activities, - clock, - nonTradeActivity, - order, - orders, - canceled_orders, - position, - positions, - tradeActivity, - pageOfTrades, - pageOfQuotes, - pageOfBars, - snapshot, - snapshots, - trade_update, - latestTrade, -}; diff --git a/dist/cjs/parse.d.cts b/dist/cjs/parse.d.cts deleted file mode 100644 index da6de6d..0000000 --- a/dist/cjs/parse.d.cts +++ /dev/null @@ -1,42 +0,0 @@ -import { Account, RawAccount, RawOrder, Order, RawPosition, Position, RawTradeActivity, TradeActivity, RawNonTradeActivity, NonTradeActivity, RawActivity, Activity, RawClock, Clock, RawOrderCancelation, OrderCancelation, PageOfTrades, RawPageOfTrades, PageOfQuotes, RawPageOfQuotes, RawPageOfBars, PageOfBars, Snapshot, RawSnapshot, TradeUpdate, RawTradeUpdate, RawLatestTrade, LatestTrade } from './entities.cjs'; -declare function account(rawAccount: RawAccount): Account; -declare function clock(rawClock: RawClock): Clock; -declare function latestTrade(raw: RawLatestTrade): LatestTrade; -declare function order(rawOrder: RawOrder): Order; -declare function orders(rawOrders: RawOrder[]): Order[]; -declare function canceled_orders(rawOrderCancelations: RawOrderCancelation[]): OrderCancelation[]; -declare function position(rawPosition: RawPosition): Position; -declare function positions(rawPositions: RawPosition[]): Position[]; -declare function tradeActivity(rawTradeActivity: RawTradeActivity): TradeActivity; -declare function nonTradeActivity(rawNonTradeActivity: RawNonTradeActivity): NonTradeActivity; -declare function activities(rawActivities: Array): Array; -declare function pageOfTrades(page: RawPageOfTrades): PageOfTrades; -declare function pageOfQuotes(page: RawPageOfQuotes): PageOfQuotes; -declare function pageOfBars(page: RawPageOfBars): PageOfBars; -declare function snapshot(raw: RawSnapshot): Snapshot; -declare function snapshots(raw: { - [key: string]: RawSnapshot; -}): { - [key: string]: Snapshot; -}; -declare function trade_update(rawTradeUpdate: RawTradeUpdate): TradeUpdate; -declare const _default: { - account: typeof account; - activities: typeof activities; - clock: typeof clock; - nonTradeActivity: typeof nonTradeActivity; - order: typeof order; - orders: typeof orders; - canceled_orders: typeof canceled_orders; - position: typeof position; - positions: typeof positions; - tradeActivity: typeof tradeActivity; - pageOfTrades: typeof pageOfTrades; - pageOfQuotes: typeof pageOfQuotes; - pageOfBars: typeof pageOfBars; - snapshot: typeof snapshot; - snapshots: typeof snapshots; - trade_update: typeof trade_update; - latestTrade: typeof latestTrade; -}; -export default _default; diff --git a/dist/cjs/stream.cjs b/dist/cjs/stream.cjs deleted file mode 100644 index c6efa8d..0000000 --- a/dist/cjs/stream.cjs +++ /dev/null @@ -1,185 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AlpacaStream = void 0; -const is_blob_1 = __importDefault(require("is-blob")); -const parse_js_1 = __importDefault(require("./parse.cjs")); -const isomorphic_ws_1 = __importDefault(require("isomorphic-ws")); -const endpoints_js_1 = __importDefault(require("./endpoints.cjs")); -const eventemitter3_1 = __importDefault(require("eventemitter3")); -class AlpacaStream extends eventemitter3_1.default { - constructor(params) { - // construct EventEmitter - super(); - this.params = params; - this.baseURLs = endpoints_js_1.default; - // override endpoints if custom provided - if ('endpoi.cts' in params) { - this.baseURLs = Object.assign(endpoints_js_1.default, params.endpoints); - } - if ( - // if not specified - !('paper' in params.credentials) && - // and live key isn't already provided - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - // assign the host we will connect to - switch (params.type) { - case 'account': - this.host = params.credentials.paper - ? this.baseURLs.websocket.account.replace('api.', 'paper-api.') - : this.baseURLs.websocket.account; - break; - case 'market_data': - this.host = this.baseURLs.websocket.market_data(this.params.source); - break; - default: - this.host = 'unknown'; - } - this.connection = new isomorphic_ws_1.default(this.host); - this.connection.onopen = () => { - let message = {}; - switch (this.params.type) { - case 'account': - message = { - action: 'authenticate', - data: { - key_id: params.credentials.key, - secret_key: params.credentials.secret, - }, - }; - break; - case 'market_data': - // {"action":"auth","key":"PK*****","secret":"*************"} - message = Object.assign({ action: 'auth' }, params.credentials); - break; - } - this.connection.send(JSON.stringify(message)); - // pass through - this.emit('open', this); - }; - // pass through - this.connection.onclose = () => this.emit('close', this); - this.connection.onmessage = (event) => __awaiter(this, void 0, void 0, function* () { - let data = event.data; - if ((0, is_blob_1.default)(data)) { - data = yield event.data.text(); - } - else if (data instanceof ArrayBuffer) { - data = String.fromCharCode(...new Uint8Array(event.data)); - } - let parsed = JSON.parse(data), messages = this.params.type == 'account' ? [parsed] : parsed; - messages.forEach((message) => { - // pass the message - this.emit('message', message); - // pass authenticated event - if ('T' in message && message.msg == 'authenticated') { - this.authenticated = true; - this.emit('authenticated', this); - } - else if ('stream' in message && message.stream == 'authorization') { - if (message.data.status == 'authorized') { - this.authenticated = true; - this.emit('authenticated', this); - } - } - // pass trade_updates event - if ('stream' in message && message.stream == 'trade_updates') { - this.emit('trade_updates', parse_js_1.default.trade_update(message.data)); - } - // pass trade, quote, bar event - const x = { - success: 'success', - subscription: 'subscription', - error: 'error', - t: 'trade', - q: 'quote', - b: 'bar', - }; - if ('T' in message) { - this.emit(x[message.T.split('.')[0]], message); - } - }); - }); - // pass the error - this.connection.onerror = (err) => { - this.emit('error', err); - }; - } - /** - * Retrieve the underlying WebSocket connection AlpacaStream uses. - * Now callers can read and modify properties of the web socket - * i.e., close the websocket with AlpacaStream.getConnection().close(). - * @returns a WebSocket object - */ - getConnection() { - return this.connection; - } - /** - * Subscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - subscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - // {"action":"listen","data":{"streams":["trade_updates"]}} - this.send(JSON.stringify({ action: 'listen', data: { streams: [channel] } })); - break; - case 'market_data': - // {"action":"subscribe","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["AAPL","VOO"]} - let message = { action: 'subscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - /** - * Unsubscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - unsubscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - // {"action":"unlisten","data":{"streams":["trade_updates"]}} - this.send(JSON.stringify({ action: 'unlisten', data: { streams: [channel] } })); - break; - case 'market_data': - // {"action":"unsubscribe","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["AAPL","VOO"]} - let message = { action: 'unsubscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - send(message) { - // don't bother if we aren't authenticated - if (!this.authenticated) { - throw new Error('not authenticated'); - } - // if the message is in object form, stringify it for the user - if (typeof message == 'object') { - message = JSON.stringify(message); - } - // send it off - this.connection.send(message); - // chainable return - return this; - } -} -exports.AlpacaStream = AlpacaStream; diff --git a/dist/cjs/stream.d.cts b/dist/cjs/stream.d.cts deleted file mode 100644 index 51829e5..0000000 --- a/dist/cjs/stream.d.cts +++ /dev/null @@ -1,60 +0,0 @@ -/// -import WebSocket from 'isomorphic-ws'; -import EventEmitter from 'eventemitter3'; -import { Bar, Channel, DataSource, DefaultCredentials, Quote, Trade, TradeUpdate, Message, Endpoints } from './entities.cjs'; -export declare interface Events { - open: (stream: AlpacaStream) => void; - close: (stream: AlpacaStream) => void; - authenticated: (stream: AlpacaStream) => void; - success: (message: Message) => void; - error: (message: WebSocket.ErrorEvent) => void; - subscription: (message: Message) => void; - message: (message: Object) => void; - trade_updates: (update: TradeUpdate) => void; - trade: (trade: Trade) => void; - quote: (quote: Quote) => void; - bar: (bar: Bar) => void; -} -export declare interface AlpacaStream { - on(event: U, listener: Events[U]): this; - once(event: U, listener: Events[U]): this; - emit(event: U, ...args: Parameters): boolean; -} -export declare class AlpacaStream extends EventEmitter { - protected params: { - credentials: DefaultCredentials; - type: 'account' | 'market_data'; - source?: DataSource; - endpoints?: Endpoints | Map; - }; - private host; - private connection; - private authenticated; - private baseURLs; - constructor(params: { - credentials: DefaultCredentials; - type: 'account' | 'market_data'; - source?: DataSource; - endpoints?: Endpoints | Map; - }); - /** - * Retrieve the underlying WebSocket connection AlpacaStream uses. - * Now callers can read and modify properties of the web socket - * i.e., close the websocket with AlpacaStream.getConnection().close(). - * @returns a WebSocket object - */ - getConnection(): WebSocket; - /** - * Subscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - subscribe(channel: Channel, symbols?: string[]): this; - /** - * Unsubscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - unsubscribe(channel: Channel, symbols?: string[]): this; - private send; -} diff --git a/dist/mjs/client.d.ts b/dist/mjs/client.d.ts deleted file mode 100644 index e26085c..0000000 --- a/dist/mjs/client.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Account, Order, Position, Asset, Watchlist, Calendar, Clock, AccountConfigurations, PortfolioHistory, Activity, DefaultCredentials, OAuthCredentials, OrderCancelation, PageOfTrades, PageOfQuotes, PageOfBars, Bar_v1, LastQuote_v1, LastTrade_v1, Snapshot, NewsPage, LatestTrade, Endpoints } from './entities.js'; -import { GetOrder, GetOrders, PlaceOrder, ReplaceOrder, CancelOrder, GetPosition, ClosePosition, GetAsset, GetAssets, GetWatchList, CreateWatchList, UpdateWatchList, AddToWatchList, RemoveFromWatchList, DeleteWatchList, GetCalendar, UpdateAccountConfigurations, GetAccountActivities, GetPortfolioHistory, GetBars, GetBars_v1, GetTrades, GetQuotes, GetLastTrade_v1, GetLastQuote_v1, GetSnapshot, GetSnapshots, ClosePositions, GetNews, GetLatestTrade } from './params.js'; -export declare class AlpacaClient { - params: { - rate_limit?: boolean; - endpoints?: Endpoints | Map; - credentials?: DefaultCredentials | OAuthCredentials; - }; - private baseURLs; - private limiter; - constructor(params: { - rate_limit?: boolean; - endpoints?: Endpoints | Map; - credentials?: DefaultCredentials | OAuthCredentials; - }); - isAuthenticated(): Promise; - getAccount(): Promise; - getOrder(params: GetOrder): Promise; - getOrders(params?: GetOrders): Promise; - placeOrder(params: PlaceOrder): Promise; - replaceOrder(params: ReplaceOrder): Promise; - cancelOrder(params: CancelOrder): Promise; - cancelOrders(): Promise; - getPosition(params: GetPosition): Promise; - getPositions(): Promise; - closePosition(params: ClosePosition): Promise; - closePositions(params: ClosePositions): Promise; - getAsset(params: GetAsset): Promise; - getAssets(params?: GetAssets): Promise; - getWatchlist(params: GetWatchList): Promise; - getWatchlists(): Promise; - createWatchlist(params: CreateWatchList): Promise; - updateWatchlist(params: UpdateWatchList): Promise; - addToWatchlist(params: AddToWatchList): Promise; - removeFromWatchlist(params: RemoveFromWatchList): Promise; - deleteWatchlist(params: DeleteWatchList): Promise; - getCalendar(params?: GetCalendar): Promise; - getNews(params?: GetNews): Promise; - getClock(): Promise; - getAccountConfigurations(): Promise; - updateAccountConfigurations(params: UpdateAccountConfigurations): Promise; - getAccountActivities(params: GetAccountActivities): Promise; - getPortfolioHistory(params?: GetPortfolioHistory): Promise; - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - getBars_v1(params: GetBars_v1): Promise<{ - [symbol: string]: Bar_v1[]; - }>; - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - getLastTrade_v1(params: GetLastTrade_v1): Promise; - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - getLastQuote_v1(params: GetLastQuote_v1): Promise; - getTrades(params: GetTrades): Promise; - getQuotes(params: GetQuotes): Promise; - getBars(params: GetBars): Promise; - getLatestTrade({ symbol, feed, limit, }: GetLatestTrade): Promise; - getSnapshot(params: GetSnapshot): Promise; - getSnapshots(params: GetSnapshots): Promise<{ - [key: string]: Snapshot; - }>; - private request; -} diff --git a/dist/mjs/client.js b/dist/mjs/client.js deleted file mode 100644 index 93cbbee..0000000 --- a/dist/mjs/client.js +++ /dev/null @@ -1,351 +0,0 @@ -import qs from 'qs'; -import parse from './parse.js'; -import isofetch from 'isomorphic-unfetch'; -import endpoints from './endpoints.js'; -import Bottleneck from 'bottleneck'; -const unifetch = typeof fetch !== 'undefined' ? fetch : isofetch; -export class AlpacaClient { - params; - baseURLs = endpoints; - limiter = new Bottleneck({ - reservoir: 200, - reservoirRefreshAmount: 200, - reservoirRefreshInterval: 60 * 1000, - // also use maxConcurrent and/or minTime for safety - maxConcurrent: 1, - minTime: 200, - }); - constructor(params) { - this.params = params; - // override endpoints if custom provided - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if ( - // if not specified - !('paper' in params.credentials) && - // and live key isn't already provided - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - if ('access_token' in params.credentials && - ('key' in params.credentials || 'secret' in params.credentials)) { - throw new Error("can't create client with both default and oauth credentials"); - } - } - async isAuthenticated() { - try { - await this.getAccount(); - return true; - } - catch { - return false; - } - } - async getAccount() { - return parse.account(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account`, - })); - } - async getOrder(params) { - return parse.order(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders/${params.order_id || params.client_order_id}`, - data: { nested: params.nested }, - })); - } - async getOrders(params = {}) { - return parse.orders(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/orders`, - data: { - ...params, - symbols: params.symbols ? params.symbols.join(',') : undefined, - }, - })); - } - async placeOrder(params) { - return parse.order(await this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/orders`, - data: params, - })); - } - async replaceOrder(params) { - return parse.order(await this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - data: params, - })); - } - cancelOrder(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders/${params.order_id}`, - isJSON: false, - }); - } - async cancelOrders() { - return parse.canceled_orders(await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/orders`, - })); - } - async getPosition(params) { - return parse.position(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - })); - } - async getPositions() { - return parse.positions(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/positions`, - })); - } - async closePosition(params) { - return parse.order(await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions/${params.symbol}`, - data: params, - })); - } - async closePositions(params) { - return parse.orders(await this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/positions?cancel_orders=${JSON.stringify(params.cancel_orders ?? false)}`, - })); - } - getAsset(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets/${params.asset_id_or_symbol}`, - }); - } - getAssets(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/assets`, - data: params, - }); - } - getWatchlist(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getWatchlists() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/watchlists`, - }); - } - createWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists`, - data: params, - }); - } - updateWatchlist(params) { - return this.request({ - method: 'PUT', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - addToWatchlist(params) { - return this.request({ - method: 'POST', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - data: params, - }); - } - removeFromWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}/${params.symbol}`, - }); - } - deleteWatchlist(params) { - return this.request({ - method: 'DELETE', - url: `${this.baseURLs.rest.account}/watchlists/${params.uuid}`, - }); - } - getCalendar(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/calendar`, - data: params, - }); - } - getNews(params) { - // transform symbols if necessary - if ('symbols' in params && Array.isArray(params.symbols)) { - params.symbols = params.symbols.join(','); - } - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.beta}/news`, - data: params, - }); - } - async getClock() { - return parse.clock(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/clock`, - })); - } - getAccountConfigurations() { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/configurations`, - }); - } - updateAccountConfigurations(params) { - return this.request({ - method: 'PATCH', - url: `${this.baseURLs.rest.account}/account/configurations`, - data: params, - }); - } - async getAccountActivities(params) { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params.activity_types.join(','); - } - return parse.activities(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/activities${params.activity_type ? '/'.concat(params.activity_type) : ''}`, - data: { ...params, activity_type: undefined }, - })); - } - getPortfolioHistory(params) { - return this.request({ - method: 'GET', - url: `${this.baseURLs.rest.account}/account/portfolio/history`, - data: params, - }); - } - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - async getBars_v1(params) { - const transformed = { - ...params, - symbols: params.symbols.join(','), - }; - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/bars/${params.timeframe}`, - data: transformed, - }); - } - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - async getLastTrade_v1(params) { - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last/stocks/${params.symbol}`, - }); - } - /** @deprecated Alpaca Data API v2 is currently in public beta. */ - async getLastQuote_v1(params) { - return await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v1}/last_quote/stocks/${params.symbol}`, - }); - } - async getTrades(params) { - return parse.pageOfTrades(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/trades`, - data: { ...params, symbol: undefined }, - })); - } - async getQuotes(params) { - return parse.pageOfQuotes(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/quotes`, - data: { ...params, symbol: undefined }, - })); - } - async getBars(params) { - return parse.pageOfBars(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/bars`, - data: { ...params, symbol: undefined }, - })); - } - async getLatestTrade({ symbol, feed, limit, }) { - let query = ''; - if (feed || limit) { - query = '?'.concat(qs.stringify({ feed, limit })); - } - return parse.latestTrade(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${symbol}/trades/latest`.concat(query), - })); - } - async getSnapshot(params) { - return parse.snapshot(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/${params.symbol}/snapshot`, - })); - } - async getSnapshots(params) { - return parse.snapshots(await this.request({ - method: 'GET', - url: `${this.baseURLs.rest.market_data_v2}/stocks/snapshots?symbols=${params.symbols.join(',')}`, - })); - } - async request(params) { - let headers = {}; - if ('access_token' in this.params.credentials) { - headers['Authorization'] = `Bearer ${this.params.credentials.access_token}`; - } - else { - headers['APCA-API-KEY-ID'] = this.params.credentials.key; - headers['APCA-API-SECRET-KEY'] = this.params.credentials.secret; - } - if (this.params.credentials.paper) { - params.url = params.url.replace('api.', 'paper-api.'); - } - let query = ''; - if (params.data) { - // translate dates to ISO strings - for (let [key, value] of Object.entries(params.data)) { - if (value instanceof Date) { - params.data[key] = value.toISOString(); - } - } - // build query - if (!['POST', 'PATCH', 'PUT'].includes(params.method)) { - query = '?'.concat(qs.stringify(params.data)); - params.data = undefined; - } - } - const makeCall = () => unifetch(params.url.concat(query), { - method: params.method, - headers, - body: JSON.stringify(params.data), - }), func = this.params.rate_limit - ? () => this.limiter.schedule(makeCall) - : makeCall; - let resp, result = {}; - try { - resp = await func(); - if (!(params.isJSON == undefined ? true : params.isJSON)) { - return resp.ok; - } - result = await resp.json(); - } - catch (e) { - console.error(e); - throw result; - } - if ('code' in result || 'message' in result) { - throw result; - } - return result; - } -} diff --git a/dist/mjs/endpoints.d.ts b/dist/mjs/endpoints.d.ts deleted file mode 100644 index 138d526..0000000 --- a/dist/mjs/endpoints.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Endpoints } from './entities'; -declare const endpoints: Endpoints; -export default endpoints; diff --git a/dist/mjs/endpoints.js b/dist/mjs/endpoints.js deleted file mode 100644 index f958e25..0000000 --- a/dist/mjs/endpoints.js +++ /dev/null @@ -1,13 +0,0 @@ -const endpoints = { - rest: { - beta: 'https://data.alpaca.markets/v1beta1', - account: 'https://api.alpaca.markets/v2', - market_data_v2: 'https://data.alpaca.markets/v2', - market_data_v1: 'https://data.alpaca.markets/v1', - }, - websocket: { - account: 'wss://api.alpaca.markets/stream', - market_data: (source = 'iex') => `wss://stream.data.alpaca.markets/v2/${source}`, - }, -}; -export default endpoints; diff --git a/dist/mjs/entities.d.ts b/dist/mjs/entities.d.ts deleted file mode 100644 index 7ce6656..0000000 --- a/dist/mjs/entities.d.ts +++ /dev/null @@ -1,1585 +0,0 @@ -export interface Endpoints { - rest: { - beta: 'https://data.alpaca.markets/v1beta1'; - account: 'https://api.alpaca.markets/v2'; - market_data_v2: 'https://data.alpaca.markets/v2'; - market_data_v1: 'https://data.alpaca.markets/v1'; - }; - websocket: { - account: 'wss://api.alpaca.markets/stream'; - market_data: (source: DataSource) => string; - }; -} -/** - * Your Alpaca key id and secret. - * Can be passed to the AlpacaClient and AlpacaStream. - */ -export interface DefaultCredentials { - key: string; - secret: string; - paper?: boolean; -} -/** - * Client ID for Oauth requests on behalf of users. - * Can be passed to the AlpacaClient. - */ -export interface OAuthCredentials { - access_token: String; - paper?: boolean; -} -/** - * The account information with unparsed types, exactly as Alpaca provides it. - * We encourage you to use the Account interface, which has many of these fields parsed. - */ -export interface RawAccount { - account_blocked: boolean; - account_number: string; - buying_power: string; - cash: string; - created_at: string; - currency: string; - daytrade_count: number; - daytrading_buying_power: string; - equity: string; - id: string; - initial_margin: string; - last_equity: string; - last_maintenance_margin: string; - long_market_value: string; - maintenance_margin: string; - multiplier: string; - pattern_day_trader: boolean; - portfolio_value: string; - regt_buying_power: string; - short_market_value: string; - shorting_enabled: boolean; - sma: string; - status: string; - trade_suspended_by_user: boolean; - trading_blocked: boolean; - transfers_blocked: boolean; -} -/** - * The following are the possible account status values. Most likely, the account status - * is ACTIVE unless there is any problem. The account status may get in ACCOUNT_UPDATED - * when personal information is being updated from the dashboard, in which case you may - * not be allowed trading for a short period of time until the change is approved. - */ -export declare type AccountStatus = -/** - * The account is onboarding. - */ -'ONBOARDING' -/** - * The account application submission failed for some reason. - */ - | 'SUBMISSION_FAILED' -/** - * The account application has been submitted for review. - */ - | 'SUBMITTED' -/** - * The account information is being updated. - */ - | 'ACCOUNT_UPDATED' -/** - * The final account approval is pending. - */ - | 'APPROVAL_PENDING' -/** - * The account is active for trading. - */ - | 'ACTIVE' -/** - * The account application has been rejected. - */ - | 'REJECTED'; -/** - * Information related to an Alpaca account, such as account status, funds, and various - * flags relevant to an account's ability to trade. - */ -export interface Account { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawAccount; - /** - * If true, the account activity by user is prohibited. - */ - account_blocked: boolean; - /** - * Account number. - */ - account_number: string; - /** - * Current available $ buying power; If multiplier = 4, this is your daytrade buying - * power which is calculated as (last_equity - (last) maintenance_margin) * 4; If - * multiplier = 2, buying_power = max(equity – initial_margin,0) * 2; If multiplier = 1, - * buying_power = cash - */ - buying_power: number; - /** - * Cash balance - */ - cash: number; - /** - * Timestamp this account was created at - */ - created_at: Date; - /** - * "USD" - */ - currency: string; - /** - * The current number of daytrades that have been made in the last 5 trading days - * (inclusive of today) - */ - daytrade_count: number; - /** - * Your buying power for day trades (continuously updated value) - */ - daytrading_buying_power: number; - /** - * Cash + long_market_value + short_market_value - */ - equity: number; - /** - * Account ID. - */ - id: string; - /** - * Reg T initial margin requirement (continuously updated value) - */ - initial_margin: number; - /** - * Equity as of previous trading day at 16:00:00 ET - */ - last_equity: number; - /** - * Your maintenance margin requirement on the previous trading day - */ - last_maintenance_margin: number; - /** - * Real-time MtM value of all long positions held in the account - */ - long_market_value: number; - /** - * Maintenance margin requirement (continuously updated value) - */ - maintenance_margin: number; - /** - * Buying power multiplier that represents account margin classification; valid values 1 - * (standard limited margin account with 1x buying power), 2 (reg T margin account with - * 2x intraday and overnight buying power; this is the default for all non-PDT accounts - * with $2,000 or more equity), 4 (PDT account with 4x intraday buying power and 2x reg - * T overnight buying power) - */ - multiplier: number; - /** - * Whether or not the account has been flagged as a pattern day trader - */ - pattern_day_trader: boolean; - /** - * Total value of cash + holding positions (This field is deprecated. It is equivalent - * to the equity field.) - */ - portfolio_value: number; - /** - * Your buying power under Regulation T (your excess equity - equity minus margin - * value - times your margin multiplier) - */ - regt_buying_power: number; - /** - * Real-time MtM value of all short positions held in the account - */ - short_market_value: number; - /** - * Flag to denote whether or not the account is permitted to short - */ - shorting_enabled: boolean; - /** - * Value of special memorandum account (will be used at a later date to provide - * additional buying_power) - */ - sma: number; - /** - * The following are the possible account status values. Most likely, the account status - * is ACTIVE unless there is any problem. The account status may get in ACCOUNT_UPDATED - * when personal information is being updated from the dashboard, in which case you may - * not be allowed trading for a short period of time until the change is approved. - */ - status: AccountStatus; - /** - * User setting. If true, the account is not allowed to place orders. - */ - trade_suspended_by_user: boolean; - /** - * If true, the account is not allowed to place orders. - */ - trading_blocked: boolean; - /** - * If true, the account is not allowed to request money transfers. - */ - transfers_blocked: boolean; -} -export interface AccountConfigurations { - /** - * both, entry, or exit. Controls Day Trading Margin Call (DTMC) checks. - */ - dtbp_check: 'both' | 'entry' | 'exit'; - /** - * If true, account becomes long-only mode. - */ - no_shorting: boolean; - /** - * If true, new orders are blocked. - */ - suspend_trade: boolean; - /** - * all or none. If none, emails for order fills are not sent. - */ - trade_confirm_email: 'all' | 'none'; -} -export interface AccountUpdate { - id: string; - created_at: string; - updated_at: string; - deleted_at: any; - status: string; - currency: string; - cash: string; - cash_withdrawable: string; -} -export interface AggregateMinute { - ev: string; - T: string; - v: number; - av: number; - op: number; - vw: number; - o: number; - c: number; - h: number; - l: number; - a: number; - s: number; - e: number; -} -export declare type AssetExchange = 'AMEX' | 'ARCA' | 'BATS' | 'NYSE' | 'NASDAQ' | 'NYSEARCA'; -export declare type AssetStatus = 'active' | 'inactive'; -/** - * The assets API serves as the master list of assets available for trade and data - * consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. Some - * assets are only available for data consumption via Polygon, and are not tradable with - * Alpaca. These assets will be marked with the flag tradable=false. - */ -export interface Asset { - /** - * Asset ID - */ - id: string; - /** - * "us_equity" - */ - class: string; - /** - * AMEX, ARCA, BATS, NYSE, NASDAQ or NYSEARCA - */ - exchange: AssetExchange; - /** - * Asset symbol - */ - symbol: string; - /** - * active or inactive - */ - status: AssetStatus; - /** - * Asset is tradable on Alpaca or not - */ - tradable: boolean; - /** - * Asset is marginable or not - */ - marginable: boolean; - /** - * Asset is shortable or not - */ - shortable: boolean; - /** - * Asset is easy-to-borrow or not (filtering for easy_to_borrow = True is the best way - * to check whether the name is currently available to short at Alpaca). - */ - easy_to_borrow: boolean; - /** - * Asset is fractionable or not. - */ - fractionable: boolean; -} -/** - * Contains the time of open and close for a market on a particular day from 1970 to 2029 - */ -export interface Calendar { - /** - * Date string in YYYY-MM-DD format - */ - date: string; - /** - * The time the market opens at on this date in HH:MM format - */ - open: string; - /** - * The time the market closes at on this date in HH:MM format - */ - close: string; -} -export interface RawClock { - timestamp: string; - is_open: boolean; - next_open: string; - next_close: string; -} -/** - * The clock API serves the current market timestamp, whether or not the market is - * currently open, as well as the times of the next market open and close. - */ -export interface Clock { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawClock; - /** - * Current timestamp - */ - timestamp: Date; - /** - * Whether or not the market is open - */ - is_open: boolean; - /** - * Next market open timestamp - */ - next_open: Date; - /** - * Next market close timestamp - */ - next_close: Date; -} -/** A trade which occurred. */ -export interface RawTrade { - /** Trade symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: string; - /** Exchange where the trade happened. */ - x: string; - /** Trade price. */ - p: number; - /** Trade size. */ - s: number; - /** Trade conditions. */ - c: string[]; - /** Trade ID. */ - i: number; - /** Tape. */ - z: string; -} -/** A page of one or many trades. */ -export interface RawPageOfTrades { - /** Array of trades. */ - trades: RawTrade[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A trade which occurred. */ -export interface Trade { - /** Get the raw data as it came from Alpaca. */ - raw(): RawTrade; - /** Trade symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: Date; - /** Exchange where the trade happened. */ - x: string; - /** Trade price. */ - p: number; - /** Trade size. */ - s: number; - /** Trade conditions. */ - c: string[]; - /** Trade ID. */ - i: number; - /** Tape. */ - z: string; -} -/** A page of one or many trades. */ -export interface PageOfTrades { - /** Get the raw data as it came from Alpaca. */ - raw(): RawPageOfTrades; - /** Array of trades. */ - trades: Trade[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A quote for a symbol. */ -export interface RawQuote { - /** Quote symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: string; - /** Ask exchange. */ - ax: string; - /** Ask price. */ - ap: number; - /** Ask size. */ - as: number; - /** Bid exchange. */ - bx: string; - /** Bid price. */ - bp: number; - /** Bid size. */ - bs: number; - /** Quote conditions. */ - c: string[]; -} -/** A page of one or many quotes. */ -export interface RawPageOfQuotes { - /** Array of quotes. */ - quotes: RawQuote[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A quote for a symbol. */ -export interface Quote { - /** Get the raw data as it came from Alpaca. */ - raw(): RawQuote; - /** Quote symbol. */ - S: string; - /** Timestamp in Date format. */ - t: Date; - /** Ask exchange. */ - ax: string; - /** Ask price. */ - ap: number; - /** Ask size. */ - as: number; - /** Bid exchange. */ - bx: string; - /** Bid price. */ - bp: number; - /** Bid size. */ - bs: number; - /** Quote conditions. */ - c: string[]; -} -/** A page of one or many quotes. */ -export interface PageOfQuotes { - /** Get the raw data as it came from Alpaca. */ - raw(): RawPageOfQuotes; - /** Array of quotes. */ - quotes: Quote[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A bar for a symbol. */ -export interface RawBar { - /** Bar symbol. */ - S: string; - /** Timestamp in RFC-3339 format with nanosecond precision. */ - t: string; - /** Open price. */ - o: number; - /** High price. */ - h: number; - /** Low price. */ - l: number; - /** Close price. */ - c: number; - /** Volume. */ - v: number; -} -/** A page of one or many bars. */ -export interface RawPageOfBars { - /** Array of bars. */ - bars: RawBar[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** A bar for a symbol. */ -export interface Bar { - /** Get the raw data as it came from Alpaca. */ - raw(): RawBar; - /** Bar symbol. */ - S: string; - /** Timestamp in Date format. */ - t: Date; - /** Open price. */ - o: number; - /** High price. */ - h: number; - /** Low price. */ - l: number; - /** Close price. */ - c: number; - /** Volume. */ - v: number; -} -/** A page of one or many bars. */ -export interface PageOfBars { - /** Get the raw data as it came from Alpaca. */ - raw(): RawPageOfBars; - /** Array of bars. */ - bars: Bar[]; - /** Symbol that was queried. */ - symbol: string; - /** Token that can be used to query the next page. */ - next_page_token: string; -} -/** - * The parsed result of an order cancelation request. - */ -export interface OrderCancelation { - id: string; - status: number; - order: Order; -} -/** - * The id, http status code and order as part of the cancel all orders request. - */ -export interface RawOrderCancelation { - id: string; - status: number; - body: RawOrder; -} -/** - * The order entity with unparsed fields, exactly as Alpaca provides it. - * We encourage you to use the Order interface, which has many of these fields parsed. - */ -export interface RawOrder { - id: string; - client_order_id: string; - created_at: string; - updated_at: string; - submitted_at: string; - filled_at: string; - expired_at: string; - canceled_at: string; - failed_at: string; - replaced_at: string; - replaced_by: string; - replaces: string; - asset_id: string; - symbol: string; - asset_class: string; - qty: string; - filled_qty: string; - type: string; - side: string; - time_in_force: string; - limit_price: string; - stop_price: string; - filled_avg_price: string; - status: string; - extended_hours: boolean; - legs: RawOrder[]; - trail_price: string; - trail_percent: string; - hwm: string; - order_class?: OrderClass; -} -/** - * Price and volume data during a particular time interval - */ -export interface Bar_v1 { - /** - * the beginning time of this bar as a Unix epoch in seconds - */ - t: number; - /** - * open price - */ - o: number; - /** - * high price - */ - h: number; - /** - * low price - */ - l: number; - /** - * close price - */ - c: number; - /** - * volume - */ - v: number; -} -/** - * Last quote details for a symbol - */ -export interface LastQuote_v1 { - status: string; - symbol: string; - last: { - /** - * the current ask price - */ - askprice: number; - /** - * the current ask size - */ - asksize: number; - /** - * the exchange code of the ask quote - */ - askexchange: number; - /** - * the current bid price - */ - bidprice: number; - /** - * the current bid size - */ - bidsize: number; - /** - * the exchange code of the bid quote - */ - bidexchange: number; - /** - * epoch timestamp in nanoseconds - */ - timestamp: number; - }; -} -/** - * Last trade details for a symbol - */ -export interface LastTrade_v1 { - status: string; - symbol: string; - last: { - /** - * last trade price - */ - price: number; - /** - * last trade volume size - */ - size: number; - /** - * exchange code where the last trade was made - */ - exchange: number; - /** - * condition flag 1 - */ - cond1: number; - /** - * condition flag 2 - */ - cond2: number; - /** - * condition flag 3 - */ - cond3: number; - /** - * condition flag 4 - */ - cond4: number; - /** - * epoch timestamp in nanoseconds - */ - timestamp: number; - }; -} -export interface RawSnapshot { - symbol: string; - latestTrade: { - t: string; - x: string; - p: number; - s: number; - c?: string[] | null; - i: number; - z: string; - }; - latestQuote: { - t: string; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c?: string[] | null; - }; - minuteBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - dailyBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - prevDailyBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; -} -export interface Snapshot { - /** Get the raw data as it came from Alpaca. */ - raw(): RawSnapshot; - symbol: string; - latestTrade: { - t: Date; - x: string; - p: number; - s: number; - c?: string[] | null; - i: number; - z: string; - }; - latestQuote: { - t: Date; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c?: string[] | null; - }; - minuteBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - dailyBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - prevDailyBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; -} -export declare type DataSource = 'iex' | 'sip'; -export declare type OrderType = 'market' | 'limit' | 'stop' | 'stop_limit' | 'trailing_stop'; -export declare type OrderClass = 'simple' | 'bracket' | 'oto' | 'oco'; -export declare type OrderSide = 'buy' | 'sell'; -export declare type OrderTimeInForce = -/** - * A day order is eligible for execution only on the day it is live. By default, the - * order is only valid during Regular Trading Hours (9:30am - 4:00pm ET). If unfilled - * after the closing auction, it is automatically canceled. If submitted after the - * close, it is queued and submitted the following trading day. However, if marked as - * eligible for extended hours, the order can also execute during supported extended - * hours. - */ -'day' -/** - * The order is good until canceled. Non-marketable GTC limit orders are subject to - * price adjustments to offset corporate actions affecting the issue. We do not - * currently support Do Not Reduce(DNR) orders to opt out of such price adjustments. - */ - | 'gtc' -/** - * Use this TIF with a market/limit order type to submit "market on open" (MOO) and - * "limit on open" (LOO) orders. This order is eligible to execute only in the market - * opening auction. Any unfilled orders after the open will be cancelled. OPG orders - * submitted after 9:28am but before 7:00pm ET will be rejected. OPG orders submitted - * after 7:00pm will be queued and routed to the following day's opening auction. On - * open/on close orders are routed to the primary exchange. Such orders do not - * necessarily execute exactly at 9:30am / 4:00pm ET but execute per the exchange's - * auction rules. - */ - | 'opg' -/** - * Use this TIF with a market/limit order type to submit "market on close" (MOC) and - * "limit on close" (LOC) orders. This order is eligible to execute only in the market - * closing auction. Any unfilled orders after the close will be cancelled. CLS orders - * submitted after 3:50pm but before 7:00pm ET will be rejected. CLS orders submitted - * after 7:00pm will be queued and routed to the following day's closing auction. Only - * available with API v2. - */ - | 'cls' -/** - * An Immediate Or Cancel (IOC) order requires all or part of the order to be executed - * immediately. Any unfilled portion of the order is canceled. Only available with API - * v2. - */ - | 'ioc' -/** - * A Fill or Kill (FOK) order is only executed if the entire order quantity can be - * filled, otherwise the order is canceled. Only available with API v2. - */ - | 'fok'; -export declare type OrderStatus = -/** - * The order has been received by Alpaca, and routed to exchanges for execution. This - * is the usual initial state of an order. - */ -'new' -/** - * The order has been partially filled. - */ - | 'partially_filled' -/** - * The order has been filled, and no further updates will occur for the order. - */ - | 'filled' -/** - * The order is done executing for the day, and will not receive further updates until - * the next trading day. - */ - | 'done_for_day' -/** - * The order has been canceled, and no further updates will occur for the order. This - * can be either due to a cancel request by the user, or the order has been canceled by - * the exchanges due to its time-in-force. - */ - | 'canceled' -/** - * The order has expired, and no further updates will occur for the order. - */ - | 'expired' -/** - * The order was replaced by another order, or was updated due to a market event such - * as corporate action. - */ - | 'replaced' -/** - * The order is waiting to be canceled. - */ - | 'pending_cancel' -/** - * The order is waiting to be replaced by another order. The order will reject cancel - * request while in this state. - */ - | 'pending_replace' -/** - * (Uncommon) The order has been received by Alpaca, but hasn't yet been routed to the - * execution venue. This could be seen often out side of trading session hours. - */ - | 'accepted' -/** - * (Uncommon) The order has been received by Alpaca, and routed to the exchanges, but - * has not yet been accepted for execution. This state only occurs on rare occasions. - */ - | 'pending_new' -/** - * (Uncommon) The order has been received by exchanges, and is evaluated for pricing. - * This state only occurs on rare occasions. - */ - | 'accepted_for_bidding' -/** - * (Uncommon) The order has been stopped, and a trade is guaranteed for the order, - * usually at a stated price or better, but has not yet occurred. This state only - * occurs on rare occasions. - */ - | 'stopped' -/** - * (Uncommon) The order has been rejected, and no further updates will occur for the - * order. This state occurs on rare occasions and may occur based on various conditions - * decided by the exchanges. - */ - | 'rejected' -/** - * (Uncommon) The order has been suspended, and is not eligible for trading. This state - * only occurs on rare occasions. - */ - | 'suspended' -/** - * (Uncommon) The order has been completed for the day (either filled or done for day), - * but remaining settlement calculations are still pending. This state only occurs on - * rare occasions. - */ - | 'calculated'; -export interface RawLatestTrade { - symbol: string; - trade: { - t: string; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; - }; -} -export interface LatestTrade { - raw(): RawLatestTrade; - symbol: string; - trade: { - t: Date; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; - }; -} -/** - * An Order in Alpaca - */ -export interface Order { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawOrder; - /** - * Order id - */ - id: string; - /** - * Client unique order id - */ - client_order_id: string; - /** - * When the order was created - */ - created_at: Date; - /** - * When the order was last updated - */ - updated_at: Date; - /** - * When the order was submitted - */ - submitted_at: Date; - /** - * When the order was filled - */ - filled_at: Date; - /** - * When the order expired - */ - expired_at: Date; - /** - * When the order was canceled - */ - canceled_at: Date; - /** - * When the order failed - */ - failed_at: Date; - /** - * When the order was last replaced - */ - replaced_at: Date; - /** - * The order ID that this order was replaced by - */ - replaced_by: string; - /** - * The order ID that this order replaces - */ - replaces: string; - /** - * Asset ID - */ - asset_id: string; - /** - * Asset symbol - */ - symbol: string; - /** - * Asset class - */ - asset_class: string; - /** - * Ordered quantity - */ - qty: number; - /** - * Filled quantity - */ - filled_qty: number; - /** - * Order type (market, limit, stop, stop_limit, trailing_stop) - */ - type: OrderType; - /** - * Buy or sell - */ - side: OrderSide; - /** - * Order Time in Force - */ - time_in_force: OrderTimeInForce; - /** - * Limit price - */ - limit_price: number; - /** - * Stop price - */ - stop_price: number; - /** - * Filled average price - */ - filled_avg_price: number; - /** - * The status of the order - */ - status: OrderStatus; - /** - * If true, eligible for execution outside regular trading hours. - */ - extended_hours: boolean; - /** - * When querying non-simple order_class orders in a nested style, an array of Order - * entities associated with this order. Otherwise, null. - */ - legs: Order[]; - /** - * The dollar value away from the high water mark for trailing stop orders. - */ - trail_price: number; - /** - * The percent value away from the high water mark for trailing stop orders. - */ - trail_percent: number; - /** - * The highest (lowest) market price seen since the trailing stop order was submitted. - */ - hwm: number; - /** - * Mostly used for non-simple orders such as bracket, one-triggers-other, or one-cancels-other. - */ - order_class: OrderClass; -} -/** - * Timeseries data for equity and profit loss information of the account - */ -export interface PortfolioHistory { - /** - * time of each data element, left-labeled (the beginning of time window) - */ - timestamp: number[]; - /** - * equity value of the account in dollar amount as of the end of each time window - */ - equity: number[]; - /** - * profit/loss in dollar from the base value - */ - profit_loss: number[]; - /** - * profit/loss in percentage from the base value - */ - profit_loss_pct: number[]; - /** - * basis in dollar of the profit loss calculation - */ - base_value: number; - /** - * time window size of each data element - */ - timeframe: '1Min' | '5Min' | '15Min' | '1H' | '1D'; -} -/** - * A position with unparsed fields, exactly as Alpaca provides it. - * We encourage you to use the Position interface, which has many of these fields parsed. - */ -export interface RawPosition { - asset_id: string; - symbol: string; - exchange: string; - asset_class: string; - avg_entry_price: string; - qty: string; - side: string; - market_value: string | null; - cost_basis: string; - unrealized_pl: string | null; - unrealized_plpc: string | null; - unrealized_intraday_pl: string | null; - unrealized_intraday_plpc: string | null; - current_price: string | null; - lastday_price: string | null; - change_today: string | null; -} -export declare type PositionSide = 'long' | 'short'; -/** - * A position in Alpaca - */ -export interface Position { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawPosition; - /** - * Asset ID - */ - asset_id: string; - /** - * Symbol name of the asset - */ - symbol: string; - /** - * Exchange name of the asset - */ - exchange: string; - /** - * Asset class name - */ - asset_class: string; - /** - * Average entry price of the position - */ - avg_entry_price: number; - /** - * The number of shares - */ - qty: number; - /** - * long or short - */ - side: PositionSide; - /** - * Total dollar amount of the position - */ - market_value: number | null; - /** - * Total cost basis in dollar - */ - cost_basis: number; - /** - * Unrealized profit/loss in dollars - */ - unrealized_pl: number | null; - /** - * Unrealized profit/loss percent (by a factor of 1) - */ - unrealized_plpc: number | null; - /** - * Unrealized profit/loss in dollars for the day - */ - unrealized_intraday_pl: number | null; - /** - * Unrealized profit/loss percent (by a factor of 1) - */ - unrealized_intraday_plpc: number | null; - /** - * Current asset price per share - */ - current_price: number | null; - /** - * Last day's asset price per share based on the closing value of the last trading day - */ - lastday_price: number | null; - /** - * Percent change from last day price (by a factor of 1) - */ - change_today: number | null; -} -export declare type ActivityType = -/** - * Order fills (both partial and full fills) - */ -'FILL' -/** - * Cash transactions (both CSD and CSR) - */ - | 'TRANS' -/** - * Miscellaneous or rarely used activity types (All types except those in TRANS, DIV, - * or FILL) - */ - | 'MISC' -/** - * ACATS IN/OUT (Cash) - */ - | 'ACATC' -/** - * ACATS IN/OUT (Securities) - */ - | 'ACATS' -/** - * Cash disbursement(+) - */ - | 'CSD' -/** - * Cash receipt(-) - */ - | 'CSR' -/** - * Dividends - */ - | 'DIV' -/** - * Dividend (capital gain long term) - */ - | 'DIVCGL' -/** - * Dividend (capital gain short term) - */ - | 'DIVCGS' -/** - * Dividend fee - */ - | 'DIVFEE' -/** - * Dividend adjusted (Foreign Tax Withheld) - */ - | 'DIVFT' -/** - * Dividend adjusted (NRA Withheld) - */ - | 'DIVNRA' -/** - * Dividend return of capital - */ - | 'DIVROC' -/** - * Dividend adjusted (Tefra Withheld) - */ - | 'DIVTW' -/** - * Dividend (tax exempt) - */ - | 'DIVTXEX' -/** - * Interest (credit/margin) - */ - | 'INT' -/** - * Interest adjusted (NRA Withheld) - */ - | 'INTNRA' -/** - * Interest adjusted (Tefra Withheld) - */ - | 'INTTW' -/** - * Journal entry - */ - | 'JNL' -/** - * Journal entry (cash) - */ - | 'JNLC' -/** - * Journal entry (stock) - */ - | 'JNLS' -/** - * Merger/Acquisition - */ - | 'MA' -/** - * Name change - */ - | 'NC' -/** - * Option assignment - */ - | 'OPASN' -/** - * Option expiration - */ - | 'OPEXP' -/** - * Option exercise - */ - | 'OPXRC' -/** - * Pass Thru Charge - */ - | 'PTC' -/** - * Pass Thru Rebate - */ - | 'PTR' -/** - * Reorg CA - */ - | 'REORG' -/** - * Symbol change - */ - | 'SC' -/** - * Stock spinoff - */ - | 'SSO' -/** - * Stock split - */ - | 'SSP'; -export interface RawTradeActivity { - activity_type: Extract; - cum_qty: string; - id: string; - leaves_qty: string; - price: string; - qty: string; - side: string; - symbol: string; - transaction_time: string; - order_id: string; - type: string; -} -export interface RawNonTradeActivity { - activity_type: Exclude; - id: string; - date: string; - net_amount: string; - symbol: string; - qty: string; - per_share_amount: string; -} -export declare type TradeActivityType = 'fill' | 'partial_fill'; -export declare type TradeActivitySide = 'buy' | 'sell'; -export interface TradeActivity { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawTradeActivity; - /** - * FILL - */ - activity_type: Extract; - /** - * The cumulative quantity of shares involved in the execution. - */ - cum_qty: number; - /** - * An id for the activity. Always in "::" format. Can be sent as page_token in requests - * to facilitate the paging of results. - */ - id: string; - /** - * For partially_filled orders, the quantity of shares that are left to be filled. - */ - leaves_qty: number; - /** - * The per-share price that the trade was executed at. - */ - price: number; - /** - * The number of shares involved in the trade execution. - */ - qty: number; - /** - * buy or sell - */ - side: TradeActivitySide; - /** - * The symbol of the security being traded. - */ - symbol: string; - /** - * The time at which the execution occurred. - */ - transaction_time: string; - /** - * The id for the order that filled. - */ - order_id: string; - /** - * fill or partial_fill - */ - type: TradeActivityType; -} -export interface NonTradeActivity { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw(): RawNonTradeActivity; - /** - * Activity type - */ - activity_type: Exclude; - /** - * An ID for the activity, always in "::" format. Can be sent as page_token in requests - * to facilitate the paging of results. - */ - id: string; - /** - * The date on which the activity occurred or on which the transaction associated with - * the activity settled. - */ - date: string; - /** - * The net amount of money (positive or negative) associated with the activity. - */ - net_amount: number; - /** - * The symbol of the security involved with the activity. Not present for all activity - * types. - */ - symbol: string; - /** - * For dividend activities, the number of shares that contributed to the payment. Not - * present for other activity types. - */ - qty: number; - /** - * For dividend activities, the average amount paid per share. Not present for other - * activity types. - */ - per_share_amount: number; -} -export declare type RawActivity = RawTradeActivity | RawNonTradeActivity; -export declare type Activity = TradeActivity | NonTradeActivity; -/** - * The following type mirrors OrderStatus almost exactly, - * but differs slightly in its wording for each event. - * See https://alpaca.markets/docs/api-references/broker-api/events/#trade-events - * for an updated list of these events and their detailed descriptions. - */ -export declare type TradeUpdateEvent = 'new' | 'fill' | 'partial_fill' | 'canceled' | 'expired' | 'done_for_day' | 'replaced' | 'rejected' | 'pending_new' | 'stopped' | 'pending_cancel' | 'pending_replace' | 'calculated' | 'suspended' | 'order_replace_rejected' | 'order_cancel_rejected'; -export interface RawTradeUpdate { - event: TradeUpdateEvent; - execution_id: string; - order: RawOrder; - event_id?: string; - at?: string; - timestamp?: string; - position_qty?: string; - price?: string; - qty?: string; -} -export interface TradeUpdate { - /** - * Get the raw data, exactly as it came from Alpaca - */ - raw: () => RawTradeUpdate; - /** - * Trade update event type - */ - event: TradeUpdateEvent; - /** - * Corresponding execution of an order. - * If an order gets filled over two executions (a partial_fill for example), - * you will receive two events with different IDs. - */ - execution_id: string; - /** - * Monotonically increasing 64-bit integer. - * Haven't yet observed this property in practice, but it is - * on Alpaca's docs here: https://alpaca.markets/docs/api-references/broker-api/events/#trade-events, - * including for completeness. - */ - event_id?: number; - /** - * The associated order that a trade_update event comes with - */ - order: Order; - /** - * The timestamp of the trade update event. - * Alpaca docs at https://alpaca.markets/docs/api-references/broker-api/events/#trade-events - * are confusing. They say the 'at' property will contain the timestamp of - * the event, but currently as of 3/10/22 this is in the 'timestamp' property - * instead. Including both for completeness. - */ - at?: Date; - /** - * The timestamp of the trade update event. - * Alpaca docs at https://alpaca.markets/docs/api-references/broker-api/events/#trade-events - * are confusing. They say the 'at' property will contain the timestamp of - * the event, but currently as of 3/10/22 this is in the 'timestamp' property - * instead. Including both for completeness. - */ - timestamp?: Date; - /** - * The size of your total position, after a fill or partial fill event, in shares. - */ - position_qty?: number; - /** - * The average price per share at which the order was filled or partially filled - */ - price?: number; - /** - * The amount of shares that were filled in a trade update of type fill or partial_fill. - * Equivalent to the order.filled_qty property, which is preferred. - */ - qty?: number; -} -export interface Watchlist { - /** - * account ID - */ - account_id: string; - /** - * the content of this watchlist, in the order as registered by the client - */ - assets: Asset[]; - /** - * When the watchlist was created - */ - created_at: string; - /** - * watchlist id - */ - id: string; - /** - * user-defined watchlist name (up to 64 characters) - */ - name: string; - /** - * When the watchlist was last updated - */ - updated_at: string; -} -export interface News { - id: number; - headline: string; - author: string; - created_at: Date; - updated_at: Date; - summary: string; - url: string; - images: any[]; - symbols: string[]; - source: string; -} -export interface NewsPage { - news: News[]; - next_page_token: string; -} -export declare type Channel = 'trades' | 'quotes' | 'bars' | 'trade_updates'; -export interface Message { - T: 'success' | 'error' | 'subscription'; - code?: number; - msg: string; - [key: string]: any; -} diff --git a/dist/mjs/entities.js b/dist/mjs/entities.js deleted file mode 100644 index cb0ff5c..0000000 --- a/dist/mjs/entities.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/mjs/index.d.ts b/dist/mjs/index.d.ts deleted file mode 100644 index 5d01b64..0000000 --- a/dist/mjs/index.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -export { AlpacaClient } from './client.js'; -export { AlpacaStream } from './stream.js'; -import { AlpacaClient } from './client.js'; -import { AlpacaStream } from './stream.js'; -declare const _default: { - AlpacaClient: typeof AlpacaClient; - AlpacaStream: typeof AlpacaStream; -}; -export default _default; -export { Account, Order, OrderCancelation, Position, Asset, Watchlist, Calendar, Clock, DefaultCredentials, OAuthCredentials, AccountConfigurations, NonTradeActivity, TradeActivity, Activity, PortfolioHistory, Bar, Bar_v1, Quote, LastQuote_v1, LastTrade_v1, Trade, PageOfBars, PageOfQuotes, PageOfTrades, Snapshot, DataSource, Channel, Message, } from './entities'; -export { GetOrder, GetOrders, PlaceOrder, ReplaceOrder, CancelOrder, GetPosition, ClosePosition, GetAsset, GetAssets, GetWatchList, CreateWatchList, UpdateWatchList, AddToWatchList, RemoveFromWatchList, DeleteWatchList, GetCalendar, UpdateAccountConfigurations, GetAccountActivities, GetPortfolioHistory, GetBars, GetBars_v1, GetTrades, GetQuotes, GetSnapshot, GetSnapshots, GetLastTrade_v1, GetLastQuote_v1, BarsV1Timeframe, BarsTimeframe, } from './params'; diff --git a/dist/mjs/index.js b/dist/mjs/index.js deleted file mode 100644 index f704663..0000000 --- a/dist/mjs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -export { AlpacaClient } from './client.js'; -export { AlpacaStream } from './stream.js'; -import { AlpacaClient } from './client.js'; -import { AlpacaStream } from './stream.js'; -export default { - AlpacaClient: AlpacaClient, - AlpacaStream: AlpacaStream, -}; diff --git a/dist/mjs/params.d.ts b/dist/mjs/params.d.ts deleted file mode 100644 index 98e723d..0000000 --- a/dist/mjs/params.d.ts +++ /dev/null @@ -1,177 +0,0 @@ -import { OrderSide, OrderType, OrderTimeInForce, DataSource } from './entities.js'; -export interface AddToWatchList { - uuid: string; - symbol: string; -} -export interface CancelOrder { - order_id: string; -} -export interface ClosePosition { - symbol: string; - qty?: number; - percentage?: number; -} -export interface ClosePositions { - cancel_orders?: boolean; -} -export interface CreateWatchList { - name: string; - symbols?: string[]; -} -export interface DeleteWatchList { - uuid: string; -} -export interface GetAccountActivities { - activity_type?: string; - activity_types?: string | string[]; - date?: string; - until?: string; - after?: string; - direction?: 'asc' | 'desc'; - page_size?: number; - page_token?: string; -} -export interface GetAsset { - asset_id_or_symbol: string; -} -export interface GetAssets { - status?: 'active' | 'inactive'; - asset_class?: string; -} -export interface GetCalendar { - start?: Date; - end?: Date; -} -export interface GetTrades { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; -} -export interface GetQuotes { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; -} -export interface GetSnapshot { - symbol: string; -} -export interface GetSnapshots { - symbols: string[]; -} -export interface GetBars { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; - timeframe: BarsTimeframe; - adjustment?: 'all' | 'dividend' | 'raw' | 'split'; -} -export interface GetBars_v1 { - timeframe: BarsV1Timeframe; - symbols: string[]; - limit?: number; - start?: Date; - end?: Date; - after?: Date; - until?: Date; -} -export interface GetLastQuote_v1 { - symbol: string; -} -export interface GetLastTrade_v1 { - symbol: string; -} -export interface GetOrder { - order_id?: string; - client_order_id?: string; - nested?: boolean; -} -export interface GetOrders { - status?: 'open' | 'closed' | 'all'; - limit?: number; - after?: Date; - until?: Date; - direction?: 'asc' | 'desc'; - nested?: boolean; - symbols?: string[]; -} -export interface GetPortfolioHistory { - period?: string; - timeframe?: string; - date_end?: Date; - extended_hours?: boolean; -} -export interface GetPosition { - symbol: string; -} -export interface GetWatchList { - uuid: string; -} -export interface PlaceOrder { - symbol: string; - side: OrderSide; - type: OrderType; - time_in_force: OrderTimeInForce; - qty?: number; - notional?: number; - limit_price?: number; - stop_price?: number; - extended_hours?: boolean; - client_order_id?: string; - trail_price?: number; - trail_percent?: number; - order_class?: 'simple' | 'bracket' | 'oco' | 'oto'; - take_profit?: { - limit_price: number; - }; - stop_loss?: { - stop_price: number; - limit_price?: number; - }; -} -export interface RemoveFromWatchList { - uuid: string; - symbol: string; -} -export interface ReplaceOrder { - order_id: string; - qty?: number; - time_in_force?: OrderTimeInForce; - limit_price?: number; - stop_price?: number; - client_order_id?: string; -} -export declare type BarsV1Timeframe = '1Min' | '5Min' | '15Min' | '1Day'; -/** Also supports arbitrary minute, hour, and day values. E.g., '37Min', '6Hour', '3Day' */ -export declare type BarsTimeframe = BarsV1Timeframe | '30Min' | '1Hour' | '2Hour' | '4Hour'; -export interface UpdateAccountConfigurations { - dtbp_check?: string; - no_shorting?: boolean; - suspend_trade?: boolean; - trade_confirm_email?: string; -} -export interface GetLatestTrade { - symbol: string; - feed?: DataSource; - limit?: number; -} -export interface UpdateWatchList { - uuid: string; - name?: string; - symbols?: string[]; -} -export interface GetNews { - symbols?: string[] | string; - start?: Date; - end?: Date; - limit?: number; - sort?: 'ASC' | 'DESC'; - include_content?: boolean; - exclude_contentless?: boolean; - page_token?: string; -} diff --git a/dist/mjs/params.js b/dist/mjs/params.js deleted file mode 100644 index cb0ff5c..0000000 --- a/dist/mjs/params.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/mjs/parse.d.ts b/dist/mjs/parse.d.ts deleted file mode 100644 index c3df4fc..0000000 --- a/dist/mjs/parse.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Account, RawAccount, RawOrder, Order, RawPosition, Position, RawTradeActivity, TradeActivity, RawNonTradeActivity, NonTradeActivity, RawActivity, Activity, RawClock, Clock, RawOrderCancelation, OrderCancelation, PageOfTrades, RawPageOfTrades, PageOfQuotes, RawPageOfQuotes, RawPageOfBars, PageOfBars, Snapshot, RawSnapshot, TradeUpdate, RawTradeUpdate, RawLatestTrade, LatestTrade } from './entities.js'; -declare function account(rawAccount: RawAccount): Account; -declare function clock(rawClock: RawClock): Clock; -declare function latestTrade(raw: RawLatestTrade): LatestTrade; -declare function order(rawOrder: RawOrder): Order; -declare function orders(rawOrders: RawOrder[]): Order[]; -declare function canceled_orders(rawOrderCancelations: RawOrderCancelation[]): OrderCancelation[]; -declare function position(rawPosition: RawPosition): Position; -declare function positions(rawPositions: RawPosition[]): Position[]; -declare function tradeActivity(rawTradeActivity: RawTradeActivity): TradeActivity; -declare function nonTradeActivity(rawNonTradeActivity: RawNonTradeActivity): NonTradeActivity; -declare function activities(rawActivities: Array): Array; -declare function pageOfTrades(page: RawPageOfTrades): PageOfTrades; -declare function pageOfQuotes(page: RawPageOfQuotes): PageOfQuotes; -declare function pageOfBars(page: RawPageOfBars): PageOfBars; -declare function snapshot(raw: RawSnapshot): Snapshot; -declare function snapshots(raw: { - [key: string]: RawSnapshot; -}): { - [key: string]: Snapshot; -}; -declare function trade_update(rawTradeUpdate: RawTradeUpdate): TradeUpdate; -declare const _default: { - account: typeof account; - activities: typeof activities; - clock: typeof clock; - nonTradeActivity: typeof nonTradeActivity; - order: typeof order; - orders: typeof orders; - canceled_orders: typeof canceled_orders; - position: typeof position; - positions: typeof positions; - tradeActivity: typeof tradeActivity; - pageOfTrades: typeof pageOfTrades; - pageOfQuotes: typeof pageOfQuotes; - pageOfBars: typeof pageOfBars; - snapshot: typeof snapshot; - snapshots: typeof snapshots; - trade_update: typeof trade_update; - latestTrade: typeof latestTrade; -}; -export default _default; diff --git a/dist/mjs/parse.js b/dist/mjs/parse.js deleted file mode 100644 index 8b4d393..0000000 --- a/dist/mjs/parse.js +++ /dev/null @@ -1,393 +0,0 @@ -function account(rawAccount) { - if (!rawAccount) { - return undefined; - } - try { - return { - ...rawAccount, - raw: () => rawAccount, - buying_power: number(rawAccount.buying_power), - regt_buying_power: number(rawAccount.regt_buying_power), - daytrading_buying_power: number(rawAccount.daytrading_buying_power), - cash: number(rawAccount.cash), - created_at: new Date(rawAccount.created_at), - portfolio_value: number(rawAccount.portfolio_value), - multiplier: number(rawAccount.multiplier), - equity: number(rawAccount.equity), - last_equity: number(rawAccount.last_equity), - long_market_value: number(rawAccount.long_market_value), - short_market_value: number(rawAccount.short_market_value), - initial_margin: number(rawAccount.initial_margin), - maintenance_margin: number(rawAccount.maintenance_margin), - last_maintenance_margin: number(rawAccount.last_maintenance_margin), - sma: number(rawAccount.sma), - status: rawAccount.status, - }; - } - catch (err) { - throw new Error(`Account parsing failed. ${err.message}`); - } -} -function clock(rawClock) { - if (!rawClock) { - return undefined; - } - try { - return { - raw: () => rawClock, - timestamp: new Date(rawClock.timestamp), - is_open: rawClock.is_open, - next_open: new Date(rawClock.next_open), - next_close: new Date(rawClock.next_close), - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function latestTrade(raw) { - if (!raw) { - return undefined; - } - try { - return { - ...raw, - raw: () => raw, - trade: { - ...raw.trade, - t: new Date(raw.trade.t), - }, - }; - } - catch (err) { - throw new Error(`Latest trade parsing failed. ${err.message}`); - } -} -function order(rawOrder) { - if (!rawOrder) { - return undefined; - } - try { - return { - ...rawOrder, - raw: () => rawOrder, - created_at: new Date(rawOrder.created_at), - updated_at: new Date(rawOrder.updated_at), - submitted_at: new Date(rawOrder.submitted_at), - filled_at: new Date(rawOrder.filled_at), - expired_at: new Date(rawOrder.expired_at), - canceled_at: new Date(rawOrder.canceled_at), - failed_at: new Date(rawOrder.failed_at), - replaced_at: new Date(rawOrder.replaced_at), - qty: number(rawOrder.qty), - filled_qty: number(rawOrder.filled_qty), - type: rawOrder.type, - side: rawOrder.side, - time_in_force: rawOrder.time_in_force, - limit_price: number(rawOrder.limit_price), - stop_price: number(rawOrder.stop_price), - filled_avg_price: number(rawOrder.filled_avg_price), - status: rawOrder.status, - legs: orders(rawOrder.legs), - trail_price: number(rawOrder.trail_price), - trail_percent: number(rawOrder.trail_percent), - hwm: number(rawOrder.hwm), - order_class: rawOrder.order_class, - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function orders(rawOrders) { - return rawOrders ? rawOrders.map((value) => order(value)) : undefined; -} -function canceled_order(input) { - if (!input) { - return undefined; - } - let order = input.body; - // we don't want this field anymore - delete input.body; - try { - return { - ...input, - order: { - ...order, - raw: () => order, - created_at: new Date(order.created_at), - updated_at: new Date(order.updated_at), - submitted_at: new Date(order.submitted_at), - filled_at: new Date(order.filled_at), - expired_at: new Date(order.expired_at), - canceled_at: new Date(order.canceled_at), - failed_at: new Date(order.failed_at), - replaced_at: new Date(order.replaced_at), - qty: number(order.qty), - filled_qty: number(order.filled_qty), - type: order.type, - side: order.side, - time_in_force: order.time_in_force, - limit_price: number(order.limit_price), - stop_price: number(order.stop_price), - filled_avg_price: number(order.filled_avg_price), - status: order.status, - legs: orders(order.legs), - trail_price: number(order.trail_price), - trail_percent: number(order.trail_percent), - hwm: number(order.hwm), - order_class: order.order_class, - }, - }; - } - catch (err) { - throw new Error(`Order parsing failed. ${err.message}`); - } -} -function canceled_orders(rawOrderCancelations) { - return rawOrderCancelations - ? rawOrderCancelations.map((value) => canceled_order(value)) - : undefined; -} -function position(rawPosition) { - if (!rawPosition) { - return undefined; - } - try { - return { - ...rawPosition, - raw: () => rawPosition, - avg_entry_price: number(rawPosition.avg_entry_price), - qty: number(rawPosition.qty), - side: rawPosition.side, - market_value: number(rawPosition.market_value), - cost_basis: number(rawPosition.cost_basis), - unrealized_pl: number(rawPosition.unrealized_pl), - unrealized_plpc: number(rawPosition.unrealized_plpc), - unrealized_intraday_pl: number(rawPosition.unrealized_intraday_pl), - unrealized_intraday_plpc: number(rawPosition.unrealized_intraday_plpc), - current_price: number(rawPosition.current_price), - lastday_price: number(rawPosition.lastday_price), - change_today: number(rawPosition.change_today), - }; - } - catch (err) { - throw new Error(`Position parsing failed. ${err.message}`); - } -} -function positions(rawPositions) { - return rawPositions ? rawPositions.map((pos) => position(pos)) : undefined; -} -function tradeActivity(rawTradeActivity) { - if (!rawTradeActivity) { - return undefined; - } - try { - return { - ...rawTradeActivity, - raw: () => rawTradeActivity, - cum_qty: number(rawTradeActivity.cum_qty), - leaves_qty: number(rawTradeActivity.leaves_qty), - price: number(rawTradeActivity.price), - qty: number(rawTradeActivity.qty), - side: rawTradeActivity.side, - type: rawTradeActivity.type, - }; - } - catch (err) { - throw new Error(`TradeActivity parsing failed. ${err.message}`); - } -} -function nonTradeActivity(rawNonTradeActivity) { - if (!rawNonTradeActivity) { - return undefined; - } - try { - return { - ...rawNonTradeActivity, - raw: () => rawNonTradeActivity, - net_amount: number(rawNonTradeActivity.net_amount), - qty: number(rawNonTradeActivity.qty), - per_share_amount: number(rawNonTradeActivity.per_share_amount), - }; - } - catch (err) { - throw new Error(`NonTradeActivity parsing failed. ${err.message}`); - } -} -function activities(rawActivities) { - if (!rawActivities) { - return undefined; - } - try { - return rawActivities.map((rawActivity) => rawActivity.activity_type === 'FILL' - ? tradeActivity(rawActivity) - : nonTradeActivity(rawActivity)); - } - catch (err) { - throw new Error(`Activity parsing failed. ${err.message}`); - } -} -function pageOfTrades(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - trades: (page.trades == null ? [] : page.trades).map((trade) => ({ - raw: () => trade, - ...trade, - t: new Date(trade.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfQuotes(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - quotes: (page.quotes == null ? [] : page.quotes).map((quote) => ({ - raw: () => quote, - ...quote, - t: new Date(quote.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function pageOfBars(page) { - if (!page) { - return undefined; - } - try { - return { - raw: () => page, - bars: (page.bars == null ? [] : page.bars).map((bar) => ({ - raw: () => bar, - ...bar, - t: new Date(bar.t), - })), - symbol: page.symbol, - next_page_token: page.next_page_token, - }; - } - catch (err) { - throw new Error(`PageOfTrades parsing failed "${err.message}"`); - } -} -function snapshot(raw) { - if (!raw) { - return undefined; - } - try { - return { - ...raw, - raw: () => raw, - latestTrade: raw.latestTrade - ? { - ...raw.latestTrade, - t: new Date(raw.latestTrade.t), - } - : null, - latestQuote: raw.latestQuote - ? { - ...raw.latestQuote, - t: new Date(raw.latestQuote.t), - } - : null, - minuteBar: raw.minuteBar - ? { - ...raw.minuteBar, - t: new Date(raw.minuteBar.t), - } - : null, - dailyBar: raw.dailyBar - ? { - ...raw.dailyBar, - t: new Date(raw.dailyBar.t), - } - : null, - prevDailyBar: raw.prevDailyBar - ? { - ...raw.prevDailyBar, - t: new Date(raw.prevDailyBar.t), - } - : null, - }; - } - catch (err) { - throw new Error(`Snapshot parsing failed "${err.message}"`); - } -} -function snapshots(raw) { - let parsed = {}; - for (let [key, value] of Object.entries(raw)) { - parsed[key] = snapshot(value); - } - return parsed; -} -function number(numStr) { - if (typeof numStr === 'undefined' || numStr == null) { - return numStr; - } - const value = parseFloat(numStr); - if (Number.isNaN(value)) { - return null; - } - return value; -} -function trade_update(rawTradeUpdate) { - if (!rawTradeUpdate) - return undefined; - return { - raw: () => rawTradeUpdate, - event: rawTradeUpdate.event, - execution_id: rawTradeUpdate.execution_id, - order: order(rawTradeUpdate.order), - /* Only include the non-obligatory fields if they exist */ - ...(rawTradeUpdate.event_id && { - event_id: number(rawTradeUpdate.event_id), - }), - ...(rawTradeUpdate.at && { at: new Date(rawTradeUpdate.at) }), - ...(rawTradeUpdate.timestamp && { - timestamp: new Date(rawTradeUpdate.timestamp), - }), - ...(rawTradeUpdate.position_qty && { - position_qty: number(rawTradeUpdate.position_qty), - }), - ...(rawTradeUpdate.price && { price: number(rawTradeUpdate.price) }), - ...(rawTradeUpdate.qty && { qty: number(rawTradeUpdate.qty) }), - }; -} -export default { - account, - activities, - clock, - nonTradeActivity, - order, - orders, - canceled_orders, - position, - positions, - tradeActivity, - pageOfTrades, - pageOfQuotes, - pageOfBars, - snapshot, - snapshots, - trade_update, - latestTrade, -}; diff --git a/dist/mjs/stream.d.ts b/dist/mjs/stream.d.ts deleted file mode 100644 index 8112025..0000000 --- a/dist/mjs/stream.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -/// -import WebSocket from 'isomorphic-ws'; -import EventEmitter from 'eventemitter3'; -import { Bar, Channel, DataSource, DefaultCredentials, Quote, Trade, TradeUpdate, Message, Endpoints } from './entities.js'; -export declare interface Events { - open: (stream: AlpacaStream) => void; - close: (stream: AlpacaStream) => void; - authenticated: (stream: AlpacaStream) => void; - success: (message: Message) => void; - error: (message: WebSocket.ErrorEvent) => void; - subscription: (message: Message) => void; - message: (message: Object) => void; - trade_updates: (update: TradeUpdate) => void; - trade: (trade: Trade) => void; - quote: (quote: Quote) => void; - bar: (bar: Bar) => void; -} -export declare interface AlpacaStream { - on(event: U, listener: Events[U]): this; - once(event: U, listener: Events[U]): this; - emit(event: U, ...args: Parameters): boolean; -} -export declare class AlpacaStream extends EventEmitter { - protected params: { - credentials: DefaultCredentials; - type: 'account' | 'market_data'; - source?: DataSource; - endpoints?: Endpoints | Map; - }; - private host; - private connection; - private authenticated; - private baseURLs; - constructor(params: { - credentials: DefaultCredentials; - type: 'account' | 'market_data'; - source?: DataSource; - endpoints?: Endpoints | Map; - }); - /** - * Retrieve the underlying WebSocket connection AlpacaStream uses. - * Now callers can read and modify properties of the web socket - * i.e., close the websocket with AlpacaStream.getConnection().close(). - * @returns a WebSocket object - */ - getConnection(): WebSocket; - /** - * Subscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - subscribe(channel: Channel, symbols?: string[]): this; - /** - * Unsubscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - unsubscribe(channel: Channel, symbols?: string[]): this; - private send; -} diff --git a/dist/mjs/stream.js b/dist/mjs/stream.js deleted file mode 100644 index 14ec774..0000000 --- a/dist/mjs/stream.js +++ /dev/null @@ -1,173 +0,0 @@ -import isBlob from 'is-blob'; -import parse from './parse.js'; -import WebSocket from 'isomorphic-ws'; -import endpoints from './endpoints.js'; -import EventEmitter from 'eventemitter3'; -export class AlpacaStream extends EventEmitter { - params; - host; - connection; - authenticated; - baseURLs = endpoints; - constructor(params) { - // construct EventEmitter - super(); - this.params = params; - // override endpoints if custom provided - if ('endpoints' in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - if ( - // if not specified - !('paper' in params.credentials) && - // and live key isn't already provided - !('key' in params.credentials && params.credentials.key.startsWith('A'))) { - params.credentials['paper'] = true; - } - // assign the host we will connect to - switch (params.type) { - case 'account': - this.host = params.credentials.paper - ? this.baseURLs.websocket.account.replace('api.', 'paper-api.') - : this.baseURLs.websocket.account; - break; - case 'market_data': - this.host = this.baseURLs.websocket.market_data(this.params.source); - break; - default: - this.host = 'unknown'; - } - this.connection = new WebSocket(this.host); - this.connection.onopen = () => { - let message = {}; - switch (this.params.type) { - case 'account': - message = { - action: 'authenticate', - data: { - key_id: params.credentials.key, - secret_key: params.credentials.secret, - }, - }; - break; - case 'market_data': - // {"action":"auth","key":"PK*****","secret":"*************"} - message = { action: 'auth', ...params.credentials }; - break; - } - this.connection.send(JSON.stringify(message)); - // pass through - this.emit('open', this); - }; - // pass through - this.connection.onclose = () => this.emit('close', this); - this.connection.onmessage = async (event) => { - let data = event.data; - if (isBlob(data)) { - data = await event.data.text(); - } - else if (data instanceof ArrayBuffer) { - data = String.fromCharCode(...new Uint8Array(event.data)); - } - let parsed = JSON.parse(data), messages = this.params.type == 'account' ? [parsed] : parsed; - messages.forEach((message) => { - // pass the message - this.emit('message', message); - // pass authenticated event - if ('T' in message && message.msg == 'authenticated') { - this.authenticated = true; - this.emit('authenticated', this); - } - else if ('stream' in message && message.stream == 'authorization') { - if (message.data.status == 'authorized') { - this.authenticated = true; - this.emit('authenticated', this); - } - } - // pass trade_updates event - if ('stream' in message && message.stream == 'trade_updates') { - this.emit('trade_updates', parse.trade_update(message.data)); - } - // pass trade, quote, bar event - const x = { - success: 'success', - subscription: 'subscription', - error: 'error', - t: 'trade', - q: 'quote', - b: 'bar', - }; - if ('T' in message) { - this.emit(x[message.T.split('.')[0]], message); - } - }); - }; - // pass the error - this.connection.onerror = (err) => { - this.emit('error', err); - }; - } - /** - * Retrieve the underlying WebSocket connection AlpacaStream uses. - * Now callers can read and modify properties of the web socket - * i.e., close the websocket with AlpacaStream.getConnection().close(). - * @returns a WebSocket object - */ - getConnection() { - return this.connection; - } - /** - * Subscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - subscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - // {"action":"listen","data":{"streams":["trade_updates"]}} - this.send(JSON.stringify({ action: 'listen', data: { streams: [channel] } })); - break; - case 'market_data': - // {"action":"subscribe","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["AAPL","VOO"]} - let message = { action: 'subscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - /** - * Unsubscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - unsubscribe(channel, symbols = []) { - switch (this.params.type) { - case 'account': - // {"action":"unlisten","data":{"streams":["trade_updates"]}} - this.send(JSON.stringify({ action: 'unlisten', data: { streams: [channel] } })); - break; - case 'market_data': - // {"action":"unsubscribe","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["AAPL","VOO"]} - let message = { action: 'unsubscribe' }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - return this; - } - send(message) { - // don't bother if we aren't authenticated - if (!this.authenticated) { - throw new Error('not authenticated'); - } - // if the message is in object form, stringify it for the user - if (typeof message == 'object') { - message = JSON.stringify(message); - } - // send it off - this.connection.send(message); - // chainable return - return this; - } -} diff --git a/package-lock.json b/package-lock.json index 6ddd1d0..c43deef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1451 +1,763 @@ { - "name": "@master-chief/alpaca", - "version": "6.3.20", - "lockfileVersion": 1, + "name": "@alpacahq/alpaca-ts", + "version": "7.0.0", + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@babel/code-frame": { + "packages": { + "": { + "name": "@alpacahq/alpaca-ts", + "version": "7.0.0", + "license": "ISC", + "dependencies": { + "abort-controller": "^3.0.0", + "bottleneck": "^2.19.5", + "bufferutil": "^4.0.3", + "eventemitter3": "^4.0.7", + "is-blob": "^2.1.0", + "isomorphic-unfetch": "^3.1.0", + "isomorphic-ws": "^4.0.1", + "qs": "^6.9.6", + "utf-8-validate": "^5.0.4", + "ws": "^7.5.0" + }, + "devDependencies": { + "@types/node-fetch": "^2.6.4", + "@types/qs": "^6.9.5", + "@types/ws": "^7.4.0", + "prettier": "^2.8.8", + "rimraf": "^3.0.2", + "standard-version": "^9.1.1", + "typescript": "^4.4.3", + "vite": "^4.4.7" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@babel/code-frame": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "dev": true, - "requires": { + "dependencies": { "@babel/highlight": "^7.14.5" - } - }, - "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true - }, - "@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - } - }, - "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz", - "integrity": "sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true - }, - "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-validator-identifier": { + "node_modules/@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true - }, - "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", "dev": true, - "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "engines": { + "node": ">=6.9.0" } }, - "@babel/highlight": { + "node_modules/@babel/highlight": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz", - "integrity": "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.4.tgz", - "integrity": "sha512-94znCKynPZpDpYHQ6esRJSc11AmONrVkBOBZiD7S+bSubHhrUfbS95EY5HIOxhm4PQO7cnvZkL3oJcY0oMA+Wg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.2.4", - "jest-util": "^27.2.4", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.4.tgz", - "integrity": "sha512-UNQLyy+rXoojNm2MGlapgzWhZD1CT1zcHZQYeiD0xE7MtJfC19Q6J5D/Lm2l7i4V97T30usKDoEtjI8vKwWcLg==", - "dev": true, - "requires": { - "@jest/console": "^27.2.4", - "@jest/reporters": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.2.4", - "jest-config": "^27.2.4", - "jest-haste-map": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-resolve-dependencies": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "jest-watcher": "^27.2.4", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", - "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", - "dev": true, - "requires": { - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "jest-mock": "^27.2.4" - } - }, - "@jest/fake-timers": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", - "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.2.4", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4" - } - }, - "@jest/globals": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.4.tgz", - "integrity": "sha512-DRsRs5dh0i+fA9mGHylTU19+8fhzNJoEzrgsu+zgJoZth3x8/0juCQ8nVVdW1er4Cqifb/ET7/hACYVPD0dBEA==", - "dev": true, - "requires": { - "@jest/environment": "^27.2.4", - "@jest/types": "^27.2.4", - "expect": "^27.2.4" - } - }, - "@jest/reporters": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.4.tgz", - "integrity": "sha512-LHeSdDnDZkDnJ8kvnjcqV8P1Yv/32yL4d4XfR5gBiy3xGO0onwll1QEbvtW96fIwhx2nejug0GTaEdNDoyr3fQ==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "dependencies": { - "jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.4.tgz", - "integrity": "sha512-eU+PRo0+lIS01b0dTmMdVZ0TtcRSxEaYquZTRFMQz6CvsehGhx9bRzi9Zdw6VROviJyv7rstU+qAMX5pNBmnfQ==", - "dev": true, - "requires": { - "@jest/console": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.4.tgz", - "integrity": "sha512-fpk5eknU3/DXE2QCCG1wv/a468+cfPo3Asu6d6yUtM9LOPh709ubZqrhuUOYfM8hXMrIpIdrv1CdCrWWabX0rQ==", - "dev": true, - "requires": { - "@jest/test-result": "^27.2.4", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-runtime": "^27.2.4" - } - }, - "@jest/transform": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.4.tgz", - "integrity": "sha512-n5FlX2TH0oQGwyVDKPxdJ5nI2sO7TJBFe3u3KaAtt7TOiV4yL+Y+rSFDl+Ic5MpbiA/eqXmLAQxjnBmWgS2rEA==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.4", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.2.4", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", - "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "engines": { + "node": ">=6.9.0" } }, - "@master-chief/map": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@master-chief/map/-/map-0.0.6.tgz", - "integrity": "sha512-QOLJmzRGkSbwFRgJ2y1Z8Jx1pIcrluWtHaxnpc14KJ6PbumJv/lM1g5Se+HtVbZSqZkQQ4l5Z2wG4uXuk520oQ==" - }, - "@rollup/plugin-commonjs": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", - "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - } - }, - "@rollup/plugin-json": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.0.8" - } - }, - "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } - }, - "@rollup/plugin-typescript": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.5.tgz", - "integrity": "sha512-QL/LvDol/PAGB2O0S7/+q2HpSUNodpw7z6nGn9BfoVCPOZ0r4EALrojFU29Bkoi2Hr2jgTocTejJ5GGWZfOxbQ==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "resolve": "^1.17.0" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, "dependencies": { - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - } - } - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { - "@babel/types": "^7.3.0" + "dependencies": { + "color-name": "1.1.3" } }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "requires": { - "@types/node": "*" + "engines": { + "node": ">=0.8.0" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true - }, - "@types/istanbul-lib-report": { + "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" + "engines": { + "node": ">=4" } }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", - "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.16.tgz", + "integrity": "sha512-gCHjjQmA8L0soklKbLKA6pgsLk1byULuHe94lkZDzcO3/Ta+bbeewJioEn1Fr7kgy9NWNFy/C+MrBwC6I/WCug==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.16.tgz", + "integrity": "sha512-wsCqSPqLz+6Ov+OM4EthU43DyYVVyfn15S4j1bJzylDpc1r1jZFFfJQNfDuT8SlgwuqpmpJXK4uPlHGw6ve7eA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.16.tgz", + "integrity": "sha512-ldsTXolyA3eTQ1//4DS+E15xl0H/3DTRJaRL0/0PgkqDsI0fV/FlOtD+h0u/AUJr+eOTlZv4aC9gvfppo3C4sw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.16.tgz", + "integrity": "sha512-aBxruWCII+OtluORR/KvisEw0ALuw/qDQWvkoosA+c/ngC/Kwk0lLaZ+B++LLS481/VdydB2u6tYpWxUfnLAIw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.16.tgz", + "integrity": "sha512-6w4Dbue280+rp3LnkgmriS1icOUZDyPuZo/9VsuMUTns7SYEiOaJ7Ca1cbhu9KVObAWfmdjUl4gwy9TIgiO5eA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.16.tgz", + "integrity": "sha512-x35fCebhe9s979DGKbVAwXUOcTmCIE32AIqB9CB1GralMIvxdnMLAw5CnID17ipEw9/3MvDsusj/cspYt2ZLNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.16.tgz", + "integrity": "sha512-YM98f+PeNXF3GbxIJlUsj+McUWG1irguBHkszCIwfr3BXtXZsXo0vqybjUDFfu9a8Wr7uUD/YSmHib+EeGAFlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.16.tgz", + "integrity": "sha512-b5ABb+5Ha2C9JkeZXV+b+OruR1tJ33ePmv9ZwMeETSEKlmu/WJ45XTTG+l6a2KDsQtJJ66qo/hbSGBtk0XVLHw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.16.tgz", + "integrity": "sha512-XIqhNUxJiuy+zsR77+H5Z2f7s4YRlriSJKtvx99nJuG5ATuJPjmZ9n0ANgnGlPCpXGSReFpgcJ7O3SMtzIFeiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.16.tgz", + "integrity": "sha512-no+pfEpwnRvIyH+txbBAWtjxPU9grslmTBfsmDndj7bnBmr55rOo/PfQmRfz7Qg9isswt1FP5hBbWb23fRWnow==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.16.tgz", + "integrity": "sha512-Zbnczs9ZXjmo0oZSS0zbNlJbcwKXa/fcNhYQjahDs4Xg18UumpXG/lwM2lcSvHS3mTrRyCYZvJbmzYc4laRI1g==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.16.tgz", + "integrity": "sha512-YMF7hih1HVR/hQVa/ot4UVffc5ZlrzEb3k2ip0nZr1w6fnYypll9td2qcoMLvd3o8j3y6EbJM3MyIcXIVzXvQQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.16.tgz", + "integrity": "sha512-Wkz++LZ29lDwUyTSEnzDaaP5OveOgTU69q9IyIw9WqLRxM4BjTBjz9un4G6TOvehWpf/J3gYVFN96TjGHrbcNQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.16.tgz", + "integrity": "sha512-LFMKZ30tk78/mUv1ygvIP+568bwf4oN6reG/uczXnz6SvFn4e2QUFpUpZY9iSJT6Qpgstrhef/nMykIXZtZWGQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.16.tgz", + "integrity": "sha512-3ZC0BgyYHYKfZo3AV2/66TD/I9tlSBaW7eWTEIkrQQKfJIifKMMttXl9FrAg+UT0SGYsCRLI35Gwdmm96vlOjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.16.tgz", + "integrity": "sha512-xu86B3647DihHJHv/wx3NCz2Dg1gjQ8bbf9cVYZzWKY+gsvxYmn/lnVlqDRazObc3UMwoHpUhNYaZset4X8IPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.16.tgz", + "integrity": "sha512-uVAgpimx9Ffw3xowtg/7qQPwHFx94yCje+DoBx+LNm2ePDpQXHrzE+Sb0Si2VBObYz+LcRps15cq+95YM7gkUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.16.tgz", + "integrity": "sha512-6OjCQM9wf7z8/MBi6BOWaTL2AS/SZudsZtBziXMtNI8r/U41AxS9x7jn0ATOwVy08OotwkPqGRMkpPR2wcTJXA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.16.tgz", + "integrity": "sha512-ZoNkruFYJp9d1LbUYCh8awgQDvB9uOMZqlQ+gGEZR7v6C+N6u7vPr86c+Chih8niBR81Q/bHOSKGBK3brJyvkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.16.tgz", + "integrity": "sha512-+j4anzQ9hrs+iqO+/wa8UE6TVkKua1pXUb0XWFOx0FiAj6R9INJ+WE//1/Xo6FG1vB5EpH3ko+XcgwiDXTxcdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.16.tgz", + "integrity": "sha512-5PFPmq3sSKTp9cT9dzvI67WNfRZGvEVctcZa1KGjDDu4n3H8k59Inbk0du1fz0KrAbKKNpJbdFXQMDUz7BG4rQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.16.tgz", + "integrity": "sha512-sCIVrrtcWN5Ua7jYXNG1xD199IalrbfV2+0k/2Zf2OyV2FtnQnMgdzgpRAbi4AWlKJj1jkX+M+fEGPQj6BQB4w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true, - "requires": { - "jest-diff": "^27.0.0", - "pretty-format": "^27.0.0" + "engines": { + "node": ">=6.9.0" } }, - "@types/minimist": { + "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, - "@types/node": { + "node_modules/@types/node": { "version": "16.6.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==", "dev": true }, - "@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "node_modules/@types/node-fetch": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", + "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*", "form-data": "^3.0.0" } }, - "@types/normalize-package-data": { + "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, - "@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", - "dev": true - }, - "@types/qs": { + "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/ws": { + "node_modules/@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "abort-controller": { + "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "requires": { + "dependencies": { "event-target-shim": "^5.0.0" - } - }, - "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } + "engines": { + "node": ">=6.5" } }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "add-stream": { + "node_modules/add-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", "dev": true }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-ify": { + "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, - "arrify": { + "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "asynckit": { + "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "babel-jest": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.4.tgz", - "integrity": "sha512-f24OmxyWymk5jfgLdlCMu4fTs4ldxFBIdn5sJdhvGC1m08rSkJ5hYbWkNmfBSvE/DjhCVNSHXepxsI6THGfGsg==", - "dev": true, - "requires": { - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.2.0", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { + "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "bottleneck": { + "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.2.tgz", - "integrity": "sha512-jSDZyqJmkKMEMi7SZAgX5UltFdR5NAO43vY0AwTpu4X3sGH7GLLQ83KiUomgrnvZRCeW0yPPnKqnxPqQOER9zQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001261", - "electron-to-chromium": "^1.3.854", - "escalade": "^3.1.1", - "nanocolors": "^0.2.12", - "node-releases": "^1.1.76" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer-from": { + "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "bufferutil": { + "node_modules/bufferutil": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", - "requires": { + "hasInstallScript": true, + "dependencies": { "node-gyp-build": "^4.2.0" } }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true - }, - "call-bind": { + "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { + "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { + "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "camelcase-keys": { + "node_modules/camelcase-keys": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "caniuse-lite": { - "version": "1.0.30001263", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001263.tgz", - "integrity": "sha512-doiV5dft6yzWO1WwU19kt8Qz8R0/8DgEziz6/9n2FxUasteZNwNNYSmJO3GLBH8lCVE73AB1RPDPAeYbcO5Cvw==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "cliui": { + "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "requires": { + "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color-convert": { + "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { + "dependencies": { "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "combined-stream": { + "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "requires": { + "dependencies": { "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "compare-func": { + "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, - "requires": { + "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" } }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { + "node_modules/concat-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, - "requires": { + "engines": [ + "node >= 6.0" + ], + "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.0.2", "typedarray": "^0.0.6" } }, - "conventional-changelog": { + "node_modules/conventional-changelog": { "version": "3.1.24", "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.24.tgz", "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==", "dev": true, - "requires": { + "dependencies": { "conventional-changelog-angular": "^5.0.12", "conventional-changelog-atom": "^2.0.8", "conventional-changelog-codemirror": "^2.0.8", @@ -1457,261 +769,332 @@ "conventional-changelog-jquery": "^3.0.11", "conventional-changelog-jshint": "^2.0.9", "conventional-changelog-preset-loader": "^2.3.4" + }, + "engines": { + "node": ">=10" } }, - "conventional-changelog-angular": { + "node_modules/conventional-changelog-angular": { "version": "5.0.12", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", "dev": true, - "requires": { + "dependencies": { "compare-func": "^2.0.0", "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "conventional-changelog-atom": { + "node_modules/conventional-changelog-atom": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", "dev": true, - "requires": { + "dependencies": { "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "conventional-changelog-codemirror": { + "node_modules/conventional-changelog-codemirror": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", "dev": true, - "requires": { + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-config-spec": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", + "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", + "dev": true + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.5.0.tgz", + "integrity": "sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.3.tgz", + "integrity": "sha512-MwnZjIoMRL3jtPH5GywVNqetGILC7g6RQFvdb8LRU/fA/338JbeWAku3PZ8yQ+mtVRViiISqJlb0sOz0htBZig==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "conventional-changelog-config-spec": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", - "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", + "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "conventional-changelog-conventionalcommits": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.5.0.tgz", - "integrity": "sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw==", + "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "requires": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "conventional-changelog-core": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.3.tgz", - "integrity": "sha512-MwnZjIoMRL3jtPH5GywVNqetGILC7g6RQFvdb8LRU/fA/338JbeWAku3PZ8yQ+mtVRViiISqJlb0sOz0htBZig==", + "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-changelog-core/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "requires": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" - }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", - "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "conventional-changelog-ember": { + "node_modules/conventional-changelog-ember": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", "dev": true, - "requires": { + "dependencies": { "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "conventional-changelog-eslint": { + "node_modules/conventional-changelog-eslint": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", "dev": true, - "requires": { + "dependencies": { "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "conventional-changelog-express": { + "node_modules/conventional-changelog-express": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", "dev": true, - "requires": { + "dependencies": { "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "conventional-changelog-jquery": { + "node_modules/conventional-changelog-jquery": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", "dev": true, - "requires": { + "dependencies": { "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "conventional-changelog-jshint": { + "node_modules/conventional-changelog-jshint": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", "dev": true, - "requires": { + "dependencies": { "compare-func": "^2.0.0", "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "conventional-changelog-preset-loader": { + "node_modules/conventional-changelog-preset-loader": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "conventional-changelog-writer": { + "node_modules/conventional-changelog-writer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.0.tgz", "integrity": "sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g==", "dev": true, - "requires": { + "dependencies": { "conventional-commits-filter": "^2.0.7", "dateformat": "^3.0.0", "handlebars": "^4.7.6", @@ -1721,39 +1104,54 @@ "semver": "^6.0.0", "split": "^1.0.0", "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "conventional-commits-filter": { + "node_modules/conventional-commits-filter": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", "dev": true, - "requires": { + "dependencies": { "lodash.ismatch": "^4.4.0", "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" } }, - "conventional-commits-parser": { + "node_modules/conventional-commits-parser": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", "dev": true, - "requires": { - "JSONStream": "^1.0.4", + "dependencies": { "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", "lodash": "^4.17.15", "meow": "^8.0.0", "split2": "^3.0.0", "through2": "^4.0.0", "trim-off-newlines": "^1.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "conventional-recommended-bump": { + "node_modules/conventional-recommended-bump": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", "dev": true, - "requires": { + "dependencies": { "concat-stream": "^2.0.0", "conventional-changelog-preset-loader": "^2.3.4", "conventional-commits-filter": "^2.0.7", @@ -1762,1729 +1160,892 @@ "git-semver-tags": "^4.1.1", "meow": "^8.0.0", "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-util-is": { + "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "dargs": { + "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "dev": true - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "engines": { + "node": ">=8" } }, - "dateformat": { + "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, - "requires": { - "ms": "2.1.2" + "engines": { + "node": "*" } }, - "decamelize": { + "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "decamelize-keys": { + "node_modules/decamelize-keys": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dev": true, - "requires": { + "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - } + "engines": { + "node": ">=0.10.0" } }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "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 - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "delayed-stream": { + "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "detect-indent": { + "node_modules/detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "detect-newline": { + "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "dot-prop": { + "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, - "requires": { + "dependencies": { "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "dotgitignore": { + "node_modules/dotgitignore": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", "dev": true, - "requires": { + "dependencies": { "find-up": "^3.0.0", "minimatch": "^3.0.4" }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "electron-to-chromium": { - "version": "1.3.857", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.857.tgz", - "integrity": "sha512-a5kIr2lajm4bJ5E4D3fp8Y/BRB0Dx2VOcCRE5Gtb679mXIME/OFhWler8Gy2ksrf8gFX+EFCSIGA33FB3gqYpg==", - "dev": true + "node_modules/dotgitignore/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } }, - "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true + "node_modules/dotgitignore/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } }, - "emoji-regex": { + "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "error-ex": { + "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "requires": { + "dependencies": { "is-arrayish": "^0.2.1" } }, - "escalade": { + "node_modules/esbuild": { + "version": "0.18.16", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.16.tgz", + "integrity": "sha512-1xLsOXrDqwdHxyXb/x/SOyg59jpf/SH7YMvU5RNSU7z3TInaASNJWNFJ6iRvLvLETZMasF3d1DdZLg7sgRimRQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.16", + "@esbuild/android-arm64": "0.18.16", + "@esbuild/android-x64": "0.18.16", + "@esbuild/darwin-arm64": "0.18.16", + "@esbuild/darwin-x64": "0.18.16", + "@esbuild/freebsd-arm64": "0.18.16", + "@esbuild/freebsd-x64": "0.18.16", + "@esbuild/linux-arm": "0.18.16", + "@esbuild/linux-arm64": "0.18.16", + "@esbuild/linux-ia32": "0.18.16", + "@esbuild/linux-loong64": "0.18.16", + "@esbuild/linux-mips64el": "0.18.16", + "@esbuild/linux-ppc64": "0.18.16", + "@esbuild/linux-riscv64": "0.18.16", + "@esbuild/linux-s390x": "0.18.16", + "@esbuild/linux-x64": "0.18.16", + "@esbuild/netbsd-x64": "0.18.16", + "@esbuild/openbsd-x64": "0.18.16", + "@esbuild/sunos-x64": "0.18.16", + "@esbuild/win32-arm64": "0.18.16", + "@esbuild/win32-ia32": "0.18.16", + "@esbuild/win32-x64": "0.18.16" + } + }, + "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "engines": { + "node": ">=6" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "event-target-shim": { + "node_modules/event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } }, - "eventemitter3": { + "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expect": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.4.tgz", - "integrity": "sha512-gOtuonQ8TCnbNNCSw2fhVzRf8EFYDII4nB5NmG4IEV0rbUnW1I5zXvoTntU4iicB/Uh0oZr20NGlOLdJiwsOZA==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-regex-util": "^27.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "figures": { + "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "requires": { + "dependencies": { "escape-string-regexp": "^1.0.5" }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "requires": { - "to-regex-range": "^5.0.1" + "engines": { + "node": ">=0.8.0" } }, - "find-up": { + "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "requires": { + "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "form-data": { + "node_modules/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, - "requires": { + "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "fs-access": { + "node_modules/fs-access": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", "dev": true, - "requires": { + "dependencies": { "null-check": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { + "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "function-bind": { + "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "get-intrinsic": { + "node_modules/get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { + "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-pkg-repo": { + "node_modules/get-pkg-repo": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.1.2.tgz", "integrity": "sha512-/FjamZL9cBYllEbReZkxF2IMh80d8TJoC4e3bmLNif8ibHw95aj0N/tzqK0kZz9eU/3w3dL6lF4fnnX/sDdW3A==", "dev": true, - "requires": { + "dependencies": { "@hutson/parse-repository-url": "^3.0.0", "hosted-git-info": "^4.0.0", "meow": "^7.0.0", "through2": "^2.0.0" }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-pkg-repo/node_modules/meow": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", + "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, "dependencies": { - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "meow": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", - "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true + "node_modules/get-pkg-repo/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-pkg-repo/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } }, - "git-raw-commits": { + "node_modules/git-raw-commits": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", "dev": true, - "requires": { + "dependencies": { "dargs": "^7.0.0", "lodash": "^4.17.15", "meow": "^8.0.0", "split2": "^3.0.0", "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "git-remote-origin-url": { + "node_modules/git-remote-origin-url": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", "dev": true, - "requires": { + "dependencies": { "gitconfiglocal": "^1.0.0", "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" } }, - "git-semver-tags": { + "node_modules/git-semver-tags": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", "dev": true, - "requires": { + "dependencies": { "meow": "^8.0.0", "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "gitconfiglocal": { + "node_modules/gitconfiglocal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", "dev": true, - "requires": { + "dependencies": { "ini": "^1.3.2" } }, - "glob": { + "node_modules/glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { + "node_modules/graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "dev": true }, - "handlebars": { + "node_modules/handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, - "requires": { + "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.0", "source-map": "^0.6.1", - "uglify-js": "^3.1.4", "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "hard-rejection": { + "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "has": { + "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { + "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-symbols": { + "node_modules/has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "hosted-git-info": { + "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { + "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "ini": { + "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-blob": { + "node_modules/is-blob": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", - "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==" - }, - "is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "requires": { - "ci-info": "^3.1.1" + "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-core-module": { + "node_modules/is-core-module": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", "dev": true, - "requires": { + "dependencies": { "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-fullwidth-code-point": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-obj": { + "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-plain-obj": { + "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, - "requires": { - "@types/estree": "*" + "engines": { + "node": ">=0.10.0" } }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-text-path": { + "node_modules/is-text-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", "dev": true, - "requires": { + "dependencies": { "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "isarray": { + "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isomorphic-unfetch": { + "node_modules/isomorphic-unfetch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", - "requires": { + "dependencies": { "node-fetch": "^2.6.1", "unfetch": "^4.2.0" } }, - "isomorphic-ws": { + "node_modules/isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==" - }, - "istanbul-lib-coverage": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.1.tgz", - "integrity": "sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", - "integrity": "sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==", - "dev": true, - "requires": { - "@jest/core": "^27.2.4", - "import-local": "^3.0.2", - "jest-cli": "^27.2.4" - } - }, - "jest-changed-files": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.4.tgz", - "integrity": "sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "execa": "^5.0.0", - "throat": "^6.0.1" - } - }, - "jest-circus": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.4.tgz", - "integrity": "sha512-TtheheTElrGjlsY9VxkzUU1qwIx05ItIusMVKnvNkMt4o/PeegLRcjq3Db2Jz0GGdBalJdbzLZBgeulZAJxJWA==", - "dev": true, - "requires": { - "@jest/environment": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.2.4", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - } - }, - "jest-cli": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.4.tgz", - "integrity": "sha512-4kpQQkg74HYLaXo3nzwtg4PYxSLgL7puz1LXHj5Tu85KmlIpxQFjRkXlx4V47CYFFIDoyl3rHA/cXOxUWyMpNg==", - "dev": true, - "requires": { - "@jest/core": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "jest-config": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - } - }, - "jest-config": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", - "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.2.4", - "@jest/types": "^27.2.4", - "babel-jest": "^27.2.4", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.2.4", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-runner": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "micromatch": "^4.0.4", - "pretty-format": "^27.2.4" - } - }, - "jest-diff": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.4.tgz", - "integrity": "sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" - } - }, - "jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.4.tgz", - "integrity": "sha512-w9XVc+0EDBUTJS4xBNJ7N2JCcWItFd006lFjz77OarAQcQ10eFDBMrfDv2GBJMKlXe9aq0HrIIF51AXcZrRJyg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4" - } - }, - "jest-environment-jsdom": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.4.tgz", - "integrity": "sha512-X70pTXFSypD7AIzKT1mLnDi5hP9w9mdTRcOGOmoDoBrNyNEg4rYm6d4LQWFLc9ps1VnMuDOkFSG0wjSNYGjkng==", - "dev": true, - "requires": { - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4", - "jsdom": "^16.6.0" - } - }, - "jest-environment-node": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.4.tgz", - "integrity": "sha512-ZbVbFSnbzTvhLOIkqh5lcLuGCCFvtG4xTXIRPK99rV2KzQT3kNg16KZwfTnLNlIiWCE8do960eToeDfcqmpSAw==", - "dev": true, - "requires": { - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "jest-mock": "^27.2.4", - "jest-util": "^27.2.4" - } - }, - "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true - }, - "jest-haste-map": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.4.tgz", - "integrity": "sha512-bkJ4bT00T2K+1NZXbRcyKnbJ42I6QBvoDNMTAQQDBhaGNnZreiQKUNqax0e6hLTx7E75pKDeltVu3V1HAdu+YA==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "dependencies": { - "jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-jasmine2": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.4.tgz", - "integrity": "sha512-fcffjO/xLWLVnW2ct3No4EksxM5RyPwHDYu9QU+90cC+/eSMLkFAxS55vkqsxexOO5zSsZ3foVpMQcg/amSeIQ==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.2.4", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.2.4", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "pretty-format": "^27.2.4", - "throat": "^6.0.1" - } - }, - "jest-leak-detector": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.4.tgz", - "integrity": "sha512-SrcHWbe0EHg/bw2uBjVoHacTo5xosl068x2Q0aWsjr2yYuW2XwqrSkZV4lurUop0jhv1709ymG4or+8E4sH27Q==", - "dev": true, - "requires": { - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" - } - }, - "jest-matcher-utils": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.4.tgz", - "integrity": "sha512-nQeLfFAIPPkyhkDfifAPfP/U5wm1x0fLtAzqXZSSKckXDNuk2aaOfQiDYv1Mgf5GY6yOsxfUnvNm3dDjXM+BXw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.2.4", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.4" - } - }, - "jest-message-util": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", - "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.4", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "pretty-format": "^27.2.4", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", - "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "jest-resolve": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.4.tgz", - "integrity": "sha512-IsAO/3+3BZnKjI2I4f3835TBK/90dxR7Otgufn3mnrDFTByOSXclDi3G2XJsawGV4/18IMLARJ+V7Wm7t+J89Q==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "chalk": "^4.0.0", - "escalade": "^3.1.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "resolve": "^1.20.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.4.tgz", - "integrity": "sha512-i5s7Uh9B3Q6uwxLpMhNKlgBf6pcemvWaORxsW1zNF/YCY3jd5EftvnGBI+fxVwJ1CBxkVfxqCvm1lpZkbaoGmg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.2.4" - } - }, - "jest-runner": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.4.tgz", - "integrity": "sha512-hIo5PPuNUyVDidZS8EetntuuJbQ+4IHWxmHgYZz9FIDbG2wcZjrP6b52uMDjAEQiHAn8yn8ynNe+TL8UuGFYKg==", - "dev": true, - "requires": { - "@jest/console": "^27.2.4", - "@jest/environment": "^27.2.4", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.2.4", - "jest-environment-node": "^27.2.4", - "jest-haste-map": "^27.2.4", - "jest-leak-detector": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-runtime": "^27.2.4", - "jest-util": "^27.2.4", - "jest-worker": "^27.2.4", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "dependencies": { - "jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-runtime": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.4.tgz", - "integrity": "sha512-ICKzzYdjIi70P17MZsLLIgIQFCQmIjMFf+xYww3aUySiUA/QBPUTdUqo5B2eg4HOn9/KkUsV0z6GVgaqAPBJvg==", - "dev": true, - "requires": { - "@jest/console": "^27.2.4", - "@jest/environment": "^27.2.4", - "@jest/fake-timers": "^27.2.4", - "@jest/globals": "^27.2.4", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.4", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-mock": "^27.2.4", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.4", - "jest-snapshot": "^27.2.4", - "jest-util": "^27.2.4", - "jest-validate": "^27.2.4", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" - } - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-snapshot": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.4.tgz", - "integrity": "sha512-5DFxK31rYS8X8C6WXsFx8XxrxW3PGa6+9IrUcZdTLg1aEyXDGIeiBh4jbwvh655bg/9vTETbEj/njfZicHTZZw==", - "dev": true, - "requires": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.2.4", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.2.4", - "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.2.4", - "jest-matcher-utils": "^27.2.4", - "jest-message-util": "^27.2.4", - "jest-resolve": "^27.2.4", - "jest-util": "^27.2.4", - "natural-compare": "^1.4.0", - "pretty-format": "^27.2.4", - "semver": "^7.3.2" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "jest-util": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", - "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.4.tgz", - "integrity": "sha512-VMtbxbkd7LHnIH7PChdDtrluCFRJ4b1YV2YJzNwwsASMWftq/HgqiqjvptBOWyWOtevgO3f14wPxkPcLlVBRog==", - "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "leven": "^3.1.0", - "pretty-format": "^27.2.4" - }, - "dependencies": { - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.4.tgz", - "integrity": "sha512-LXC/0+dKxhK7cfF7reflRYlzDIaQE+fL4ynhKhzg8IMILNMuI4xcjXXfUJady7OR4/TZeMg7X8eHx8uan9vqaQ==", - "dev": true, - "requires": { - "@jest/test-result": "^27.2.4", - "@jest/types": "^27.2.4", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.2.4", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peerDependencies": { + "ws": "*" } }, - "js-tokens": { + "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { + "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-parse-even-better-errors": { + "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-stringify-safe": { + "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonparse": { + "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } }, - "kind-of": { + "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "engines": { + "node": ">=0.10.0" } }, - "lines-and-columns": { + "node_modules/lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "load-json-file": { + "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", "pify": "^3.0.0", "strip-bom": "^3.0.0" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" } }, - "locate-path": { + "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "requires": { + "dependencies": { "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "lodash": { + "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.ismatch": { + "node_modules/lodash.ismatch": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", "dev": true }, - "lru-cache": { + "node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "requires": { - "tmpl": "1.0.x" + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "map-obj": { + "node_modules/map-obj": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "meow": { + "node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "requires": { + "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", "decamelize-keys": "^1.1.0", @@ -3497,781 +2058,689 @@ "type-fest": "^0.18.0", "yargs-parser": "^20.2.3" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, "dependencies": { - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", - "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - } + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" } }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "node_modules/meow/node_modules/normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/meow/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", - "dev": true + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "requires": { - "mime-db": "1.49.0" + "engines": { + "node": ">= 0.6" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } }, - "min-indent": { + "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "minimatch": { + "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "minimist-options": { + "node_modules/minimist-options": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, - "requires": { + "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" } }, - "modify-values": { + "node_modules/modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanocolors": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", - "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, - "neo-async": { + "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node-fetch": { + "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { + "dependencies": { "whatwg-url": "^5.0.0" }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true } } }, - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } }, - "node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", - "dev": true + "node_modules/node-gyp-build": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } }, - "normalize-package-data": { + "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "requires": { + "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "requires": { - "path-key": "^3.0.0" + "bin": { + "semver": "bin/semver" } }, - "null-check": { + "node_modules/null-check": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "object-inspect": { + "node_modules/object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "requires": { + "dependencies": { "wrappy": "1" } }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "p-limit": { + "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "requires": { + "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "p-try": { + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "parse-json": { + "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "path-exists": { + "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-type": { + "node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "requires": { + "dependencies": { "pify": "^3.0.0" }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "engines": { + "node": ">=4" } }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "pify": { + "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" + "engines": { + "node": ">=0.10.0" } }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/postcss": { + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", "dev": true, - "requires": { - "find-up": "^4.0.0" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "dev": true - }, - "pretty-format": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", - "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "requires": { - "@jest/types": "^27.2.4", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "bin": { + "prettier": "bin-prettier.js" }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "q": { + "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } }, - "qs": { + "node_modules/qs": { "version": "6.10.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "requires": { + "dependencies": { "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "quick-lru": { + "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "requires": { - "safe-buffer": "^5.1.0" + "engines": { + "node": ">=8" } }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "read-pkg": { + "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "requires": { + "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", "parse-json": "^5.0.0", "type-fest": "^0.6.0" }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "read-pkg-up": { + "node_modules/read-pkg-up": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "requires": { + "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", "type-fest": "^0.8.1" }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" } }, - "readable-stream": { + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "redent": { + "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "requires": { + "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "resolve": { + "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, - "requires": { + "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "rimraf": { + "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "rollup": { - "version": "2.56.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.2.tgz", - "integrity": "sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==", + "node_modules/rollup": { + "version": "3.26.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.3.tgz", + "integrity": "sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==", "dev": true, - "requires": { + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { "fsevents": "~2.3.2" } }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - } - }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "semver": { + "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { - "shebang-regex": "^3.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { + "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { + "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "source-map": { + "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": ">=0.10.0" } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "spdx-correct": { + "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, - "requires": { + "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-exceptions": { + "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, - "spdx-expression-parse": { + "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "requires": { + "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-license-ids": { + "node_modules/spdx-license-ids": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", "dev": true }, - "split": { + "node_modules/split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, - "requires": { + "dependencies": { "through": "2" + }, + "engines": { + "node": "*" } }, - "split2": { + "node_modules/split2": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, - "requires": { + "dependencies": { "readable-stream": "^3.0.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - } - }, - "standard-version": { + "node_modules/standard-version": { "version": "9.3.1", "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.1.tgz", "integrity": "sha512-5qMxXw/FxLouC5nANyx/5RY1kiorJx9BppUso8gN07MG64q2uLRmrPb4KfXp3Ql4s/gxjZwZ89e0FwxeLubGww==", + "deprecated": "standard-version is deprecated. If you're a GitHub user, I recommend https://github.com/googleapis/release-please as an alternative.", "dev": true, - "requires": { + "dependencies": { "chalk": "^2.4.2", "conventional-changelog": "3.1.24", "conventional-changelog-config-spec": "2.1.0", @@ -4288,609 +2757,472 @@ "stringify-package": "^1.0.1", "yargs": "^16.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "bin": { + "standard-version": "bin/cli.js" + }, + "engines": { + "node": ">=10" } }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/standard-version/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "node_modules/standard-version/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/standard-version/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } + "color-name": "1.1.3" } }, - "stringify-package": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", - "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", + "node_modules/standard-version/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/standard-version/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "requires": { - "ansi-regex": "^5.0.0" + "engines": { + "node": ">=0.8.0" } }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "node_modules/standard-version/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "strip-indent": { + "node_modules/standard-version/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "requires": { - "min-indent": "^1.0.0" + "engines": { + "node": ">=4" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/standard-version/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "requires": { - "has-flag": "^4.0.0" + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "node_modules/standard-version/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/standard-version/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "node_modules/standard-version/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/standard-version/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "test-exclude": { + "node_modules/stringify-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", + "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", + "deprecated": "This module is not used anymore, and has been replaced by @npmcli/package-json", + "dev": true + }, + "node_modules/strip-ansi": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" } }, - "text-extensions": { + "node_modules/text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true - }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, - "through": { + "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "through2": { + "node_modules/through2": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, - "requires": { + "dependencies": { "readable-stream": "3" } }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "trim-newlines": { + "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "trim-off-newlines": { + "node_modules/trim-off-newlines": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz", "integrity": "sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg==", - "dev": true - }, - "ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, - "requires": { - "prelude-ls": "~1.1.2" + "engines": { + "node": ">=0.10.0" } }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "typedarray": { + "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { + "node_modules/typescript": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", - "dev": true + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } }, - "uglify-js": { + "node_modules/uglify-js": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", "dev": true, - "optional": true + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } }, - "unfetch": { + "node_modules/unfetch": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "utf-8-validate": { + "node_modules/utf-8-validate": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", - "requires": { + "hasInstallScript": true, + "dependencies": { "node-gyp-build": "^4.2.0" } }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "validate-npm-package-license": { + "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "requires": { + "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/vite": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.7.tgz", + "integrity": "sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==", "dev": true, - "requires": { - "isexe": "^2.0.0" + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.26", + "rollup": "^3.25.2" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { + "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { + "node_modules/ws": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", - "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==" - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "xtend": { + "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4" + } }, - "y18n": { + "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "yargs": { + "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "requires": { + "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", @@ -4898,19 +3230,31 @@ "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "yargs-parser": { + "node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yocto-queue": { + "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index de5202a..729453e 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@master-chief/alpaca", + "name": "@alpacahq/alpaca-ts", "version": "7.0.0", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", @@ -46,9 +46,8 @@ "url": "https://github.com/117/alpaca" }, "scripts": { - "build": "", - "clean": "rimraf dist @types", - "release": "standard-version" + "prepublishOnly": "npm run build", + "build": "rimraf dist && vite build && tsc --build" }, "dependencies": { "abort-controller": "^3.0.0", @@ -63,11 +62,13 @@ "ws": "^7.5.0" }, "devDependencies": { + "@types/node-fetch": "^2.6.4", "@types/qs": "^6.9.5", "@types/ws": "^7.4.0", - "prettier": "^2.8.7", + "prettier": "^2.8.8", "rimraf": "^3.0.2", "standard-version": "^9.1.1", - "typescript": "^4.4.3" + "typescript": "^4.4.3", + "vite": "^4.4.7" } -} +} \ No newline at end of file diff --git a/prettierrc.json b/prettierrc.json index 76821ea..783d291 100644 --- a/prettierrc.json +++ b/prettierrc.json @@ -15,5 +15,6 @@ "htmlWhitespaceSensitivity": "css", "endOfLine": "lf", "embeddedLanguageFormatting": "auto", - "singleAttributePerLine": false + "singleAttributePerLine": false, + "pluginSearchDirs": false } \ No newline at end of file diff --git a/src/client.ts b/src/client.ts index 15975c6..97a2a41 100644 --- a/src/client.ts +++ b/src/client.ts @@ -1,8 +1,8 @@ import * as Types from "./types"; import qs from "qs"; -import isofetch from "isomorphic-unfetch"; import Bottleneck from "bottleneck"; +import isofetch from "isomorphic-unfetch"; import { Endpoints, endpoints } from "./index"; @@ -26,6 +26,15 @@ export class Client { credentials?: Types.DefaultCredentials | Types.OAuthCredentials; } ) { + // fill dummy credentials if not provided + if (params.credentials == undefined) { + params.credentials = { + key: "", + secret: "", + paper: false, + }; + } + // override endpoints if custom provided if ("endpoints" in params) { this.baseURLs = Object.assign(endpoints, params.endpoints); @@ -487,7 +496,10 @@ export class Client { }, }; - private buildURL = (base: string, ...parts: string[]): string => { + private buildURL = ( + base: string, + ...parts: (string | undefined)[] + ): string => { return [base, ...parts].join("/"); }; @@ -498,17 +510,16 @@ export class Client { isJSON?: boolean; }): Promise { let headers: any = {}; + let credentials = this.params.credentials || ({} as any); - if ("access_token" in this.params.credentials) { - headers[ - "Authorization" - ] = `Bearer ${this.params.credentials.access_token}`; + if ("access_token" in credentials) { + headers["Authorization"] = `Bearer ${credentials.access_token}`; } else { - headers["APCA-API-KEY-ID"] = this.params.credentials.key; - headers["APCA-API-SECRET-KEY"] = this.params.credentials.secret; + headers["APCA-API-KEY-ID"] = credentials.key; + headers["APCA-API-SECRET-KEY"] = credentials.secret; } - if (this.params.credentials.paper) { + if (credentials.paper) { params.url = params.url.replace("api.", "paper-api."); } @@ -561,4 +572,4 @@ export class Client { } } -export default Client; +export default Client; \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 874952b..b34847f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,4 @@ export * from "./client"; -export * from "./stream"; export type DataSource = "iex" | "sip"; @@ -30,4 +29,4 @@ export const endpoints: Endpoints = { data: (source: DataSource = "iex") => `wss://stream.data.alpaca.markets/v2/${source}`, }, -}; +}; \ No newline at end of file diff --git a/src/stream.ts b/src/stream.ts deleted file mode 100644 index 826e2cd..0000000 --- a/src/stream.ts +++ /dev/null @@ -1,245 +0,0 @@ -import isBlob from "is-blob"; -import WebSocket from "isomorphic-ws"; -import endpoints from "./endpoints.js"; -import EventEmitter from "eventemitter3"; - -import { - Bar, - Channel, - DataSource, - DefaultCredentials, - Quote, - Trade, - TradeUpdate, - Message, - Endpoints, -} from "./entities.js"; - -export declare interface Events { - open: (stream: AlpacaStream) => void; - close: (stream: AlpacaStream) => void; - authenticated: (stream: AlpacaStream) => void; - success: (message: Message) => void; - error: (message: WebSocket.ErrorEvent) => void; - subscription: (message: Message) => void; - message: (message: Object) => void; - trade_updates: (update: TradeUpdate) => void; - trade: (trade: Trade) => void; - quote: (quote: Quote) => void; - bar: (bar: Bar) => void; -} - -export declare interface AlpacaStream { - on(event: U, listener: Events[U]): this; - once(event: U, listener: Events[U]): this; - emit( - event: U, - ...args: Parameters - ): boolean; -} - -export class AlpacaStream extends EventEmitter { - private host: string; - private connection: WebSocket; - private authenticated: boolean; - private baseURLs: Endpoints = endpoints; - - constructor( - protected params: { - credentials: DefaultCredentials; - type: "account" | "market_data"; - source?: DataSource; - endpoints?: Endpoints | Map; - } - ) { - // construct EventEmitter - super(); - - // override endpoints if custom provided - if ("endpoints" in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - - if ( - // if not specified - !("paper" in params.credentials) && - // and live key isn't already provided - !("key" in params.credentials && params.credentials.key.startsWith("A")) - ) { - params.credentials["paper"] = true; - } - - // assign the host we will connect to - switch (params.type) { - case "account": - this.host = params.credentials.paper - ? this.baseURLs.websocket.account.replace("api.", "paper-api.") - : this.baseURLs.websocket.account; - break; - case "market_data": - this.host = this.baseURLs.websocket.market_data(this.params.source); - break; - default: - this.host = "unknown"; - } - - this.connection = new WebSocket(this.host); - this.connection.onopen = () => { - let message = {}; - - switch (this.params.type) { - case "account": - message = { - action: "authenticate", - data: { - key_id: params.credentials.key, - secret_key: params.credentials.secret, - }, - }; - break; - case "market_data": - // {"action":"auth","key":"PK*****","secret":"*************"} - message = { action: "auth", ...params.credentials }; - break; - } - - this.connection.send(JSON.stringify(message)); - - // pass through - this.emit("open", this); - }; - - // pass through - this.connection.onclose = () => this.emit("close", this); - - this.connection.onmessage = async (event: any) => { - let data = event.data; - - if (isBlob(data)) { - data = await event.data.text(); - } else if (data instanceof ArrayBuffer) { - data = String.fromCharCode(...new Uint8Array(event.data)); - } - - let parsed = JSON.parse(data), - messages = this.params.type == "account" ? [parsed] : parsed; - - messages.forEach((message: any) => { - // pass the message - this.emit("message", message); - - // pass authenticated event - if ("T" in message && message.msg == "authenticated") { - this.authenticated = true; - this.emit("authenticated", this); - } else if ("stream" in message && message.stream == "authorization") { - if (message.data.status == "authorized") { - this.authenticated = true; - this.emit("authenticated", this); - } - } - - // pass trade_updates event - if ("stream" in message && message.stream == "trade_updates") { - // todo: parse message data - this.emit("trade_updates", message.data); - } - - // pass trade, quote, bar event - const x: { [index: string]: keyof Events } = { - success: "success", - subscription: "subscription", - error: "error", - t: "trade", - q: "quote", - b: "bar", - }; - - if ("T" in message) { - this.emit(x[message.T.split(".")[0]], message); - } - }); - }; - - // pass the error - this.connection.onerror = (err: WebSocket.ErrorEvent) => { - this.emit("error", err); - }; - } - - /** - * Retrieve the underlying WebSocket connection AlpacaStream uses. - * Now callers can read and modify properties of the web socket - * i.e., close the websocket with AlpacaStream.getConnection().close(). - * @returns a WebSocket object - */ - getConnection() { - return this.connection; - } - - /** - * Subscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - subscribe(channel: Channel, symbols: string[] = []) { - switch (this.params.type) { - case "account": - // {"action":"listen","data":{"streams":["trade_updates"]}} - this.send( - JSON.stringify({ action: "listen", data: { streams: [channel] } }) - ); - break; - case "market_data": - // {"action":"subscribe","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["AAPL","VOO"]} - let message: any = { action: "subscribe" }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - - return this; - } - - /** - * Unsubscribe to an account or data stream channel. - * @param channel trades, quotes, bars, trade_updates - * @param symbols only use with data stream ex. [ "AAPL", "TSLA", ... ] - */ - unsubscribe(channel: Channel, symbols: string[] = []) { - switch (this.params.type) { - case "account": - // {"action":"unlisten","data":{"streams":["trade_updates"]}} - this.send( - JSON.stringify({ action: "unlisten", data: { streams: [channel] } }) - ); - break; - case "market_data": - // {"action":"unsubscribe","trades":["AAPL"],"quotes":["AMD","CLDR"],"bars":["AAPL","VOO"]} - let message: any = { action: "unsubscribe" }; - message[channel] = symbols; - this.send(JSON.stringify(message)); - break; - } - - return this; - } - - private send(message: any) { - // don't bother if we aren't authenticated - if (!this.authenticated) { - throw new Error("not authenticated"); - } - - // if the message is in object form, stringify it for the user - if (typeof message == "object") { - message = JSON.stringify(message); - } - - // send it off - this.connection.send(message); - - // chainable return - return this; - } -} diff --git a/tsconfig.json b/tsconfig.json index b470ba7..f4bf300 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,22 @@ { "compilerOptions": { - "target": "esnext", - "module": "esnext", - "moduleResolution": "node", - "rootDir": "./src", - "noImplicitThis": true, + "incremental": true, + "allowSyntheticDefaultImports": true, + "declaration": true, "esModuleInterop": true, - "removeComments": false, - "noImplicitAny": true, - "allowJs": true, + "resolveJsonModule": true, + "jsx": "react", + "lib": ["ES2016", "DOM", "ESNext"], + "types": ["node"], + "module": "ES6", + "moduleResolution": "node", + "noImplicitAny": false, "noUnusedLocals": true, - "allowSyntheticDefaultImports": true, - "sourceMap": false, - "typeRoots": ["./node_modules/@types/"] + "outDir": "dist", + "sourceMap": true, + "strict": true, + "target": "ES6", + "baseUrl": "src" }, - "include": ["src/*.ts"], - "exclude": ["node_modules", "dist"], - "compileOnSave": false -} + "include": ["src"] +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..3752350 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from "vite"; + +export default defineConfig({ + build: { + lib: { + entry: "./src/index.ts", + name: "@alpacahq/alpaca-ts", + }, + rollupOptions: { + external: ["@alpacahq/alpaca-ts"], + output: { + exports: "named", + globals: { + "@alpacahq/alpaca-ts": "AlpacaTS", + }, + }, + }, + }, +}); \ No newline at end of file From 598f44b87076e763638ca38b3c4d5697a49a66d3 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 24 Jul 2023 13:17:15 -0600 Subject: [PATCH 08/55] no commit message --- .vscode/settings.json | 4 -- CHANGELOG.md | 118 ------------------------------------------ 2 files changed, 122 deletions(-) delete mode 100644 .vscode/settings.json delete mode 100644 CHANGELOG.md diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 3935e6b..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "prettier.singleQuote": true, - "prettier.trailingComma": "all" -} diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 7f3c1b4..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,118 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. - -### [6.3.20](https://github.com/117/alpaca/compare/v6.3.19...v6.3.20) (2022-06-10) - -### [6.3.19](https://github.com/117/alpaca/compare/v6.3.18...v6.3.19) (2022-06-10) - -- Add support for custom endpoint urls (#105) - -### [6.3.18](https://github.com/117/alpaca/compare/v6.3.17...v6.3.18) (2022-05-09) - -### [6.3.17](https://github.com/117/alpaca/compare/v6.3.16...v6.3.17) (2022-04-06) - -### [6.3.16](https://github.com/117/alpaca/compare/v6.3.15...v6.3.16) (2022-03-25) - -### [6.3.15](https://github.com/117/alpaca/compare/v6.3.14...v6.3.15) (2022-03-16) - -### [6.3.14](https://github.com/117/alpaca/compare/v6.3.12...v6.3.14) (2022-03-12) - -### [6.3.13](https://github.com/117/alpaca/compare/v6.3.12...v6.3.13) (2022-03-12) - -### [6.3.12](https://github.com/117/alpaca/compare/v6.3.11...v6.3.12) (2022-02-24) - -### [6.3.11](https://github.com/117/alpaca/compare/v6.3.10...v6.3.11) (2021-11-11) - -- Expand timeframe options for getBars [#88](https://github.com/117/alpaca/issues/88). - -### [6.3.10](https://github.com/117/alpaca/compare/v6.3.9...v6.3.10) (2021-11-11) - -- Add supports for qty and percentage params [#87](https://github.com/117/alpaca/issues/87). - -### [6.3.9](https://github.com/117/alpaca/compare/v6.3.8...v6.3.9) (2021-10-15) - -### Bug Fixes - -- correct `both` with `all` adjustment param ([a156354](https://github.com/117/alpaca/commit/a1563547c823213964cba8c9bf1aa3de9bc2c3e1)) - -### [6.3.8](https://github.com/117/alpaca/compare/v6.3.7...v6.3.8) (2021-10-15) - -- Add new adjustment param to getBarsV2 [#84](https://github.com/117/alpaca/pull/85). - -### [6.3.7](https://github.com/117/alpaca/compare/v6.3.6...v6.3.7) (2021-10-10) - -- Update raw order to include order_class [#84](https://github.com/117/alpaca/pull/84). - -### [6.3.6](https://github.com/117/alpaca/compare/v6.3.4...v6.3.6) (2021-10-04) - -- Reverted [#81](https://github.com/117/alpaca/pull/80). - -### [6.3.4](https://github.com/117/alpaca/compare/v6.3.3...v6.3.4) (2021-10-02) - -### [6.3.3](https://github.com/117/alpaca/compare/v6.3.2...v6.3.3) (2021-10-02) - -- Default to empty map if null [#81](https://github.com/117/alpaca/pull/80). -- Upgraded dev dependency jest and ts-jest. - -### [6.3.2](https://github.com/117/alpaca/compare/v6.3.1...v6.3.2) (2021-09-13) - -- Updated TradeUpdate field [#80](https://github.com/117/alpaca/pull/80). - -### [6.3.1](https://github.com/117/alpaca/compare/v6.3.0...v6.3.1) (2021-08-31) - -### [6.3.0](https://github.com/117/alpaca/compare/v6.2.7...v6.3.0) (2021-08-31) - -- Make fields nullable [#78](https://github.com/117/alpaca/issues/78). - -### [6.2.7](https://github.com/117/alpaca/compare/v6.2.6...v6.2.7) (2021-08-31) - -### [6.2.6](https://github.com/117/alpaca/compare/v6.2.5...v6.2.6) (2021-08-17) - -- Use alternative `Blob` check. [#71](https://github.com/117/alpaca/issues/71). - -### [6.2.5](https://github.com/117/alpaca/compare/v6.2.1...v6.2.5) (2021-07-26) - -- Change return types to `boolean` as requested [#76](https://github.com/117/alpaca/issues/76). - -### [6.2.4](https://github.com/117/alpaca/compare/v6.2.3...v6.2.4) (2021-06-27) - -- Support `ArrayBuffer` messages [#75](https://github.com/117/alpaca/pull/75). - -### [6.2.3](https://github.com/117/alpaca/compare/v6.2.1...v6.2.3) (2021-06-18) - -- Update some dependencies. - -### [6.2.2](https://github.com/117/alpaca/compare/v6.2.1...v6.2.2) (2021-05-21) - -- Fixed `AlpacaStream` issue [#71](https://github.com/117/alpaca/issues/71). - -### [6.2.1](https://github.com/117/alpaca/compare/v6.2.0...v6.2.1) (2021-05-18) - -### [6.2.0](https://github.com/117/alpaca/compare/v6.1.9...v6.2.0) (2021-05-18) - -- Added - [getSnapshot](https://alpaca.markets/docs/api-documentation/api-v2/market-data/alpaca-data-api-v2/historical/#snapshot---ticker) - method. -- Added - [getSnapshots](https://alpaca.markets/docs/api-documentation/api-v2/market-data/alpaca-data-api-v2/historical/#snapshot---multiple-tickers) - method. - -### [6.1.5](https://github.com/117/alpaca/compare/v6.1.6...v6.1.5) (2021-05-18) - -- Fixed PUT request [issue](https://github.com/117/alpaca/issues/70). - -### [6.1.4](https://github.com/117/alpaca/compare/v6.1.3...v6.1.4) (2021-05-09) - -- Upgrade lodash to version 4.17.21 or later. - [CVE-2021-23337](https://github.com/advisories/GHSA-35jh-r3h4-6jhm) -- Upgrade hosted-git-info to version 2.8.9 or later. - [CVE-2021-23362](https://github.com/advisories/GHSA-43f8-2h32-f4cj) - -### [6.1.3](https://github.com/117/alpaca/compare/v6.1.2...v6.1.3) (2021-03-30) - -### [6.1.2](https://github.com/117/alpaca/compare/v6.1.1...v6.1.2) (2021-03-30) - -### [6.1.1](https://github.com/117/alpaca/compare/v6.0.1...v6.1.1) (2021-03-20) - -### [6.0.2](https://github.com/117/alpaca/compare/v6.0.1...v6.0.2) (2021-03-14) From 9699f901c1fc477f096ad3d4318210fcfa977754 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 24 Jul 2023 13:18:56 -0600 Subject: [PATCH 09/55] no commit message --- .github/workflows/test.yml | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 19247ed..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: test -on: - push: - branches: [main] - pull_request: - branches: [main] -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [14.x] - steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - run: npm ci - - run: npm test From eb4a766291ba7939219f49bab1fd1e9277c63193 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 24 Jul 2023 13:20:39 -0600 Subject: [PATCH 10/55] refactor: Update package name from "@alpacahq/alpaca-ts" to "@master-chief/alpaca-ts" --- package.json | 4 ++-- vite.config.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 729453e..df4da39 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@alpacahq/alpaca-ts", + "name": "@master-chief/alpaca-ts", "version": "7.0.0", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", @@ -43,7 +43,7 @@ ], "repository": { "type": "git", - "url": "https://github.com/117/alpaca" + "url": "https://github.com/alpacahq/alpaca-ts" }, "scripts": { "prepublishOnly": "npm run build", diff --git a/vite.config.ts b/vite.config.ts index 3752350..98e97ea 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,14 +4,14 @@ export default defineConfig({ build: { lib: { entry: "./src/index.ts", - name: "@alpacahq/alpaca-ts", + name: "@master-chief/alpaca-ts", }, rollupOptions: { - external: ["@alpacahq/alpaca-ts"], + external: ["@master-chief/alpaca-ts"], output: { exports: "named", globals: { - "@alpacahq/alpaca-ts": "AlpacaTS", + "@master-chief": "AlpacaTS", }, }, }, From 33fc25d06d1fdb605c66ab9c608aecf96db8069d Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 24 Jul 2023 14:04:37 -0600 Subject: [PATCH 11/55] no commit message --- package-lock.json | 155 ++++++++--- package.json | 5 +- src/client.ts | 647 ++++++++++++++++++++++------------------------ vite.config.ts | 19 -- 4 files changed, 429 insertions(+), 397 deletions(-) delete mode 100644 vite.config.ts diff --git a/package-lock.json b/package-lock.json index c43deef..3d9e815 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "@alpacahq/alpaca-ts", - "version": "7.0.0", + "name": "@master-chief/alpaca-ts", + "version": "7.0.0-alpha", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@alpacahq/alpaca-ts", - "version": "7.0.0", + "name": "@master-chief/alpaca-ts", + "version": "7.0.0-alpha", "license": "ISC", "dependencies": { "abort-controller": "^3.0.0", @@ -16,6 +16,7 @@ "is-blob": "^2.1.0", "isomorphic-unfetch": "^3.1.0", "isomorphic-ws": "^4.0.1", + "node-fetch": "^3.3.1", "qs": "^6.9.6", "utf-8-validate": "^5.0.4", "ws": "^7.5.0" @@ -1183,6 +1184,14 @@ "node": ">=8" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -1395,6 +1404,28 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -1446,6 +1477,17 @@ "node": ">= 6" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/fs-access": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", @@ -1874,6 +1916,25 @@ "unfetch": "^4.2.0" } }, + "node_modules/isomorphic-unfetch/node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", @@ -2214,42 +2275,39 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", "dependencies": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/node-gyp-build": { @@ -3009,6 +3067,11 @@ "readable-stream": "3" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -3144,6 +3207,28 @@ } } }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/package.json b/package.json index df4da39..92e6d1a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.0", + "version": "7.0.0-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ @@ -47,7 +47,7 @@ }, "scripts": { "prepublishOnly": "npm run build", - "build": "rimraf dist && vite build && tsc --build" + "build": "rimraf dist && tsc --build" }, "dependencies": { "abort-controller": "^3.0.0", @@ -57,6 +57,7 @@ "is-blob": "^2.1.0", "isomorphic-unfetch": "^3.1.0", "isomorphic-ws": "^4.0.1", + "node-fetch": "^3.3.1", "qs": "^6.9.6", "utf-8-validate": "^5.0.4", "ws": "^7.5.0" diff --git a/src/client.ts b/src/client.ts index 97a2a41..4b96335 100644 --- a/src/client.ts +++ b/src/client.ts @@ -2,12 +2,10 @@ import * as Types from "./types"; import qs from "qs"; import Bottleneck from "bottleneck"; -import isofetch from "isomorphic-unfetch"; +import fetch from "isomorphic-unfetch"; import { Endpoints, endpoints } from "./index"; -const unifetch = typeof fetch !== "undefined" ? fetch : isofetch; - export class Client { private baseURLs: Endpoints = endpoints; private limiter = new Bottleneck({ @@ -60,439 +58,404 @@ export class Client { } v2 = { - trading: { - account: { - activity: { - list: async ( - params: Types.GetAccountActivities - ): Promise => { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params["activity_types"].join(","); - } + account: { + activity: { + list: async ( + params: Types.GetAccountActivities + ): Promise => { + if (params.activity_types && Array.isArray(params.activity_types)) { + params.activity_types = params["activity_types"].join(","); + } - return await this.request({ - method: "GET", - data: { ...params, activity_type: undefined }, - url: this.buildURL( - this.baseURLs.rest.v2, - "account/activities", - params.activity_type ? "/".concat(params.activity_type) : "" - ), - }); - }, - }, - authenticated: async (): Promise => - this.v2.trading.account - .get() - .then(() => true) - .catch(() => false), - configuration: { - get: (): Promise => - this.request({ - method: "GET", - url: this.buildURL( - this.baseURLs.rest.v2, - "account/configurations" - ), - }), - update: ( - params: Types.UpdateAccountConfigurations - ): Promise => - this.request({ - method: "PATCH", - url: this.baseURLs.rest.v2.concat("/account/configurations"), - data: params, - }), - }, - get: (): Promise => - this.request({ + return await this.request({ method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "account"), - }), - portfolio: { - history: ( - params: Types.GetPortfolioHistory - ): Promise => - this.request({ - method: "GET", - data: params, - url: this.buildURL( - this.baseURLs.rest.v2, - "account/portfolio/history" - ), - }), + data: { ...params, activity_type: undefined }, + url: this.buildURL( + this.baseURLs.rest.v2, + "account/activities", + params.activity_type ? "/".concat(params.activity_type) : "" + ), + }); }, }, - asset: { - get: (params: Types.GetAsset): Promise => + authenticated: async (): Promise => + this.v2.account + .get() + .then(() => true) + .catch(() => false), + configuration: { + get: (): Promise => this.request({ method: "GET", - url: this.buildURL( - this.baseURLs.rest.v2, - "assets", - params.asset_id_or_symbol - ), + url: this.buildURL(this.baseURLs.rest.v2, "account/configurations"), }), - list: (params?: Types.GetAssets): Promise => + update: ( + params: Types.UpdateAccountConfigurations + ): Promise => this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "assets"), + method: "PATCH", + url: this.baseURLs.rest.v2.concat("/account/configurations"), data: params, }), }, - market: { - news: (params: Types.GetNews): Promise => + get: (): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "account"), + }), + portfolio: { + history: ( + params: Types.GetPortfolioHistory + ): Promise => this.request({ method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "account/news"), data: params, + url: this.buildURL( + this.baseURLs.rest.v2, + "account/portfolio/history" + ), }), - /** + }, + }, + asset: { + get: (params: Types.GetAsset): Promise => + this.request({ + method: "GET", + url: this.buildURL( + this.baseURLs.rest.v2, + "assets", + params.asset_id_or_symbol + ), + }), + list: (params?: Types.GetAssets): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "assets"), + data: params, + }), + }, + market: { + news: (params: Types.GetNews): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "account/news"), + data: params, + }), + /** announcements: ( params: Types.GetAnnouncements ): Promise => null, **/ - calendar: async ( - params?: Types.GetCalendar - ): Promise => { - return this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "/calendar"), - data: params, - }); - }, - clock: async (): Promise => { - return await this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "/clock"), - }); - }, + calendar: async ( + params?: Types.GetCalendar + ): Promise => { + return this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "/calendar"), + data: params, + }); }, - order: { - create: (params: Types.PlaceOrder): Promise => - this.request({ - method: "POST", - url: `${this.baseURLs.rest.v2}/orders`, - data: params, - }), - get: (params: Types.GetOrder): Promise => + clock: async (): Promise => { + return await this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "/clock"), + }); + }, + }, + order: { + create: (params: Types.PlaceOrder): Promise => + this.request({ + method: "POST", + url: `${this.baseURLs.rest.v2}/orders`, + data: params, + }), + get: (params: Types.GetOrder): Promise => + this.request({ + method: "GET", + url: this.buildURL( + this.baseURLs.rest.v2, + "orders", + params.order_id || params.client_order_id + ), + data: { nested: params.nested }, + }), + list: async (params: Types.GetOrders = {}): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "orders"), + data: { + ...params, + symbols: params.symbols ? params.symbols.join(",") : undefined, + }, + }), + cancel: (params: Types.CancelOrder): Promise => + this.request({ + method: "DELETE", + url: this.buildURL(this.baseURLs.rest.v2, "orders", params.order_id), + isJSON: false, + }), + cancel_all: (): Promise => + this.request({ + method: "DELETE", + url: this.buildURL(this.baseURLs.rest.v2, "orders"), + }), + replace: (params: Types.ReplaceOrder): Promise => + this.request({ + method: "PATCH", + url: this.buildURL(this.baseURLs.rest.v2, "orders", params.order_id), + data: params, + }), + }, + position: { + close: (params: Types.ClosePosition): Promise => + this.request({ + method: "DELETE", + url: this.buildURL(this.baseURLs.rest.v2, "positions", params.symbol), + data: params, + }), + close_all: (params: Types.ClosePositions): Promise => + this.request({ + method: "DELETE", + url: this.buildURL( + this.baseURLs.rest.v2, + "positions", + "?cancel_orders=", + JSON.stringify(params.cancel_orders ?? false) + ), + }), + get: async (params: Types.GetPosition): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "positions", params.symbol), + }), + list: async (): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "positions"), + }), + }, + watchlist: { + add: (params: Types.AddToWatchList): Promise => + this.request({ + method: "POST", + url: `${this.baseURLs.rest.v2}/watchlists/${params.uuid}`, + data: params, + }), + create: async ( + params: Types.CreateWatchList + ): Promise => + this.request({ + method: "POST", + url: `${this.baseURLs.rest.v2}/watchlists`, + data: params, + }), + delete: (params: Types.DeleteWatchList): Promise => + this.request({ + method: "DELETE", + url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), + }), + get: async (params: Types.GetWatchList): Promise => + this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), + }), + list: async (): Promise => + await this.request({ + method: "GET", + url: this.buildURL(this.baseURLs.rest.v2, "watchlists"), + }), + remove: (params: Types.RemoveFromWatchList): Promise => + this.request({ + method: "DELETE", + url: this.buildURL( + this.baseURLs.rest.v2, + "watchlists", + params.uuid, + params.symbol + ), + }), + update: (params: Types.UpdateWatchList): Promise => + this.request({ + method: "PUT", + url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), + data: params, + }), + }, + stocks: { + trades: { + symbol: (params: any): Promise => this.request({ method: "GET", - url: this.buildURL( - this.baseURLs.rest.v2, - "orders", - params.order_id || params.client_order_id - ), - data: { nested: params.nested }, + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/trades`, + data: params, }), - list: async (params: Types.GetOrders = {}): Promise => + get: (params: any): Promise => this.request({ method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "orders"), - data: { - ...params, - symbols: params.symbols ? params.symbols.join(",") : undefined, - }, - }), - cancel: (params: Types.CancelOrder): Promise => - this.request({ - method: "DELETE", - url: this.buildURL( - this.baseURLs.rest.v2, - "orders", - params.order_id - ), - isJSON: false, - }), - cancel_all: (): Promise => - this.request({ - method: "DELETE", - url: this.buildURL(this.baseURLs.rest.v2, "orders"), - }), - replace: (params: Types.ReplaceOrder): Promise => - this.request({ - method: "PATCH", - url: this.buildURL( - this.baseURLs.rest.v2, - "orders", - params.order_id - ), + url: `${this.baseURLs.rest.v2}/stocks/trades`, data: params, }), + latest: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/trades/latest`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/trades/latest`, + data: params, + }), + }, }, - position: { - close: (params: Types.ClosePosition): Promise => + quotes: { + symbol: (params: any): Promise => this.request({ - method: "DELETE", - url: this.buildURL( - this.baseURLs.rest.v2, - "positions", - params.symbol - ), + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/quotes`, data: params, }), - close_all: (params: Types.ClosePositions): Promise => + get: (params: any): Promise => this.request({ - method: "DELETE", - url: this.buildURL( - this.baseURLs.rest.v2, - "positions", - "?cancel_orders=", - JSON.stringify(params.cancel_orders ?? false) - ), + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/quotes`, + data: params, }), - get: async (params: Types.GetPosition): Promise => + latest: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/quotes/latest`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/quotes/latest`, + data: params, + }), + }, + }, + bars: { + symbol: (params: any): Promise => this.request({ method: "GET", - url: this.buildURL( - this.baseURLs.rest.v2, - "positions", - params.symbol - ), + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/bars`, + data: params, }), - list: async (): Promise => + get: (params: any): Promise => this.request({ method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "positions"), + url: `${this.baseURLs.rest.v2}/stocks/bars`, + data: params, }), + latest: { + symbol: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/bars/latest`, + data: params, + }), + get: (params: any): Promise => + this.request({ + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/bars/latest`, + data: params, + }), + }, }, - watchlist: { - add: (params: Types.AddToWatchList): Promise => + snapshot: { + symbol: (params: any): Promise => this.request({ - method: "POST", - url: `${this.baseURLs.rest.v2}/watchlists/${params.uuid}`, + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/snapshot`, data: params, }), - create: async ( - params: Types.CreateWatchList - ): Promise => + get: (params: any): Promise => this.request({ - method: "POST", - url: `${this.baseURLs.rest.v2}/watchlists`, + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/snapshots`, data: params, }), - delete: (params: Types.DeleteWatchList): Promise => - this.request({ - method: "DELETE", - url: this.buildURL( - this.baseURLs.rest.v2, - "watchlists", - params.uuid - ), - }), - get: async (params: Types.GetWatchList): Promise => + }, + auctions: { + symbol: (params: any): Promise => this.request({ method: "GET", - url: this.buildURL( - this.baseURLs.rest.v2, - "watchlists", - params.uuid - ), - }), - list: async (): Promise => - await this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "watchlists"), - }), - remove: (params: Types.RemoveFromWatchList): Promise => - this.request({ - method: "DELETE", - url: this.buildURL( - this.baseURLs.rest.v2, - "watchlists", - params.uuid, - params.symbol - ), + url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/auctions`, + data: params, }), - update: (params: Types.UpdateWatchList): Promise => + get: (params: any): Promise => this.request({ - method: "PUT", - url: this.buildURL( - this.baseURLs.rest.v2, - "watchlists", - params.uuid - ), + method: "GET", + url: `${this.baseURLs.rest.v2}/stocks/auctions`, data: params, }), }, }, - market_data: { - stocks: { + crypto: { + us: { trades: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/trades`, - data: params, - }), get: (params: any): Promise => this.request({ method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/trades`, + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/trades`, data: params, }), - latest: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/trades/latest`, - data: params, - }), + }, + latest: { + trades: { get: (params: any): Promise => this.request({ method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/trades/latest`, + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/trades`, data: params, }), }, - }, - quotes: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/quotes`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/quotes`, - data: params, - }), - latest: { - symbol: (params: any): Promise => + quotes: { + get: (params: any): Promise => this.request({ method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/quotes/latest`, + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/quotes`, data: params, }), + }, + bars: { get: (params: any): Promise => this.request({ method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/quotes/latest`, + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/bars`, data: params, }), }, }, bars: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/bars`, - data: params, - }), get: (params: any): Promise => this.request({ method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/bars`, + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/bars`, data: params, }), - latest: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/bars/latest`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/bars/latest`, - data: params, - }), - }, }, - snapshot: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/snapshot`, - data: params, - }), + snapshots: { get: (params: any): Promise => this.request({ method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/snapshots`, + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/snapshots`, data: params, }), }, - auctions: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/auctions`, - data: params, - }), + latest_orderbooks: { get: (params: any): Promise => this.request({ method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/auctions`, + url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/orderbooks`, data: params, }), }, }, - crypto: { - us: { - trades: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/trades`, - data: params, - }), - }, - latest: { - trades: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/trades`, - data: params, - }), - }, - quotes: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/quotes`, - data: params, - }), - }, - bars: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/bars`, - data: params, - }), - }, - }, - bars: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/bars`, - data: params, - }), - }, - snapshots: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/snapshots`, - data: params, - }), - }, - latest_orderbooks: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/orderbooks`, - data: params, - }), - }, - }, - }, }, }; @@ -541,7 +504,7 @@ export class Client { } const call = () => - unifetch(params.url.concat(query), { + fetch(params.url.concat(query), { method: params.method, headers, body: JSON.stringify(params.data), @@ -554,7 +517,9 @@ export class Client { try { resp = await func(); - if (!(params.isJSON == undefined ? true : params.isJSON)) { + const { isJSON } = params; + + if (!(params.isJSON != undefined ? isJSON : true)) { return resp.ok as any; } diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index 98e97ea..0000000 --- a/vite.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineConfig } from "vite"; - -export default defineConfig({ - build: { - lib: { - entry: "./src/index.ts", - name: "@master-chief/alpaca-ts", - }, - rollupOptions: { - external: ["@master-chief/alpaca-ts"], - output: { - exports: "named", - globals: { - "@master-chief": "AlpacaTS", - }, - }, - }, - }, -}); \ No newline at end of file From dc2bddb84666e1171e14cb38ace93d717e002774 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 24 Jul 2023 14:18:57 -0600 Subject: [PATCH 12/55] no commit message --- package.json | 2 +- src/client.ts | 2 +- src/index.ts | 2 +- src/types.ts | 4 ++-- tsconfig.json | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 92e6d1a..994f5a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.0-alpha", + "version": "7.0.1-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/src/client.ts b/src/client.ts index 4b96335..84c461a 100644 --- a/src/client.ts +++ b/src/client.ts @@ -4,7 +4,7 @@ import qs from "qs"; import Bottleneck from "bottleneck"; import fetch from "isomorphic-unfetch"; -import { Endpoints, endpoints } from "./index"; +import { Endpoints, endpoints } from "./index.js"; export class Client { private baseURLs: Endpoints = endpoints; diff --git a/src/index.ts b/src/index.ts index b34847f..0120c3b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -export * from "./client"; +export * from "./client.js"; export type DataSource = "iex" | "sip"; diff --git a/src/types.ts b/src/types.ts index cbb8b13..77c562a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,4 +1,4 @@ -import { DataSource } from "./index"; +import { DataSource } from "./index.js"; export interface CancelOrder { order_id: string; @@ -966,4 +966,4 @@ export interface GetOrder { order_id?: string; client_order_id?: string; nested?: boolean; -} +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index f4bf300..484c2a5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,6 @@ "declaration": true, "esModuleInterop": true, "resolveJsonModule": true, - "jsx": "react", "lib": ["ES2016", "DOM", "ESNext"], "types": ["node"], "module": "ES6", @@ -13,10 +12,11 @@ "noImplicitAny": false, "noUnusedLocals": true, "outDir": "dist", - "sourceMap": true, + "sourceMap": false, "strict": true, "target": "ES6", - "baseUrl": "src" + "baseUrl": "src", + "declarationDir": "dist/@types" }, "include": ["src"] } \ No newline at end of file From 17410b983ea75566159b18d43ae5d72b00f806f7 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 24 Jul 2023 16:12:46 -0600 Subject: [PATCH 13/55] remove unused types --- .gitignore | 2 + package.json | 2 +- src/client.ts | 2 +- src/types.ts | 557 +------------------------------------------------- tsconfig.json | 3 +- 5 files changed, 10 insertions(+), 556 deletions(-) diff --git a/.gitignore b/.gitignore index adb2c19..1d6d62a 100644 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,5 @@ typings/ # TernJS port file .tern-port + +dist \ No newline at end of file diff --git a/package.json b/package.json index 994f5a2..ae2f6cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.1-alpha", + "version": "7.0.2-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/src/client.ts b/src/client.ts index 84c461a..9e6c13b 100644 --- a/src/client.ts +++ b/src/client.ts @@ -194,7 +194,7 @@ export class Client { url: this.buildURL(this.baseURLs.rest.v2, "orders", params.order_id), isJSON: false, }), - cancel_all: (): Promise => + cancel_all: (): Promise => this.request({ method: "DELETE", url: this.buildURL(this.baseURLs.rest.v2, "orders"), diff --git a/src/types.ts b/src/types.ts index 77c562a..6569c92 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,3 @@ -import { DataSource } from "./index.js"; - export interface CancelOrder { order_id: string; } @@ -48,56 +46,10 @@ export interface GetCalendar { end?: Date; } -export interface GetTrades { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; -} - -export interface GetQuotes { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; -} - -export interface GetSnapshot { - symbol: string; -} - -export interface GetSnapshots { - symbols: string[]; -} - -export interface GetBars { - symbol: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; - timeframe: BarsTimeframe; - adjustment?: "all" | "dividend" | "raw" | "split"; -} - -export interface GetBars_v1 { - timeframe: BarsV1Timeframe; - symbols: string[]; - limit?: number; - start?: Date; - end?: Date; - after?: Date; - until?: Date; -} - -export interface GetLastQuote_v1 { - symbol: string; -} - -export interface GetLastTrade_v1 { - symbol: string; +export interface OrderCancellation { + id: string; + status: number; + order: Order; } export interface GetOrders { @@ -162,16 +114,6 @@ export interface ReplaceOrder { client_order_id?: string; } -export type BarsV1Timeframe = "1Min" | "5Min" | "15Min" | "1Day"; - -/** Also supports arbitrary minute, hour, and day values. E.g., '37Min', '6Hour', '3Day' */ -export type BarsTimeframe = - | BarsV1Timeframe - | "30Min" - | "1Hour" - | "2Hour" - | "4Hour"; - export interface UpdateAccountConfigurations { dtbp_check?: string; no_shorting?: boolean; @@ -179,12 +121,6 @@ export interface UpdateAccountConfigurations { trade_confirm_email?: string; } -export interface GetLatestTrade { - symbol: string; - feed?: DataSource; - limit?: number; -} - export interface UpdateWatchList { uuid: string; name?: string; @@ -202,14 +138,6 @@ export interface GetNews { page_token?: string; } -export interface GetCryptoTrades { - symbols: string; - start: Date; - end: Date; - limit?: number; - page_token?: string; -} - export interface DefaultCredentials { key: string; secret: string; @@ -219,34 +147,6 @@ export interface OAuthCredentials { access_token: String; paper?: boolean; } -export interface RawAccount { - account_blocked: boolean; - account_number: string; - buying_power: string; - cash: string; - created_at: string; - currency: string; - daytrade_count: number; - daytrading_buying_power: string; - equity: string; - id: string; - initial_margin: string; - last_equity: string; - last_maintenance_margin: string; - long_market_value: string; - maintenance_margin: string; - multiplier: string; - pattern_day_trader: boolean; - portfolio_value: string; - regt_buying_power: string; - short_market_value: string; - shorting_enabled: boolean; - sma: string; - status: string; - trade_suspended_by_user: boolean; - trading_blocked: boolean; - transfers_blocked: boolean; -} export type AccountStatus = | "ONBOARDING" | "SUBMISSION_FAILED" @@ -291,33 +191,6 @@ export interface AccountConfigurations { trade_confirm_email: "all" | "none"; } -export interface AccountUpdate { - id: string; - created_at: string; - updated_at: string; - deleted_at: any; - status: string; - currency: string; - cash: string; - cash_withdrawable: string; -} - -export interface AggregateMinute { - ev: string; - T: string; - v: number; - av: number; - op: number; - vw: number; - o: number; - c: number; - h: number; - l: number; - a: number; - s: number; - e: number; -} - export type AssetExchange = | "AMEX" | "ARCA" @@ -345,309 +218,12 @@ export interface Calendar { close: string; } -export interface RawClock { - timestamp: string; - is_open: boolean; - next_open: string; - next_close: string; -} export interface Clock { - raw(): RawClock; timestamp: Date; is_open: boolean; next_open: Date; next_close: Date; } -export interface RawTrade { - S: string; - t: string; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; -} -export interface RawPageOfTrades { - trades: RawTrade[]; - symbol: string; - next_page_token: string; -} -export interface Trade { - raw(): RawTrade; - S: string; - t: Date; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; -} -export interface PageOfTrades { - raw(): RawPageOfTrades; - trades: Trade[]; - symbol: string; - next_page_token: string; -} -export interface CryptoTrade { - raw(): RawCryptoTrade; - t: Date; - p: number; - s: number; - tks: string; - i: number; -} - -export interface RawCryptoTrade { - t: string; - p: number; - s: number; - tks: string; - i: number; -} -export interface PageOfCryptoTrades { - raw(): RawPageOfTrades; - trades: Trade[]; - symbol: string; - next_page_token: string; -} -export interface RawQuote { - S: string; - t: string; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c: string[]; -} -export interface RawPageOfQuotes { - quotes: RawQuote[]; - symbol: string; - next_page_token: string; -} -export interface Quote { - raw(): RawQuote; - S: string; - t: Date; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c: string[]; -} -export interface PageOfQuotes { - raw(): RawPageOfQuotes; - quotes: Quote[]; - symbol: string; - next_page_token: string; -} -export interface RawBar { - S: string; - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; -} -export interface RawPageOfBars { - bars: RawBar[]; - symbol: string; - next_page_token: string; -} -export interface Bar { - raw(): RawBar; - S: string; - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; -} -export interface PageOfBars { - raw(): RawPageOfBars; - bars: Bar[]; - symbol: string; - next_page_token: string; -} -export interface OrderCancelation { - id: string; - status: number; - order: Order; -} -export interface RawOrderCancelation { - id: string; - status: number; - body: RawOrder; -} -export interface RawOrder { - id: string; - client_order_id: string; - created_at: string; - updated_at: string; - submitted_at: string; - filled_at: string; - expired_at: string; - canceled_at: string; - failed_at: string; - replaced_at: string; - replaced_by: string; - replaces: string; - asset_id: string; - symbol: string; - asset_class: string; - qty: string; - filled_qty: string; - type: string; - side: string; - time_in_force: string; - limit_price: string; - stop_price: string; - filled_avg_price: string; - status: string; - extended_hours: boolean; - legs: RawOrder[]; - trail_price: string; - trail_percent: string; - hwm: string; - order_class?: OrderClass; -} -export interface Bar_v1 { - t: number; - o: number; - h: number; - l: number; - c: number; - v: number; -} -export interface LastQuote_v1 { - status: string; - symbol: string; - last: { - askprice: number; - asksize: number; - askexchange: number; - bidprice: number; - bidsize: number; - bidexchange: number; - timestamp: number; - }; -} -export interface LastTrade_v1 { - status: string; - symbol: string; - last: { - price: number; - size: number; - exchange: number; - cond1: number; - cond2: number; - cond3: number; - cond4: number; - timestamp: number; - }; -} - -export interface RawSnapshot { - symbol: string; - latestTrade: { - t: string; - x: string; - p: number; - s: number; - c?: string[] | null; - i: number; - z: string; - }; - latestQuote: { - t: string; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c?: string[] | null; - }; - minuteBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - dailyBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - prevDailyBar: { - t: string; - o: number; - h: number; - l: number; - c: number; - v: number; - }; -} - -export interface Snapshot { - raw(): RawSnapshot; - symbol: string; - latestTrade: { - t: Date; - x: string; - p: number; - s: number; - c?: string[] | null; - i: number; - z: string; - }; - latestQuote: { - t: Date; - ax: string; - ap: number; - as: number; - bx: string; - bp: number; - bs: number; - c?: string[] | null; - }; - minuteBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - dailyBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; - prevDailyBar: { - t: Date; - o: number; - h: number; - l: number; - c: number; - v: number; - }; -} export type OrderType = | "market" @@ -680,34 +256,7 @@ export type OrderStatus = | "suspended" | "calculated"; -export interface RawLatestTrade { - symbol: string; - trade: { - t: string; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; - }; -} - -export interface LatestTrade { - raw(): RawLatestTrade; - symbol: string; - trade: { - t: Date; - x: string; - p: number; - s: number; - c: string[]; - i: number; - z: string; - }; -} export interface Order { - raw(): RawOrder; id: string; client_order_id: string; created_at: Date; @@ -747,28 +296,9 @@ export interface PortfolioHistory { base_value: number; timeframe: "1Min" | "5Min" | "15Min" | "1H" | "1D"; } -export interface RawPosition { - asset_id: string; - symbol: string; - exchange: string; - asset_class: string; - avg_entry_price: string; - qty: string; - side: string; - market_value: string | null; - cost_basis: string; - unrealized_pl: string | null; - unrealized_plpc: string | null; - unrealized_intraday_pl: string | null; - unrealized_intraday_plpc: string | null; - current_price: string | null; - lastday_price: string | null; - change_today: string | null; -} export type PositionSide = "long" | "short"; export interface Position { - raw(): RawPosition; asset_id: string; symbol: string; exchange: string; @@ -822,35 +352,10 @@ export type ActivityType = | "SSO" | "SSP"; -export interface RawTradeActivity { - activity_type: Extract; - cum_qty: string; - id: string; - leaves_qty: string; - price: string; - qty: string; - side: string; - symbol: string; - transaction_time: string; - order_id: string; - type: string; -} - -export interface RawNonTradeActivity { - activity_type: Exclude; - id: string; - date: string; - net_amount: string; - symbol: string; - qty: string; - per_share_amount: string; -} - export type TradeActivityType = "fill" | "partial_fill"; export type TradeActivitySide = "buy" | "sell"; export interface TradeActivity { - raw(): RawTradeActivity; activity_type: Extract; cum_qty: number; id: string; @@ -865,7 +370,6 @@ export interface TradeActivity { } export interface NonTradeActivity { - raw(): RawNonTradeActivity; activity_type: Exclude; id: string; date: string; @@ -875,51 +379,7 @@ export interface NonTradeActivity { per_share_amount: number; } -export type RawActivity = RawTradeActivity | RawNonTradeActivity; - export type Activity = TradeActivity | NonTradeActivity; -export type TradeUpdateEvent = - | "new" - | "fill" - | "partial_fill" - | "canceled" - | "expired" - | "done_for_day" - | "replaced" - | "rejected" - | "pending_new" - | "stopped" - | "pending_cancel" - | "pending_replace" - | "calculated" - | "suspended" - | "order_replace_rejected" - | "order_cancel_rejected"; - -export interface RawTradeUpdate { - event: TradeUpdateEvent; - execution_id: string; - order: RawOrder; - event_id?: string; - at?: string; - timestamp?: string; - position_qty?: string; - price?: string; - qty?: string; -} - -export interface TradeUpdate { - raw: () => RawTradeUpdate; - event: TradeUpdateEvent; - execution_id: string; - event_id?: number; - order: Order; - at?: Date; - timestamp?: Date; - position_qty?: number; - price?: number; - qty?: number; -} export interface Watchlist { account_id: string; @@ -948,15 +408,6 @@ export interface NewsPage { next_page_token: string; } -export type Channel = "trades" | "quotes" | "bars" | "trade_updates"; - -export interface Message { - T: "success" | "error" | "subscription"; - code?: number; - msg: string; - [key: string]: any; -} - export interface AddToWatchList { uuid: string; symbol: string; diff --git a/tsconfig.json b/tsconfig.json index 484c2a5..98c5d29 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,5 +18,6 @@ "baseUrl": "src", "declarationDir": "dist/@types" }, - "include": ["src"] + "include": ["src"], + "exclude": ["node_modules", "dist"] } \ No newline at end of file From c29111c850f579ae5a3bfe8acab8ba4bbafc6464 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 24 Jul 2023 18:48:00 -0600 Subject: [PATCH 14/55] no commit message --- package-lock.json | 199 +++++- package.json | 5 +- src/OpenAPIClient.ts | 80 +++ src/client.ts | 540 -------------- src/core/ApiError.ts | 25 + src/core/ApiRequestOptions.ts | 17 + src/core/ApiResult.ts | 11 + src/core/AxiosHttpRequest.ts | 26 + src/core/BaseHttpRequest.ts | 14 + src/core/CancelablePromise.ts | 131 ++++ src/core/OpenAPI.ts | 32 + src/core/request.ts | 319 +++++++++ src/index.ts | 123 +++- src/models/Account.ts | 138 ++++ src/models/AccountConfigurations.ts | 57 ++ src/models/AccountStatus.ts | 34 + src/models/ActivityType.ts | 148 ++++ src/models/AddAssetToWatchlistRequest.ts | 15 + src/models/AssetClass.ts | 12 + src/models/Assets.ts | 74 ++ src/models/Bar.ts | 63 ++ src/models/BarsResponse.ts | 19 + src/models/Calendar.ts | 24 + src/models/CanceledOrderResponse.ts | 19 + src/models/Clock.ts | 26 + src/models/CryptoSpreadsResponse.ts | 9 + src/models/Exchange.ts | 25 + src/models/ExchangesResponse.ts | 9 + src/models/GetNewsResponse.ts | 15 + src/models/LatestBarResponse.ts | 17 + src/models/LatestMultiBarsResponse.ts | 15 + src/models/LatestMultiQuotesResponse.ts | 11 + src/models/LatestMultiTradesResponse.ts | 11 + src/models/LatestMultiXBBOResponse.ts | 11 + src/models/LatestQuoteResponse.ts | 17 + src/models/LatestTradeResponse.ts | 20 + src/models/LatestXBBOResponse.ts | 15 + src/models/MarketMoverAsset.ts | 27 + src/models/MarketMoversResponse.ts | 42 ++ src/models/MultiBarsResponse.ts | 20 + src/models/MultiQuotesReponse.ts | 23 + src/models/MultiSnapshotResponse.ts | 14 + src/models/MultiTradesResponse.ts | 20 + src/models/News.ts | 57 ++ src/models/NewsImage.ts | 33 + src/models/NonTradeActivities.ts | 36 + src/models/Order.ts | 109 +++ src/models/OrderClass.ts | 15 + src/models/OrderSide.ts | 15 + src/models/OrderStatus.ts | 79 +++ src/models/OrderType.ts | 21 + src/models/PatchOrderRequest.ts | 34 + src/models/PortfolioHistory.ts | 32 + src/models/Position.ts | 77 ++ src/models/PositionClosedReponse.ts | 22 + src/models/Quote.ts | 55 ++ src/models/QuotesResponse.ts | 17 + src/models/Snapshot.ts | 21 + src/models/TimeInForce.ts | 36 + src/models/Trade.ts | 43 ++ src/models/TradesResponse.ts | 27 + src/models/TradingActivities.ts | 67 ++ src/models/UpdateWatchlistRequest.ts | 13 + src/models/Watchlist.ts | 32 + src/models/XBBO.ts | 39 + src/models/adjustment.ts | 14 + src/models/crypto_exchange.ts | 13 + src/models/crypto_exchanges.ts | 9 + src/models/crypto_symbol.ts | 9 + src/models/crypto_symbols.ts | 9 + src/models/end.ts | 9 + src/models/feed.ts | 13 + src/models/limit.ts | 9 + src/models/page_token.ts | 9 + src/models/start.ts | 9 + src/models/stock_symbol.ts | 9 + src/models/stock_symbols.ts | 9 + src/models/timeframe.ts | 9 + src/services/AccountActivitiesService.ts | 105 +++ src/services/AccountConfigurationsService.ts | 46 ++ src/services/AccountsService.ts | 27 + src/services/CalendarService.ts | 51 ++ src/services/ClockService.ts | 29 + src/services/CryptoPricingDataApiService.ts | 689 ++++++++++++++++++ src/services/DefaultService.ts | 85 +++ src/services/LogoService.ts | 44 ++ src/services/NewsService.ts | 77 ++ src/services/OrdersService.ts | 219 ++++++ src/services/PortfolioHistoryService.ts | 55 ++ src/services/PositionsService.ts | 121 ++++ src/services/ScreenerService.ts | 43 ++ src/services/StockPricingDataApiService.ts | 705 +++++++++++++++++++ src/services/WatchlistsService.ts | 291 ++++++++ src/stuff.ts | 30 + src/types.ts | 420 ----------- 95 files changed, 5521 insertions(+), 998 deletions(-) create mode 100644 src/OpenAPIClient.ts delete mode 100644 src/client.ts create mode 100644 src/core/ApiError.ts create mode 100644 src/core/ApiRequestOptions.ts create mode 100644 src/core/ApiResult.ts create mode 100644 src/core/AxiosHttpRequest.ts create mode 100644 src/core/BaseHttpRequest.ts create mode 100644 src/core/CancelablePromise.ts create mode 100644 src/core/OpenAPI.ts create mode 100644 src/core/request.ts create mode 100644 src/models/Account.ts create mode 100644 src/models/AccountConfigurations.ts create mode 100644 src/models/AccountStatus.ts create mode 100644 src/models/ActivityType.ts create mode 100644 src/models/AddAssetToWatchlistRequest.ts create mode 100644 src/models/AssetClass.ts create mode 100644 src/models/Assets.ts create mode 100644 src/models/Bar.ts create mode 100644 src/models/BarsResponse.ts create mode 100644 src/models/Calendar.ts create mode 100644 src/models/CanceledOrderResponse.ts create mode 100644 src/models/Clock.ts create mode 100644 src/models/CryptoSpreadsResponse.ts create mode 100644 src/models/Exchange.ts create mode 100644 src/models/ExchangesResponse.ts create mode 100644 src/models/GetNewsResponse.ts create mode 100644 src/models/LatestBarResponse.ts create mode 100644 src/models/LatestMultiBarsResponse.ts create mode 100644 src/models/LatestMultiQuotesResponse.ts create mode 100644 src/models/LatestMultiTradesResponse.ts create mode 100644 src/models/LatestMultiXBBOResponse.ts create mode 100644 src/models/LatestQuoteResponse.ts create mode 100644 src/models/LatestTradeResponse.ts create mode 100644 src/models/LatestXBBOResponse.ts create mode 100644 src/models/MarketMoverAsset.ts create mode 100644 src/models/MarketMoversResponse.ts create mode 100644 src/models/MultiBarsResponse.ts create mode 100644 src/models/MultiQuotesReponse.ts create mode 100644 src/models/MultiSnapshotResponse.ts create mode 100644 src/models/MultiTradesResponse.ts create mode 100644 src/models/News.ts create mode 100644 src/models/NewsImage.ts create mode 100644 src/models/NonTradeActivities.ts create mode 100644 src/models/Order.ts create mode 100644 src/models/OrderClass.ts create mode 100644 src/models/OrderSide.ts create mode 100644 src/models/OrderStatus.ts create mode 100644 src/models/OrderType.ts create mode 100644 src/models/PatchOrderRequest.ts create mode 100644 src/models/PortfolioHistory.ts create mode 100644 src/models/Position.ts create mode 100644 src/models/PositionClosedReponse.ts create mode 100644 src/models/Quote.ts create mode 100644 src/models/QuotesResponse.ts create mode 100644 src/models/Snapshot.ts create mode 100644 src/models/TimeInForce.ts create mode 100644 src/models/Trade.ts create mode 100644 src/models/TradesResponse.ts create mode 100644 src/models/TradingActivities.ts create mode 100644 src/models/UpdateWatchlistRequest.ts create mode 100644 src/models/Watchlist.ts create mode 100644 src/models/XBBO.ts create mode 100644 src/models/adjustment.ts create mode 100644 src/models/crypto_exchange.ts create mode 100644 src/models/crypto_exchanges.ts create mode 100644 src/models/crypto_symbol.ts create mode 100644 src/models/crypto_symbols.ts create mode 100644 src/models/end.ts create mode 100644 src/models/feed.ts create mode 100644 src/models/limit.ts create mode 100644 src/models/page_token.ts create mode 100644 src/models/start.ts create mode 100644 src/models/stock_symbol.ts create mode 100644 src/models/stock_symbols.ts create mode 100644 src/models/timeframe.ts create mode 100644 src/services/AccountActivitiesService.ts create mode 100644 src/services/AccountConfigurationsService.ts create mode 100644 src/services/AccountsService.ts create mode 100644 src/services/CalendarService.ts create mode 100644 src/services/ClockService.ts create mode 100644 src/services/CryptoPricingDataApiService.ts create mode 100644 src/services/DefaultService.ts create mode 100644 src/services/LogoService.ts create mode 100644 src/services/NewsService.ts create mode 100644 src/services/OrdersService.ts create mode 100644 src/services/PortfolioHistoryService.ts create mode 100644 src/services/PositionsService.ts create mode 100644 src/services/ScreenerService.ts create mode 100644 src/services/StockPricingDataApiService.ts create mode 100644 src/services/WatchlistsService.ts create mode 100644 src/stuff.ts delete mode 100644 src/types.ts diff --git a/package-lock.json b/package-lock.json index 3d9e815..75e785e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,16 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.0-alpha", + "version": "7.0.2-alpha", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@master-chief/alpaca-ts", - "version": "7.0.0-alpha", + "version": "7.0.2-alpha", "license": "ISC", "dependencies": { "abort-controller": "^3.0.0", + "axios": "^1.4.0", "bottleneck": "^2.19.5", "bufferutil": "^4.0.3", "eventemitter3": "^4.0.7", @@ -17,6 +18,7 @@ "isomorphic-unfetch": "^3.1.0", "isomorphic-ws": "^4.0.1", "node-fetch": "^3.3.1", + "openapi-fetch": "^0.6.1", "qs": "^6.9.6", "utf-8-validate": "^5.0.4", "ws": "^7.5.0" @@ -25,6 +27,7 @@ "@types/node-fetch": "^2.6.4", "@types/qs": "^6.9.5", "@types/ws": "^7.4.0", + "openapi-typescript-codegen": "^0.25.0", "prettier": "^2.8.8", "rimraf": "^3.0.2", "standard-version": "^9.1.1", @@ -35,6 +38,18 @@ "node": ">=14" } }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", + "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", + "dev": true, + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", @@ -502,6 +517,18 @@ "node": ">=6.9.0" } }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -586,6 +613,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -604,8 +637,30 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } }, "node_modules/balanced-match": { "version": "1.0.2", @@ -655,6 +710,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true + }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -714,7 +775,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -722,6 +782,15 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", @@ -1236,7 +1305,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -1463,6 +1531,25 @@ "node": ">=8" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -1500,6 +1587,20 @@ "node": ">=0.10.0" } }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1949,6 +2050,18 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "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==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -1961,12 +2074,37 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/json-schema-ref-parser": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", + "integrity": "sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==", + "deprecated": "Please switch to @apidevtools/json-schema-ref-parser", + "dev": true, + "dependencies": { + "@apidevtools/json-schema-ref-parser": "9.0.9" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -2184,7 +2322,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -2193,7 +2330,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -2367,6 +2503,39 @@ "wrappy": "1" } }, + "node_modules/openapi-fetch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/openapi-fetch/-/openapi-fetch-0.6.1.tgz", + "integrity": "sha512-CGWPqqtL31uC2e4eEU9NHoqYMXnJ7Jk4H/4Yguil4tO22MIZi91hlQJ/51E8CiaKdSTODh03yF4ndjIOABVHUw==" + }, + "node_modules/openapi-typescript-codegen": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/openapi-typescript-codegen/-/openapi-typescript-codegen-0.25.0.tgz", + "integrity": "sha512-nN/TnIcGbP58qYgwEEy5FrAAjePcYgfMaCe3tsmYyTgI3v4RR9v8os14L+LEWDvV50+CmqiyTzRkKKtJeb6Ybg==", + "dev": true, + "dependencies": { + "camelcase": "^6.3.0", + "commander": "^11.0.0", + "fs-extra": "^11.1.1", + "handlebars": "^4.7.7", + "json-schema-ref-parser": "^9.0.9" + }, + "bin": { + "openapi": "bin/index.js" + } + }, + "node_modules/openapi-typescript-codegen/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -2530,6 +2699,11 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -3127,6 +3301,15 @@ "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/utf-8-validate": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", diff --git a/package.json b/package.json index ae2f6cd..e238c7c 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ }, "dependencies": { "abort-controller": "^3.0.0", + "axios": "^1.4.0", "bottleneck": "^2.19.5", "bufferutil": "^4.0.3", "eventemitter3": "^4.0.7", @@ -58,6 +59,7 @@ "isomorphic-unfetch": "^3.1.0", "isomorphic-ws": "^4.0.1", "node-fetch": "^3.3.1", + "openapi-fetch": "^0.6.1", "qs": "^6.9.6", "utf-8-validate": "^5.0.4", "ws": "^7.5.0" @@ -66,10 +68,11 @@ "@types/node-fetch": "^2.6.4", "@types/qs": "^6.9.5", "@types/ws": "^7.4.0", + "openapi-typescript-codegen": "^0.25.0", "prettier": "^2.8.8", "rimraf": "^3.0.2", "standard-version": "^9.1.1", "typescript": "^4.4.3", "vite": "^4.4.7" } -} \ No newline at end of file +} diff --git a/src/OpenAPIClient.ts b/src/OpenAPIClient.ts new file mode 100644 index 0000000..4915d24 --- /dev/null +++ b/src/OpenAPIClient.ts @@ -0,0 +1,80 @@ +import type { BaseHttpRequest } from "./core/BaseHttpRequest"; +import type { OpenAPIConfig } from "./core/OpenAPI"; +import { AxiosHttpRequest } from "./core/AxiosHttpRequest"; + +import { AccountActivitiesService } from "./services/AccountActivitiesService"; +import { AccountConfigurationsService } from "./services/AccountConfigurationsService"; +import { AccountsService } from "./services/AccountsService"; +import { CalendarService } from "./services/CalendarService"; +import { ClockService } from "./services/ClockService"; +import { DefaultService } from "./services/DefaultService"; +import { OrdersService } from "./services/OrdersService"; +import { PortfolioHistoryService } from "./services/PortfolioHistoryService"; +import { PositionsService } from "./services/PositionsService"; +import { WatchlistsService } from "./services/WatchlistsService"; +import { CryptoPricingDataApiService } from "./services/CryptoPricingDataApiService"; +import { LogoService } from "./services/LogoService"; +import { NewsService } from "./services/NewsService"; +import { ScreenerService } from "./services/ScreenerService"; +import { StockPricingDataApiService } from "./services/StockPricingDataApiService"; + +type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest; + +export class OpenAPIClient { + // API services from the first client + public readonly accountActivities: AccountActivitiesService; + public readonly accountConfigurations: AccountConfigurationsService; + public readonly accounts: AccountsService; + public readonly calendar: CalendarService; + public readonly clock: ClockService; + public readonly default: DefaultService; + public readonly orders: OrdersService; + public readonly portfolioHistory: PortfolioHistoryService; + public readonly positions: PositionsService; + public readonly watchlists: WatchlistsService; + + // API services from the second client + public readonly cryptoPricingDataApi: CryptoPricingDataApiService; + public readonly logo: LogoService; + public readonly news: NewsService; + public readonly screener: ScreenerService; + public readonly stockPricingDataApi: StockPricingDataApiService; + + public readonly request: BaseHttpRequest; + + constructor( + config?: Partial, + HttpRequest: HttpRequestConstructor = AxiosHttpRequest + ) { + this.request = new HttpRequest({ + BASE: config?.BASE ?? "https://paper-api.alpaca.markets", + VERSION: config?.VERSION ?? "2.0.0", + WITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false, + CREDENTIALS: config?.CREDENTIALS ?? "include", + TOKEN: config?.TOKEN, + USERNAME: config?.USERNAME, + PASSWORD: config?.PASSWORD, + HEADERS: config?.HEADERS, + ENCODE_PATH: config?.ENCODE_PATH, + }); + + // Instantiate API services from the first client + this.accountActivities = new AccountActivitiesService(this.request); + this.accountConfigurations = new AccountConfigurationsService(this.request); + this.accounts = new AccountsService(this.request); + this.calendar = new CalendarService(this.request); + this.clock = new ClockService(this.request); + this.default = new DefaultService(this.request); + this.orders = new OrdersService(this.request); + this.portfolioHistory = new PortfolioHistoryService(this.request); + this.positions = new PositionsService(this.request); + this.watchlists = new WatchlistsService(this.request); + + // Instantiate API services from the second client + this.cryptoPricingDataApi = new CryptoPricingDataApiService(this.request); + this.logo = new LogoService(this.request); + this.news = new NewsService(this.request); + this.screener = new ScreenerService(this.request); + this.stockPricingDataApi = new StockPricingDataApiService(this.request); + } +} \ No newline at end of file diff --git a/src/client.ts b/src/client.ts deleted file mode 100644 index 9e6c13b..0000000 --- a/src/client.ts +++ /dev/null @@ -1,540 +0,0 @@ -import * as Types from "./types"; - -import qs from "qs"; -import Bottleneck from "bottleneck"; -import fetch from "isomorphic-unfetch"; - -import { Endpoints, endpoints } from "./index.js"; - -export class Client { - private baseURLs: Endpoints = endpoints; - private limiter = new Bottleneck({ - reservoir: 200, // initial value - reservoirRefreshAmount: 200, - reservoirRefreshInterval: 60 * 1000, // must be divisible by 250 - // also use maxConcurrent and/or minTime for safety - maxConcurrent: 1, - minTime: 200, - }); - - constructor( - public params: { - rate_limit?: boolean; - endpoints?: Endpoints | Map; - credentials?: Types.DefaultCredentials | Types.OAuthCredentials; - } - ) { - // fill dummy credentials if not provided - if (params.credentials == undefined) { - params.credentials = { - key: "", - secret: "", - paper: false, - }; - } - - // override endpoints if custom provided - if ("endpoints" in params) { - this.baseURLs = Object.assign(endpoints, params.endpoints); - } - - if ( - // if not specified - !("paper" in params.credentials) && - // and live key isn't already provided - !("key" in params.credentials && params.credentials.key.startsWith("A")) - ) { - params.credentials["paper"] = true; - } - - if ( - "access_token" in params.credentials && - ("key" in params.credentials || "secret" in params.credentials) - ) { - throw new Error( - "can't create client with both default and oauth credentials" - ); - } - } - - v2 = { - account: { - activity: { - list: async ( - params: Types.GetAccountActivities - ): Promise => { - if (params.activity_types && Array.isArray(params.activity_types)) { - params.activity_types = params["activity_types"].join(","); - } - - return await this.request({ - method: "GET", - data: { ...params, activity_type: undefined }, - url: this.buildURL( - this.baseURLs.rest.v2, - "account/activities", - params.activity_type ? "/".concat(params.activity_type) : "" - ), - }); - }, - }, - authenticated: async (): Promise => - this.v2.account - .get() - .then(() => true) - .catch(() => false), - configuration: { - get: (): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "account/configurations"), - }), - update: ( - params: Types.UpdateAccountConfigurations - ): Promise => - this.request({ - method: "PATCH", - url: this.baseURLs.rest.v2.concat("/account/configurations"), - data: params, - }), - }, - get: (): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "account"), - }), - portfolio: { - history: ( - params: Types.GetPortfolioHistory - ): Promise => - this.request({ - method: "GET", - data: params, - url: this.buildURL( - this.baseURLs.rest.v2, - "account/portfolio/history" - ), - }), - }, - }, - asset: { - get: (params: Types.GetAsset): Promise => - this.request({ - method: "GET", - url: this.buildURL( - this.baseURLs.rest.v2, - "assets", - params.asset_id_or_symbol - ), - }), - list: (params?: Types.GetAssets): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "assets"), - data: params, - }), - }, - market: { - news: (params: Types.GetNews): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "account/news"), - data: params, - }), - /** - announcements: ( - params: Types.GetAnnouncements - ): Promise => null, - **/ - calendar: async ( - params?: Types.GetCalendar - ): Promise => { - return this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "/calendar"), - data: params, - }); - }, - clock: async (): Promise => { - return await this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "/clock"), - }); - }, - }, - order: { - create: (params: Types.PlaceOrder): Promise => - this.request({ - method: "POST", - url: `${this.baseURLs.rest.v2}/orders`, - data: params, - }), - get: (params: Types.GetOrder): Promise => - this.request({ - method: "GET", - url: this.buildURL( - this.baseURLs.rest.v2, - "orders", - params.order_id || params.client_order_id - ), - data: { nested: params.nested }, - }), - list: async (params: Types.GetOrders = {}): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "orders"), - data: { - ...params, - symbols: params.symbols ? params.symbols.join(",") : undefined, - }, - }), - cancel: (params: Types.CancelOrder): Promise => - this.request({ - method: "DELETE", - url: this.buildURL(this.baseURLs.rest.v2, "orders", params.order_id), - isJSON: false, - }), - cancel_all: (): Promise => - this.request({ - method: "DELETE", - url: this.buildURL(this.baseURLs.rest.v2, "orders"), - }), - replace: (params: Types.ReplaceOrder): Promise => - this.request({ - method: "PATCH", - url: this.buildURL(this.baseURLs.rest.v2, "orders", params.order_id), - data: params, - }), - }, - position: { - close: (params: Types.ClosePosition): Promise => - this.request({ - method: "DELETE", - url: this.buildURL(this.baseURLs.rest.v2, "positions", params.symbol), - data: params, - }), - close_all: (params: Types.ClosePositions): Promise => - this.request({ - method: "DELETE", - url: this.buildURL( - this.baseURLs.rest.v2, - "positions", - "?cancel_orders=", - JSON.stringify(params.cancel_orders ?? false) - ), - }), - get: async (params: Types.GetPosition): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "positions", params.symbol), - }), - list: async (): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "positions"), - }), - }, - watchlist: { - add: (params: Types.AddToWatchList): Promise => - this.request({ - method: "POST", - url: `${this.baseURLs.rest.v2}/watchlists/${params.uuid}`, - data: params, - }), - create: async ( - params: Types.CreateWatchList - ): Promise => - this.request({ - method: "POST", - url: `${this.baseURLs.rest.v2}/watchlists`, - data: params, - }), - delete: (params: Types.DeleteWatchList): Promise => - this.request({ - method: "DELETE", - url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), - }), - get: async (params: Types.GetWatchList): Promise => - this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), - }), - list: async (): Promise => - await this.request({ - method: "GET", - url: this.buildURL(this.baseURLs.rest.v2, "watchlists"), - }), - remove: (params: Types.RemoveFromWatchList): Promise => - this.request({ - method: "DELETE", - url: this.buildURL( - this.baseURLs.rest.v2, - "watchlists", - params.uuid, - params.symbol - ), - }), - update: (params: Types.UpdateWatchList): Promise => - this.request({ - method: "PUT", - url: this.buildURL(this.baseURLs.rest.v2, "watchlists", params.uuid), - data: params, - }), - }, - stocks: { - trades: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/trades`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/trades`, - data: params, - }), - latest: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/trades/latest`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/trades/latest`, - data: params, - }), - }, - }, - quotes: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/quotes`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/quotes`, - data: params, - }), - latest: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/quotes/latest`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/quotes/latest`, - data: params, - }), - }, - }, - bars: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/bars`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/bars`, - data: params, - }), - latest: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/bars/latest`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/bars/latest`, - data: params, - }), - }, - }, - snapshot: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/snapshot`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/snapshots`, - data: params, - }), - }, - auctions: { - symbol: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/${params.symbol}/auctions`, - data: params, - }), - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.v2}/stocks/auctions`, - data: params, - }), - }, - }, - crypto: { - us: { - trades: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/trades`, - data: params, - }), - }, - latest: { - trades: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/trades`, - data: params, - }), - }, - quotes: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/quotes`, - data: params, - }), - }, - bars: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/bars`, - data: params, - }), - }, - }, - bars: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/bars`, - data: params, - }), - }, - snapshots: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/snapshots`, - data: params, - }), - }, - latest_orderbooks: { - get: (params: any): Promise => - this.request({ - method: "GET", - url: `${this.baseURLs.rest.data_v1beta3}/crypto/us/latest/orderbooks`, - data: params, - }), - }, - }, - }, - }; - - private buildURL = ( - base: string, - ...parts: (string | undefined)[] - ): string => { - return [base, ...parts].join("/"); - }; - - private async request(params: { - method: "GET" | "DELETE" | "PUT" | "PATCH" | "POST"; - url: string; - data?: { [key: string]: any }; - isJSON?: boolean; - }): Promise { - let headers: any = {}; - let credentials = this.params.credentials || ({} as any); - - if ("access_token" in credentials) { - headers["Authorization"] = `Bearer ${credentials.access_token}`; - } else { - headers["APCA-API-KEY-ID"] = credentials.key; - headers["APCA-API-SECRET-KEY"] = credentials.secret; - } - - if (credentials.paper) { - params.url = params.url.replace("api.", "paper-api."); - } - - let query = ""; - - if (params.data) { - // translate dates to ISO strings - for (let [key, value] of Object.entries(params.data)) { - if (value instanceof Date) { - params.data[key] = (value as Date).toISOString(); - } - } - - // build query - if (!["POST", "PATCH", "PUT"].includes(params.method)) { - query = "?".concat(qs.stringify(params.data)); - params.data = undefined; - } - } - - const call = () => - fetch(params.url.concat(query), { - method: params.method, - headers, - body: JSON.stringify(params.data), - }), - func = this.params.rate_limit ? () => this.limiter.schedule(call) : call; - - let resp, - result = {}; - - try { - resp = await func(); - - const { isJSON } = params; - - if (!(params.isJSON != undefined ? isJSON : true)) { - return resp.ok as any; - } - - result = await resp.json(); - } catch (e) { - console.error(e); - throw result; - } - - if ("code" in result || "message" in result) { - throw result; - } - - return result as any; - } -} - -export default Client; \ No newline at end of file diff --git a/src/core/ApiError.ts b/src/core/ApiError.ts new file mode 100644 index 0000000..d6b8fcc --- /dev/null +++ b/src/core/ApiError.ts @@ -0,0 +1,25 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { ApiRequestOptions } from './ApiRequestOptions'; +import type { ApiResult } from './ApiResult'; + +export class ApiError extends Error { + public readonly url: string; + public readonly status: number; + public readonly statusText: string; + public readonly body: any; + public readonly request: ApiRequestOptions; + + constructor(request: ApiRequestOptions, response: ApiResult, message: string) { + super(message); + + this.name = 'ApiError'; + this.url = response.url; + this.status = response.status; + this.statusText = response.statusText; + this.body = response.body; + this.request = request; + } +} diff --git a/src/core/ApiRequestOptions.ts b/src/core/ApiRequestOptions.ts new file mode 100644 index 0000000..c19adcc --- /dev/null +++ b/src/core/ApiRequestOptions.ts @@ -0,0 +1,17 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type ApiRequestOptions = { + readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH'; + readonly url: string; + readonly path?: Record; + readonly cookies?: Record; + readonly headers?: Record; + readonly query?: Record; + readonly formData?: Record; + readonly body?: any; + readonly mediaType?: string; + readonly responseHeader?: string; + readonly errors?: Record; +}; diff --git a/src/core/ApiResult.ts b/src/core/ApiResult.ts new file mode 100644 index 0000000..ad8fef2 --- /dev/null +++ b/src/core/ApiResult.ts @@ -0,0 +1,11 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export type ApiResult = { + readonly url: string; + readonly ok: boolean; + readonly status: number; + readonly statusText: string; + readonly body: any; +}; diff --git a/src/core/AxiosHttpRequest.ts b/src/core/AxiosHttpRequest.ts new file mode 100644 index 0000000..402a5fa --- /dev/null +++ b/src/core/AxiosHttpRequest.ts @@ -0,0 +1,26 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { ApiRequestOptions } from './ApiRequestOptions'; +import { BaseHttpRequest } from './BaseHttpRequest'; +import type { CancelablePromise } from './CancelablePromise'; +import type { OpenAPIConfig } from './OpenAPI'; +import { request as __request } from './request'; + +export class AxiosHttpRequest extends BaseHttpRequest { + + constructor(config: OpenAPIConfig) { + super(config); + } + + /** + * Request method + * @param options The request options from the service + * @returns CancelablePromise + * @throws ApiError + */ + public override request(options: ApiRequestOptions): CancelablePromise { + return __request(this.config, options); + } +} diff --git a/src/core/BaseHttpRequest.ts b/src/core/BaseHttpRequest.ts new file mode 100644 index 0000000..8da3f4d --- /dev/null +++ b/src/core/BaseHttpRequest.ts @@ -0,0 +1,14 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { ApiRequestOptions } from './ApiRequestOptions'; +import type { CancelablePromise } from './CancelablePromise'; +import type { OpenAPIConfig } from './OpenAPI'; + +export abstract class BaseHttpRequest { + + constructor(public readonly config: OpenAPIConfig) {} + + public abstract request(options: ApiRequestOptions): CancelablePromise; +} diff --git a/src/core/CancelablePromise.ts b/src/core/CancelablePromise.ts new file mode 100644 index 0000000..55fef85 --- /dev/null +++ b/src/core/CancelablePromise.ts @@ -0,0 +1,131 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +export class CancelError extends Error { + + constructor(message: string) { + super(message); + this.name = 'CancelError'; + } + + public get isCancelled(): boolean { + return true; + } +} + +export interface OnCancel { + readonly isResolved: boolean; + readonly isRejected: boolean; + readonly isCancelled: boolean; + + (cancelHandler: () => void): void; +} + +export class CancelablePromise implements Promise { + #isResolved: boolean; + #isRejected: boolean; + #isCancelled: boolean; + readonly #cancelHandlers: (() => void)[]; + readonly #promise: Promise; + #resolve?: (value: T | PromiseLike) => void; + #reject?: (reason?: any) => void; + + constructor( + executor: ( + resolve: (value: T | PromiseLike) => void, + reject: (reason?: any) => void, + onCancel: OnCancel + ) => void + ) { + this.#isResolved = false; + this.#isRejected = false; + this.#isCancelled = false; + this.#cancelHandlers = []; + this.#promise = new Promise((resolve, reject) => { + this.#resolve = resolve; + this.#reject = reject; + + const onResolve = (value: T | PromiseLike): void => { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#isResolved = true; + this.#resolve?.(value); + }; + + const onReject = (reason?: any): void => { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#isRejected = true; + this.#reject?.(reason); + }; + + const onCancel = (cancelHandler: () => void): void => { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#cancelHandlers.push(cancelHandler); + }; + + Object.defineProperty(onCancel, 'isResolved', { + get: (): boolean => this.#isResolved, + }); + + Object.defineProperty(onCancel, 'isRejected', { + get: (): boolean => this.#isRejected, + }); + + Object.defineProperty(onCancel, 'isCancelled', { + get: (): boolean => this.#isCancelled, + }); + + return executor(onResolve, onReject, onCancel as OnCancel); + }); + } + + get [Symbol.toStringTag]() { + return "Cancellable Promise"; + } + + public then( + onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, + onRejected?: ((reason: any) => TResult2 | PromiseLike) | null + ): Promise { + return this.#promise.then(onFulfilled, onRejected); + } + + public catch( + onRejected?: ((reason: any) => TResult | PromiseLike) | null + ): Promise { + return this.#promise.catch(onRejected); + } + + public finally(onFinally?: (() => void) | null): Promise { + return this.#promise.finally(onFinally); + } + + public cancel(): void { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#isCancelled = true; + if (this.#cancelHandlers.length) { + try { + for (const cancelHandler of this.#cancelHandlers) { + cancelHandler(); + } + } catch (error) { + console.warn('Cancellation threw an error', error); + return; + } + } + this.#cancelHandlers.length = 0; + this.#reject?.(new CancelError('Request aborted')); + } + + public get isCancelled(): boolean { + return this.#isCancelled; + } +} diff --git a/src/core/OpenAPI.ts b/src/core/OpenAPI.ts new file mode 100644 index 0000000..e741bfa --- /dev/null +++ b/src/core/OpenAPI.ts @@ -0,0 +1,32 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { ApiRequestOptions } from './ApiRequestOptions'; + +type Resolver = (options: ApiRequestOptions) => Promise; +type Headers = Record; + +export type OpenAPIConfig = { + BASE: string; + VERSION: string; + WITH_CREDENTIALS: boolean; + CREDENTIALS: 'include' | 'omit' | 'same-origin'; + TOKEN?: string | Resolver | undefined; + USERNAME?: string | Resolver | undefined; + PASSWORD?: string | Resolver | undefined; + HEADERS?: Headers | Resolver | undefined; + ENCODE_PATH?: ((path: string) => string) | undefined; +}; + +export const OpenAPI: OpenAPIConfig = { + BASE: 'https://paper-api.alpaca.markets', + VERSION: '2.0.0', + WITH_CREDENTIALS: false, + CREDENTIALS: 'include', + TOKEN: undefined, + USERNAME: undefined, + PASSWORD: undefined, + HEADERS: undefined, + ENCODE_PATH: undefined, +}; diff --git a/src/core/request.ts b/src/core/request.ts new file mode 100644 index 0000000..1142d43 --- /dev/null +++ b/src/core/request.ts @@ -0,0 +1,319 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import axios from 'axios'; +import type { AxiosError, AxiosRequestConfig, AxiosResponse, AxiosInstance } from 'axios'; +import FormData from 'form-data'; + +import { ApiError } from './ApiError'; +import type { ApiRequestOptions } from './ApiRequestOptions'; +import type { ApiResult } from './ApiResult'; +import { CancelablePromise } from './CancelablePromise'; +import type { OnCancel } from './CancelablePromise'; +import type { OpenAPIConfig } from './OpenAPI'; + +export const isDefined = (value: T | null | undefined): value is Exclude => { + return value !== undefined && value !== null; +}; + +export const isString = (value: any): value is string => { + return typeof value === 'string'; +}; + +export const isStringWithValue = (value: any): value is string => { + return isString(value) && value !== ''; +}; + +export const isBlob = (value: any): value is Blob => { + return ( + typeof value === 'object' && + typeof value.type === 'string' && + typeof value.stream === 'function' && + typeof value.arrayBuffer === 'function' && + typeof value.constructor === 'function' && + typeof value.constructor.name === 'string' && + /^(Blob|File)$/.test(value.constructor.name) && + /^(Blob|File)$/.test(value[Symbol.toStringTag]) + ); +}; + +export const isFormData = (value: any): value is FormData => { + return value instanceof FormData; +}; + +export const isSuccess = (status: number): boolean => { + return status >= 200 && status < 300; +}; + +export const base64 = (str: string): string => { + try { + return btoa(str); + } catch (err) { + // @ts-ignore + return Buffer.from(str).toString('base64'); + } +}; + +export const getQueryString = (params: Record): string => { + const qs: string[] = []; + + const append = (key: string, value: any) => { + qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); + }; + + const process = (key: string, value: any) => { + if (isDefined(value)) { + if (Array.isArray(value)) { + value.forEach(v => { + process(key, v); + }); + } else if (typeof value === 'object') { + Object.entries(value).forEach(([k, v]) => { + process(`${key}[${k}]`, v); + }); + } else { + append(key, value); + } + } + }; + + Object.entries(params).forEach(([key, value]) => { + process(key, value); + }); + + if (qs.length > 0) { + return `?${qs.join('&')}`; + } + + return ''; +}; + +const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { + const encoder = config.ENCODE_PATH || encodeURI; + + const path = options.url + .replace('{api-version}', config.VERSION) + .replace(/{(.*?)}/g, (substring: string, group: string) => { + if (options.path?.hasOwnProperty(group)) { + return encoder(String(options.path[group])); + } + return substring; + }); + + const url = `${config.BASE}${path}`; + if (options.query) { + return `${url}${getQueryString(options.query)}`; + } + return url; +}; + +export const getFormData = (options: ApiRequestOptions): FormData | undefined => { + if (options.formData) { + const formData = new FormData(); + + const process = (key: string, value: any) => { + if (isString(value) || isBlob(value)) { + formData.append(key, value); + } else { + formData.append(key, JSON.stringify(value)); + } + }; + + Object.entries(options.formData) + .filter(([_, value]) => isDefined(value)) + .forEach(([key, value]) => { + if (Array.isArray(value)) { + value.forEach(v => process(key, v)); + } else { + process(key, value); + } + }); + + return formData; + } + return undefined; +}; + +type Resolver = (options: ApiRequestOptions) => Promise; + +export const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => { + if (typeof resolver === 'function') { + return (resolver as Resolver)(options); + } + return resolver; +}; + +export const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions, formData?: FormData): Promise> => { + const token = await resolve(options, config.TOKEN); + const username = await resolve(options, config.USERNAME); + const password = await resolve(options, config.PASSWORD); + const additionalHeaders = await resolve(options, config.HEADERS); + const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {} + + const headers = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + ...formHeaders, + }) + .filter(([_, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: String(value), + }), {} as Record); + + if (isStringWithValue(token)) { + headers['Authorization'] = `Bearer ${token}`; + } + + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers['Authorization'] = `Basic ${credentials}`; + } + + if (options.body) { + if (options.mediaType) { + headers['Content-Type'] = options.mediaType; + } else if (isBlob(options.body)) { + headers['Content-Type'] = options.body.type || 'application/octet-stream'; + } else if (isString(options.body)) { + headers['Content-Type'] = 'text/plain'; + } else if (!isFormData(options.body)) { + headers['Content-Type'] = 'application/json'; + } + } + + return headers; +}; + +export const getRequestBody = (options: ApiRequestOptions): any => { + if (options.body) { + return options.body; + } + return undefined; +}; + +export const sendRequest = async ( + config: OpenAPIConfig, + options: ApiRequestOptions, + url: string, + body: any, + formData: FormData | undefined, + headers: Record, + onCancel: OnCancel, + axiosClient: AxiosInstance +): Promise> => { + const source = axios.CancelToken.source(); + + const requestConfig: AxiosRequestConfig = { + url, + headers, + data: body ?? formData, + method: options.method, + withCredentials: config.WITH_CREDENTIALS, + cancelToken: source.token, + }; + + onCancel(() => source.cancel('The user aborted a request.')); + + try { + return await axiosClient.request(requestConfig); + } catch (error) { + const axiosError = error as AxiosError; + if (axiosError.response) { + return axiosError.response; + } + throw error; + } +}; + +export const getResponseHeader = (response: AxiosResponse, responseHeader?: string): string | undefined => { + if (responseHeader) { + const content = response.headers[responseHeader]; + if (isString(content)) { + return content; + } + } + return undefined; +}; + +export const getResponseBody = (response: AxiosResponse): any => { + if (response.status !== 204) { + return response.data; + } + return undefined; +}; + +export const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => { + const errors: Record = { + 400: 'Bad Request', + 401: 'Unauthorized', + 403: 'Forbidden', + 404: 'Not Found', + 500: 'Internal Server Error', + 502: 'Bad Gateway', + 503: 'Service Unavailable', + ...options.errors, + } + + const error = errors[result.status]; + if (error) { + throw new ApiError(options, result, error); + } + + if (!result.ok) { + const errorStatus = result.status ?? 'unknown'; + const errorStatusText = result.statusText ?? 'unknown'; + const errorBody = (() => { + try { + return JSON.stringify(result.body, null, 2); + } catch (e) { + return undefined; + } + })(); + + throw new ApiError(options, result, + `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}` + ); + } +}; + +/** + * Request method + * @param config The OpenAPI configuration object + * @param options The request options from the service + * @param axiosClient The axios client instance to use + * @returns CancelablePromise + * @throws ApiError + */ +export const request = (config: OpenAPIConfig, options: ApiRequestOptions, axiosClient: AxiosInstance = axios): CancelablePromise => { + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(config, options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(config, options, formData); + + if (!onCancel.isCancelled) { + const response = await sendRequest(config, options, url, body, formData, headers, onCancel, axiosClient); + const responseBody = getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); + + const result: ApiResult = { + url, + ok: isSuccess(response.status), + status: response.status, + statusText: response.statusText, + body: responseHeader ?? responseBody, + }; + + catchErrorCodes(options, result); + + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); +}; diff --git a/src/index.ts b/src/index.ts index 0120c3b..968152b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,32 +1,97 @@ -export * from "./client.js"; +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import { OpenAPIClient } from "./OpenAPIClient"; -export type DataSource = "iex" | "sip"; +export { OpenAPIClient } from "./OpenAPIClient"; -export interface Endpoints { - rest: { - v1beta1: string; - v2: string; - data_v2: string; - data_v1: string; - data_v1beta3: string; - }; - websocket: { - api: string; - data: (source: DataSource) => string; - }; -} +export { ApiError } from "./core/ApiError"; +export { BaseHttpRequest } from "./core/BaseHttpRequest"; +export { CancelablePromise, CancelError } from "./core/CancelablePromise"; +export { OpenAPI } from "./core/OpenAPI"; +export type { OpenAPIConfig } from "./core/OpenAPI"; -export const endpoints: Endpoints = { - rest: { - v1beta1: "https://data.alpaca.markets/v1beta1", - v2: "https://api.alpaca.markets/v2", - data_v2: "https://data.alpaca.markets/v2", - data_v1: "https://data.alpaca.markets/v1", - data_v1beta3: "https://data.alpaca.markets/v1beta3/crypto", - }, - websocket: { - api: "wss://api.alpaca.markets/stream", - data: (source: DataSource = "iex") => - `wss://stream.data.alpaca.markets/v2/${source}`, - }, -}; \ No newline at end of file +export type { Account } from "./models/Account"; +export { AccountConfigurations } from "./models/AccountConfigurations"; +export { AccountStatus } from "./models/AccountStatus"; +export { ActivityType } from "./models/ActivityType"; +export type { AddAssetToWatchlistRequest } from "./models/AddAssetToWatchlistRequest"; +export { AssetClass } from "./models/AssetClass"; +export { Assets } from "./models/Assets"; +export type { Calendar } from "./models/Calendar"; +export type { CanceledOrderResponse } from "./models/CanceledOrderResponse"; +export type { Clock } from "./models/Clock"; +export { Exchange } from "./models/Exchange"; +export type { NonTradeActivities } from "./models/NonTradeActivities"; +export type { Order } from "./models/Order"; +export { OrderClass } from "./models/OrderClass"; +export { OrderSide } from "./models/OrderSide"; +export { OrderStatus } from "./models/OrderStatus"; +export { OrderType } from "./models/OrderType"; +export type { PatchOrderRequest } from "./models/PatchOrderRequest"; +export type { PortfolioHistory } from "./models/PortfolioHistory"; +export type { Position } from "./models/Position"; +export type { PositionClosedReponse } from "./models/PositionClosedReponse"; +export { TimeInForce } from "./models/TimeInForce"; +export { TradingActivities } from "./models/TradingActivities"; +export type { UpdateWatchlistRequest } from "./models/UpdateWatchlistRequest"; +export type { Watchlist } from "./models/Watchlist"; + +export { AccountActivitiesService } from "./services/AccountActivitiesService"; +export { AccountConfigurationsService } from "./services/AccountConfigurationsService"; +export { AccountsService } from "./services/AccountsService"; +export { CalendarService } from "./services/CalendarService"; +export { ClockService } from "./services/ClockService"; +export { DefaultService } from "./services/DefaultService"; +export { OrdersService } from "./services/OrdersService"; +export { PortfolioHistoryService } from "./services/PortfolioHistoryService"; +export { PositionsService } from "./services/PositionsService"; +export { WatchlistsService } from "./services/WatchlistsService"; + +export { adjustment } from "./models/adjustment"; +export { Bar } from "./models/Bar"; +export type { BarsResponse } from "./models/BarsResponse"; +export { crypto_exchange } from "./models/crypto_exchange"; +export type { crypto_exchanges } from "./models/crypto_exchanges"; +export type { crypto_symbol } from "./models/crypto_symbol"; +export type { crypto_symbols } from "./models/crypto_symbols"; +export type { CryptoSpreadsResponse } from "./models/CryptoSpreadsResponse"; +export type { end } from "./models/end"; +export type { ExchangesResponse } from "./models/ExchangesResponse"; +export { feed } from "./models/feed"; +export type { GetNewsResponse } from "./models/GetNewsResponse"; +export type { LatestBarResponse } from "./models/LatestBarResponse"; +export type { LatestMultiBarsResponse } from "./models/LatestMultiBarsResponse"; +export type { LatestMultiQuotesResponse } from "./models/LatestMultiQuotesResponse"; +export type { LatestMultiTradesResponse } from "./models/LatestMultiTradesResponse"; +export type { LatestMultiXBBOResponse } from "./models/LatestMultiXBBOResponse"; +export type { LatestQuoteResponse } from "./models/LatestQuoteResponse"; +export type { LatestTradeResponse } from "./models/LatestTradeResponse"; +export type { LatestXBBOResponse } from "./models/LatestXBBOResponse"; +export type { limit } from "./models/limit"; +export type { MarketMoverAsset } from "./models/MarketMoverAsset"; +export { MarketMoversResponse } from "./models/MarketMoversResponse"; +export type { MultiBarsResponse } from "./models/MultiBarsResponse"; +export type { MultiQuotesReponse } from "./models/MultiQuotesReponse"; +export type { MultiSnapshotResponse } from "./models/MultiSnapshotResponse"; +export type { MultiTradesResponse } from "./models/MultiTradesResponse"; +export type { News } from "./models/News"; +export { NewsImage } from "./models/NewsImage"; +export type { page_token } from "./models/page_token"; +export type { Quote } from "./models/Quote"; +export type { QuotesResponse } from "./models/QuotesResponse"; +export type { Snapshot } from "./models/Snapshot"; +export type { start } from "./models/start"; +export type { stock_symbol } from "./models/stock_symbol"; +export type { stock_symbols } from "./models/stock_symbols"; +export type { timeframe } from "./models/timeframe"; +export type { Trade } from "./models/Trade"; +export type { TradesResponse } from "./models/TradesResponse"; +export type { XBBO } from "./models/XBBO"; + +export { CryptoPricingDataApiService } from "./services/CryptoPricingDataApiService"; +export { LogoService } from "./services/LogoService"; +export { NewsService } from "./services/NewsService"; +export { ScreenerService } from "./services/ScreenerService"; +export { StockPricingDataApiService } from "./services/StockPricingDataApiService"; \ No newline at end of file diff --git a/src/models/Account.ts b/src/models/Account.ts new file mode 100644 index 0000000..80db406 --- /dev/null +++ b/src/models/Account.ts @@ -0,0 +1,138 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AccountStatus } from './AccountStatus'; + +/** + * The account API serves important information related to an account, including account status, funds available for trade, funds available for withdrawal, and various flags relevant to an account’s ability to trade. An account maybe be blocked for just for trades (trades_blocked flag) or for both trades and transfers (account_blocked flag) if Alpaca identifies the account to engaging in any suspicious activity. Also, in accordance with FINRA’s pattern day trading rule, an account may be flagged for pattern day trading (pattern_day_trader flag), which would inhibit an account from placing any further day-trades. Please note that cryptocurrencies are not eligible assets to be used as collateral for margin accounts and will require the asset be traded using cash only. + * + */ +export type Account = { + /** + * Account Id. + * + */ + id: string; + /** + * Account number. + */ + account_number?: string; + status: AccountStatus; + /** + * USD + * + */ + currency?: string; + /** + * Cash Balance + * + */ + cash?: string; + /** + * Total value of cash + holding positions (This field is deprecated. It is equivalent to the equity field.) + */ + portfolio_value?: string; + /** + * Current available non-margin dollar buying power + */ + non_marginable_buying_power?: string; + /** + * The fees collected. + */ + accrued_fees?: string; + /** + * Cash pending transfer in. + */ + pending_transfer_in?: string; + /** + * Cash pending transfer out. + */ + pending_transfer_out?: string; + /** + * Whether or not the account has been flagged as a pattern day trader + */ + pattern_day_trader?: boolean; + /** + * User setting. If true, the account is not allowed to place orders. + */ + trade_suspended_by_user?: boolean; + /** + * If true, the account is not allowed to place orders. + * + */ + trading_blocked?: boolean; + /** + * If true, the account is not allowed to request money transfers. + */ + transfers_blocked?: boolean; + /** + * If true, the account activity by user is prohibited. + */ + account_blocked?: boolean; + /** + * Timestamp this account was created at + * + */ + created_at?: string; + /** + * Flag to denote whether or not the account is permitted to short + */ + shorting_enabled?: boolean; + /** + * Real-time MtM value of all long positions held in the account + * + */ + long_market_value?: string; + /** + * Real-time MtM value of all short positions held in the account + */ + short_market_value?: string; + /** + * Cash + long_market_value + short_market_value + */ + equity?: string; + /** + * Equity as of previous trading day at 16:00:00 ET + */ + last_equity?: string; + /** + * Buying power multiplier that represents account margin classification; valid values 1 (standard limited margin account with 1x buying power), 2 (reg T margin account with 2x intraday and overnight buying power; this is the default for all non-PDT accounts with $2,000 or more equity), 4 (PDT account with 4x intraday buying power and 2x reg T overnight buying power) + */ + multiplier?: string; + /** + * Current available $ buying power; If multiplier = 4, this is your daytrade buying power which is calculated as (last_equity - (last) maintenance_margin) * 4; If multiplier = 2, buying_power = max(equity – initial_margin,0) * 2; If multiplier = 1, buying_power = cash + */ + buying_power?: string; + /** + * Reg T initial margin requirement (continuously updated value) + */ + initial_margin?: string; + /** + * Maintenance margin requirement (continuously updated value) + */ + maintenance_margin?: string; + /** + * Value of special memorandum account (will be used at a later date to provide additional buying_power) + */ + sma?: string; + /** + * The current number of daytrades that have been made in the last 5 trading days (inclusive of today) + */ + daytrade_count?: number; + /** + * Your maintenance margin requirement on the previous trading day + */ + last_maintenance_margin?: string; + /** + * Your buying power for day trades (continuously updated value) + */ + daytrading_buying_power?: string; + /** + * Your buying power under Regulation T (your excess equity - equity minus margin value - times your margin multiplier) + * + */ + regt_buying_power?: string; +}; + diff --git a/src/models/AccountConfigurations.ts b/src/models/AccountConfigurations.ts new file mode 100644 index 0000000..672a7f7 --- /dev/null +++ b/src/models/AccountConfigurations.ts @@ -0,0 +1,57 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The account configuration API provides custom configurations about your trading account settings. These configurations control various allow you to modify settings to suit your trading needs. + */ +export type AccountConfigurations = { + /** + * both, entry, or exit. Controls Day Trading Margin Call (DTMC) checks. + */ + dtbp_check?: AccountConfigurations.dtbp_check; + /** + * all or none. If none, emails for order fills are not sent. + */ + trade_confirm_email?: string; + /** + * If true, new orders are blocked. + */ + suspend_trade?: boolean; + /** + * If true, account becomes long-only mode. + */ + no_shorting?: boolean; + /** + * If true, account is able to participate in fractional trading + */ + fractional_trading?: boolean; + /** + * Can be "1" or "2" + */ + max_margin_multiplier?: string; + /** + * `both`, `entry`, or `exit`. If entry orders will be rejected on entering a position if it could result in PDT being set for the account. exit will reject exiting orders if they would result in PDT being set. + */ + pdt_check?: string; + /** + * If set to true then Alpaca will accept orders for PTP symbols with no exception. Default is false. + */ + ptp_no_exception_entry?: boolean; +}; + +export namespace AccountConfigurations { + + /** + * both, entry, or exit. Controls Day Trading Margin Call (DTMC) checks. + */ + export enum dtbp_check { + BOTH = 'both', + ENTRY = 'entry', + EXIT = 'exit', + } + + +} + diff --git a/src/models/AccountStatus.ts b/src/models/AccountStatus.ts new file mode 100644 index 0000000..ad77676 --- /dev/null +++ b/src/models/AccountStatus.ts @@ -0,0 +1,34 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * An enum representing the various possible account status values. + * + * Most likely, the account status is ACTIVE unless there is any problem. The account status may get in ACCOUNT_UPDATED when personal information is being updated from the dashboard, in which case you may not be allowed trading for a short period of time until the change is approved. + * + * - ONBOARDING + * The account is onboarding. + * - SUBMISSION_FAILED + * The account application submission failed for some reason. + * - SUBMITTED + * The account application has been submitted for review. + * - ACCOUNT_UPDATED + * The account information is being updated. + * - APPROVAL_PENDING + * The final account approval is pending. + * - ACTIVE + * The account is active for trading. + * - REJECTED + * The account application has been rejected. + */ +export enum AccountStatus { + ONBOARDING = 'ONBOARDING', + SUBMISSION_FAILED = 'SUBMISSION_FAILED', + SUBMITTED = 'SUBMITTED', + ACCOUNT_UPDATED = 'ACCOUNT_UPDATED', + APPROVAL_PENDING = 'APPROVAL_PENDING', + ACTIVE = 'ACTIVE', + REJECTED = 'REJECTED', +} diff --git a/src/models/ActivityType.ts b/src/models/ActivityType.ts new file mode 100644 index 0000000..89347bc --- /dev/null +++ b/src/models/ActivityType.ts @@ -0,0 +1,148 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * - FILL + * Order fills (both partial and full fills) + * + * - TRANS + * Cash transactions (both CSD and CSW) + * + * - MISC + * Miscellaneous or rarely used activity types (All types except those in TRANS, DIV, or FILL) + * + * - ACATC + * ACATS IN/OUT (Cash) + * + * - ACATS + * ACATS IN/OUT (Securities) + * + * - CFEE + * Crypto fee + * + * - CSD + * Cash deposit(+) + * + * - CSW + * Cash withdrawal(-) + * + * - DIV + * Dividends + * + * - DIVCGL + * Dividend (capital gain long term) + * + * - DIVCGS + * Dividend (capital gain short term) + * + * - DIVFEE + * Dividend fee + * + * - DIVFT + * Dividend adjusted (Foreign Tax Withheld) + * + * - DIVNRA + * Dividend adjusted (NRA Withheld) + * + * - DIVROC + * Dividend return of capital + * + * - DIVTW + * Dividend adjusted (Tefra Withheld) + * + * - DIVTXEX + * Dividend (tax exempt) + * + * - FEE + * Fee denominated in USD + * + * - INT + * Interest (credit/margin) + * + * - INTNRA + * Interest adjusted (NRA Withheld) + * + * - INTTW + * Interest adjusted (Tefra Withheld) + * + * - JNL + * Journal entry + * + * - JNLC + * Journal entry (cash) + * + * - JNLS + * Journal entry (stock) + * + * - MA + * Merger/Acquisition + * + * - NC + * Name change + * + * - OPASN + * Option assignment + * + * - OPEXP + * Option expiration + * + * - OPXRC + * Option exercise + * + * - PTC + * Pass Thru Charge + * + * - PTR + * Pass Thru Rebate + * + * - REORG + * Reorg CA + * + * - SC + * Symbol change + * + * - SSO + * Stock spinoff + * + * - SSP + * Stock split + */ +export enum ActivityType { + FILL = 'FILL', + TRANS = 'TRANS', + MISC = 'MISC', + ACATC = 'ACATC', + ACATS = 'ACATS', + CSD = 'CSD', + CSW = 'CSW', + DIV = 'DIV', + DIVCGL = 'DIVCGL', + DIVCGS = 'DIVCGS', + DIVFEE = 'DIVFEE', + DIVFT = 'DIVFT', + DIVNRA = 'DIVNRA', + DIVROC = 'DIVROC', + DIVTW = 'DIVTW', + DIVTXEX = 'DIVTXEX', + INT = 'INT', + INTNRA = 'INTNRA', + INTTW = 'INTTW', + JNL = 'JNL', + JNLC = 'JNLC', + JNLS = 'JNLS', + MA = 'MA', + NC = 'NC', + OPASN = 'OPASN', + OPEXP = 'OPEXP', + OPXRC = 'OPXRC', + PTC = 'PTC', + PTR = 'PTR', + REORG = 'REORG', + SC = 'SC', + SSO = 'SSO', + SSP = 'SSP', + CFEE = 'CFEE', + FEE = 'FEE', +} diff --git a/src/models/AddAssetToWatchlistRequest.ts b/src/models/AddAssetToWatchlistRequest.ts new file mode 100644 index 0000000..2380191 --- /dev/null +++ b/src/models/AddAssetToWatchlistRequest.ts @@ -0,0 +1,15 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Append an asset for the symbol to the end of watchlist asset list + */ +export type AddAssetToWatchlistRequest = { + /** + * symbol name to append to watchlist + */ + symbol?: string; +}; + diff --git a/src/models/AssetClass.ts b/src/models/AssetClass.ts new file mode 100644 index 0000000..cb58a83 --- /dev/null +++ b/src/models/AssetClass.ts @@ -0,0 +1,12 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Represents what class of asset this is. Currently only supports `us_equity` or `crypto` + */ +export enum AssetClass { + US_EQUITY = 'us_equity', + CRYPTO = 'crypto', +} diff --git a/src/models/Assets.ts b/src/models/Assets.ts new file mode 100644 index 0000000..28dc441 --- /dev/null +++ b/src/models/Assets.ts @@ -0,0 +1,74 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AssetClass } from './AssetClass'; +import type { Exchange } from './Exchange'; + +/** + * The assets API serves as the master list of assets available for trade and data consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. Some assets are only available for data consumption via Polygon, and are not tradable with Alpaca. These assets will be marked with the flag tradable=false. + * + */ +export type Assets = { + /** + * Asset ID + */ + id: string; + class: AssetClass; + exchange: Exchange; + /** + * The symbol of the asset + */ + symbol: string; + /** + * The official name of the asset + */ + name: string; + /** + * active or inactive + */ + status: Assets.status; + /** + * Asset is tradable on Alpaca or not + */ + tradable: boolean; + /** + * Asset is marginable or not + */ + marginable: boolean; + /** + * Asset is shortable or not + */ + shortable: boolean; + /** + * Asset is easy-to-borrow or not (filtering for easy_to_borrow = True is the best way to check whether the name is currently available to short at Alpaca). + */ + easy_to_borrow: boolean; + /** + * Asset is fractionable or not + */ + fractionable: boolean; + /** + * Shows the % margin requirement for the asset (equities only). + */ + maintenance_margin_requirement?: string; + /** + * One of ptp_no_exception or ptp_with_exception. We will include unique characteristics of the asset here. + */ + attributes?: Array; +}; + +export namespace Assets { + + /** + * active or inactive + */ + export enum status { + ACTIVE = 'active', + INACTIVE = 'inactive', + } + + +} + diff --git a/src/models/Bar.ts b/src/models/Bar.ts new file mode 100644 index 0000000..b4a07d9 --- /dev/null +++ b/src/models/Bar.ts @@ -0,0 +1,63 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The bars API returns aggregate historical data for the requested securities. + * + */ +export type Bar = { + /** + * Timestamp in RFC-3339 format with nanosecond precision. + */ + 't': string; + /** + * Exchange. Only present on Bars for Crypto symbols + */ + 'x'?: Bar.'x'; + /** + * Open price + */ + 'o': number; + /** + * High price. + */ + 'h': number; + /** + * Low price. + * + */ + 'l': number; + /** + * Close price. + */ + 'c': number; + /** + * Volume. + */ + 'v': number; + /** + * Number of trades. + */ + 'n'?: number; + /** + * Volume weighted average price. + */ + vw?: number; +}; + +export namespace Bar { + + /** + * Exchange. Only present on Bars for Crypto symbols + */ + export enum 'x' { + FTXU = 'FTXU', + ERSX = 'ERSX', + CBSE = 'CBSE', + } + + +} + diff --git a/src/models/BarsResponse.ts b/src/models/BarsResponse.ts new file mode 100644 index 0000000..07808a0 --- /dev/null +++ b/src/models/BarsResponse.ts @@ -0,0 +1,19 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Bar } from './Bar'; + +export type BarsResponse = { + /** + * The array of Bar data + */ + bars: Array; + /** + * the stock ticker or crypto symbol this set of bar data is for + */ + symbol: string; + next_page_token: string | null; +}; + diff --git a/src/models/Calendar.ts b/src/models/Calendar.ts new file mode 100644 index 0000000..cd79096 --- /dev/null +++ b/src/models/Calendar.ts @@ -0,0 +1,24 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type Calendar = { + /** + * Date string in “%Y-%m-%d” format + */ + date: string; + /** + * The time the market opens at on this date in “%H:%M” format + */ + open: string; + /** + * The time the market closes at on this date in “%H:%M” format + */ + close: string; + /** + * Date string in “%Y-%m-%d” format. representing the settlement date for the trade date. + */ + settlement_date: string; +}; + diff --git a/src/models/CanceledOrderResponse.ts b/src/models/CanceledOrderResponse.ts new file mode 100644 index 0000000..55d1400 --- /dev/null +++ b/src/models/CanceledOrderResponse.ts @@ -0,0 +1,19 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Represents the result of a request to cancel and order + */ +export type CanceledOrderResponse = { + /** + * orderId + */ + id?: string; + /** + * http response code + */ + status?: number; +}; + diff --git a/src/models/Clock.ts b/src/models/Clock.ts new file mode 100644 index 0000000..323f8b2 --- /dev/null +++ b/src/models/Clock.ts @@ -0,0 +1,26 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type Clock = { + /** + * Current timestamp + * + */ + timestamp?: string; + /** + * Whether or not the market is open + * + */ + is_open?: boolean; + /** + * Next Market open timestamp + */ + next_open?: string; + /** + * Next market close timestamp + */ + next_close?: string; +}; + diff --git a/src/models/CryptoSpreadsResponse.ts b/src/models/CryptoSpreadsResponse.ts new file mode 100644 index 0000000..9120b33 --- /dev/null +++ b/src/models/CryptoSpreadsResponse.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type CryptoSpreadsResponse = { + spreads: Record; +}; + diff --git a/src/models/Exchange.ts b/src/models/Exchange.ts new file mode 100644 index 0000000..dd1476d --- /dev/null +++ b/src/models/Exchange.ts @@ -0,0 +1,25 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Represents the current exchanges Alpaca supports. List is currently: + * + * - AMEX + * - ARCA + * - BATS + * - NYSE + * - NASDAQ + * - NYSEARCA + * - OTC + */ +export enum Exchange { + AMEX = 'AMEX', + ARCA = 'ARCA', + BATS = 'BATS', + NYSE = 'NYSE', + NASDAQ = 'NASDAQ', + NYSEARCA = 'NYSEARCA', + OTC = 'OTC', +} diff --git a/src/models/ExchangesResponse.ts b/src/models/ExchangesResponse.ts new file mode 100644 index 0000000..8f1fce1 --- /dev/null +++ b/src/models/ExchangesResponse.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Returns an object representing the exchanges we support. The keys are the short form codes you will see in our responses and the values are their respective full names. + */ +export type ExchangesResponse = Record; diff --git a/src/models/GetNewsResponse.ts b/src/models/GetNewsResponse.ts new file mode 100644 index 0000000..1e1feac --- /dev/null +++ b/src/models/GetNewsResponse.ts @@ -0,0 +1,15 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { News } from './News'; + +export type GetNewsResponse = { + news?: Array; + /** + * Pagination token for next page + */ + next_page_token?: string; +}; + diff --git a/src/models/LatestBarResponse.ts b/src/models/LatestBarResponse.ts new file mode 100644 index 0000000..ab9c318 --- /dev/null +++ b/src/models/LatestBarResponse.ts @@ -0,0 +1,17 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Bar } from './Bar'; + +/** + * A model representing the result of hitting one of the Latest Bar api endpoints. + * + * Represents a single Bar that should be the latest Bar data for a given ticker symbol + */ +export type LatestBarResponse = { + symbol: string; + bar: Bar; +}; + diff --git a/src/models/LatestMultiBarsResponse.ts b/src/models/LatestMultiBarsResponse.ts new file mode 100644 index 0000000..a44cc66 --- /dev/null +++ b/src/models/LatestMultiBarsResponse.ts @@ -0,0 +1,15 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Bar } from './Bar'; + +/** + * A model representing the result of hitting the Latest Multi Bars api; represents the latest Bars for multiple symbols. + * + */ +export type LatestMultiBarsResponse = { + bars: Record; +}; + diff --git a/src/models/LatestMultiQuotesResponse.ts b/src/models/LatestMultiQuotesResponse.ts new file mode 100644 index 0000000..5c9097c --- /dev/null +++ b/src/models/LatestMultiQuotesResponse.ts @@ -0,0 +1,11 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Quote } from './Quote'; + +export type LatestMultiQuotesResponse = { + quotes: Record; +}; + diff --git a/src/models/LatestMultiTradesResponse.ts b/src/models/LatestMultiTradesResponse.ts new file mode 100644 index 0000000..00674db --- /dev/null +++ b/src/models/LatestMultiTradesResponse.ts @@ -0,0 +1,11 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Trade } from './Trade'; + +export type LatestMultiTradesResponse = { + trades: Record; +}; + diff --git a/src/models/LatestMultiXBBOResponse.ts b/src/models/LatestMultiXBBOResponse.ts new file mode 100644 index 0000000..9a034f3 --- /dev/null +++ b/src/models/LatestMultiXBBOResponse.ts @@ -0,0 +1,11 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { XBBO } from './XBBO'; + +export type LatestMultiXBBOResponse = { + xbbos: Record; +}; + diff --git a/src/models/LatestQuoteResponse.ts b/src/models/LatestQuoteResponse.ts new file mode 100644 index 0000000..b5700a6 --- /dev/null +++ b/src/models/LatestQuoteResponse.ts @@ -0,0 +1,17 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Quote } from './Quote'; + +/** + * A model representing the result of hitting the Latest Quote api. + * + * Represents a single Quote that should be the latest quote data for a given ticker symbol + */ +export type LatestQuoteResponse = { + quote: Quote; + symbol: string; +}; + diff --git a/src/models/LatestTradeResponse.ts b/src/models/LatestTradeResponse.ts new file mode 100644 index 0000000..03c73d2 --- /dev/null +++ b/src/models/LatestTradeResponse.ts @@ -0,0 +1,20 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Trade } from './Trade'; + +/** + * A model representing the result of hitting the Latest Trade api. + * + * Represents a single Trade that should be the latest trade data for a given ticker symbol + */ +export type LatestTradeResponse = { + trade?: Trade; + /** + * Symbol that was queried + */ + symbol: string; +}; + diff --git a/src/models/LatestXBBOResponse.ts b/src/models/LatestXBBOResponse.ts new file mode 100644 index 0000000..904c5eb --- /dev/null +++ b/src/models/LatestXBBOResponse.ts @@ -0,0 +1,15 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { XBBO } from './XBBO'; + +/** + * Represents the Latest XBBO for a crypto symbol that calculates the Best Bid and Offer across multiple exchanges. + */ +export type LatestXBBOResponse = { + symbol: string; + xbbo: XBBO; +}; + diff --git a/src/models/MarketMoverAsset.ts b/src/models/MarketMoverAsset.ts new file mode 100644 index 0000000..9cacf9e --- /dev/null +++ b/src/models/MarketMoverAsset.ts @@ -0,0 +1,27 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Name or source of given news article + */ +export type MarketMoverAsset = { + /** + * Symbol of market moving asset + */ + symbol: string; + /** + * Percentage difference change for the day + */ + percent_change: number; + /** + * Difference in change for the day + */ + change: number; + /** + * Current price of market moving asset + */ + price: number; +}; + diff --git a/src/models/MarketMoversResponse.ts b/src/models/MarketMoversResponse.ts new file mode 100644 index 0000000..b77f33b --- /dev/null +++ b/src/models/MarketMoversResponse.ts @@ -0,0 +1,42 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MarketMoverAsset } from './MarketMoverAsset'; + +/** + * Contains list of market movers + */ +export type MarketMoversResponse = { + /** + * List of top N gainers + */ + gainers: Array; + /** + * List of top N losers + */ + losers: Array; + /** + * Market type (stocks or crypto) + */ + market_type: MarketMoversResponse.market_type; + /** + * Time the movers where last computed + */ + last_updated: string; +}; + +export namespace MarketMoversResponse { + + /** + * Market type (stocks or crypto) + */ + export enum market_type { + STOCKS = 'stocks', + CRYPTO = 'crypto', + } + + +} + diff --git a/src/models/MultiBarsResponse.ts b/src/models/MultiBarsResponse.ts new file mode 100644 index 0000000..44ab17d --- /dev/null +++ b/src/models/MultiBarsResponse.ts @@ -0,0 +1,20 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Bar } from './Bar'; + +/** + * A model representing the result of hitting the Multi Bars api; represents multiple Bars for multiple symbols. + * + * Returned results are sorted by symbol first then by Bar timestamp. This means that you are likely to see only one symbol in your first response if there are enough Bars in the duration you specified for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Bars were found for them in the timeframe. + * + */ +export type MultiBarsResponse = { + bars: Record>; + next_page_token?: string | null; +}; + diff --git a/src/models/MultiQuotesReponse.ts b/src/models/MultiQuotesReponse.ts new file mode 100644 index 0000000..4db00d8 --- /dev/null +++ b/src/models/MultiQuotesReponse.ts @@ -0,0 +1,23 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Quote } from './Quote'; + +/** + * A model representing the result of hitting the Multi Quotes api; represents multiple Quotes for multiple symbols. + * + * Returned results are sorted by symbol first then by Quote timestamp. This means that you are likely to see only one symbol in your first response if there are enough Quotes for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Quotes were found for them. + * + */ +export type MultiQuotesReponse = { + quotes: Record>; + /** + * pass this token with your request again to get the next page of results + */ + next_page_token?: string | null; +}; + diff --git a/src/models/MultiSnapshotResponse.ts b/src/models/MultiSnapshotResponse.ts new file mode 100644 index 0000000..87266a8 --- /dev/null +++ b/src/models/MultiSnapshotResponse.ts @@ -0,0 +1,14 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Snapshot } from './Snapshot'; + +/** + * A model representing the result of hitting the Multi Snapshots api; represents Snapshots for multiple symbols. + * + * The result is an object whose keys are the requested symbols and values are their respecitve Snapshot + * + */ +export type MultiSnapshotResponse = Record; diff --git a/src/models/MultiTradesResponse.ts b/src/models/MultiTradesResponse.ts new file mode 100644 index 0000000..846608e --- /dev/null +++ b/src/models/MultiTradesResponse.ts @@ -0,0 +1,20 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Trade } from './Trade'; + +/** + * A model representing the result of hitting the Multi Trades api; represents multiple trades for multiple symbols. + * + * Returned results are sorted by symbol first then by Trade timestamp. This means that you are likely to see only one symbol in your first response if there are enough Trades for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Trades were found for them. + * + */ +export type MultiTradesResponse = { + trades: Record>; + next_page_token?: string | null; +}; + diff --git a/src/models/News.ts b/src/models/News.ts new file mode 100644 index 0000000..fcb2a40 --- /dev/null +++ b/src/models/News.ts @@ -0,0 +1,57 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { NewsImage } from './NewsImage'; + +/** + * Model representing a news article from the Alpaca Market Data API + */ +export type News = { + /** + * News article ID + */ + id: number; + /** + * Headline or title of the article + */ + headline: string; + /** + * Original author of news article + */ + author: string; + /** + * Date article was created (RFC 3339) + */ + created_at: string; + /** + * Date article was updated (RFC 3339) + */ + updated_at: string; + /** + * Summary text for the article (may be first sentence of content) + */ + summary: string; + /** + * Content of the news article (might contain HTML) + */ + content: string; + /** + * URL of article (if applicable) + */ + url?: string | null; + /** + * List of images (URLs) related to given article (may be empty) + */ + images: Array; + /** + * List of related or mentioned symbols + */ + symbols: Array; + /** + * Source where the news originated from (e.g. Benzinga) + */ + source: string; +}; + diff --git a/src/models/NewsImage.ts b/src/models/NewsImage.ts new file mode 100644 index 0000000..e902664 --- /dev/null +++ b/src/models/NewsImage.ts @@ -0,0 +1,33 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * A model representing images for news article. simply a url to the image along with a size parameter suggesting the display size of the image + */ +export type NewsImage = { + /** + * Possible values for size are thumb, small and large. + */ + readonly size: NewsImage.size; + /** + * url to image from news article + */ + readonly url: string; +}; + +export namespace NewsImage { + + /** + * Possible values for size are thumb, small and large. + */ + export enum size { + THUMB = 'thumb', + SMALL = 'small', + LARGE = 'large', + } + + +} + diff --git a/src/models/NonTradeActivities.ts b/src/models/NonTradeActivities.ts new file mode 100644 index 0000000..575c351 --- /dev/null +++ b/src/models/NonTradeActivities.ts @@ -0,0 +1,36 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ActivityType } from './ActivityType'; + +export type NonTradeActivities = { + activity_type?: ActivityType; + /** + * An ID for the activity, always in “::” format. Can be sent as page_token in requests to facilitate the paging of results. + */ + id?: string; + /** + * The date on which the activity occurred or on which the transaction associated with the activity settled. + */ + date?: string; + /** + * The net amount of money (positive or negative) associated with the activity. + */ + net_amount?: string; + /** + * The symbol of the security involved with the activity. Not present for all activity types. + */ + symbol?: string; + /** + * For dividend activities, the number of shares that contributed to the payment. Not present for other activity types. + * + */ + qty?: string; + /** + * For dividend activities, the average amount paid per share. Not present for other activity types. + */ + per_share_amount?: string; +}; + diff --git a/src/models/Order.ts b/src/models/Order.ts new file mode 100644 index 0000000..a37f8cf --- /dev/null +++ b/src/models/Order.ts @@ -0,0 +1,109 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AssetClass } from './AssetClass'; +import type { OrderClass } from './OrderClass'; +import type { OrderSide } from './OrderSide'; +import type { OrderStatus } from './OrderStatus'; +import type { OrderType } from './OrderType'; +import type { TimeInForce } from './TimeInForce'; + +/** + * The Orders API allows a user to monitor, place and cancel their orders with Alpaca. + * + * Each order has a unique identifier provided by the client. This client-side unique order ID will be automatically generated by the system if not provided by the client, and will be returned as part of the order object along with the rest of the fields described below. Once an order is placed, it can be queried using the client-side order ID to check the status. + * + * Updates on open orders at Alpaca will also be sent over the streaming interface, which is the recommended method of maintaining order state. + */ +export type Order = { + /** + * Order ID + */ + id?: string; + /** + * Client unique order ID + */ + client_order_id?: string; + created_at?: string; + updated_at?: string | null; + submitted_at?: string | null; + filled_at?: string | null; + expired_at?: string | null; + canceled_at?: string | null; + failed_at?: string | null; + replaced_at?: string | null; + /** + * The order ID that this order was replaced by + */ + replaced_by?: string | null; + /** + * The order ID that this order replaces + */ + replaces?: string | null; + /** + * Asset ID + */ + asset_id?: string; + /** + * Asset symbol + */ + symbol: string; + asset_class?: AssetClass; + /** + * Ordered notional amount. If entered, qty will be null. Can take up to 9 decimal points. + */ + notional: string | null; + /** + * Ordered quantity. If entered, notional will be null. Can take up to 9 decimal points. + */ + qty: string | null; + /** + * Filled quantity + */ + filled_qty?: string; + /** + * Filled average price + */ + filled_avg_price?: string | null; + order_class?: OrderClass; + /** + * Deprecated in favour of the field "type" + * @deprecated + */ + order_type?: string; + type: OrderType; + side: OrderSide; + time_in_force: TimeInForce; + /** + * Limit price + */ + limit_price?: string | null; + /** + * Stop price + */ + stop_price?: string | null; + status?: OrderStatus; + /** + * If true, eligible for execution outside regular trading hours. + */ + extended_hours?: boolean; + /** + * When querying non-simple order_class orders in a nested style, an array of Order entities associated with this order. Otherwise, null. + */ + legs?: Array | null; + /** + * The percent value away from the high water mark for trailing stop orders. + */ + trail_percent?: string; + /** + * The dollar value away from the high water mark for trailing stop orders. + */ + trail_price?: string; + /** + * The highest (lowest) market price seen since the trailing stop order was submitted. + */ + hwm?: string; +}; + diff --git a/src/models/OrderClass.ts b/src/models/OrderClass.ts new file mode 100644 index 0000000..3e4dd51 --- /dev/null +++ b/src/models/OrderClass.ts @@ -0,0 +1,15 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * This will either be the empty string "", "simple", "bracket", "oco", or "oto". + */ +export enum OrderClass { + SIMPLE = 'simple', + BRACKET = 'bracket', + OCO = 'oco', + OTO = 'oto', + = '', +} diff --git a/src/models/OrderSide.ts b/src/models/OrderSide.ts new file mode 100644 index 0000000..844e66d --- /dev/null +++ b/src/models/OrderSide.ts @@ -0,0 +1,15 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Represents which side this order was on: + * + * - buy + * - sell + */ +export enum OrderSide { + BUY = 'buy', + SELL = 'sell', +} diff --git a/src/models/OrderStatus.ts b/src/models/OrderStatus.ts new file mode 100644 index 0000000..7a261bf --- /dev/null +++ b/src/models/OrderStatus.ts @@ -0,0 +1,79 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * An order executed through Alpaca can experience several status changes during its lifecycle. The most common statuses are described in detail below: + * + * - new + * The order has been received by Alpaca, and routed to exchanges for execution. This is the usual initial state of an order. + * + * - partially_filled + * The order has been partially filled. + * + * - filled + * The order has been filled, and no further updates will occur for the order. + * + * - done_for_day + * The order is done executing for the day, and will not receive further updates until the next trading day. + * + * - canceled + * The order has been canceled, and no further updates will occur for the order. This can be either due to a cancel request by the user, or the order has been canceled by the exchanges due to its time-in-force. + * + * - expired + * The order has expired, and no further updates will occur for the order. + * + * - replaced + * The order was replaced by another order, or was updated due to a market event such as corporate action. + * + * - pending_cancel + * The order is waiting to be canceled. + * + * - pending_replace + * The order is waiting to be replaced by another order. The order will reject cancel request while in this state. + * + * Less common states are described below. Note that these states only occur on very rare occasions, and most users will likely never see their orders reach these states: + * + * - accepted + * The order has been received by Alpaca, but hasn’t yet been routed to the execution venue. This could be seen often out side of trading session hours. + * + * - pending_new + * The order has been received by Alpaca, and routed to the exchanges, but has not yet been accepted for execution. This state only occurs on rare occasions. + * + * - accepted_for_bidding + * The order has been received by exchanges, and is evaluated for pricing. This state only occurs on rare occasions. + * + * - stopped + * The order has been stopped, and a trade is guaranteed for the order, usually at a stated price or better, but has not yet occurred. This state only occurs on rare occasions. + * + * - rejected + * The order has been rejected, and no further updates will occur for the order. This state occurs on rare occasions and may occur based on various conditions decided by the exchanges. + * + * - suspended + * The order has been suspended, and is not eligible for trading. This state only occurs on rare occasions. + * + * - calculated + * The order has been completed for the day (either filled or done for day), but remaining settlement calculations are still pending. This state only occurs on rare occasions. + * + * + * An order may be canceled through the API up until the point it reaches a state of either filled, canceled, or expired. + */ +export enum OrderStatus { + NEW = 'new', + PARTIALLY_FILLED = 'partially_filled', + FILLED = 'filled', + DONE_FOR_DAY = 'done_for_day', + CANCELED = 'canceled', + EXPIRED = 'expired', + REPLACED = 'replaced', + PENDING_CANCEL = 'pending_cancel', + PENDING_REPLACE = 'pending_replace', + ACCEPTED = 'accepted', + PENDING_NEW = 'pending_new', + ACCEPTED_FOR_BIDDING = 'accepted_for_bidding', + STOPPED = 'stopped', + REJECTED = 'rejected', + SUSPENDED = 'suspended', + CALCULATED = 'calculated', +} diff --git a/src/models/OrderType.ts b/src/models/OrderType.ts new file mode 100644 index 0000000..c92dbc3 --- /dev/null +++ b/src/models/OrderType.ts @@ -0,0 +1,21 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Represents the types of orders Alpaca currently supports + * + * - market + * - limit + * - stop + * - stop_limit + * - trailing_stop + */ +export enum OrderType { + MARKET = 'market', + LIMIT = 'limit', + STOP = 'stop', + STOP_LIMIT = 'stop_limit', + TRAILING_STOP = 'trailing_stop', +} diff --git a/src/models/PatchOrderRequest.ts b/src/models/PatchOrderRequest.ts new file mode 100644 index 0000000..0b43d7b --- /dev/null +++ b/src/models/PatchOrderRequest.ts @@ -0,0 +1,34 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TimeInForce } from './TimeInForce'; + +/** + * Represents a request to patch an order. + */ +export type PatchOrderRequest = { + /** + * number of shares to trade + */ + qty?: string; + time_in_force?: TimeInForce; + /** + * required if original order type is limit or stop_limit + */ + limit_price?: string; + /** + * required if original order type is limit or stop_limit + */ + stop_price?: string; + /** + * the new value of the trail_price or trail_percent value (works only for type=“trailing_stop”) + */ + trail?: string; + /** + * A unique identifier for the order. Automatically generated if not sent. + */ + client_order_id?: string; +}; + diff --git a/src/models/PortfolioHistory.ts b/src/models/PortfolioHistory.ts new file mode 100644 index 0000000..74e18b7 --- /dev/null +++ b/src/models/PortfolioHistory.ts @@ -0,0 +1,32 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type PortfolioHistory = { + /** + * time of each data element, left-labeled (the beginning of time window) + */ + timestamp?: Array; + /** + * equity value of the account in dollar amount as of the end of each time window + */ + equity?: Array; + /** + * profit/loss in dollar from the base value + */ + profit_loss?: Array; + /** + * profit/loss in percentage from the base value + */ + profit_loss_pct?: Array; + /** + * basis in dollar of the profit loss calculation + */ + base_value?: number; + /** + * time window size of each data element + */ + timeframe?: string; +}; + diff --git a/src/models/Position.ts b/src/models/Position.ts new file mode 100644 index 0000000..6d7f026 --- /dev/null +++ b/src/models/Position.ts @@ -0,0 +1,77 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AssetClass } from './AssetClass'; +import type { Exchange } from './Exchange'; + +/** + * The positions API provides information about an account’s current open positions. The response will include information such as cost basis, shares traded, and market value, which will be updated live as price information is updated. Once a position is closed, it will no longer be queryable through this API. + */ +export type Position = { + /** + * Asset ID + */ + asset_id: string; + /** + * Symbol name of the asset + */ + symbol: string; + exchange: Exchange; + asset_class: AssetClass; + /** + * Average entry price of the position + */ + avg_entry_price: string; + /** + * The number of shares + */ + qty: string; + /** + * Total number of shares available minus open orders + */ + qty_available?: string; + /** + * “long” + */ + side: string; + /** + * Total dollar amount of the position + */ + market_value: string; + /** + * Total cost basis in dollar + */ + cost_basis: string; + /** + * Unrealized profit/loss in dollars + */ + unrealized_pl: string; + /** + * Unrealized profit/loss percent (by a factor of 1) + */ + unrealized_plpc: string; + /** + * Unrealized profit/loss in dollars for the day + */ + unrealized_intraday_pl: string; + /** + * Unrealized profit/loss percent (by a factor of 1) + */ + unrealized_intraday_plpc: string; + /** + * Current asset price per share + */ + current_price: string; + /** + * Last day’s asset price per share based on the closing value of the last trading day + */ + lastday_price: string; + /** + * Percent change from last day price (by a factor of 1) + */ + change_today: string; + asset_marginable: boolean; +}; + diff --git a/src/models/PositionClosedReponse.ts b/src/models/PositionClosedReponse.ts new file mode 100644 index 0000000..6b94e93 --- /dev/null +++ b/src/models/PositionClosedReponse.ts @@ -0,0 +1,22 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Order } from './Order'; + +/** + * Represents the result of asking the api to close a position. + */ +export type PositionClosedReponse = { + /** + * Symbol name of the asset + */ + symbol: string; + /** + * Http status code for the attempt to close this position + */ + status: string; + body?: Order; +}; + diff --git a/src/models/Quote.ts b/src/models/Quote.ts new file mode 100644 index 0000000..485f235 --- /dev/null +++ b/src/models/Quote.ts @@ -0,0 +1,55 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The Quotes API provides NBBO quotes for a given ticker symbol at a specified date. + * + */ +export type Quote = { + /** + * Timestamp in RFC-3339 format with nanosecond precision + */ + 't': string; + /** + * ask exchange (Stock quote only) + */ + ax?: string; + /** + * ask price + * + */ + ap?: number; + /** + * ask size + * + */ + as?: number; + /** + * bid exchange (Stock quote only) + */ + bx?: string; + /** + * bid price + * + */ + bp?: number; + /** + * bid size + */ + bs?: number; + /** + * quote conditions (Stock quotes only) + */ + 'c'?: Array; + /** + * Exchange (Crypto quote Only) + */ + 'x'?: string; + /** + * Tape (Stock quote only) + */ + 'z'?: string; +}; + diff --git a/src/models/QuotesResponse.ts b/src/models/QuotesResponse.ts new file mode 100644 index 0000000..2d9d24d --- /dev/null +++ b/src/models/QuotesResponse.ts @@ -0,0 +1,17 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Quote } from './Quote'; + +/** + * The Quotes API provides NBBO quotes for a given ticker symbol at a specified date. + * + */ +export type QuotesResponse = { + quotes: Array | null; + symbol: string; + next_page_token?: string | null; +}; + diff --git a/src/models/Snapshot.ts b/src/models/Snapshot.ts new file mode 100644 index 0000000..378b5af --- /dev/null +++ b/src/models/Snapshot.ts @@ -0,0 +1,21 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Bar } from './Bar'; +import type { Quote } from './Quote'; +import type { Trade } from './Trade'; + +/** + * The Snapshot API for one ticker provides the latest trade, latest quote, minute bar daily bar and previous daily bar data for a given ticker symbol. + * + */ +export type Snapshot = { + latestTrade?: Trade; + latestQuote?: Quote; + minuteBar?: Bar; + dailyBar?: Bar; + prevDailyBar?: Bar; +}; + diff --git a/src/models/TimeInForce.ts b/src/models/TimeInForce.ts new file mode 100644 index 0000000..f7a073c --- /dev/null +++ b/src/models/TimeInForce.ts @@ -0,0 +1,36 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Note: For Crypto Trading, Alpaca supports the following Time-In-Force designations: day, gtc, ioc and fok. OPG and CLS are not supported. + * + * Alpaca supports the following Time-In-Force designations: + * + * - day + * A day order is eligible for execution only on the day it is live. By default, the order is only valid during Regular Trading Hours (9:30am - 4:00pm ET). If unfilled after the closing auction, it is automatically canceled. If submitted after the close, it is queued and submitted the following trading day. However, if marked as eligible for extended hours, the order can also execute during supported extended hours. + * + * - gtc + * The order is good until canceled. Non-marketable GTC limit orders are subject to price adjustments to offset corporate actions affecting the issue. We do not currently support Do Not Reduce(DNR) orders to opt out of such price adjustments. + * + * - opg + * Use this TIF with a market/limit order type to submit “market on open” (MOO) and “limit on open” (LOO) orders. This order is eligible to execute only in the market opening auction. Any unfilled orders after the open will be cancelled. OPG orders submitted after 9:28am but before 7:00pm ET will be rejected. OPG orders submitted after 7:00pm will be queued and routed to the following day’s opening auction. On open/on close orders are routed to the primary exchange. Such orders do not necessarily execute exactly at 9:30am / 4:00pm ET but execute per the exchange’s auction rules. + * + * - cls + * Use this TIF with a market/limit order type to submit “market on close” (MOC) and “limit on close” (LOC) orders. This order is eligible to execute only in the market closing auction. Any unfilled orders after the close will be cancelled. CLS orders submitted after 3:50pm but before 7:00pm ET will be rejected. CLS orders submitted after 7:00pm will be queued and routed to the following day’s closing auction. Only available with API v2. + * + * - ioc + * An Immediate Or Cancel (IOC) order requires all or part of the order to be executed immediately. Any unfilled portion of the order is canceled. Only available with API v2. Most market makers who receive IOC orders will attempt to fill the order on a principal basis only, and cancel any unfilled balance. On occasion, this can result in the entire order being cancelled if the market maker does not have any existing inventory of the security in question. + * + * - fok + * A Fill or Kill (FOK) order is only executed if the entire order quantity can be filled, otherwise the order is canceled. Only available with API v2. + */ +export enum TimeInForce { + DAY = 'day', + GTC = 'gtc', + OPG = 'opg', + CLS = 'cls', + IOC = 'ioc', + FOK = 'fok', +} diff --git a/src/models/Trade.ts b/src/models/Trade.ts new file mode 100644 index 0000000..6b4333d --- /dev/null +++ b/src/models/Trade.ts @@ -0,0 +1,43 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * A model representing a trade + */ +export type Trade = { + /** + * Timestamp in RFC-3339 format with nanosecond precision + */ + 't'?: string; + /** + * Exchange where the trade happened. + */ + 'x': string; + /** + * Trade price. + */ + 'p'?: number; + /** + * Trade Size. + */ + 's'?: number; + /** + * Trade conditions (Stock trade only) + */ + 'c'?: Array; + /** + * Trade ID + */ + 'i': number; + /** + * Tape (Stock trade only) + */ + 'z'?: string; + /** + * Taker's side (crypto trade only) + */ + tks?: string; +}; + diff --git a/src/models/TradesResponse.ts b/src/models/TradesResponse.ts new file mode 100644 index 0000000..19ca0ec --- /dev/null +++ b/src/models/TradesResponse.ts @@ -0,0 +1,27 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Trade } from './Trade'; + +/** + * A model representing the result of hitting the Trades api. + * + * Represents multiple Trades for a single symbol with support for paging. + */ +export type TradesResponse = { + /** + * Array of trades + */ + trades: Array; + /** + * Symbol that was queried + */ + symbol: string; + /** + * Token that can be used to query the next page + */ + next_page_token?: string | null; +}; + diff --git a/src/models/TradingActivities.ts b/src/models/TradingActivities.ts new file mode 100644 index 0000000..4367934 --- /dev/null +++ b/src/models/TradingActivities.ts @@ -0,0 +1,67 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ActivityType } from './ActivityType'; +import type { OrderStatus } from './OrderStatus'; + +export type TradingActivities = { + activity_type?: ActivityType; + /** + * An id for the activity. Always in “::” format. Can be sent as page_token in requests to facilitate the paging of results. + */ + id?: string; + /** + * The cumulative quantity of shares involved in the execution. + */ + cum_qty?: string; + /** + * For partially_filled orders, the quantity of shares that are left to be filled. + * + */ + leaves_qty?: string; + /** + * The per-share price that the trade was executed at. + */ + price?: string; + /** + * The number of shares involved in the trade execution. + */ + qty?: string; + /** + * buy or sell + */ + side?: string; + /** + * The symbol of the security being traded. + */ + symbol?: string; + /** + * The time at which the execution occurred. + */ + transaction_time?: string; + /** + * The id for the order that filled. + */ + order_id?: string; + /** + * fill or partial_fill + */ + type?: TradingActivities.type; + order_status?: OrderStatus; +}; + +export namespace TradingActivities { + + /** + * fill or partial_fill + */ + export enum type { + FILL = 'fill', + PARTIAL_FILL = 'partial_fill', + } + + +} + diff --git a/src/models/UpdateWatchlistRequest.ts b/src/models/UpdateWatchlistRequest.ts new file mode 100644 index 0000000..6e0a857 --- /dev/null +++ b/src/models/UpdateWatchlistRequest.ts @@ -0,0 +1,13 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Request format used for creating a new watchlist or updating an existing watchlist with a set of assets and name. + */ +export type UpdateWatchlistRequest = { + name: string; + symbols?: Array; +}; + diff --git a/src/models/Watchlist.ts b/src/models/Watchlist.ts new file mode 100644 index 0000000..6153420 --- /dev/null +++ b/src/models/Watchlist.ts @@ -0,0 +1,32 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Assets } from './Assets'; + +/** + * The watchlist API provides CRUD operation for the account’s watchlist. An account can have multiple watchlists and each is uniquely identified by id but can also be addressed by user-defined name. Each watchlist is an ordered list of assets. + * + */ +export type Watchlist = { + /** + * watchlist id + */ + id: string; + /** + * account ID + */ + account_id: string; + created_at: string; + updated_at: string; + /** + * user-defined watchlist name (up to 64 characters) + */ + name: string; + /** + * the content of this watchlist, in the order as registered by the client + */ + assets?: Array; +}; + diff --git a/src/models/XBBO.ts b/src/models/XBBO.ts new file mode 100644 index 0000000..d64dffa --- /dev/null +++ b/src/models/XBBO.ts @@ -0,0 +1,39 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * XBBO or Cross Best Bid and Offer represents the Best Bid and Offer for an exchange + */ +export type XBBO = { + /** + * Timestamp in RFC-3339 format with nanosecond precision. + */ + 't': string; + /** + * Ask exchange. + */ + ax: string; + /** + * Ask price. + */ + ap: number; + /** + * Ask size. + */ + as: number; + /** + * Bid exchange. + */ + bx: string; + /** + * Bid price. + */ + bp: number; + /** + * Bid size. + */ + bs: number; +}; + diff --git a/src/models/adjustment.ts b/src/models/adjustment.ts new file mode 100644 index 0000000..603baf7 --- /dev/null +++ b/src/models/adjustment.ts @@ -0,0 +1,14 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * specifies the corporate action adjustment(s) for bars data + */ +export enum adjustment { + RAW = 'raw', + SPLIT = 'split', + DIVIDEND = 'dividend', + ALL = 'all', +} diff --git a/src/models/crypto_exchange.ts b/src/models/crypto_exchange.ts new file mode 100644 index 0000000..47ed1d7 --- /dev/null +++ b/src/models/crypto_exchange.ts @@ -0,0 +1,13 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ +export enum crypto_exchange { + ERSX = 'ERSX', + CBSE = 'CBSE', + FTXU = 'FTXU', +} diff --git a/src/models/crypto_exchanges.ts b/src/models/crypto_exchanges.ts new file mode 100644 index 0000000..cbaa295 --- /dev/null +++ b/src/models/crypto_exchanges.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ +export type crypto_exchanges = string; diff --git a/src/models/crypto_symbol.ts b/src/models/crypto_symbol.ts new file mode 100644 index 0000000..07ed689 --- /dev/null +++ b/src/models/crypto_symbol.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ +export type crypto_symbol = string; diff --git a/src/models/crypto_symbols.ts b/src/models/crypto_symbols.ts new file mode 100644 index 0000000..3add23a --- /dev/null +++ b/src/models/crypto_symbols.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ +export type crypto_symbols = string; diff --git a/src/models/end.ts b/src/models/end.ts new file mode 100644 index 0000000..5c7331c --- /dev/null +++ b/src/models/end.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ +export type end = string; diff --git a/src/models/feed.ts b/src/models/feed.ts new file mode 100644 index 0000000..a108bb9 --- /dev/null +++ b/src/models/feed.ts @@ -0,0 +1,13 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ +export enum feed { + IEX = 'iex', + SIP = 'sip', + OTC = 'otc', +} diff --git a/src/models/limit.ts b/src/models/limit.ts new file mode 100644 index 0000000..8c06aa3 --- /dev/null +++ b/src/models/limit.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ +export type limit = number; diff --git a/src/models/page_token.ts b/src/models/page_token.ts new file mode 100644 index 0000000..2b8b49b --- /dev/null +++ b/src/models/page_token.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ +export type page_token = string; diff --git a/src/models/start.ts b/src/models/start.ts new file mode 100644 index 0000000..7c4f0f2 --- /dev/null +++ b/src/models/start.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ +export type start = string; diff --git a/src/models/stock_symbol.ts b/src/models/stock_symbol.ts new file mode 100644 index 0000000..392f887 --- /dev/null +++ b/src/models/stock_symbol.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The stock ticker symbol to query for. + */ +export type stock_symbol = string; diff --git a/src/models/stock_symbols.ts b/src/models/stock_symbols.ts new file mode 100644 index 0000000..0bca185 --- /dev/null +++ b/src/models/stock_symbols.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The comma-separated list of stock ticker symbols to query for. + */ +export type stock_symbols = string; diff --git a/src/models/timeframe.ts b/src/models/timeframe.ts new file mode 100644 index 0000000..884b115 --- /dev/null +++ b/src/models/timeframe.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Timeframe for the aggregation. Values are customizeable, frequently used examples: 1Min, 15Min, 1Hour, 1Day. Limits: 1Min-59Min, 1Hour-23Hour. + */ +export type timeframe = string; diff --git a/src/services/AccountActivitiesService.ts b/src/services/AccountActivitiesService.ts new file mode 100644 index 0000000..f580136 --- /dev/null +++ b/src/services/AccountActivitiesService.ts @@ -0,0 +1,105 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { NonTradeActivities } from '../models/NonTradeActivities'; +import type { TradingActivities } from '../models/TradingActivities'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class AccountActivitiesService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get account activities of one type + * Returns account activity entries for many types of activities. + * @returns any returns an array of Account activities + * @throws ApiError + */ + public getAccountActivities({ + activityTypes, + }: { + /** + * A comma-separated list of the activity types to include in the response. If unspecified, activities of all types will be returned. (Cannot be used with category) + */ + activityTypes?: 'trade_activity' | 'non_trade_activity', + }): CancelablePromise> { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/account/activities', + query: { + 'activity_types': activityTypes, + }, + }); + } + + /** + * Get account activities of one type + * Returns account activity entries for a specific type of activity. + * @returns any returns an array of Account activities + * @throws ApiError + */ + public getAccountActivitiesByActivityType({ + activityType, + date, + until, + after, + direction, + pageSize, + pageToken, + category, + }: { + /** + * The activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page. + */ + activityType: string, + /** + * The date for which you want to see activities. + */ + date?: string, + /** + * The response will contain only activities submitted before this date. (Cannot be used with date.) + */ + until?: string, + /** + * The response will contain only activities submitted after this date. (Cannot be used with date.) + */ + after?: string, + /** + * asc or desc (default desc if unspecified.) + */ + direction?: 'asc' | 'desc', + /** + * The maximum number of entries to return in the response. (See the section on paging above.) + */ + pageSize?: number, + /** + * The ID of the end of your current page of results. + */ + pageToken?: string, + /** + * trade_activity or non_trade_activity, to specify the kind of results the server should return. (Cannot be used with /{activity_type} or ?activity_types=...) + */ + category?: string, + }): CancelablePromise> { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/account/activities/{activity_type}', + path: { + 'activity_type': activityType, + }, + query: { + 'date': date, + 'until': until, + 'after': after, + 'direction': direction, + 'page_size': pageSize, + 'page_token': pageToken, + 'category': category, + }, + }); + } + +} diff --git a/src/services/AccountConfigurationsService.ts b/src/services/AccountConfigurationsService.ts new file mode 100644 index 0000000..daa6931 --- /dev/null +++ b/src/services/AccountConfigurationsService.ts @@ -0,0 +1,46 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { AccountConfigurations } from '../models/AccountConfigurations'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class AccountConfigurationsService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Account Configurations + * gets the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ + public getAccountConfig(): CancelablePromise { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/account/configurations', + }); + } + + /** + * Account Configurations + * Updates and returns the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ + public patchAccountConfig({ + requestBody, + }: { + requestBody?: AccountConfigurations, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'PATCH', + url: '/v2/account/configurations', + body: requestBody, + mediaType: 'application/json', + }); + } + +} diff --git a/src/services/AccountsService.ts b/src/services/AccountsService.ts new file mode 100644 index 0000000..4e064b0 --- /dev/null +++ b/src/services/AccountsService.ts @@ -0,0 +1,27 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { Account } from '../models/Account'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class AccountsService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get account + * Returns the account associated with the API key. + * @returns Account OK + * @throws ApiError + */ + public getAccount(): CancelablePromise { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/account', + }); + } + +} diff --git a/src/services/CalendarService.ts b/src/services/CalendarService.ts new file mode 100644 index 0000000..2e73da0 --- /dev/null +++ b/src/services/CalendarService.ts @@ -0,0 +1,51 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { Calendar } from '../models/Calendar'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class CalendarService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get Market Calendar info + * The calendar API serves the full list of market days from 1970 to 2029. It can also be queried by specifying a start and/or end time to narrow down the results. In addition to the dates, the response also contains the specific open and close times for the market days, taking into account early closures. + * + * Returns the market calendar. + * @returns Calendar OK + * @throws ApiError + */ + public getCalendar({ + start, + end, + dateType, + }: { + /** + * The first date to retrieve data for (inclusive) + */ + start?: string, + /** + * The last date to retrieve data for (inclusive) + */ + end?: string, + /** + * Indicates what start and end mean. Enum: ‘TRADING’ or ‘SETTLEMENT’. Default value is ‘TRADING’. If TRADING is specified, returns a calendar whose trading date matches start, end. If SETTLEMENT is specified, returns the calendar whose settlement date matches start and end. + */ + dateType?: string, + }): CancelablePromise> { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/calendar', + query: { + 'start': start, + 'end': end, + 'date_type': dateType, + }, + }); + } + +} diff --git a/src/services/ClockService.ts b/src/services/ClockService.ts new file mode 100644 index 0000000..25d16d8 --- /dev/null +++ b/src/services/ClockService.ts @@ -0,0 +1,29 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { Clock } from '../models/Clock'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class ClockService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get Market Clock info + * The clock API serves the current market timestamp, whether or not the market is currently open, as well as the times of the next market open and close. + * + * Returns the market clock. + * @returns Clock OK + * @throws ApiError + */ + public getClock(): CancelablePromise { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/clock', + }); + } + +} diff --git a/src/services/CryptoPricingDataApiService.ts b/src/services/CryptoPricingDataApiService.ts new file mode 100644 index 0000000..e2f7bcf --- /dev/null +++ b/src/services/CryptoPricingDataApiService.ts @@ -0,0 +1,689 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { BarsResponse } from "../models/BarsResponse"; +import type { CryptoSpreadsResponse } from "../models/CryptoSpreadsResponse"; +import type { LatestBarResponse } from "../models/LatestBarResponse"; +import type { LatestMultiBarsResponse } from "../models/LatestMultiBarsResponse"; +import type { LatestMultiQuotesResponse } from "../models/LatestMultiQuotesResponse"; +import type { LatestMultiTradesResponse } from "../models/LatestMultiTradesResponse"; +import type { LatestMultiXBBOResponse } from "../models/LatestMultiXBBOResponse"; +import type { LatestQuoteResponse } from "../models/LatestQuoteResponse"; +import type { LatestTradeResponse } from "../models/LatestTradeResponse"; +import type { LatestXBBOResponse } from "../models/LatestXBBOResponse"; +import type { MultiBarsResponse } from "../models/MultiBarsResponse"; +import type { MultiQuotesReponse } from "../models/MultiQuotesReponse"; +import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse"; +import type { MultiTradesResponse } from "../models/MultiTradesResponse"; +import type { QuotesResponse } from "../models/QuotesResponse"; +import type { Snapshot } from "../models/Snapshot"; +import type { TradesResponse } from "../models/TradesResponse"; + +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; + +export class CryptoPricingDataApiService { + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get Trade data for multiple crypto symbols + * The Multi Trades API provides historical trade data for a list of given crypto symbols on a specified date. Returns trades for the queried crypto symbols. + * + * Returned results are sorted by symbol first then by Trade timestamp. This means that you are likely to see only one symbol in your first response if there are enough Trades for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Trades were found for them. + * @returns MultiTradesResponse Successful response + * @throws ApiError + */ + public getTradesForMultipleCryptoSymbols({ + symbols, + start, + end, + exchanges, + limit, + pageToken, + }: { + /** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ + symbols: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchanges?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/trades", + query: { + start: start, + end: end, + exchanges: exchanges, + limit: limit, + page_token: pageToken, + symbols: symbols, + }, + }); + } + + /** + * Get Latest Trade data for multiple Crypto symbols + * Provides latest trade data for a list of given crypto symbols. + * @returns LatestMultiTradesResponse OK + * @throws ApiError + */ + public getLatestTradesForMultipleCryptoSymbols({ + symbols, + exchange, + }: { + /** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ + symbols: string; + /** + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchange: "ERSX" | "CBSE" | "FTXU"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/trades/latest", + query: { + symbols: symbols, + exchange: exchange, + }, + }); + } + + /** + * Get Trade data for a crypto symbol + * The Trades API provides historical trade data for a given crypto symbol on a specified date. Returns trades for the queried crypto symbol + * @returns TradesResponse Successful response + * @throws ApiError + */ + public getTradesForCryptoSymbol({ + symbol, + start, + end, + exchanges, + limit, + pageToken, + }: { + /** + * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + symbol: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchanges?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/{symbol}/trades", + path: { + symbol: symbol, + }, + query: { + start: start, + end: end, + exchanges: exchanges, + limit: limit, + page_token: pageToken, + }, + }); + } + + /** + * Latest Trades + * The Latest Trades API provides the latest historical trade data for a given crypto symbol. Returns trades for the queried crypto symbol. + * @returns LatestTradeResponse Successful response + * @throws ApiError + */ + public getLatestTradesForCryptoSymbol({ + symbol, + exchange, + }: { + /** + * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + symbol: string; + /** + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchange: "ERSX" | "CBSE" | "FTXU"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/{symbol}/trades/latest", + path: { + symbol: symbol, + }, + query: { + exchange: exchange, + }, + }); + } + + /** + * Get Bars for multiple Crypto symbols + * returns aggregate historical data for the requested crypto symbols. + * + * Returned results are sorted by symbol first then by Bar timestamp. This means that you are likely to see only one symbol in your first response if there are enough Bars for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Bars were found for them. + * @returns MultiBarsResponse Successful response + * @throws ApiError + */ + public getBarsForMultipleCryptoSymbols({ + symbols, + timeframe, + start, + end, + pageToken, + limit, + exchanges, + }: { + /** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ + symbols: string; + /** + * Timeframe for the aggregation. Values are customizeable, frequently used examples: 1Min, 15Min, 1Hour, 1Day. Limits: 1Min-59Min, 1Hour-23Hour. + */ + timeframe: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchanges?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/bars", + query: { + symbols: symbols, + start: start, + end: end, + timeframe: timeframe, + page_token: pageToken, + limit: limit, + exchanges: exchanges, + }, + }); + } + + /** + * Get Latest Bars for multiple Crypto symbols + * returns latest historical data for the requested crypto symbols for a specific exchange + * @returns LatestMultiBarsResponse OK + * @throws ApiError + */ + public getLatestBarsForMultipleCryptoSymbols({ + symbols, + exchange, + }: { + /** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ + symbols: string; + /** + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchange: "ERSX" | "CBSE" | "FTXU"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/bars/latest", + query: { + symbols: symbols, + exchange: exchange, + }, + }); + } + + /** + * Get Bar data for a crypto symbol + * The Bars API returns aggregate historical data for the requested securities.. Returns bars for the queried crypto symbol + * @returns BarsResponse Successful response + * @throws ApiError + */ + public getBarsForCryptoSymbol({ + symbol, + timeframe, + start, + end, + exchanges, + limit, + pageToken, + }: { + /** + * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + symbol: string; + /** + * Timeframe for the aggregation. Values are customizeable, frequently used examples: 1Min, 15Min, 1Hour, 1Day. Limits: 1Min-59Min, 1Hour-23Hour. + */ + timeframe: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchanges?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/{symbol}/bars", + path: { + symbol: symbol, + }, + query: { + start: start, + end: end, + timeframe: timeframe, + exchanges: exchanges, + limit: limit, + page_token: pageToken, + }, + }); + } + + /** + * Get Latest Bar data for a Crypto symbol + * Gets latest historical bar data for the requested crypto symbol for a specific exchange + * @returns LatestBarResponse OK + * @throws ApiError + */ + public getLatestBarsForCryptoSymbol({ + symbol, + exchange, + }: { + /** + * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + symbol: string; + /** + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchange: "ERSX" | "CBSE" | "FTXU"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/{symbol}/bars/latest", + path: { + symbol: symbol, + }, + query: { + exchange: exchange, + }, + }); + } + + /** + * Get Quotes for multiple crypto symbols + * The Multi Quotes API provides quotes for a list of given crypto symbols at a specified date. Returns quotes for each of the queried crypto symbols. + * + * Returned results are sorted by symbol first then by Quote timestamp. This means that you are likely to see only one symbol in your first response if there are enough Quotes for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Quotes were found for them. + * @returns MultiQuotesReponse Successful response + * @throws ApiError + */ + public getQuotesForMultipleCryptoSymbols({ + symbols, + start, + end, + exchanges, + limit, + pageToken, + }: { + /** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ + symbols: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchanges?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/quotes", + query: { + start: start, + end: end, + exchanges: exchanges, + limit: limit, + page_token: pageToken, + symbols: symbols, + }, + }); + } + + /** + * Get Latest Quotes for multiple Crypto symbols + * Provides latest quotes for a list of given crypto symbols. + * @returns LatestMultiQuotesResponse OK + * @throws ApiError + */ + public getLatestQuotesForMultipleCryptoSymbols({ + symbols, + exchange, + }: { + /** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ + symbols: string; + /** + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchange: "ERSX" | "CBSE" | "FTXU"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/quotes/latest", + query: { + symbols: symbols, + exchange: exchange, + }, + }); + } + + /** + * Get Quotes for crypto symbol + * The Quotes API provides quotes for a given crypto symbol at a specified date. Returns quotes for the queried crypto symbol + * @returns QuotesResponse Successful response + * @throws ApiError + */ + public getQuotesForCryptoSymbol({ + symbol, + start, + end, + exchanges, + limit, + pageToken, + }: { + /** + * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + symbol: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchanges?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/{symbol}/quotes", + path: { + symbol: symbol, + }, + query: { + start: start, + end: end, + exchanges: exchanges, + limit: limit, + page_token: pageToken, + }, + }); + } + + /** + * Latest Quote + * Returns latest quote for the queried crypto symbol + * @returns LatestQuoteResponse Successful response + * @throws ApiError + */ + public getLatestQuoteForCryptoSymbol({ + symbol, + exchange, + }: { + /** + * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + symbol: string; + /** + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchange: "ERSX" | "CBSE" | "FTXU"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/{symbol}/quotes/latest", + path: { + symbol: symbol, + }, + query: { + exchange: exchange, + }, + }); + } + + /** + * Get Snapshots for multiple crypto symbols + * The Multi Snapshot API returns the latest trade, latest quote, minute bar daily bar, and previous daily bar data for list of given crypto symbols. + * @returns MultiSnapshotResponse Successful response + * @throws ApiError + */ + public getSnapshotsForMultipleCryptoSymbols({ + exchange, + symbols, + }: { + /** + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchange: "ERSX" | "CBSE" | "FTXU"; + /** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ + symbols: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/snapshots", + query: { + exchange: exchange, + symbols: symbols, + }, + }); + } + + /** + * Get a Snapshot for a crypto symbol + * The Snapshot API returns the latest trade, latest quote, minute bar daily bar, and previous daily bar data for a given crypto symbol. + * @returns Snapshot Successful response + * @throws ApiError + */ + public getSnapshotForCryptoSymbol({ + symbol, + exchange, + }: { + /** + * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + symbol: string; + /** + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchange: "ERSX" | "CBSE" | "FTXU"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/{symbol}/snapshot", + path: { + symbol: symbol, + }, + query: { + exchange: exchange, + }, + }); + } + + /** + * Get Latest XBBO for multiple crypto symbols + * Returns the latest XBBO for a given list crypto symbols that calculates the Best Bid and Offer across multiple exchanges. If exchanges is not specified then only the exchanges that can be traded on Alpaca are included in the calculation. + * @returns LatestMultiXBBOResponse OK + * @throws ApiError + */ + public getLatestXbboForMultipleCryptoSymbols({ + symbols, + exchanges, + }: { + /** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ + symbols: string; + /** + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchanges?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/xbbos/latest", + query: { + symbols: symbols, + exchanges: exchanges, + }, + }); + } + + /** + * Get Latest XBBO for a single crypto symbol + * Returns the XBBO for a crypto symbol that calculates the Best Bid and Offer across multiple exchanges. If exchanges is not specified then only the exchanges that can be traded on Alpaca are included in the calculation. + * @returns LatestXBBOResponse Successful response + * @throws ApiError + */ + public getLatestXbboForCryptoSymbol({ + symbol, + exchanges, + }: { + /** + * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + symbol: string; + /** + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + */ + exchanges?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/{symbol}/xbbo/latest", + path: { + symbol: symbol, + }, + query: { + exchanges: exchanges, + }, + }); + } + + /** + * Get list of crypto spreads per exchange + * Get list of crypto spreads for the different exchanges Alpaca supports in basis points. + * @returns CryptoSpreadsResponse OK + * @throws ApiError + */ + public getCryptoMetaSpreads(): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/crypto/meta/spreads", + }); + } +} \ No newline at end of file diff --git a/src/services/DefaultService.ts b/src/services/DefaultService.ts new file mode 100644 index 0000000..94f1b7a --- /dev/null +++ b/src/services/DefaultService.ts @@ -0,0 +1,85 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { Assets } from '../models/Assets'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class DefaultService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get Assets + * The assets API serves as the master list of assets available for trade and data consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. + * @returns Assets An array of asset objects + * @throws ApiError + */ + public getAssets({ + status, + assetClass, + exchange, + attributes, + }: { + /** + * e.g. “active”. By default, all statuses are included. + */ + status?: string, + /** + * Defaults to us_equity. + */ + assetClass?: string, + /** + * Optional AMEX, ARCA, BATS, NYSE, NASDAQ, NYSEARCA or OTC + */ + exchange?: string, + /** + * Comma separated values to query for more than one attribute. + */ + attributes?: string, + }): CancelablePromise> { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/assets', + query: { + 'status': status, + 'asset_class': assetClass, + 'exchange': exchange, + 'attributes': attributes, + }, + }); + } + + /** + * Get an Asset by ID or Symbol + * Get the asset model for a given symbol or asset_id. The symbol or asset_id should be passed in as a path parameter. + * + * **Note**: For crypto, the symbol has to follow old symbology, e.g. BTCUSD. + * + * **Note**: For coin pairs, the symbol should be separated by spare symbol (/), e.g. BTC/USDT. Since spare is a special character in HTTP, use the URL encoded version instead, e.g. /v2/assets/BTC%2FUSDT + * @returns Assets An Asset object + * @throws ApiError + */ + public getAssetsSymbolOrAssetId({ + symbolOrAssetId, + }: { + /** + * symbol or assetId + */ + symbolOrAssetId: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/assets/{symbol_or_asset_id}', + path: { + 'symbol_or_asset_id': symbolOrAssetId, + }, + errors: { + 404: `Not Found`, + }, + }); + } + +} diff --git a/src/services/LogoService.ts b/src/services/LogoService.ts new file mode 100644 index 0000000..bd5bc1a --- /dev/null +++ b/src/services/LogoService.ts @@ -0,0 +1,44 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; + +export class LogoService { + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get Logo for symbol + * Returns logo image resource for provided symbol. + * @returns binary Returns the requested logo as an image. + * @throws ApiError + */ + public getLogoForSymbol({ + cryptoOrStockSymbol, + placeholder = true, + }: { + /** + * The crypto or stock symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + cryptoOrStockSymbol: string; + /** + * If true then the api will generate a placeholder image if no logo was found. Defaults to true + */ + placeholder?: boolean; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/logos/{crypto_or_stock_symbol}", + path: { + crypto_or_stock_symbol: cryptoOrStockSymbol, + }, + query: { + placeholder: placeholder, + }, + errors: { + 404: `No Logo was found for this symbol. This code will only be returned if you set \`placeholder\` to false. Otherwise we will generate a placeholder image for this symbol`, + }, + }); + } +} \ No newline at end of file diff --git a/src/services/NewsService.ts b/src/services/NewsService.ts new file mode 100644 index 0000000..dbdfc3b --- /dev/null +++ b/src/services/NewsService.ts @@ -0,0 +1,77 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { GetNewsResponse } from "../models/GetNewsResponse"; + +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; + +export class NewsService { + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * News API + * Returns latest news articles across stocks and crypto. By default returns latest 10 news articles. + * @returns GetNewsResponse Successful response + * @throws ApiError + */ + public getNews({ + symbols, + start, + end, + limit, + sort, + includeContent, + excludeContentless, + pageToken, + }: { + /** + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH + */ + symbols: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Sort articles by updated date. Options: DESC, ASC + */ + sort?: "DESC" | "ASC"; + /** + * Boolean indicator to include content for news articles (if available) + */ + includeContent?: boolean; + /** + * Boolean indicator to exclude news articles that do not contain content + */ + excludeContentless?: boolean; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/news", + query: { + start: start, + end: end, + symbols: symbols, + limit: limit, + sort: sort, + include_content: includeContent, + exclude_contentless: excludeContentless, + page_token: pageToken, + }, + }); + } +} \ No newline at end of file diff --git a/src/services/OrdersService.ts b/src/services/OrdersService.ts new file mode 100644 index 0000000..65c1bce --- /dev/null +++ b/src/services/OrdersService.ts @@ -0,0 +1,219 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { CanceledOrderResponse } from '../models/CanceledOrderResponse'; +import type { Order } from '../models/Order'; +import type { PatchOrderRequest } from '../models/PatchOrderRequest'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class OrdersService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Order + * Places a new order for the given account. An order request may be rejected if the account is not authorized for trading, or if the tradable balance is insufficient to fill the order.. + * @returns Order Successful response + * @throws ApiError + */ + public postOrder({ + requestBody, + }: { + requestBody: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'POST', + url: '/v2/orders', + body: requestBody, + mediaType: 'application/json', + errors: { + 403: `Forbidden + + Buying power or shares is not sufficient.`, + 422: `Unprocessable + + Input parameters are not recognized.`, + }, + }); + } + + /** + * All Orders + * Retrieves a list of orders for the account, filtered by the supplied query parameters. + * @returns Order Successful response + * + * An array of Order objects + * @throws ApiError + */ + public getAllOrders({ + status, + limit, + after, + until, + direction, + nested, + symbols, + side, + }: { + /** + * Order status to be queried. open, closed or all. Defaults to open. + */ + status?: 'open' | 'closed' | 'all', + /** + * The maximum number of orders in response. Defaults to 50 and max is 500. + */ + limit?: number, + /** + * The response will include only ones submitted after this timestamp (exclusive.) + */ + after?: string, + /** + * The response will include only ones submitted until this timestamp (exclusive.) + */ + until?: string, + /** + * The chronological order of response based on the submission time. asc or desc. Defaults to desc. + */ + direction?: 'asc' | 'desc', + /** + * If true, the result will roll up multi-leg orders under the legs field of primary order. + */ + nested?: boolean, + /** + * A comma-separated list of symbols to filter by (ex. “AAPL,TSLA,MSFT”). A currency pair is required for crypto orders (ex. “BTCUSD,BCHUSD,LTCUSD,ETCUSD”). + */ + symbols?: string, + /** + * Filters down to orders that have a matching side field set. + */ + side?: string, + }): CancelablePromise> { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/orders', + query: { + 'status': status, + 'limit': limit, + 'after': after, + 'until': until, + 'direction': direction, + 'nested': nested, + 'symbols': symbols, + 'side': side, + }, + }); + } + + /** + * All Orders + * Attempts to cancel all open orders. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. + * @returns CanceledOrderResponse Multi-Status with body. + * + * an array of objects that include the order id and http status code for each status request. + * @throws ApiError + */ + public deleteAllOrders(): CancelablePromise> { + return this.httpRequest.request({ + method: 'DELETE', + url: '/v2/orders', + errors: { + 500: `Failed to cancel order.`, + }, + }); + } + + /** + * Order by Order ID + * Retrieves a single order for the given order_id. + * @returns Order Successful response + * @throws ApiError + */ + public getOrderByOrderId({ + orderId, + nested, + }: { + /** + * order id + */ + orderId: string, + /** + * If true, the result will roll up multi-leg orders under the legs field of primary order. + */ + nested?: boolean, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/orders/{order_id}', + path: { + 'order_id': orderId, + }, + query: { + 'nested': nested, + }, + }); + } + + /** + * Order + * Replaces a single order with updated parameters. Each parameter overrides the corresponding attribute of the existing order. The other attributes remain the same as the existing order. + * + * A success return code from a replaced order does NOT guarantee the existing open order has been replaced. If the existing open order is filled before the replacing (new) order reaches the execution venue, the replacing (new) order is rejected, and these events are sent in the trade_updates stream channel. + * + * While an order is being replaced, buying power is reduced by the larger of the two orders that have been placed (the old order being replaced, and the newly placed order to replace it). If you are replacing a buy entry order with a higher limit price than the original order, the buying power is calculated based on the newly placed order. If you are replacing it with a lower limit price, the buying power is calculated based on the old order. + * + * @returns Order Successful response + * + * The new Order object with the new order ID. + * @throws ApiError + */ + public patchOrderByOrderId({ + orderId, + requestBody, + }: { + /** + * order id + */ + orderId: string, + requestBody: PatchOrderRequest, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'PATCH', + url: '/v2/orders/{order_id}', + path: { + 'order_id': orderId, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * Order by Order ID + * Attempts to cancel an Open Order. If the order is no longer cancelable, the request will be rejected with status 422; otherwise accepted with return status 204. + * @returns void + * @throws ApiError + */ + public deleteOrderByOrderId({ + orderId, + }: { + /** + * order id + */ + orderId: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'DELETE', + url: '/v2/orders/{order_id}', + path: { + 'order_id': orderId, + }, + errors: { + 422: `The order status is not cancelable.`, + }, + }); + } + +} diff --git a/src/services/PortfolioHistoryService.ts b/src/services/PortfolioHistoryService.ts new file mode 100644 index 0000000..c4a0723 --- /dev/null +++ b/src/services/PortfolioHistoryService.ts @@ -0,0 +1,55 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { PortfolioHistory } from '../models/PortfolioHistory'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class PortfolioHistoryService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Account Portfolio History + * Returns timeseries data about equity and profit/loss (P/L) of the account in requested timespan. + * @returns PortfolioHistory Successful response + * @throws ApiError + */ + public getAccountPortfolioHistory({ + period, + timeframe, + dateEnd, + extendedHours, + }: { + /** + * The duration of the data in + , such as 1D, where can be D for day, W for week, M for month and A for year. Defaults to 1M. + */ + period?: string, + /** + * The resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. + */ + timeframe?: string, + /** + * The date the data is returned up to, in “YYYY-MM-DD” format. Defaults to the current market date (rolls over at the market open if extended_hours is false, otherwise at 7am ET) + */ + dateEnd?: string, + /** + * If true, include extended hours in the result. This is effective only for timeframe less than 1D. + */ + extendedHours?: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/account/portfolio/history', + query: { + 'period': period, + 'timeframe': timeframe, + 'date_end': dateEnd, + 'extended_hours': extendedHours, + }, + }); + } + +} diff --git a/src/services/PositionsService.ts b/src/services/PositionsService.ts new file mode 100644 index 0000000..4a10f61 --- /dev/null +++ b/src/services/PositionsService.ts @@ -0,0 +1,121 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { Order } from '../models/Order'; +import type { Position } from '../models/Position'; +import type { PositionClosedReponse } from '../models/PositionClosedReponse'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class PositionsService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * All Open Positions + * The positions API provides information about an account’s current open positions. The response will include information such as cost basis, shares traded, and market value, which will be updated live as price information is updated. Once a position is closed, it will no longer be queryable through this API + * + * Retrieves a list of the account’s open positions + * @returns Position Successful response + * @throws ApiError + */ + public getAllOpenPositions(): CancelablePromise> { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/positions', + }); + } + + /** + * All Positions + * Closes (liquidates) all of the account’s open long and short positions. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. + * @returns PositionClosedReponse Multi-Status with body. + * + * an array of PositionClosed responses + * @throws ApiError + */ + public deleteAllOpenPositions({ + cancelOrders, + }: { + /** + * If true is specified, cancel all open orders before liquidating all positions. + */ + cancelOrders?: boolean, + }): CancelablePromise> { + return this.httpRequest.request({ + method: 'DELETE', + url: '/v2/positions', + query: { + 'cancel_orders': cancelOrders, + }, + errors: { + 500: `Failed to liquidate`, + }, + }); + } + + /** + * Open Position + * Retrieves the account’s open position for the given symbol or assetId. + * @returns Position Successful response + * @throws ApiError + */ + public getOpenPosition({ + symbolOrAssetId, + }: { + /** + * symbol or assetId + */ + symbolOrAssetId: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/positions/{symbol_or_asset_id}', + path: { + 'symbol_or_asset_id': symbolOrAssetId, + }, + }); + } + + /** + * Position + * Closes (liquidates) the account’s open position for the given symbol. Works for both long and short positions. + * @returns Order Successful response + * + * Returns the order created to close out this position + * @throws ApiError + */ + public deleteOpenPosition({ + symbolOrAssetId, + qty, + percentage, + }: { + /** + * symbol or assetId + */ + symbolOrAssetId: string, + /** + * the number of shares to liquidate. Can accept up to 9 decimal points. Cannot work with percentage + */ + qty?: number, + /** + * percentage of position to liquidate. Must be between 0 and 100. Would only sell fractional if position is originally fractional. Can accept up to 9 decimal points. Cannot work with qty + */ + percentage?: number, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'DELETE', + url: '/v2/positions/{symbol_or_asset_id}', + path: { + 'symbol_or_asset_id': symbolOrAssetId, + }, + query: { + 'qty': qty, + 'percentage': percentage, + }, + }); + } + +} diff --git a/src/services/ScreenerService.ts b/src/services/ScreenerService.ts new file mode 100644 index 0000000..1167c57 --- /dev/null +++ b/src/services/ScreenerService.ts @@ -0,0 +1,43 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { MarketMoversResponse } from "../models/MarketMoversResponse"; + +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; + +export class ScreenerService { + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get Top Market Movers by Market type + * Returns top market movers for stocks. By default will return top 5 market gainers and losers. + * @returns MarketMoversResponse OK + * @throws ApiError + */ + public getTopMoversByMarketType({ + marketType, + top = 10, + }: { + /** + * Screen specific market (stocks or crypto) + */ + marketType: "stocks" | "crypto"; + /** + * Number of top market movers to fetch (gainers and losers). Will return number top for each. By default 10 gainers and 10 losers. + */ + top?: number; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v1beta1/screener/{market_type}/movers", + path: { + market_type: marketType, + }, + query: { + top: top, + }, + }); + } +} \ No newline at end of file diff --git a/src/services/StockPricingDataApiService.ts b/src/services/StockPricingDataApiService.ts new file mode 100644 index 0000000..cdc5c4b --- /dev/null +++ b/src/services/StockPricingDataApiService.ts @@ -0,0 +1,705 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { BarsResponse } from "../models/BarsResponse"; +import type { ExchangesResponse } from "../models/ExchangesResponse"; +import type { LatestBarResponse } from "../models/LatestBarResponse"; +import type { LatestMultiBarsResponse } from "../models/LatestMultiBarsResponse"; +import type { LatestMultiQuotesResponse } from "../models/LatestMultiQuotesResponse"; +import type { LatestMultiTradesResponse } from "../models/LatestMultiTradesResponse"; +import type { LatestQuoteResponse } from "../models/LatestQuoteResponse"; +import type { LatestTradeResponse } from "../models/LatestTradeResponse"; +import type { MultiBarsResponse } from "../models/MultiBarsResponse"; +import type { MultiQuotesReponse } from "../models/MultiQuotesReponse"; +import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse"; +import type { MultiTradesResponse } from "../models/MultiTradesResponse"; +import type { QuotesResponse } from "../models/QuotesResponse"; +import type { Snapshot } from "../models/Snapshot"; +import type { TradesResponse } from "../models/TradesResponse"; + +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; + +export class StockPricingDataApiService { + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get Bar data for multiple stock symbols + * The Multi Bars API returns aggregate historical data for multiple given ticker symbols over a specified time period. + * + * Returned results are sorted by symbol first then by Bar timestamp. This means that you are likely to see only one symbol in your first response if there are enough Bars for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Bars were found for them. + * @returns MultiBarsResponse Successful response + * @throws ApiError + */ + public getBarsForMultipleStockSymbols({ + symbols, + timeframe, + start, + end, + limit, + pageToken, + adjustment, + feed, + }: { + /** + * The comma-separated list of stock ticker symbols to query for. + */ + symbols: string; + /** + * Timeframe for the aggregation. Values are customizeable, frequently used examples: 1Min, 15Min, 1Hour, 1Day. Limits: 1Min-59Min, 1Hour-23Hour. + */ + timeframe: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + /** + * specifies the corporate action adjustment(s) for bars data + */ + adjustment?: "raw" | "split" | "dividend" | "all"; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/bars", + query: { + symbols: symbols, + start: start, + end: end, + timeframe: timeframe, + limit: limit, + page_token: pageToken, + adjustment: adjustment, + feed: feed, + }, + }); + } + + /** + * Get Latest Bar data for multiple stock symbols + * The Bars API returns aggregate historical data for the requested security. Returns the latest bar data for the queried stock symbols. + * @returns LatestMultiBarsResponse OK + * @throws ApiError + */ + public getLatestBarsForMultipleStockSymbols({ + symbols, + feed, + }: { + /** + * The comma-separated list of stock ticker symbols to query for. + */ + symbols: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/bars/latest", + query: { + symbols: symbols, + feed: feed, + }, + }); + } + + /** + * Bars + * The Bars API returns aggregate historical data for the requested security. Returns bars for the queried stock symbol. + * @returns BarsResponse Successful response + * @throws ApiError + */ + public getBarsForStockSymbol({ + symbol, + timeframe, + start, + end, + limit, + pageToken, + feed, + adjustment, + }: { + /** + * The stock ticker symbol to query for. + */ + symbol: string; + /** + * Timeframe for the aggregation. Values are customizeable, frequently used examples: 1Min, 15Min, 1Hour, 1Day. Limits: 1Min-59Min, 1Hour-23Hour. + */ + timeframe: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + /** + * specifies the corporate action adjustment(s) for bars data + */ + adjustment?: "raw" | "split" | "dividend" | "all"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/{symbol}/bars", + path: { + symbol: symbol, + }, + query: { + start: start, + end: end, + timeframe: timeframe, + limit: limit, + page_token: pageToken, + feed: feed, + adjustment: adjustment, + }, + }); + } + + /** + * Get Latest Bars for Symbol + * The Bars API returns aggregate historical data for the requested security. Returns the latest bar data for the queried stock symbol. + * @returns LatestBarResponse OK + * @throws ApiError + */ + public getLatestBarForStockSymbol({ + symbol, + feed, + }: { + /** + * The stock ticker symbol to query for. + */ + symbol: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/{symbol}/bars/latest", + path: { + symbol: symbol, + }, + query: { + feed: feed, + }, + }); + } + + /** + * Get Trade data for multiple stock symbols + * The Multi Trades API provides historical trade data for multiple given ticker symbols over a specified time period. + * + * Returned results are sorted by symbol first then by Trade timestamp. This means that you are likely to see only one symbol in your first response if there are enough Trades for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Trades were found for them. + * @returns MultiTradesResponse Successful response + * @throws ApiError + */ + public getTradesForMultipleStockSymbols({ + symbols, + start, + end, + limit, + pageToken, + feed, + }: { + /** + * The comma-separated list of stock ticker symbols to query for. + */ + symbols: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/trades", + query: { + symbols: symbols, + start: start, + end: end, + limit: limit, + page_token: pageToken, + feed: feed, + }, + }); + } + + /** + * Get Latest Trades data for multiple stock symbols + * Returns the latest trades data for the queried stock symbols. + * @returns LatestMultiTradesResponse OK + * @throws ApiError + */ + public getLatestTradesForMultipleStockSymbols({ + symbols, + feed, + }: { + /** + * The comma-separated list of stock ticker symbols to query for. + */ + symbols: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/trades/latest", + query: { + symbols: symbols, + feed: feed, + }, + }); + } + + /** + * Trades + * The Trades API provides historical trade data for a given ticker symbol on a specified date. Returns trades for the queried stock signal. + * @returns TradesResponse Successful response + * @throws ApiError + */ + public getTradesForStockSymbol({ + symbol, + symbol, + start, + end, + limit, + pageToken, + feed, + }: { + /** + * The stock ticker symbol to query for. + */ + symbol: string; + /** + * The symbol to query for + */ + symbol: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/{symbol}/trades", + path: { + symbol: symbol, + symbol: symbol, + }, + query: { + start: start, + end: end, + limit: limit, + page_token: pageToken, + feed: feed, + }, + }); + } + + /** + * Latest Trade + * The Latest Trade API provides the latest trade data for a given ticker symbol. + * @returns LatestTradeResponse Successful response + * @throws ApiError + */ + public getLatestTradeForStockSymbol({ + symbol, + symbol, + feed, + }: { + /** + * The stock ticker symbol to query for. + */ + symbol: string; + /** + * The symbol to query for + */ + symbol: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/{symbol}/trades/latest", + path: { + symbol: symbol, + symbol: symbol, + }, + query: { + feed: feed, + }, + }); + } + + /** + * Get Quotes for multiple stock symbols + * The Multi Quotes API provides NBBO quotes for multiple given ticker symbols over a specified time period. + * + * Returned results are sorted by symbol first then by Quote timestamp. This means that you are likely to see only one symbol in your first response if there are enough Quotes for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Quotes were found for them. + * @returns MultiQuotesReponse Successful response + * + * @throws ApiError + */ + public getQuotesForMultipleStockSymbols({ + symbols, + start, + end, + limit, + pageToken, + feed, + }: { + /** + * The comma-separated list of stock ticker symbols to query for. + */ + symbols: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/quotes", + query: { + symbols: symbols, + start: start, + end: end, + limit: limit, + page_token: pageToken, + feed: feed, + }, + }); + } + + /** + * Get Latest Quotes for multiple stock symbols + * Returns the latest quotes data for the queried stock symbols. + * @returns LatestMultiQuotesResponse OK + * @throws ApiError + */ + public getLatestQuotesForMultipleStockSymbols({ + symbols, + feed, + }: { + /** + * The comma-separated list of stock ticker symbols to query for. + */ + symbols: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/quotes/latest", + query: { + symbols: symbols, + feed: feed, + }, + }); + } + + /** + * Get Quotes for stock symbol + * The Quotes API provides NBBO quotes for a single given ticker symbol at a specified date. Returns quotes (NBBOs) for the querried stock symbol. + * @returns QuotesResponse Successful response + * @throws ApiError + */ + public getQuotesForStockSymbol({ + symbol, + symbol, + start, + end, + limit, + pageToken, + feed, + }: { + /** + * The stock ticker symbol to query for. + */ + symbol: string; + /** + * The symbol to query for + */ + symbol: string; + /** + * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. + */ + start?: string; + /** + * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. + */ + end?: string; + /** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ + limit?: number; + /** + * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. + */ + pageToken?: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/{symbol}/quotes", + path: { + symbol: symbol, + symbol: symbol, + }, + query: { + start: start, + end: end, + limit: limit, + page_token: pageToken, + feed: feed, + }, + }); + } + + /** + * Get Latest Quote for stock symbol + * The Latest Quote API provides the latest quote data for a given ticker symbol. + * @returns LatestQuoteResponse Successful response + * @throws ApiError + */ + public getLatestQuoteForStockSymbol({ + symbol, + symbol, + feed, + }: { + /** + * The stock ticker symbol to query for. + */ + symbol: string; + /** + * The symbol to query for + */ + symbol: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/{symbol}/quotes/latest", + path: { + symbol: symbol, + symbol: symbol, + }, + query: { + feed: feed, + }, + }); + } + + /** + * Get Snapshots for multiple stock symbols + * The Snapshot API for multiple tickers provides the latest trade, latest quote, minute bar daily bar and previous daily bar data for the given ticker symbols. + * @returns MultiSnapshotResponse Successful response + * @throws ApiError + */ + public getSnapshotsForMultipleStockSymbols({ + symbols, + feed, + }: { + /** + * The comma-separated list of stock ticker symbols to query for. + */ + symbols: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/snapshots", + query: { + symbols: symbols, + feed: feed, + }, + }); + } + + /** + * Get a Snapshot for a stock symbol + * The Snapshot API for one ticker provides the latest trade, latest quote, minute bar daily bar and previous daily bar data for a given ticker symbol. This endpoint returns the snapshot for the requested security. + * @returns Snapshot Successful response + * @throws ApiError + */ + public getSnapshotForStockSymbol({ + symbol, + symbol, + feed, + }: { + /** + * The stock ticker symbol to query for. + */ + symbol: string; + /** + * The symbol to query for + */ + symbol: string; + /** + * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription + */ + feed?: "iex" | "sip" | "otc"; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/{symbol}/snapshot", + path: { + symbol: symbol, + symbol: symbol, + }, + query: { + feed: feed, + }, + }); + } + + /** + * Get List of supported exchanges + * Returns a json object representing the exchanges we support. The keys are the short form codes you will see in our responses and the values are their respective full names. + * @returns ExchangesResponse OK + * @throws ApiError + */ + public getExchanges(): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/meta/exchanges", + }); + } + + /** + * Get list of Conditions + * Each feed/exchange uses its own set of codes to identify trade and quote conditions, so the same condition may have a different code depending on the originator of the data. + * + * See [Our documentation](https://alpaca.markets/docs/market-data/#conditions) for more information + * @returns any OK + * + * Response is a JSON object mapping a condition to a plain text description + * @throws ApiError + */ + public getConditions({ + type, + tape, + }: { + /** + * either "trade" or "quote" + */ + type: "trade" | "quote"; + /** + * What kind of conditions to retrieve, "A" and "B" return CTS, where "C" will give you UTP + */ + tape: "A" | "B" | "C"; + }): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/stocks/meta/conditions/{type}", + path: { + type: type, + }, + query: { + tape: tape, + }, + }); + } +} \ No newline at end of file diff --git a/src/services/WatchlistsService.ts b/src/services/WatchlistsService.ts new file mode 100644 index 0000000..ad3d897 --- /dev/null +++ b/src/services/WatchlistsService.ts @@ -0,0 +1,291 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { UpdateWatchlistRequest } from '../models/UpdateWatchlistRequest'; +import type { Watchlist } from '../models/Watchlist'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import type { BaseHttpRequest } from '../core/BaseHttpRequest'; + +export class WatchlistsService { + + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Watchlists + * Returns the list of watchlists registered under the account. + * @returns Watchlist Successful response + * @throws ApiError + */ + public getWatchlists(): CancelablePromise> { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/watchlists', + }); + } + + /** + * Watchlist + * Create a new watchlist with initial set of assets. + * @returns Watchlist Successful response + * @throws ApiError + */ + public postWatchlist({ + requestBody, + }: { + requestBody: UpdateWatchlistRequest, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'POST', + url: '/v2/watchlists', + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * Get Watchlist by ID + * Returns a watchlist identified by the ID. + * @returns Watchlist Successful response + * @throws ApiError + */ + public getWatchlistById({ + watchlistId, + }: { + /** + * watchlist id + */ + watchlistId: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/watchlists/{watchlist_id}', + path: { + 'watchlist_id': watchlistId, + }, + }); + } + + /** + * Update Watchlist By Id + * Update the name and/or content of watchlist + * @returns Watchlist Successful response + * @throws ApiError + */ + public updateWatchlistById({ + watchlistId, + requestBody, + }: { + /** + * watchlist id + */ + watchlistId: string, + requestBody?: UpdateWatchlistRequest, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'PUT', + url: '/v2/watchlists/{watchlist_id}', + path: { + 'watchlist_id': watchlistId, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * Add Asset to Watchlist + * Append an asset for the symbol to the end of watchlist asset list + * @returns Watchlist Successful response + * @throws ApiError + */ + public addAssetToWatchlist({ + watchlistId, + requestBody, + }: { + /** + * watchlist id + */ + watchlistId: string, + requestBody?: { + /** + * the symbol name to add to the watchlist + */ + symbol?: string; + }, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'POST', + url: '/v2/watchlists/{watchlist_id}', + path: { + 'watchlist_id': watchlistId, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * Delete Watchlist By Id + * Delete a watchlist. This is a permanent deletion. + * @returns void + * @throws ApiError + */ + public deleteWatchlistById({ + watchlistId, + }: { + /** + * watchlist id + */ + watchlistId: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'DELETE', + url: '/v2/watchlists/{watchlist_id}', + path: { + 'watchlist_id': watchlistId, + }, + errors: { + 404: `Watchlist not found`, + }, + }); + } + + /** + * Get Watchlist by Name + * You can also call GET, PUT, POST and DELETE with watchlist name with another endpoint /v2/watchlists:by_name and query parameter name=, instead of /v2/watchlists/{watchlist_id} endpoints + * + * Returns a watchlist by name + * @returns Watchlist Successful response + * @throws ApiError + */ + public getWatchlistByName({ + name, + }: { + /** + * name of the watchlist + */ + name: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'GET', + url: '/v2/watchlists:by_name', + query: { + 'name': name, + }, + }); + } + + /** + * Update Watchlist By Name + * Update the name and/or content of watchlist + * @returns Watchlist Successful response + * @throws ApiError + */ + public updateWatchlistByName({ + name, + requestBody, + }: { + /** + * name of the watchlist + */ + name: string, + requestBody?: UpdateWatchlistRequest, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'PUT', + url: '/v2/watchlists:by_name', + query: { + 'name': name, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * Add Asset to Watchlist By Name + * Append an asset for the symbol to the end of watchlist asset list + * @returns Watchlist Successful response + * @throws ApiError + */ + public addAssetToWatchlistByName({ + name, + requestBody, + }: { + /** + * name of the watchlist + */ + name: string, + requestBody?: { + /** + * the symbol name to add to the watchlist + */ + symbol?: string; + }, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'POST', + url: '/v2/watchlists:by_name', + query: { + 'name': name, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * Delete Watchlist By Name + * Delete a watchlist. This is a permanent deletion. + * @returns void + * @throws ApiError + */ + public deleteWatchlistByName({ + name, + }: { + /** + * name of the watchlist + */ + name: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'DELETE', + url: '/v2/watchlists:by_name', + query: { + 'name': name, + }, + }); + } + + /** + * Symbol from Watchlist + * Delete one entry for an asset by symbol name + * @returns Watchlist Returns the updated watchlist + * @throws ApiError + */ + public removeAssetFromWatchlist({ + watchlistId, + symbol, + }: { + /** + * Watchlist ID + */ + watchlistId: string, + /** + * symbol name to remove from the watchlist content + */ + symbol: string, + }): CancelablePromise { + return this.httpRequest.request({ + method: 'DELETE', + url: '/v2/watchlists/{watchlist_id}/{symbol}', + path: { + 'watchlist_id': watchlistId, + 'symbol': symbol, + }, + }); + } + +} diff --git a/src/stuff.ts b/src/stuff.ts new file mode 100644 index 0000000..e7a0954 --- /dev/null +++ b/src/stuff.ts @@ -0,0 +1,30 @@ +export type DataSource = "iex" | "sip"; + +export interface Endpoints { + rest: { + v1beta1: string; + v2: string; + data_v2: string; + data_v1: string; + data_v1beta3: string; + }; + websocket: { + api: string; + data: (source: DataSource) => string; + }; +} + +export const endpoints: Endpoints = { + rest: { + v1beta1: "https://data.alpaca.markets/v1beta1", + v2: "https://api.alpaca.markets/v2", + data_v2: "https://data.alpaca.markets/v2", + data_v1: "https://data.alpaca.markets/v1", + data_v1beta3: "https://data.alpaca.markets/v1beta3/crypto", + }, + websocket: { + api: "wss://api.alpaca.markets/stream", + data: (source: DataSource = "iex") => + `wss://stream.data.alpaca.markets/v2/${source}`, + }, +}; \ No newline at end of file diff --git a/src/types.ts b/src/types.ts deleted file mode 100644 index 6569c92..0000000 --- a/src/types.ts +++ /dev/null @@ -1,420 +0,0 @@ -export interface CancelOrder { - order_id: string; -} - -export interface ClosePosition { - symbol: string; - qty?: number; - percentage?: number; -} - -export interface ClosePositions { - cancel_orders?: boolean; -} - -export interface CreateWatchList { - name: string; - symbols?: string[]; -} - -export interface DeleteWatchList { - uuid: string; -} - -export interface GetAccountActivities { - activity_type?: string; - activity_types?: string | string[]; - date?: string; - until?: string; - after?: string; - direction?: "asc" | "desc"; - page_size?: number; - page_token?: string; -} - -export interface GetAsset { - asset_id_or_symbol: string; -} - -export interface GetAssets { - status?: "active" | "inactive"; - asset_class?: string; // i don't know where to find all asset classes -} - -export interface GetCalendar { - start?: Date; - end?: Date; -} - -export interface OrderCancellation { - id: string; - status: number; - order: Order; -} - -export interface GetOrders { - status?: "open" | "closed" | "all"; - limit?: number; - after?: Date; - until?: Date; - direction?: "asc" | "desc"; - nested?: boolean; - symbols?: string[]; -} - -export interface GetPortfolioHistory { - period?: string; - timeframe?: string; - date_end?: Date; - extended_hours?: boolean; -} - -export interface GetPosition { - symbol: string; -} - -export interface GetWatchList { - uuid: string; -} - -export interface PlaceOrder { - symbol: string; - side: OrderSide; - type: OrderType; - time_in_force: OrderTimeInForce; - qty?: number; - notional?: number; - limit_price?: number; - stop_price?: number; - extended_hours?: boolean; - client_order_id?: string; - trail_price?: number; - trail_percent?: number; - order_class?: "simple" | "bracket" | "oco" | "oto"; - take_profit?: { - limit_price: number; - }; - stop_loss?: { - stop_price: number; - limit_price?: number; - }; -} - -export interface RemoveFromWatchList { - uuid: string; - symbol: string; -} - -export interface ReplaceOrder { - order_id: string; - qty?: number; - time_in_force?: OrderTimeInForce; - limit_price?: number; - stop_price?: number; - client_order_id?: string; -} - -export interface UpdateAccountConfigurations { - dtbp_check?: string; - no_shorting?: boolean; - suspend_trade?: boolean; - trade_confirm_email?: string; -} - -export interface UpdateWatchList { - uuid: string; - name?: string; - symbols?: string[]; -} - -export interface GetNews { - symbols?: string[] | string; - start?: Date; - end?: Date; - limit?: number; - sort?: "ASC" | "DESC"; - include_content?: boolean; - exclude_contentless?: boolean; - page_token?: string; -} - -export interface DefaultCredentials { - key: string; - secret: string; - paper?: boolean; -} -export interface OAuthCredentials { - access_token: String; - paper?: boolean; -} -export type AccountStatus = - | "ONBOARDING" - | "SUBMISSION_FAILED" - | "SUBMITTED" - | "ACCOUNT_UPDATED" - | "APPROVAL_PENDING" - | "ACTIVE" - | "REJECTED"; -export interface Account { - account_blocked: boolean; - account_number: string; - buying_power: number; - cash: number; - created_at: Date; - currency: string; - daytrade_count: number; - daytrading_buying_power: number; - equity: number; - id: string; - initial_margin: number; - last_equity: number; - last_maintenance_margin: number; - long_market_value: number; - maintenance_margin: number; - multiplier: number; - pattern_day_trader: boolean; - portfolio_value: number; - regt_buying_power: number; - short_market_value: number; - shorting_enabled: boolean; - sma: number; - status: AccountStatus; - trade_suspended_by_user: boolean; - trading_blocked: boolean; - transfers_blocked: boolean; -} - -export interface AccountConfigurations { - dtbp_check: "both" | "entry" | "exit"; - no_shorting: boolean; - suspend_trade: boolean; - trade_confirm_email: "all" | "none"; -} - -export type AssetExchange = - | "AMEX" - | "ARCA" - | "BATS" - | "NYSE" - | "NASDAQ" - | "NYSEARCA"; - -export type AssetStatus = "active" | "inactive"; -export interface Asset { - id: string; - class: string; - exchange: AssetExchange; - symbol: string; - status: AssetStatus; - tradable: boolean; - marginable: boolean; - shortable: boolean; - easy_to_borrow: boolean; - fractionable: boolean; -} -export interface Calendar { - date: string; - open: string; - close: string; -} - -export interface Clock { - timestamp: Date; - is_open: boolean; - next_open: Date; - next_close: Date; -} - -export type OrderType = - | "market" - | "limit" - | "stop" - | "stop_limit" - | "trailing_stop"; - -export type OrderClass = "simple" | "bracket" | "oto" | "oco"; - -export type OrderSide = "buy" | "sell"; - -export type OrderTimeInForce = "day" | "gtc" | "opg" | "cls" | "ioc" | "fok"; - -export type OrderStatus = - | "new" - | "partially_filled" - | "filled" - | "done_for_day" - | "canceled" - | "expired" - | "replaced" - | "pending_cancel" - | "pending_replace" - | "accepted" - | "pending_new" - | "accepted_for_bidding" - | "stopped" - | "rejected" - | "suspended" - | "calculated"; - -export interface Order { - id: string; - client_order_id: string; - created_at: Date; - updated_at: Date; - submitted_at: Date; - filled_at: Date; - expired_at: Date; - canceled_at: Date; - failed_at: Date; - replaced_at: Date; - replaced_by: string; - replaces: string; - asset_id: string; - symbol: string; - asset_class: string; - qty: number; - filled_qty: number; - type: OrderType; - side: OrderSide; - time_in_force: OrderTimeInForce; - limit_price: number; - stop_price: number; - filled_avg_price: number; - status: OrderStatus; - extended_hours: boolean; - legs: Order[]; - trail_price: number; - trail_percent: number; - hwm: number; - order_class: OrderClass; -} -export interface PortfolioHistory { - timestamp: number[]; - equity: number[]; - profit_loss: number[]; - profit_loss_pct: number[]; - base_value: number; - timeframe: "1Min" | "5Min" | "15Min" | "1H" | "1D"; -} - -export type PositionSide = "long" | "short"; -export interface Position { - asset_id: string; - symbol: string; - exchange: string; - asset_class: string; - avg_entry_price: number; - qty: number; - side: PositionSide; - market_value: number | null; - cost_basis: number; - unrealized_pl: number | null; - unrealized_plpc: number | null; - unrealized_intraday_pl: number | null; - unrealized_intraday_plpc: number | null; - current_price: number | null; - lastday_price: number | null; - change_today: number | null; -} - -export type ActivityType = - | "FILL" - | "TRANS" - | "MISC" - | "ACATC" - | "ACATS" - | "CSD" - | "CSR" - | "DIV" - | "DIVCGL" - | "DIVCGS" - | "DIVFEE" - | "DIVFT" - | "DIVNRA" - | "DIVROC" - | "DIVTW" - | "DIVTXEX" - | "INT" - | "INTNRA" - | "INTTW" - | "JNL" - | "JNLC" - | "JNLS" - | "MA" - | "NC" - | "OPASN" - | "OPEXP" - | "OPXRC" - | "PTC" - | "PTR" - | "REORG" - | "SC" - | "SSO" - | "SSP"; - -export type TradeActivityType = "fill" | "partial_fill"; -export type TradeActivitySide = "buy" | "sell"; - -export interface TradeActivity { - activity_type: Extract; - cum_qty: number; - id: string; - leaves_qty: number; - price: number; - qty: number; - side: TradeActivitySide; - symbol: string; - transaction_time: string; - order_id: string; - type: TradeActivityType; -} - -export interface NonTradeActivity { - activity_type: Exclude; - id: string; - date: string; - net_amount: number; - symbol: string; - qty: number; - per_share_amount: number; -} - -export type Activity = TradeActivity | NonTradeActivity; - -export interface Watchlist { - account_id: string; - assets: Asset[]; - created_at: string; - id: string; - name: string; - updated_at: string; -} - -export interface News { - id: number; - headline: string; - author: string; - created_at: Date; - updated_at: Date; - summary: string; - url: string; - images: any[]; - symbols: string[]; - source: string; -} - -export interface NewsPage { - news: News[]; - next_page_token: string; -} - -export interface AddToWatchList { - uuid: string; - symbol: string; -} - -export interface GetOrder { - order_id?: string; - client_order_id?: string; - nested?: boolean; -} \ No newline at end of file From 8a6dd61d35d0dc81fc41c4e5c4cd27f985fa3bfd Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 24 Jul 2023 19:07:37 -0600 Subject: [PATCH 15/55] no commit message --- src/OpenAPIClient.ts | 58 ++++++++++--------- src/index.ts | 6 +- src/models/Bar.ts | 98 ++++++++++++++------------------- src/models/OrderClass.ts | 17 ++---- src/services/AccountService.ts | 25 +++++++++ src/services/AccountsService.ts | 27 --------- src/services/AssetsService.ts | 83 ++++++++++++++++++++++++++++ src/services/DefaultService.ts | 85 ---------------------------- 8 files changed, 185 insertions(+), 214 deletions(-) create mode 100644 src/services/AccountService.ts delete mode 100644 src/services/AccountsService.ts create mode 100644 src/services/AssetsService.ts delete mode 100644 src/services/DefaultService.ts diff --git a/src/OpenAPIClient.ts b/src/OpenAPIClient.ts index 4915d24..938f836 100644 --- a/src/OpenAPIClient.ts +++ b/src/OpenAPIClient.ts @@ -1,13 +1,13 @@ import type { BaseHttpRequest } from "./core/BaseHttpRequest"; import type { OpenAPIConfig } from "./core/OpenAPI"; -import { AxiosHttpRequest } from "./core/AxiosHttpRequest"; +import { AxiosHttpRequest } from "./core/AxiosHttpRequest"; import { AccountActivitiesService } from "./services/AccountActivitiesService"; import { AccountConfigurationsService } from "./services/AccountConfigurationsService"; -import { AccountsService } from "./services/AccountsService"; +import { AccountService } from "./services/AccountService"; import { CalendarService } from "./services/CalendarService"; import { ClockService } from "./services/ClockService"; -import { DefaultService } from "./services/DefaultService"; +import { AssetsService } from "./services/AssetsService"; import { OrdersService } from "./services/OrdersService"; import { PortfolioHistoryService } from "./services/PortfolioHistoryService"; import { PositionsService } from "./services/PositionsService"; @@ -21,26 +21,24 @@ import { StockPricingDataApiService } from "./services/StockPricingDataApiServic type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest; export class OpenAPIClient { - // API services from the first client - public readonly accountActivities: AccountActivitiesService; - public readonly accountConfigurations: AccountConfigurationsService; - public readonly accounts: AccountsService; public readonly calendar: CalendarService; public readonly clock: ClockService; - public readonly default: DefaultService; - public readonly orders: OrdersService; - public readonly portfolioHistory: PortfolioHistoryService; - public readonly positions: PositionsService; - public readonly watchlists: WatchlistsService; - - // API services from the second client - public readonly cryptoPricingDataApi: CryptoPricingDataApiService; + public readonly assets: AssetsService; + public readonly crypto: CryptoPricingDataApiService; public readonly logo: LogoService; public readonly news: NewsService; public readonly screener: ScreenerService; - public readonly stockPricingDataApi: StockPricingDataApiService; - + public readonly stocks: StockPricingDataApiService; + public readonly watchlists: WatchlistsService; public readonly request: BaseHttpRequest; + public readonly account: { + activities: AccountActivitiesService; + configurations: AccountConfigurationsService; + positions: PositionsService; + orders: OrdersService; + portfolioHistory: PortfolioHistoryService; + service: AccountService; + }; constructor( config?: Partial, @@ -58,23 +56,23 @@ export class OpenAPIClient { ENCODE_PATH: config?.ENCODE_PATH, }); - // Instantiate API services from the first client - this.accountActivities = new AccountActivitiesService(this.request); - this.accountConfigurations = new AccountConfigurationsService(this.request); - this.accounts = new AccountsService(this.request); + this.account = { + service: new AccountService(this.request), + activities: new AccountActivitiesService(this.request), + configurations: new AccountConfigurationsService(this.request), + positions: new PositionsService(this.request), + portfolioHistory: new PortfolioHistoryService(this.request), + orders: new OrdersService(this.request), + }; + + this.watchlists = new WatchlistsService(this.request); this.calendar = new CalendarService(this.request); this.clock = new ClockService(this.request); - this.default = new DefaultService(this.request); - this.orders = new OrdersService(this.request); - this.portfolioHistory = new PortfolioHistoryService(this.request); - this.positions = new PositionsService(this.request); - this.watchlists = new WatchlistsService(this.request); - - // Instantiate API services from the second client - this.cryptoPricingDataApi = new CryptoPricingDataApiService(this.request); + this.assets = new AssetsService(this.request); + this.crypto = new CryptoPricingDataApiService(this.request); this.logo = new LogoService(this.request); this.news = new NewsService(this.request); this.screener = new ScreenerService(this.request); - this.stockPricingDataApi = new StockPricingDataApiService(this.request); + this.stocks = new StockPricingDataApiService(this.request); } } \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 968152b..a4b9227 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,8 +2,6 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import { OpenAPIClient } from "./OpenAPIClient"; - export { OpenAPIClient } from "./OpenAPIClient"; export { ApiError } from "./core/ApiError"; @@ -40,10 +38,10 @@ export type { Watchlist } from "./models/Watchlist"; export { AccountActivitiesService } from "./services/AccountActivitiesService"; export { AccountConfigurationsService } from "./services/AccountConfigurationsService"; -export { AccountsService } from "./services/AccountsService"; +export { AccountService } from "./services/AccountService"; export { CalendarService } from "./services/CalendarService"; export { ClockService } from "./services/ClockService"; -export { DefaultService } from "./services/DefaultService"; +export { AssetsService } from "./services/AssetsService"; export { OrdersService } from "./services/OrdersService"; export { PortfolioHistoryService } from "./services/PortfolioHistoryService"; export { PositionsService } from "./services/PositionsService"; diff --git a/src/models/Bar.ts b/src/models/Bar.ts index b4a07d9..bfdd3a4 100644 --- a/src/models/Bar.ts +++ b/src/models/Bar.ts @@ -1,63 +1,47 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * The bars API returns aggregate historical data for the requested securities. - * */ export type Bar = { - /** - * Timestamp in RFC-3339 format with nanosecond precision. - */ - 't': string; - /** - * Exchange. Only present on Bars for Crypto symbols - */ - 'x'?: Bar.'x'; - /** - * Open price - */ - 'o': number; - /** - * High price. - */ - 'h': number; - /** - * Low price. - * - */ - 'l': number; - /** - * Close price. - */ - 'c': number; - /** - * Volume. - */ - 'v': number; - /** - * Number of trades. - */ - 'n'?: number; - /** - * Volume weighted average price. - */ - vw?: number; + /** + * Timestamp in RFC-3339 format with nanosecond precision. + */ + t: string; + /** + * Exchange. Only present on Bars for Crypto symbols + */ + x?: BarExchange; + /** + * Open price + */ + o: number; + /** + * High price. + */ + h: number; + /** + * Low price. + */ + l: number; + /** + * Close price. + */ + c: number; + /** + * Volume. + */ + v: number; + /** + * Number of trades. + */ + n?: number; + /** + * Volume weighted average price. + */ + vw?: number; }; -export namespace Bar { - - /** - * Exchange. Only present on Bars for Crypto symbols - */ - export enum 'x' { - FTXU = 'FTXU', - ERSX = 'ERSX', - CBSE = 'CBSE', - } - - -} - +export enum BarExchange { + FTXU = "FTXU", + ERSX = "ERSX", + CBSE = "CBSE", +} \ No newline at end of file diff --git a/src/models/OrderClass.ts b/src/models/OrderClass.ts index 3e4dd51..8ad610e 100644 --- a/src/models/OrderClass.ts +++ b/src/models/OrderClass.ts @@ -1,15 +1,10 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * This will either be the empty string "", "simple", "bracket", "oco", or "oto". */ export enum OrderClass { - SIMPLE = 'simple', - BRACKET = 'bracket', - OCO = 'oco', - OTO = 'oto', - = '', -} + SIMPLE = "simple", + BRACKET = "bracket", + OCO = "oco", + OTO = "oto", + EMPTY = "", +} \ No newline at end of file diff --git a/src/services/AccountService.ts b/src/services/AccountService.ts new file mode 100644 index 0000000..b8cf42f --- /dev/null +++ b/src/services/AccountService.ts @@ -0,0 +1,25 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { Account } from "../models/Account"; + +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; + +export class AccountService { + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get account + * Returns the account associated with the API key. + * @returns Account OK + * @throws ApiError + */ + public getAccount(): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account", + }); + } +} \ No newline at end of file diff --git a/src/services/AccountsService.ts b/src/services/AccountsService.ts deleted file mode 100644 index 4e064b0..0000000 --- a/src/services/AccountsService.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { Account } from '../models/Account'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; - -export class AccountsService { - - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get account - * Returns the account associated with the API key. - * @returns Account OK - * @throws ApiError - */ - public getAccount(): CancelablePromise { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/account', - }); - } - -} diff --git a/src/services/AssetsService.ts b/src/services/AssetsService.ts new file mode 100644 index 0000000..198a5cb --- /dev/null +++ b/src/services/AssetsService.ts @@ -0,0 +1,83 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { Assets } from "../models/Assets"; + +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; + +export class AssetsService { + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get Assets + * The assets API serves as the master list of assets available for trade and data consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. + * @returns Assets An array of asset objects + * @throws ApiError + */ + public getAssets({ + status, + assetClass, + exchange, + attributes, + }: { + /** + * e.g. “active”. By default, all statuses are included. + */ + status?: string; + /** + * Defaults to us_equity. + */ + assetClass?: string; + /** + * Optional AMEX, ARCA, BATS, NYSE, NASDAQ, NYSEARCA or OTC + */ + exchange?: string; + /** + * Comma separated values to query for more than one attribute. + */ + attributes?: string; + }): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/assets", + query: { + status: status, + asset_class: assetClass, + exchange: exchange, + attributes: attributes, + }, + }); + } + + /** + * Get an Asset by ID or Symbol + * Get the asset model for a given symbol or asset_id. The symbol or asset_id should be passed in as a path parameter. + * + * **Note**: For crypto, the symbol has to follow old symbology, e.g. BTCUSD. + * + * **Note**: For coin pairs, the symbol should be separated by spare symbol (/), e.g. BTC/USDT. Since spare is a special character in HTTP, use the URL encoded version instead, e.g. /v2/assets/BTC%2FUSDT + * @returns Assets An Asset object + * @throws ApiError + */ + public getAssetsSymbolOrAssetId({ + symbolOrAssetId, + }: { + /** + * symbol or assetId + */ + symbolOrAssetId: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/assets/{symbol_or_asset_id}", + path: { + symbol_or_asset_id: symbolOrAssetId, + }, + errors: { + 404: `Not Found`, + }, + }); + } +} \ No newline at end of file diff --git a/src/services/DefaultService.ts b/src/services/DefaultService.ts deleted file mode 100644 index 94f1b7a..0000000 --- a/src/services/DefaultService.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { Assets } from '../models/Assets'; - -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; - -export class DefaultService { - - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get Assets - * The assets API serves as the master list of assets available for trade and data consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. - * @returns Assets An array of asset objects - * @throws ApiError - */ - public getAssets({ - status, - assetClass, - exchange, - attributes, - }: { - /** - * e.g. “active”. By default, all statuses are included. - */ - status?: string, - /** - * Defaults to us_equity. - */ - assetClass?: string, - /** - * Optional AMEX, ARCA, BATS, NYSE, NASDAQ, NYSEARCA or OTC - */ - exchange?: string, - /** - * Comma separated values to query for more than one attribute. - */ - attributes?: string, - }): CancelablePromise> { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/assets', - query: { - 'status': status, - 'asset_class': assetClass, - 'exchange': exchange, - 'attributes': attributes, - }, - }); - } - - /** - * Get an Asset by ID or Symbol - * Get the asset model for a given symbol or asset_id. The symbol or asset_id should be passed in as a path parameter. - * - * **Note**: For crypto, the symbol has to follow old symbology, e.g. BTCUSD. - * - * **Note**: For coin pairs, the symbol should be separated by spare symbol (/), e.g. BTC/USDT. Since spare is a special character in HTTP, use the URL encoded version instead, e.g. /v2/assets/BTC%2FUSDT - * @returns Assets An Asset object - * @throws ApiError - */ - public getAssetsSymbolOrAssetId({ - symbolOrAssetId, - }: { - /** - * symbol or assetId - */ - symbolOrAssetId: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/assets/{symbol_or_asset_id}', - path: { - 'symbol_or_asset_id': symbolOrAssetId, - }, - errors: { - 404: `Not Found`, - }, - }); - } - -} From 6782314eec99cde1aa19b95d1fa30bcc093d52cd Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 10:20:46 -0600 Subject: [PATCH 16/55] no commit message --- src/services/StockPricingDataApiService.ts | 30 ---------------------- 1 file changed, 30 deletions(-) diff --git a/src/services/StockPricingDataApiService.ts b/src/services/StockPricingDataApiService.ts index cdc5c4b..32ab59e 100644 --- a/src/services/StockPricingDataApiService.ts +++ b/src/services/StockPricingDataApiService.ts @@ -313,7 +313,6 @@ export class StockPricingDataApiService { * @throws ApiError */ public getTradesForStockSymbol({ - symbol, symbol, start, end, @@ -325,10 +324,6 @@ export class StockPricingDataApiService { * The stock ticker symbol to query for. */ symbol: string; - /** - * The symbol to query for - */ - symbol: string; /** * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. */ @@ -355,7 +350,6 @@ export class StockPricingDataApiService { url: "/v2/stocks/{symbol}/trades", path: { symbol: symbol, - symbol: symbol, }, query: { start: start, @@ -374,7 +368,6 @@ export class StockPricingDataApiService { * @throws ApiError */ public getLatestTradeForStockSymbol({ - symbol, symbol, feed, }: { @@ -382,10 +375,6 @@ export class StockPricingDataApiService { * The stock ticker symbol to query for. */ symbol: string; - /** - * The symbol to query for - */ - symbol: string; /** * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ @@ -396,7 +385,6 @@ export class StockPricingDataApiService { url: "/v2/stocks/{symbol}/trades/latest", path: { symbol: symbol, - symbol: symbol, }, query: { feed: feed, @@ -498,7 +486,6 @@ export class StockPricingDataApiService { * @throws ApiError */ public getQuotesForStockSymbol({ - symbol, symbol, start, end, @@ -510,10 +497,6 @@ export class StockPricingDataApiService { * The stock ticker symbol to query for. */ symbol: string; - /** - * The symbol to query for - */ - symbol: string; /** * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. */ @@ -540,7 +523,6 @@ export class StockPricingDataApiService { url: "/v2/stocks/{symbol}/quotes", path: { symbol: symbol, - symbol: symbol, }, query: { start: start, @@ -559,7 +541,6 @@ export class StockPricingDataApiService { * @throws ApiError */ public getLatestQuoteForStockSymbol({ - symbol, symbol, feed, }: { @@ -567,10 +548,6 @@ export class StockPricingDataApiService { * The stock ticker symbol to query for. */ symbol: string; - /** - * The symbol to query for - */ - symbol: string; /** * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ @@ -581,7 +558,6 @@ export class StockPricingDataApiService { url: "/v2/stocks/{symbol}/quotes/latest", path: { symbol: symbol, - symbol: symbol, }, query: { feed: feed, @@ -625,7 +601,6 @@ export class StockPricingDataApiService { * @throws ApiError */ public getSnapshotForStockSymbol({ - symbol, symbol, feed, }: { @@ -633,10 +608,6 @@ export class StockPricingDataApiService { * The stock ticker symbol to query for. */ symbol: string; - /** - * The symbol to query for - */ - symbol: string; /** * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ @@ -647,7 +618,6 @@ export class StockPricingDataApiService { url: "/v2/stocks/{symbol}/snapshot", path: { symbol: symbol, - symbol: symbol, }, query: { feed: feed, From ed76aff6fbf74458efeef1feaadc3e73b3ac1b6c Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 10:24:26 -0600 Subject: [PATCH 17/55] no commit message --- .github/workflows/prettier.yml | 28 ++++++++++++++++++++++++++ src/OpenAPIClient.ts | 2 -- src/core/OpenAPI.ts | 36 +++++++++++++++------------------- 3 files changed, 44 insertions(+), 22 deletions(-) create mode 100644 .github/workflows/prettier.yml diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml new file mode 100644 index 0000000..b5bf5b4 --- /dev/null +++ b/.github/workflows/prettier.yml @@ -0,0 +1,28 @@ +name: Pretty Formatting + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + format: + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: '14' + + - name: Install dependencies + run: npm ci + + - name: Run prettier + run: npx prettier --write . \ No newline at end of file diff --git a/src/OpenAPIClient.ts b/src/OpenAPIClient.ts index 938f836..c86db5c 100644 --- a/src/OpenAPIClient.ts +++ b/src/OpenAPIClient.ts @@ -50,8 +50,6 @@ export class OpenAPIClient { WITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false, CREDENTIALS: config?.CREDENTIALS ?? "include", TOKEN: config?.TOKEN, - USERNAME: config?.USERNAME, - PASSWORD: config?.PASSWORD, HEADERS: config?.HEADERS, ENCODE_PATH: config?.ENCODE_PATH, }); diff --git a/src/core/OpenAPI.ts b/src/core/OpenAPI.ts index e741bfa..977244a 100644 --- a/src/core/OpenAPI.ts +++ b/src/core/OpenAPI.ts @@ -2,31 +2,27 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ApiRequestOptions } from './ApiRequestOptions'; +import type { ApiRequestOptions } from "./ApiRequestOptions"; type Resolver = (options: ApiRequestOptions) => Promise; type Headers = Record; export type OpenAPIConfig = { - BASE: string; - VERSION: string; - WITH_CREDENTIALS: boolean; - CREDENTIALS: 'include' | 'omit' | 'same-origin'; - TOKEN?: string | Resolver | undefined; - USERNAME?: string | Resolver | undefined; - PASSWORD?: string | Resolver | undefined; - HEADERS?: Headers | Resolver | undefined; - ENCODE_PATH?: ((path: string) => string) | undefined; + BASE: string; + VERSION: string; + WITH_CREDENTIALS: boolean; + CREDENTIALS: "include" | "omit" | "same-origin"; + TOKEN?: string | Resolver | undefined; + HEADERS?: Headers | Resolver | undefined; + ENCODE_PATH?: ((path: string) => string) | undefined; }; export const OpenAPI: OpenAPIConfig = { - BASE: 'https://paper-api.alpaca.markets', - VERSION: '2.0.0', - WITH_CREDENTIALS: false, - CREDENTIALS: 'include', - TOKEN: undefined, - USERNAME: undefined, - PASSWORD: undefined, - HEADERS: undefined, - ENCODE_PATH: undefined, -}; + BASE: "https://paper-api.alpaca.markets", + VERSION: "2.0.0", + WITH_CREDENTIALS: false, + CREDENTIALS: "include", + TOKEN: undefined, + HEADERS: undefined, + ENCODE_PATH: undefined, +}; \ No newline at end of file From 9f5c06e38d7a11931885c89b2b9e8770b6aba5e8 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 10:24:47 -0600 Subject: [PATCH 18/55] no commit message --- .github/workflows/prettier.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index b5bf5b4..65f370d 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -3,10 +3,10 @@ name: Pretty Formatting on: push: branches: - - master + - main pull_request: branches: - - master + - main jobs: format: From 13a2e4cb13ed401d21d09264b6a1e6d3ac5c5db7 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 10:26:01 -0600 Subject: [PATCH 19/55] prettier --- src/OpenAPIClient.ts | 2 +- src/core/ApiError.ts | 36 +- src/core/ApiRequestOptions.ts | 29 +- src/core/ApiResult.ts | 10 +- src/core/AxiosHttpRequest.ts | 35 +- src/core/BaseHttpRequest.ts | 11 +- src/core/CancelablePromise.ts | 221 ++++---- src/core/OpenAPI.ts | 2 +- src/core/request.ts | 529 ++++++++++--------- src/index.ts | 2 +- src/models/Account.ts | 251 +++++---- src/models/AccountConfigurations.ts | 84 ++- src/models/AccountStatus.ts | 14 +- src/models/ActivityType.ts | 70 +-- src/models/AddAssetToWatchlistRequest.ts | 9 +- src/models/AssetClass.ts | 4 +- src/models/Assets.ts | 114 ++-- src/models/Bar.ts | 2 +- src/models/BarsResponse.ts | 21 +- src/models/Calendar.ts | 33 +- src/models/CanceledOrderResponse.ts | 17 +- src/models/Clock.ts | 37 +- src/models/CryptoSpreadsResponse.ts | 3 +- src/models/Exchange.ts | 14 +- src/models/GetNewsResponse.ts | 13 +- src/models/LatestBarResponse.ts | 7 +- src/models/LatestMultiBarsResponse.ts | 5 +- src/models/LatestMultiQuotesResponse.ts | 5 +- src/models/LatestMultiTradesResponse.ts | 5 +- src/models/LatestMultiXBBOResponse.ts | 5 +- src/models/LatestQuoteResponse.ts | 7 +- src/models/LatestTradeResponse.ts | 13 +- src/models/LatestXBBOResponse.ts | 7 +- src/models/MarketMoverAsset.ts | 33 +- src/models/MarketMoversResponse.ts | 52 +- src/models/MultiBarsResponse.ts | 7 +- src/models/MultiQuotesReponse.ts | 13 +- src/models/MultiSnapshotResponse.ts | 2 +- src/models/MultiTradesResponse.ts | 7 +- src/models/News.ts | 91 ++-- src/models/NewsImage.ts | 36 +- src/models/NonTradeActivities.ts | 55 +- src/models/Order.ts | 187 ++++--- src/models/OrderClass.ts | 2 +- src/models/OrderSide.ts | 4 +- src/models/OrderStatus.ts | 32 +- src/models/OrderType.ts | 10 +- src/models/PatchOrderRequest.ts | 45 +- src/models/PortfolioHistory.ts | 49 +- src/models/Position.ts | 131 +++-- src/models/PositionClosedReponse.ts | 21 +- src/models/Quote.ts | 87 ++- src/models/QuotesResponse.ts | 9 +- src/models/Snapshot.ts | 17 +- src/models/TimeInForce.ts | 12 +- src/models/Trade.ts | 65 ++- src/models/TradesResponse.ts | 27 +- src/models/TradingActivities.ts | 108 ++-- src/models/UpdateWatchlistRequest.ts | 5 +- src/models/Watchlist.ts | 39 +- src/models/XBBO.ts | 57 +- src/models/adjustment.ts | 8 +- src/models/crypto_exchange.ts | 6 +- src/models/feed.ts | 6 +- src/services/AccountActivitiesService.ts | 180 ++++--- src/services/AccountConfigurationsService.ts | 70 ++- src/services/AccountService.ts | 2 +- src/services/AssetsService.ts | 2 +- src/services/CalendarService.ts | 78 ++- src/services/ClockService.ts | 38 +- src/services/CryptoPricingDataApiService.ts | 2 +- src/services/LogoService.ts | 2 +- src/services/NewsService.ts | 2 +- src/services/OrdersService.ts | 382 +++++++------ src/services/PortfolioHistoryService.ts | 86 ++- src/services/PositionsService.ts | 200 ++++--- src/services/ScreenerService.ts | 2 +- src/services/StockPricingDataApiService.ts | 2 +- src/services/WatchlistsService.ts | 502 +++++++++--------- src/stuff.ts | 2 +- 80 files changed, 2187 insertions(+), 2205 deletions(-) diff --git a/src/OpenAPIClient.ts b/src/OpenAPIClient.ts index c86db5c..0734b20 100644 --- a/src/OpenAPIClient.ts +++ b/src/OpenAPIClient.ts @@ -73,4 +73,4 @@ export class OpenAPIClient { this.screener = new ScreenerService(this.request); this.stocks = new StockPricingDataApiService(this.request); } -} \ No newline at end of file +} diff --git a/src/core/ApiError.ts b/src/core/ApiError.ts index d6b8fcc..d9769d2 100644 --- a/src/core/ApiError.ts +++ b/src/core/ApiError.ts @@ -2,24 +2,28 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ApiRequestOptions } from './ApiRequestOptions'; -import type { ApiResult } from './ApiResult'; +import type { ApiRequestOptions } from "./ApiRequestOptions"; +import type { ApiResult } from "./ApiResult"; export class ApiError extends Error { - public readonly url: string; - public readonly status: number; - public readonly statusText: string; - public readonly body: any; - public readonly request: ApiRequestOptions; + public readonly url: string; + public readonly status: number; + public readonly statusText: string; + public readonly body: any; + public readonly request: ApiRequestOptions; - constructor(request: ApiRequestOptions, response: ApiResult, message: string) { - super(message); + constructor( + request: ApiRequestOptions, + response: ApiResult, + message: string + ) { + super(message); - this.name = 'ApiError'; - this.url = response.url; - this.status = response.status; - this.statusText = response.statusText; - this.body = response.body; - this.request = request; - } + this.name = "ApiError"; + this.url = response.url; + this.status = response.status; + this.statusText = response.statusText; + this.body = response.body; + this.request = request; + } } diff --git a/src/core/ApiRequestOptions.ts b/src/core/ApiRequestOptions.ts index c19adcc..ac9a2ca 100644 --- a/src/core/ApiRequestOptions.ts +++ b/src/core/ApiRequestOptions.ts @@ -3,15 +3,22 @@ /* tslint:disable */ /* eslint-disable */ export type ApiRequestOptions = { - readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH'; - readonly url: string; - readonly path?: Record; - readonly cookies?: Record; - readonly headers?: Record; - readonly query?: Record; - readonly formData?: Record; - readonly body?: any; - readonly mediaType?: string; - readonly responseHeader?: string; - readonly errors?: Record; + readonly method: + | "GET" + | "PUT" + | "POST" + | "DELETE" + | "OPTIONS" + | "HEAD" + | "PATCH"; + readonly url: string; + readonly path?: Record; + readonly cookies?: Record; + readonly headers?: Record; + readonly query?: Record; + readonly formData?: Record; + readonly body?: any; + readonly mediaType?: string; + readonly responseHeader?: string; + readonly errors?: Record; }; diff --git a/src/core/ApiResult.ts b/src/core/ApiResult.ts index ad8fef2..63ed6c4 100644 --- a/src/core/ApiResult.ts +++ b/src/core/ApiResult.ts @@ -3,9 +3,9 @@ /* tslint:disable */ /* eslint-disable */ export type ApiResult = { - readonly url: string; - readonly ok: boolean; - readonly status: number; - readonly statusText: string; - readonly body: any; + readonly url: string; + readonly ok: boolean; + readonly status: number; + readonly statusText: string; + readonly body: any; }; diff --git a/src/core/AxiosHttpRequest.ts b/src/core/AxiosHttpRequest.ts index 402a5fa..f2bc926 100644 --- a/src/core/AxiosHttpRequest.ts +++ b/src/core/AxiosHttpRequest.ts @@ -2,25 +2,24 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ApiRequestOptions } from './ApiRequestOptions'; -import { BaseHttpRequest } from './BaseHttpRequest'; -import type { CancelablePromise } from './CancelablePromise'; -import type { OpenAPIConfig } from './OpenAPI'; -import { request as __request } from './request'; +import type { ApiRequestOptions } from "./ApiRequestOptions"; +import { BaseHttpRequest } from "./BaseHttpRequest"; +import type { CancelablePromise } from "./CancelablePromise"; +import type { OpenAPIConfig } from "./OpenAPI"; +import { request as __request } from "./request"; export class AxiosHttpRequest extends BaseHttpRequest { + constructor(config: OpenAPIConfig) { + super(config); + } - constructor(config: OpenAPIConfig) { - super(config); - } - - /** - * Request method - * @param options The request options from the service - * @returns CancelablePromise - * @throws ApiError - */ - public override request(options: ApiRequestOptions): CancelablePromise { - return __request(this.config, options); - } + /** + * Request method + * @param options The request options from the service + * @returns CancelablePromise + * @throws ApiError + */ + public override request(options: ApiRequestOptions): CancelablePromise { + return __request(this.config, options); + } } diff --git a/src/core/BaseHttpRequest.ts b/src/core/BaseHttpRequest.ts index 8da3f4d..f078115 100644 --- a/src/core/BaseHttpRequest.ts +++ b/src/core/BaseHttpRequest.ts @@ -2,13 +2,12 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ApiRequestOptions } from './ApiRequestOptions'; -import type { CancelablePromise } from './CancelablePromise'; -import type { OpenAPIConfig } from './OpenAPI'; +import type { ApiRequestOptions } from "./ApiRequestOptions"; +import type { CancelablePromise } from "./CancelablePromise"; +import type { OpenAPIConfig } from "./OpenAPI"; export abstract class BaseHttpRequest { + constructor(public readonly config: OpenAPIConfig) {} - constructor(public readonly config: OpenAPIConfig) {} - - public abstract request(options: ApiRequestOptions): CancelablePromise; + public abstract request(options: ApiRequestOptions): CancelablePromise; } diff --git a/src/core/CancelablePromise.ts b/src/core/CancelablePromise.ts index 55fef85..5220853 100644 --- a/src/core/CancelablePromise.ts +++ b/src/core/CancelablePromise.ts @@ -3,129 +3,128 @@ /* tslint:disable */ /* eslint-disable */ export class CancelError extends Error { - - constructor(message: string) { - super(message); - this.name = 'CancelError'; - } - - public get isCancelled(): boolean { - return true; - } + constructor(message: string) { + super(message); + this.name = "CancelError"; + } + + public get isCancelled(): boolean { + return true; + } } export interface OnCancel { - readonly isResolved: boolean; - readonly isRejected: boolean; - readonly isCancelled: boolean; + readonly isResolved: boolean; + readonly isRejected: boolean; + readonly isCancelled: boolean; - (cancelHandler: () => void): void; + (cancelHandler: () => void): void; } export class CancelablePromise implements Promise { - #isResolved: boolean; - #isRejected: boolean; - #isCancelled: boolean; - readonly #cancelHandlers: (() => void)[]; - readonly #promise: Promise; - #resolve?: (value: T | PromiseLike) => void; - #reject?: (reason?: any) => void; - - constructor( - executor: ( - resolve: (value: T | PromiseLike) => void, - reject: (reason?: any) => void, - onCancel: OnCancel - ) => void - ) { - this.#isResolved = false; - this.#isRejected = false; - this.#isCancelled = false; - this.#cancelHandlers = []; - this.#promise = new Promise((resolve, reject) => { - this.#resolve = resolve; - this.#reject = reject; - - const onResolve = (value: T | PromiseLike): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isResolved = true; - this.#resolve?.(value); - }; - - const onReject = (reason?: any): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isRejected = true; - this.#reject?.(reason); - }; - - const onCancel = (cancelHandler: () => void): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#cancelHandlers.push(cancelHandler); - }; - - Object.defineProperty(onCancel, 'isResolved', { - get: (): boolean => this.#isResolved, - }); - - Object.defineProperty(onCancel, 'isRejected', { - get: (): boolean => this.#isRejected, - }); - - Object.defineProperty(onCancel, 'isCancelled', { - get: (): boolean => this.#isCancelled, - }); - - return executor(onResolve, onReject, onCancel as OnCancel); - }); - } - - get [Symbol.toStringTag]() { - return "Cancellable Promise"; - } - - public then( - onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, - onRejected?: ((reason: any) => TResult2 | PromiseLike) | null - ): Promise { - return this.#promise.then(onFulfilled, onRejected); - } - - public catch( - onRejected?: ((reason: any) => TResult | PromiseLike) | null - ): Promise { - return this.#promise.catch(onRejected); - } + #isResolved: boolean; + #isRejected: boolean; + #isCancelled: boolean; + readonly #cancelHandlers: (() => void)[]; + readonly #promise: Promise; + #resolve?: (value: T | PromiseLike) => void; + #reject?: (reason?: any) => void; + + constructor( + executor: ( + resolve: (value: T | PromiseLike) => void, + reject: (reason?: any) => void, + onCancel: OnCancel + ) => void + ) { + this.#isResolved = false; + this.#isRejected = false; + this.#isCancelled = false; + this.#cancelHandlers = []; + this.#promise = new Promise((resolve, reject) => { + this.#resolve = resolve; + this.#reject = reject; + + const onResolve = (value: T | PromiseLike): void => { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#isResolved = true; + this.#resolve?.(value); + }; - public finally(onFinally?: (() => void) | null): Promise { - return this.#promise.finally(onFinally); - } + const onReject = (reason?: any): void => { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#isRejected = true; + this.#reject?.(reason); + }; - public cancel(): void { + const onCancel = (cancelHandler: () => void): void => { if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; + return; } - this.#isCancelled = true; - if (this.#cancelHandlers.length) { - try { - for (const cancelHandler of this.#cancelHandlers) { - cancelHandler(); - } - } catch (error) { - console.warn('Cancellation threw an error', error); - return; - } + this.#cancelHandlers.push(cancelHandler); + }; + + Object.defineProperty(onCancel, "isResolved", { + get: (): boolean => this.#isResolved, + }); + + Object.defineProperty(onCancel, "isRejected", { + get: (): boolean => this.#isRejected, + }); + + Object.defineProperty(onCancel, "isCancelled", { + get: (): boolean => this.#isCancelled, + }); + + return executor(onResolve, onReject, onCancel as OnCancel); + }); + } + + get [Symbol.toStringTag]() { + return "Cancellable Promise"; + } + + public then( + onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, + onRejected?: ((reason: any) => TResult2 | PromiseLike) | null + ): Promise { + return this.#promise.then(onFulfilled, onRejected); + } + + public catch( + onRejected?: ((reason: any) => TResult | PromiseLike) | null + ): Promise { + return this.#promise.catch(onRejected); + } + + public finally(onFinally?: (() => void) | null): Promise { + return this.#promise.finally(onFinally); + } + + public cancel(): void { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#isCancelled = true; + if (this.#cancelHandlers.length) { + try { + for (const cancelHandler of this.#cancelHandlers) { + cancelHandler(); } - this.#cancelHandlers.length = 0; - this.#reject?.(new CancelError('Request aborted')); + } catch (error) { + console.warn("Cancellation threw an error", error); + return; + } } + this.#cancelHandlers.length = 0; + this.#reject?.(new CancelError("Request aborted")); + } - public get isCancelled(): boolean { - return this.#isCancelled; - } + public get isCancelled(): boolean { + return this.#isCancelled; + } } diff --git a/src/core/OpenAPI.ts b/src/core/OpenAPI.ts index 977244a..392513f 100644 --- a/src/core/OpenAPI.ts +++ b/src/core/OpenAPI.ts @@ -25,4 +25,4 @@ export const OpenAPI: OpenAPIConfig = { TOKEN: undefined, HEADERS: undefined, ENCODE_PATH: undefined, -}; \ No newline at end of file +}; diff --git a/src/core/request.ts b/src/core/request.ts index 1142d43..72c0a18 100644 --- a/src/core/request.ts +++ b/src/core/request.ts @@ -2,281 +2,310 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import axios from 'axios'; -import type { AxiosError, AxiosRequestConfig, AxiosResponse, AxiosInstance } from 'axios'; -import FormData from 'form-data'; - -import { ApiError } from './ApiError'; -import type { ApiRequestOptions } from './ApiRequestOptions'; -import type { ApiResult } from './ApiResult'; -import { CancelablePromise } from './CancelablePromise'; -import type { OnCancel } from './CancelablePromise'; -import type { OpenAPIConfig } from './OpenAPI'; - -export const isDefined = (value: T | null | undefined): value is Exclude => { - return value !== undefined && value !== null; +import axios from "axios"; +import type { + AxiosError, + AxiosRequestConfig, + AxiosResponse, + AxiosInstance, +} from "axios"; +import FormData from "form-data"; + +import { ApiError } from "./ApiError"; +import type { ApiRequestOptions } from "./ApiRequestOptions"; +import type { ApiResult } from "./ApiResult"; +import { CancelablePromise } from "./CancelablePromise"; +import type { OnCancel } from "./CancelablePromise"; +import type { OpenAPIConfig } from "./OpenAPI"; + +export const isDefined = ( + value: T | null | undefined +): value is Exclude => { + return value !== undefined && value !== null; }; export const isString = (value: any): value is string => { - return typeof value === 'string'; + return typeof value === "string"; }; export const isStringWithValue = (value: any): value is string => { - return isString(value) && value !== ''; + return isString(value) && value !== ""; }; export const isBlob = (value: any): value is Blob => { - return ( - typeof value === 'object' && - typeof value.type === 'string' && - typeof value.stream === 'function' && - typeof value.arrayBuffer === 'function' && - typeof value.constructor === 'function' && - typeof value.constructor.name === 'string' && - /^(Blob|File)$/.test(value.constructor.name) && - /^(Blob|File)$/.test(value[Symbol.toStringTag]) - ); + return ( + typeof value === "object" && + typeof value.type === "string" && + typeof value.stream === "function" && + typeof value.arrayBuffer === "function" && + typeof value.constructor === "function" && + typeof value.constructor.name === "string" && + /^(Blob|File)$/.test(value.constructor.name) && + /^(Blob|File)$/.test(value[Symbol.toStringTag]) + ); }; export const isFormData = (value: any): value is FormData => { - return value instanceof FormData; + return value instanceof FormData; }; export const isSuccess = (status: number): boolean => { - return status >= 200 && status < 300; + return status >= 200 && status < 300; }; export const base64 = (str: string): string => { - try { - return btoa(str); - } catch (err) { - // @ts-ignore - return Buffer.from(str).toString('base64'); - } + try { + return btoa(str); + } catch (err) { + // @ts-ignore + return Buffer.from(str).toString("base64"); + } }; export const getQueryString = (params: Record): string => { - const qs: string[] = []; + const qs: string[] = []; - const append = (key: string, value: any) => { - qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); - }; + const append = (key: string, value: any) => { + qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); + }; - const process = (key: string, value: any) => { - if (isDefined(value)) { - if (Array.isArray(value)) { - value.forEach(v => { - process(key, v); - }); - } else if (typeof value === 'object') { - Object.entries(value).forEach(([k, v]) => { - process(`${key}[${k}]`, v); - }); - } else { - append(key, value); - } - } - }; + const process = (key: string, value: any) => { + if (isDefined(value)) { + if (Array.isArray(value)) { + value.forEach((v) => { + process(key, v); + }); + } else if (typeof value === "object") { + Object.entries(value).forEach(([k, v]) => { + process(`${key}[${k}]`, v); + }); + } else { + append(key, value); + } + } + }; - Object.entries(params).forEach(([key, value]) => { - process(key, value); - }); + Object.entries(params).forEach(([key, value]) => { + process(key, value); + }); - if (qs.length > 0) { - return `?${qs.join('&')}`; - } + if (qs.length > 0) { + return `?${qs.join("&")}`; + } - return ''; + return ""; }; const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { - const encoder = config.ENCODE_PATH || encodeURI; - - const path = options.url - .replace('{api-version}', config.VERSION) - .replace(/{(.*?)}/g, (substring: string, group: string) => { - if (options.path?.hasOwnProperty(group)) { - return encoder(String(options.path[group])); - } - return substring; - }); + const encoder = config.ENCODE_PATH || encodeURI; + + const path = options.url + .replace("{api-version}", config.VERSION) + .replace(/{(.*?)}/g, (substring: string, group: string) => { + if (options.path?.hasOwnProperty(group)) { + return encoder(String(options.path[group])); + } + return substring; + }); - const url = `${config.BASE}${path}`; - if (options.query) { - return `${url}${getQueryString(options.query)}`; - } - return url; + const url = `${config.BASE}${path}`; + if (options.query) { + return `${url}${getQueryString(options.query)}`; + } + return url; }; -export const getFormData = (options: ApiRequestOptions): FormData | undefined => { - if (options.formData) { - const formData = new FormData(); +export const getFormData = ( + options: ApiRequestOptions +): FormData | undefined => { + if (options.formData) { + const formData = new FormData(); - const process = (key: string, value: any) => { - if (isString(value) || isBlob(value)) { - formData.append(key, value); - } else { - formData.append(key, JSON.stringify(value)); - } - }; + const process = (key: string, value: any) => { + if (isString(value) || isBlob(value)) { + formData.append(key, value); + } else { + formData.append(key, JSON.stringify(value)); + } + }; - Object.entries(options.formData) - .filter(([_, value]) => isDefined(value)) - .forEach(([key, value]) => { - if (Array.isArray(value)) { - value.forEach(v => process(key, v)); - } else { - process(key, value); - } - }); - - return formData; - } - return undefined; + Object.entries(options.formData) + .filter(([_, value]) => isDefined(value)) + .forEach(([key, value]) => { + if (Array.isArray(value)) { + value.forEach((v) => process(key, v)); + } else { + process(key, value); + } + }); + + return formData; + } + return undefined; }; type Resolver = (options: ApiRequestOptions) => Promise; -export const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => { - if (typeof resolver === 'function') { - return (resolver as Resolver)(options); - } - return resolver; +export const resolve = async ( + options: ApiRequestOptions, + resolver?: T | Resolver +): Promise => { + if (typeof resolver === "function") { + return (resolver as Resolver)(options); + } + return resolver; }; -export const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions, formData?: FormData): Promise> => { - const token = await resolve(options, config.TOKEN); - const username = await resolve(options, config.USERNAME); - const password = await resolve(options, config.PASSWORD); - const additionalHeaders = await resolve(options, config.HEADERS); - const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {} - - const headers = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - ...formHeaders, - }) +export const getHeaders = async ( + config: OpenAPIConfig, + options: ApiRequestOptions, + formData?: FormData +): Promise> => { + const token = await resolve(options, config.TOKEN); + const username = await resolve(options, config.USERNAME); + const password = await resolve(options, config.PASSWORD); + const additionalHeaders = await resolve(options, config.HEADERS); + const formHeaders = + (typeof formData?.getHeaders === "function" && formData?.getHeaders()) || + {}; + + const headers = Object.entries({ + Accept: "application/json", + ...additionalHeaders, + ...options.headers, + ...formHeaders, + }) .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ + .reduce( + (headers, [key, value]) => ({ ...headers, [key]: String(value), - }), {} as Record); - - if (isStringWithValue(token)) { - headers['Authorization'] = `Bearer ${token}`; - } - - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers['Authorization'] = `Basic ${credentials}`; - } + }), + {} as Record + ); - if (options.body) { - if (options.mediaType) { - headers['Content-Type'] = options.mediaType; - } else if (isBlob(options.body)) { - headers['Content-Type'] = options.body.type || 'application/octet-stream'; - } else if (isString(options.body)) { - headers['Content-Type'] = 'text/plain'; - } else if (!isFormData(options.body)) { - headers['Content-Type'] = 'application/json'; - } + if (isStringWithValue(token)) { + headers["Authorization"] = `Bearer ${token}`; + } + + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers["Authorization"] = `Basic ${credentials}`; + } + + if (options.body) { + if (options.mediaType) { + headers["Content-Type"] = options.mediaType; + } else if (isBlob(options.body)) { + headers["Content-Type"] = options.body.type || "application/octet-stream"; + } else if (isString(options.body)) { + headers["Content-Type"] = "text/plain"; + } else if (!isFormData(options.body)) { + headers["Content-Type"] = "application/json"; } + } - return headers; + return headers; }; export const getRequestBody = (options: ApiRequestOptions): any => { - if (options.body) { - return options.body; - } - return undefined; + if (options.body) { + return options.body; + } + return undefined; }; export const sendRequest = async ( - config: OpenAPIConfig, - options: ApiRequestOptions, - url: string, - body: any, - formData: FormData | undefined, - headers: Record, - onCancel: OnCancel, - axiosClient: AxiosInstance + config: OpenAPIConfig, + options: ApiRequestOptions, + url: string, + body: any, + formData: FormData | undefined, + headers: Record, + onCancel: OnCancel, + axiosClient: AxiosInstance ): Promise> => { - const source = axios.CancelToken.source(); - - const requestConfig: AxiosRequestConfig = { - url, - headers, - data: body ?? formData, - method: options.method, - withCredentials: config.WITH_CREDENTIALS, - cancelToken: source.token, - }; - - onCancel(() => source.cancel('The user aborted a request.')); - - try { - return await axiosClient.request(requestConfig); - } catch (error) { - const axiosError = error as AxiosError; - if (axiosError.response) { - return axiosError.response; - } - throw error; + const source = axios.CancelToken.source(); + + const requestConfig: AxiosRequestConfig = { + url, + headers, + data: body ?? formData, + method: options.method, + withCredentials: config.WITH_CREDENTIALS, + cancelToken: source.token, + }; + + onCancel(() => source.cancel("The user aborted a request.")); + + try { + return await axiosClient.request(requestConfig); + } catch (error) { + const axiosError = error as AxiosError; + if (axiosError.response) { + return axiosError.response; } + throw error; + } }; -export const getResponseHeader = (response: AxiosResponse, responseHeader?: string): string | undefined => { - if (responseHeader) { - const content = response.headers[responseHeader]; - if (isString(content)) { - return content; - } +export const getResponseHeader = ( + response: AxiosResponse, + responseHeader?: string +): string | undefined => { + if (responseHeader) { + const content = response.headers[responseHeader]; + if (isString(content)) { + return content; } - return undefined; + } + return undefined; }; export const getResponseBody = (response: AxiosResponse): any => { - if (response.status !== 204) { - return response.data; - } - return undefined; + if (response.status !== 204) { + return response.data; + } + return undefined; }; -export const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => { - const errors: Record = { - 400: 'Bad Request', - 401: 'Unauthorized', - 403: 'Forbidden', - 404: 'Not Found', - 500: 'Internal Server Error', - 502: 'Bad Gateway', - 503: 'Service Unavailable', - ...options.errors, - } - - const error = errors[result.status]; - if (error) { - throw new ApiError(options, result, error); - } - - if (!result.ok) { - const errorStatus = result.status ?? 'unknown'; - const errorStatusText = result.statusText ?? 'unknown'; - const errorBody = (() => { - try { - return JSON.stringify(result.body, null, 2); - } catch (e) { - return undefined; - } - })(); - - throw new ApiError(options, result, - `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}` - ); - } +export const catchErrorCodes = ( + options: ApiRequestOptions, + result: ApiResult +): void => { + const errors: Record = { + 400: "Bad Request", + 401: "Unauthorized", + 403: "Forbidden", + 404: "Not Found", + 500: "Internal Server Error", + 502: "Bad Gateway", + 503: "Service Unavailable", + ...options.errors, + }; + + const error = errors[result.status]; + if (error) { + throw new ApiError(options, result, error); + } + + if (!result.ok) { + const errorStatus = result.status ?? "unknown"; + const errorStatusText = result.statusText ?? "unknown"; + const errorBody = (() => { + try { + return JSON.stringify(result.body, null, 2); + } catch (e) { + return undefined; + } + })(); + + throw new ApiError( + options, + result, + `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}` + ); + } }; /** @@ -287,33 +316,49 @@ export const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): * @returns CancelablePromise * @throws ApiError */ -export const request = (config: OpenAPIConfig, options: ApiRequestOptions, axiosClient: AxiosInstance = axios): CancelablePromise => { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(config, options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(config, options, formData); - - if (!onCancel.isCancelled) { - const response = await sendRequest(config, options, url, body, formData, headers, onCancel, axiosClient); - const responseBody = getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); - - const result: ApiResult = { - url, - ok: isSuccess(response.status), - status: response.status, - statusText: response.statusText, - body: responseHeader ?? responseBody, - }; - - catchErrorCodes(options, result); - - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); +export const request = ( + config: OpenAPIConfig, + options: ApiRequestOptions, + axiosClient: AxiosInstance = axios +): CancelablePromise => { + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(config, options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(config, options, formData); + + if (!onCancel.isCancelled) { + const response = await sendRequest( + config, + options, + url, + body, + formData, + headers, + onCancel, + axiosClient + ); + const responseBody = getResponseBody(response); + const responseHeader = getResponseHeader( + response, + options.responseHeader + ); + + const result: ApiResult = { + url, + ok: isSuccess(response.status), + status: response.status, + statusText: response.statusText, + body: responseHeader ?? responseBody, + }; + + catchErrorCodes(options, result); + + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); }; diff --git a/src/index.ts b/src/index.ts index a4b9227..1c94f41 100644 --- a/src/index.ts +++ b/src/index.ts @@ -92,4 +92,4 @@ export { CryptoPricingDataApiService } from "./services/CryptoPricingDataApiServ export { LogoService } from "./services/LogoService"; export { NewsService } from "./services/NewsService"; export { ScreenerService } from "./services/ScreenerService"; -export { StockPricingDataApiService } from "./services/StockPricingDataApiService"; \ No newline at end of file +export { StockPricingDataApiService } from "./services/StockPricingDataApiService"; diff --git a/src/models/Account.ts b/src/models/Account.ts index 80db406..5932cd9 100644 --- a/src/models/Account.ts +++ b/src/models/Account.ts @@ -3,136 +3,135 @@ /* tslint:disable */ /* eslint-disable */ -import type { AccountStatus } from './AccountStatus'; +import type { AccountStatus } from "./AccountStatus"; /** * The account API serves important information related to an account, including account status, funds available for trade, funds available for withdrawal, and various flags relevant to an account’s ability to trade. An account maybe be blocked for just for trades (trades_blocked flag) or for both trades and transfers (account_blocked flag) if Alpaca identifies the account to engaging in any suspicious activity. Also, in accordance with FINRA’s pattern day trading rule, an account may be flagged for pattern day trading (pattern_day_trader flag), which would inhibit an account from placing any further day-trades. Please note that cryptocurrencies are not eligible assets to be used as collateral for margin accounts and will require the asset be traded using cash only. * */ export type Account = { - /** - * Account Id. - * - */ - id: string; - /** - * Account number. - */ - account_number?: string; - status: AccountStatus; - /** - * USD - * - */ - currency?: string; - /** - * Cash Balance - * - */ - cash?: string; - /** - * Total value of cash + holding positions (This field is deprecated. It is equivalent to the equity field.) - */ - portfolio_value?: string; - /** - * Current available non-margin dollar buying power - */ - non_marginable_buying_power?: string; - /** - * The fees collected. - */ - accrued_fees?: string; - /** - * Cash pending transfer in. - */ - pending_transfer_in?: string; - /** - * Cash pending transfer out. - */ - pending_transfer_out?: string; - /** - * Whether or not the account has been flagged as a pattern day trader - */ - pattern_day_trader?: boolean; - /** - * User setting. If true, the account is not allowed to place orders. - */ - trade_suspended_by_user?: boolean; - /** - * If true, the account is not allowed to place orders. - * - */ - trading_blocked?: boolean; - /** - * If true, the account is not allowed to request money transfers. - */ - transfers_blocked?: boolean; - /** - * If true, the account activity by user is prohibited. - */ - account_blocked?: boolean; - /** - * Timestamp this account was created at - * - */ - created_at?: string; - /** - * Flag to denote whether or not the account is permitted to short - */ - shorting_enabled?: boolean; - /** - * Real-time MtM value of all long positions held in the account - * - */ - long_market_value?: string; - /** - * Real-time MtM value of all short positions held in the account - */ - short_market_value?: string; - /** - * Cash + long_market_value + short_market_value - */ - equity?: string; - /** - * Equity as of previous trading day at 16:00:00 ET - */ - last_equity?: string; - /** - * Buying power multiplier that represents account margin classification; valid values 1 (standard limited margin account with 1x buying power), 2 (reg T margin account with 2x intraday and overnight buying power; this is the default for all non-PDT accounts with $2,000 or more equity), 4 (PDT account with 4x intraday buying power and 2x reg T overnight buying power) - */ - multiplier?: string; - /** - * Current available $ buying power; If multiplier = 4, this is your daytrade buying power which is calculated as (last_equity - (last) maintenance_margin) * 4; If multiplier = 2, buying_power = max(equity – initial_margin,0) * 2; If multiplier = 1, buying_power = cash - */ - buying_power?: string; - /** - * Reg T initial margin requirement (continuously updated value) - */ - initial_margin?: string; - /** - * Maintenance margin requirement (continuously updated value) - */ - maintenance_margin?: string; - /** - * Value of special memorandum account (will be used at a later date to provide additional buying_power) - */ - sma?: string; - /** - * The current number of daytrades that have been made in the last 5 trading days (inclusive of today) - */ - daytrade_count?: number; - /** - * Your maintenance margin requirement on the previous trading day - */ - last_maintenance_margin?: string; - /** - * Your buying power for day trades (continuously updated value) - */ - daytrading_buying_power?: string; - /** - * Your buying power under Regulation T (your excess equity - equity minus margin value - times your margin multiplier) - * - */ - regt_buying_power?: string; + /** + * Account Id. + * + */ + id: string; + /** + * Account number. + */ + account_number?: string; + status: AccountStatus; + /** + * USD + * + */ + currency?: string; + /** + * Cash Balance + * + */ + cash?: string; + /** + * Total value of cash + holding positions (This field is deprecated. It is equivalent to the equity field.) + */ + portfolio_value?: string; + /** + * Current available non-margin dollar buying power + */ + non_marginable_buying_power?: string; + /** + * The fees collected. + */ + accrued_fees?: string; + /** + * Cash pending transfer in. + */ + pending_transfer_in?: string; + /** + * Cash pending transfer out. + */ + pending_transfer_out?: string; + /** + * Whether or not the account has been flagged as a pattern day trader + */ + pattern_day_trader?: boolean; + /** + * User setting. If true, the account is not allowed to place orders. + */ + trade_suspended_by_user?: boolean; + /** + * If true, the account is not allowed to place orders. + * + */ + trading_blocked?: boolean; + /** + * If true, the account is not allowed to request money transfers. + */ + transfers_blocked?: boolean; + /** + * If true, the account activity by user is prohibited. + */ + account_blocked?: boolean; + /** + * Timestamp this account was created at + * + */ + created_at?: string; + /** + * Flag to denote whether or not the account is permitted to short + */ + shorting_enabled?: boolean; + /** + * Real-time MtM value of all long positions held in the account + * + */ + long_market_value?: string; + /** + * Real-time MtM value of all short positions held in the account + */ + short_market_value?: string; + /** + * Cash + long_market_value + short_market_value + */ + equity?: string; + /** + * Equity as of previous trading day at 16:00:00 ET + */ + last_equity?: string; + /** + * Buying power multiplier that represents account margin classification; valid values 1 (standard limited margin account with 1x buying power), 2 (reg T margin account with 2x intraday and overnight buying power; this is the default for all non-PDT accounts with $2,000 or more equity), 4 (PDT account with 4x intraday buying power and 2x reg T overnight buying power) + */ + multiplier?: string; + /** + * Current available $ buying power; If multiplier = 4, this is your daytrade buying power which is calculated as (last_equity - (last) maintenance_margin) * 4; If multiplier = 2, buying_power = max(equity – initial_margin,0) * 2; If multiplier = 1, buying_power = cash + */ + buying_power?: string; + /** + * Reg T initial margin requirement (continuously updated value) + */ + initial_margin?: string; + /** + * Maintenance margin requirement (continuously updated value) + */ + maintenance_margin?: string; + /** + * Value of special memorandum account (will be used at a later date to provide additional buying_power) + */ + sma?: string; + /** + * The current number of daytrades that have been made in the last 5 trading days (inclusive of today) + */ + daytrade_count?: number; + /** + * Your maintenance margin requirement on the previous trading day + */ + last_maintenance_margin?: string; + /** + * Your buying power for day trades (continuously updated value) + */ + daytrading_buying_power?: string; + /** + * Your buying power under Regulation T (your excess equity - equity minus margin value - times your margin multiplier) + * + */ + regt_buying_power?: string; }; - diff --git a/src/models/AccountConfigurations.ts b/src/models/AccountConfigurations.ts index 672a7f7..9b6e677 100644 --- a/src/models/AccountConfigurations.ts +++ b/src/models/AccountConfigurations.ts @@ -7,51 +7,47 @@ * The account configuration API provides custom configurations about your trading account settings. These configurations control various allow you to modify settings to suit your trading needs. */ export type AccountConfigurations = { - /** - * both, entry, or exit. Controls Day Trading Margin Call (DTMC) checks. - */ - dtbp_check?: AccountConfigurations.dtbp_check; - /** - * all or none. If none, emails for order fills are not sent. - */ - trade_confirm_email?: string; - /** - * If true, new orders are blocked. - */ - suspend_trade?: boolean; - /** - * If true, account becomes long-only mode. - */ - no_shorting?: boolean; - /** - * If true, account is able to participate in fractional trading - */ - fractional_trading?: boolean; - /** - * Can be "1" or "2" - */ - max_margin_multiplier?: string; - /** - * `both`, `entry`, or `exit`. If entry orders will be rejected on entering a position if it could result in PDT being set for the account. exit will reject exiting orders if they would result in PDT being set. - */ - pdt_check?: string; - /** - * If set to true then Alpaca will accept orders for PTP symbols with no exception. Default is false. - */ - ptp_no_exception_entry?: boolean; + /** + * both, entry, or exit. Controls Day Trading Margin Call (DTMC) checks. + */ + dtbp_check?: AccountConfigurations.dtbp_check; + /** + * all or none. If none, emails for order fills are not sent. + */ + trade_confirm_email?: string; + /** + * If true, new orders are blocked. + */ + suspend_trade?: boolean; + /** + * If true, account becomes long-only mode. + */ + no_shorting?: boolean; + /** + * If true, account is able to participate in fractional trading + */ + fractional_trading?: boolean; + /** + * Can be "1" or "2" + */ + max_margin_multiplier?: string; + /** + * `both`, `entry`, or `exit`. If entry orders will be rejected on entering a position if it could result in PDT being set for the account. exit will reject exiting orders if they would result in PDT being set. + */ + pdt_check?: string; + /** + * If set to true then Alpaca will accept orders for PTP symbols with no exception. Default is false. + */ + ptp_no_exception_entry?: boolean; }; export namespace AccountConfigurations { - - /** - * both, entry, or exit. Controls Day Trading Margin Call (DTMC) checks. - */ - export enum dtbp_check { - BOTH = 'both', - ENTRY = 'entry', - EXIT = 'exit', - } - - + /** + * both, entry, or exit. Controls Day Trading Margin Call (DTMC) checks. + */ + export enum dtbp_check { + BOTH = "both", + ENTRY = "entry", + EXIT = "exit", + } } - diff --git a/src/models/AccountStatus.ts b/src/models/AccountStatus.ts index ad77676..d28d1de 100644 --- a/src/models/AccountStatus.ts +++ b/src/models/AccountStatus.ts @@ -24,11 +24,11 @@ * The account application has been rejected. */ export enum AccountStatus { - ONBOARDING = 'ONBOARDING', - SUBMISSION_FAILED = 'SUBMISSION_FAILED', - SUBMITTED = 'SUBMITTED', - ACCOUNT_UPDATED = 'ACCOUNT_UPDATED', - APPROVAL_PENDING = 'APPROVAL_PENDING', - ACTIVE = 'ACTIVE', - REJECTED = 'REJECTED', + ONBOARDING = "ONBOARDING", + SUBMISSION_FAILED = "SUBMISSION_FAILED", + SUBMITTED = "SUBMITTED", + ACCOUNT_UPDATED = "ACCOUNT_UPDATED", + APPROVAL_PENDING = "APPROVAL_PENDING", + ACTIVE = "ACTIVE", + REJECTED = "REJECTED", } diff --git a/src/models/ActivityType.ts b/src/models/ActivityType.ts index 89347bc..8ea09c7 100644 --- a/src/models/ActivityType.ts +++ b/src/models/ActivityType.ts @@ -110,39 +110,39 @@ * Stock split */ export enum ActivityType { - FILL = 'FILL', - TRANS = 'TRANS', - MISC = 'MISC', - ACATC = 'ACATC', - ACATS = 'ACATS', - CSD = 'CSD', - CSW = 'CSW', - DIV = 'DIV', - DIVCGL = 'DIVCGL', - DIVCGS = 'DIVCGS', - DIVFEE = 'DIVFEE', - DIVFT = 'DIVFT', - DIVNRA = 'DIVNRA', - DIVROC = 'DIVROC', - DIVTW = 'DIVTW', - DIVTXEX = 'DIVTXEX', - INT = 'INT', - INTNRA = 'INTNRA', - INTTW = 'INTTW', - JNL = 'JNL', - JNLC = 'JNLC', - JNLS = 'JNLS', - MA = 'MA', - NC = 'NC', - OPASN = 'OPASN', - OPEXP = 'OPEXP', - OPXRC = 'OPXRC', - PTC = 'PTC', - PTR = 'PTR', - REORG = 'REORG', - SC = 'SC', - SSO = 'SSO', - SSP = 'SSP', - CFEE = 'CFEE', - FEE = 'FEE', + FILL = "FILL", + TRANS = "TRANS", + MISC = "MISC", + ACATC = "ACATC", + ACATS = "ACATS", + CSD = "CSD", + CSW = "CSW", + DIV = "DIV", + DIVCGL = "DIVCGL", + DIVCGS = "DIVCGS", + DIVFEE = "DIVFEE", + DIVFT = "DIVFT", + DIVNRA = "DIVNRA", + DIVROC = "DIVROC", + DIVTW = "DIVTW", + DIVTXEX = "DIVTXEX", + INT = "INT", + INTNRA = "INTNRA", + INTTW = "INTTW", + JNL = "JNL", + JNLC = "JNLC", + JNLS = "JNLS", + MA = "MA", + NC = "NC", + OPASN = "OPASN", + OPEXP = "OPEXP", + OPXRC = "OPXRC", + PTC = "PTC", + PTR = "PTR", + REORG = "REORG", + SC = "SC", + SSO = "SSO", + SSP = "SSP", + CFEE = "CFEE", + FEE = "FEE", } diff --git a/src/models/AddAssetToWatchlistRequest.ts b/src/models/AddAssetToWatchlistRequest.ts index 2380191..7bca95c 100644 --- a/src/models/AddAssetToWatchlistRequest.ts +++ b/src/models/AddAssetToWatchlistRequest.ts @@ -7,9 +7,8 @@ * Append an asset for the symbol to the end of watchlist asset list */ export type AddAssetToWatchlistRequest = { - /** - * symbol name to append to watchlist - */ - symbol?: string; + /** + * symbol name to append to watchlist + */ + symbol?: string; }; - diff --git a/src/models/AssetClass.ts b/src/models/AssetClass.ts index cb58a83..4b2ad9d 100644 --- a/src/models/AssetClass.ts +++ b/src/models/AssetClass.ts @@ -7,6 +7,6 @@ * Represents what class of asset this is. Currently only supports `us_equity` or `crypto` */ export enum AssetClass { - US_EQUITY = 'us_equity', - CRYPTO = 'crypto', + US_EQUITY = "us_equity", + CRYPTO = "crypto", } diff --git a/src/models/Assets.ts b/src/models/Assets.ts index 28dc441..49eac4e 100644 --- a/src/models/Assets.ts +++ b/src/models/Assets.ts @@ -3,72 +3,68 @@ /* tslint:disable */ /* eslint-disable */ -import type { AssetClass } from './AssetClass'; -import type { Exchange } from './Exchange'; +import type { AssetClass } from "./AssetClass"; +import type { Exchange } from "./Exchange"; /** * The assets API serves as the master list of assets available for trade and data consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. Some assets are only available for data consumption via Polygon, and are not tradable with Alpaca. These assets will be marked with the flag tradable=false. * */ export type Assets = { - /** - * Asset ID - */ - id: string; - class: AssetClass; - exchange: Exchange; - /** - * The symbol of the asset - */ - symbol: string; - /** - * The official name of the asset - */ - name: string; - /** - * active or inactive - */ - status: Assets.status; - /** - * Asset is tradable on Alpaca or not - */ - tradable: boolean; - /** - * Asset is marginable or not - */ - marginable: boolean; - /** - * Asset is shortable or not - */ - shortable: boolean; - /** - * Asset is easy-to-borrow or not (filtering for easy_to_borrow = True is the best way to check whether the name is currently available to short at Alpaca). - */ - easy_to_borrow: boolean; - /** - * Asset is fractionable or not - */ - fractionable: boolean; - /** - * Shows the % margin requirement for the asset (equities only). - */ - maintenance_margin_requirement?: string; - /** - * One of ptp_no_exception or ptp_with_exception. We will include unique characteristics of the asset here. - */ - attributes?: Array; + /** + * Asset ID + */ + id: string; + class: AssetClass; + exchange: Exchange; + /** + * The symbol of the asset + */ + symbol: string; + /** + * The official name of the asset + */ + name: string; + /** + * active or inactive + */ + status: Assets.status; + /** + * Asset is tradable on Alpaca or not + */ + tradable: boolean; + /** + * Asset is marginable or not + */ + marginable: boolean; + /** + * Asset is shortable or not + */ + shortable: boolean; + /** + * Asset is easy-to-borrow or not (filtering for easy_to_borrow = True is the best way to check whether the name is currently available to short at Alpaca). + */ + easy_to_borrow: boolean; + /** + * Asset is fractionable or not + */ + fractionable: boolean; + /** + * Shows the % margin requirement for the asset (equities only). + */ + maintenance_margin_requirement?: string; + /** + * One of ptp_no_exception or ptp_with_exception. We will include unique characteristics of the asset here. + */ + attributes?: Array; }; export namespace Assets { - - /** - * active or inactive - */ - export enum status { - ACTIVE = 'active', - INACTIVE = 'inactive', - } - - + /** + * active or inactive + */ + export enum status { + ACTIVE = "active", + INACTIVE = "inactive", + } } - diff --git a/src/models/Bar.ts b/src/models/Bar.ts index bfdd3a4..f7bb98f 100644 --- a/src/models/Bar.ts +++ b/src/models/Bar.ts @@ -44,4 +44,4 @@ export enum BarExchange { FTXU = "FTXU", ERSX = "ERSX", CBSE = "CBSE", -} \ No newline at end of file +} diff --git a/src/models/BarsResponse.ts b/src/models/BarsResponse.ts index 07808a0..129ae72 100644 --- a/src/models/BarsResponse.ts +++ b/src/models/BarsResponse.ts @@ -3,17 +3,16 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from './Bar'; +import type { Bar } from "./Bar"; export type BarsResponse = { - /** - * The array of Bar data - */ - bars: Array; - /** - * the stock ticker or crypto symbol this set of bar data is for - */ - symbol: string; - next_page_token: string | null; + /** + * The array of Bar data + */ + bars: Array; + /** + * the stock ticker or crypto symbol this set of bar data is for + */ + symbol: string; + next_page_token: string | null; }; - diff --git a/src/models/Calendar.ts b/src/models/Calendar.ts index cd79096..fa3a002 100644 --- a/src/models/Calendar.ts +++ b/src/models/Calendar.ts @@ -4,21 +4,20 @@ /* eslint-disable */ export type Calendar = { - /** - * Date string in “%Y-%m-%d” format - */ - date: string; - /** - * The time the market opens at on this date in “%H:%M” format - */ - open: string; - /** - * The time the market closes at on this date in “%H:%M” format - */ - close: string; - /** - * Date string in “%Y-%m-%d” format. representing the settlement date for the trade date. - */ - settlement_date: string; + /** + * Date string in “%Y-%m-%d” format + */ + date: string; + /** + * The time the market opens at on this date in “%H:%M” format + */ + open: string; + /** + * The time the market closes at on this date in “%H:%M” format + */ + close: string; + /** + * Date string in “%Y-%m-%d” format. representing the settlement date for the trade date. + */ + settlement_date: string; }; - diff --git a/src/models/CanceledOrderResponse.ts b/src/models/CanceledOrderResponse.ts index 55d1400..8920e7e 100644 --- a/src/models/CanceledOrderResponse.ts +++ b/src/models/CanceledOrderResponse.ts @@ -7,13 +7,12 @@ * Represents the result of a request to cancel and order */ export type CanceledOrderResponse = { - /** - * orderId - */ - id?: string; - /** - * http response code - */ - status?: number; + /** + * orderId + */ + id?: string; + /** + * http response code + */ + status?: number; }; - diff --git a/src/models/Clock.ts b/src/models/Clock.ts index 323f8b2..cd5dca0 100644 --- a/src/models/Clock.ts +++ b/src/models/Clock.ts @@ -4,23 +4,22 @@ /* eslint-disable */ export type Clock = { - /** - * Current timestamp - * - */ - timestamp?: string; - /** - * Whether or not the market is open - * - */ - is_open?: boolean; - /** - * Next Market open timestamp - */ - next_open?: string; - /** - * Next market close timestamp - */ - next_close?: string; + /** + * Current timestamp + * + */ + timestamp?: string; + /** + * Whether or not the market is open + * + */ + is_open?: boolean; + /** + * Next Market open timestamp + */ + next_open?: string; + /** + * Next market close timestamp + */ + next_close?: string; }; - diff --git a/src/models/CryptoSpreadsResponse.ts b/src/models/CryptoSpreadsResponse.ts index 9120b33..52727af 100644 --- a/src/models/CryptoSpreadsResponse.ts +++ b/src/models/CryptoSpreadsResponse.ts @@ -4,6 +4,5 @@ /* eslint-disable */ export type CryptoSpreadsResponse = { - spreads: Record; + spreads: Record; }; - diff --git a/src/models/Exchange.ts b/src/models/Exchange.ts index dd1476d..fea5301 100644 --- a/src/models/Exchange.ts +++ b/src/models/Exchange.ts @@ -15,11 +15,11 @@ * - OTC */ export enum Exchange { - AMEX = 'AMEX', - ARCA = 'ARCA', - BATS = 'BATS', - NYSE = 'NYSE', - NASDAQ = 'NASDAQ', - NYSEARCA = 'NYSEARCA', - OTC = 'OTC', + AMEX = "AMEX", + ARCA = "ARCA", + BATS = "BATS", + NYSE = "NYSE", + NASDAQ = "NASDAQ", + NYSEARCA = "NYSEARCA", + OTC = "OTC", } diff --git a/src/models/GetNewsResponse.ts b/src/models/GetNewsResponse.ts index 1e1feac..da51e1e 100644 --- a/src/models/GetNewsResponse.ts +++ b/src/models/GetNewsResponse.ts @@ -3,13 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { News } from './News'; +import type { News } from "./News"; export type GetNewsResponse = { - news?: Array; - /** - * Pagination token for next page - */ - next_page_token?: string; + news?: Array; + /** + * Pagination token for next page + */ + next_page_token?: string; }; - diff --git a/src/models/LatestBarResponse.ts b/src/models/LatestBarResponse.ts index ab9c318..635cf20 100644 --- a/src/models/LatestBarResponse.ts +++ b/src/models/LatestBarResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from './Bar'; +import type { Bar } from "./Bar"; /** * A model representing the result of hitting one of the Latest Bar api endpoints. @@ -11,7 +11,6 @@ import type { Bar } from './Bar'; * Represents a single Bar that should be the latest Bar data for a given ticker symbol */ export type LatestBarResponse = { - symbol: string; - bar: Bar; + symbol: string; + bar: Bar; }; - diff --git a/src/models/LatestMultiBarsResponse.ts b/src/models/LatestMultiBarsResponse.ts index a44cc66..51df092 100644 --- a/src/models/LatestMultiBarsResponse.ts +++ b/src/models/LatestMultiBarsResponse.ts @@ -3,13 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from './Bar'; +import type { Bar } from "./Bar"; /** * A model representing the result of hitting the Latest Multi Bars api; represents the latest Bars for multiple symbols. * */ export type LatestMultiBarsResponse = { - bars: Record; + bars: Record; }; - diff --git a/src/models/LatestMultiQuotesResponse.ts b/src/models/LatestMultiQuotesResponse.ts index 5c9097c..664de3d 100644 --- a/src/models/LatestMultiQuotesResponse.ts +++ b/src/models/LatestMultiQuotesResponse.ts @@ -3,9 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { Quote } from './Quote'; +import type { Quote } from "./Quote"; export type LatestMultiQuotesResponse = { - quotes: Record; + quotes: Record; }; - diff --git a/src/models/LatestMultiTradesResponse.ts b/src/models/LatestMultiTradesResponse.ts index 00674db..884a9ad 100644 --- a/src/models/LatestMultiTradesResponse.ts +++ b/src/models/LatestMultiTradesResponse.ts @@ -3,9 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { Trade } from './Trade'; +import type { Trade } from "./Trade"; export type LatestMultiTradesResponse = { - trades: Record; + trades: Record; }; - diff --git a/src/models/LatestMultiXBBOResponse.ts b/src/models/LatestMultiXBBOResponse.ts index 9a034f3..5867da6 100644 --- a/src/models/LatestMultiXBBOResponse.ts +++ b/src/models/LatestMultiXBBOResponse.ts @@ -3,9 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { XBBO } from './XBBO'; +import type { XBBO } from "./XBBO"; export type LatestMultiXBBOResponse = { - xbbos: Record; + xbbos: Record; }; - diff --git a/src/models/LatestQuoteResponse.ts b/src/models/LatestQuoteResponse.ts index b5700a6..b50a7bc 100644 --- a/src/models/LatestQuoteResponse.ts +++ b/src/models/LatestQuoteResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Quote } from './Quote'; +import type { Quote } from "./Quote"; /** * A model representing the result of hitting the Latest Quote api. @@ -11,7 +11,6 @@ import type { Quote } from './Quote'; * Represents a single Quote that should be the latest quote data for a given ticker symbol */ export type LatestQuoteResponse = { - quote: Quote; - symbol: string; + quote: Quote; + symbol: string; }; - diff --git a/src/models/LatestTradeResponse.ts b/src/models/LatestTradeResponse.ts index 03c73d2..e71cdf7 100644 --- a/src/models/LatestTradeResponse.ts +++ b/src/models/LatestTradeResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Trade } from './Trade'; +import type { Trade } from "./Trade"; /** * A model representing the result of hitting the Latest Trade api. @@ -11,10 +11,9 @@ import type { Trade } from './Trade'; * Represents a single Trade that should be the latest trade data for a given ticker symbol */ export type LatestTradeResponse = { - trade?: Trade; - /** - * Symbol that was queried - */ - symbol: string; + trade?: Trade; + /** + * Symbol that was queried + */ + symbol: string; }; - diff --git a/src/models/LatestXBBOResponse.ts b/src/models/LatestXBBOResponse.ts index 904c5eb..c0948f3 100644 --- a/src/models/LatestXBBOResponse.ts +++ b/src/models/LatestXBBOResponse.ts @@ -3,13 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { XBBO } from './XBBO'; +import type { XBBO } from "./XBBO"; /** * Represents the Latest XBBO for a crypto symbol that calculates the Best Bid and Offer across multiple exchanges. */ export type LatestXBBOResponse = { - symbol: string; - xbbo: XBBO; + symbol: string; + xbbo: XBBO; }; - diff --git a/src/models/MarketMoverAsset.ts b/src/models/MarketMoverAsset.ts index 9cacf9e..bcf2297 100644 --- a/src/models/MarketMoverAsset.ts +++ b/src/models/MarketMoverAsset.ts @@ -7,21 +7,20 @@ * Name or source of given news article */ export type MarketMoverAsset = { - /** - * Symbol of market moving asset - */ - symbol: string; - /** - * Percentage difference change for the day - */ - percent_change: number; - /** - * Difference in change for the day - */ - change: number; - /** - * Current price of market moving asset - */ - price: number; + /** + * Symbol of market moving asset + */ + symbol: string; + /** + * Percentage difference change for the day + */ + percent_change: number; + /** + * Difference in change for the day + */ + change: number; + /** + * Current price of market moving asset + */ + price: number; }; - diff --git a/src/models/MarketMoversResponse.ts b/src/models/MarketMoversResponse.ts index b77f33b..565f01f 100644 --- a/src/models/MarketMoversResponse.ts +++ b/src/models/MarketMoversResponse.ts @@ -3,40 +3,36 @@ /* tslint:disable */ /* eslint-disable */ -import type { MarketMoverAsset } from './MarketMoverAsset'; +import type { MarketMoverAsset } from "./MarketMoverAsset"; /** * Contains list of market movers */ export type MarketMoversResponse = { - /** - * List of top N gainers - */ - gainers: Array; - /** - * List of top N losers - */ - losers: Array; - /** - * Market type (stocks or crypto) - */ - market_type: MarketMoversResponse.market_type; - /** - * Time the movers where last computed - */ - last_updated: string; + /** + * List of top N gainers + */ + gainers: Array; + /** + * List of top N losers + */ + losers: Array; + /** + * Market type (stocks or crypto) + */ + market_type: MarketMoversResponse.market_type; + /** + * Time the movers where last computed + */ + last_updated: string; }; export namespace MarketMoversResponse { - - /** - * Market type (stocks or crypto) - */ - export enum market_type { - STOCKS = 'stocks', - CRYPTO = 'crypto', - } - - + /** + * Market type (stocks or crypto) + */ + export enum market_type { + STOCKS = "stocks", + CRYPTO = "crypto", + } } - diff --git a/src/models/MultiBarsResponse.ts b/src/models/MultiBarsResponse.ts index 44ab17d..3904917 100644 --- a/src/models/MultiBarsResponse.ts +++ b/src/models/MultiBarsResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from './Bar'; +import type { Bar } from "./Bar"; /** * A model representing the result of hitting the Multi Bars api; represents multiple Bars for multiple symbols. @@ -14,7 +14,6 @@ import type { Bar } from './Bar'; * */ export type MultiBarsResponse = { - bars: Record>; - next_page_token?: string | null; + bars: Record>; + next_page_token?: string | null; }; - diff --git a/src/models/MultiQuotesReponse.ts b/src/models/MultiQuotesReponse.ts index 4db00d8..25a27c0 100644 --- a/src/models/MultiQuotesReponse.ts +++ b/src/models/MultiQuotesReponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Quote } from './Quote'; +import type { Quote } from "./Quote"; /** * A model representing the result of hitting the Multi Quotes api; represents multiple Quotes for multiple symbols. @@ -14,10 +14,9 @@ import type { Quote } from './Quote'; * */ export type MultiQuotesReponse = { - quotes: Record>; - /** - * pass this token with your request again to get the next page of results - */ - next_page_token?: string | null; + quotes: Record>; + /** + * pass this token with your request again to get the next page of results + */ + next_page_token?: string | null; }; - diff --git a/src/models/MultiSnapshotResponse.ts b/src/models/MultiSnapshotResponse.ts index 87266a8..daa4d5f 100644 --- a/src/models/MultiSnapshotResponse.ts +++ b/src/models/MultiSnapshotResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Snapshot } from './Snapshot'; +import type { Snapshot } from "./Snapshot"; /** * A model representing the result of hitting the Multi Snapshots api; represents Snapshots for multiple symbols. diff --git a/src/models/MultiTradesResponse.ts b/src/models/MultiTradesResponse.ts index 846608e..9669441 100644 --- a/src/models/MultiTradesResponse.ts +++ b/src/models/MultiTradesResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Trade } from './Trade'; +import type { Trade } from "./Trade"; /** * A model representing the result of hitting the Multi Trades api; represents multiple trades for multiple symbols. @@ -14,7 +14,6 @@ import type { Trade } from './Trade'; * */ export type MultiTradesResponse = { - trades: Record>; - next_page_token?: string | null; + trades: Record>; + next_page_token?: string | null; }; - diff --git a/src/models/News.ts b/src/models/News.ts index fcb2a40..6c08e90 100644 --- a/src/models/News.ts +++ b/src/models/News.ts @@ -3,55 +3,54 @@ /* tslint:disable */ /* eslint-disable */ -import type { NewsImage } from './NewsImage'; +import type { NewsImage } from "./NewsImage"; /** * Model representing a news article from the Alpaca Market Data API */ export type News = { - /** - * News article ID - */ - id: number; - /** - * Headline or title of the article - */ - headline: string; - /** - * Original author of news article - */ - author: string; - /** - * Date article was created (RFC 3339) - */ - created_at: string; - /** - * Date article was updated (RFC 3339) - */ - updated_at: string; - /** - * Summary text for the article (may be first sentence of content) - */ - summary: string; - /** - * Content of the news article (might contain HTML) - */ - content: string; - /** - * URL of article (if applicable) - */ - url?: string | null; - /** - * List of images (URLs) related to given article (may be empty) - */ - images: Array; - /** - * List of related or mentioned symbols - */ - symbols: Array; - /** - * Source where the news originated from (e.g. Benzinga) - */ - source: string; + /** + * News article ID + */ + id: number; + /** + * Headline or title of the article + */ + headline: string; + /** + * Original author of news article + */ + author: string; + /** + * Date article was created (RFC 3339) + */ + created_at: string; + /** + * Date article was updated (RFC 3339) + */ + updated_at: string; + /** + * Summary text for the article (may be first sentence of content) + */ + summary: string; + /** + * Content of the news article (might contain HTML) + */ + content: string; + /** + * URL of article (if applicable) + */ + url?: string | null; + /** + * List of images (URLs) related to given article (may be empty) + */ + images: Array; + /** + * List of related or mentioned symbols + */ + symbols: Array; + /** + * Source where the news originated from (e.g. Benzinga) + */ + source: string; }; - diff --git a/src/models/NewsImage.ts b/src/models/NewsImage.ts index e902664..52e2714 100644 --- a/src/models/NewsImage.ts +++ b/src/models/NewsImage.ts @@ -7,27 +7,23 @@ * A model representing images for news article. simply a url to the image along with a size parameter suggesting the display size of the image */ export type NewsImage = { - /** - * Possible values for size are thumb, small and large. - */ - readonly size: NewsImage.size; - /** - * url to image from news article - */ - readonly url: string; + /** + * Possible values for size are thumb, small and large. + */ + readonly size: NewsImage.size; + /** + * url to image from news article + */ + readonly url: string; }; export namespace NewsImage { - - /** - * Possible values for size are thumb, small and large. - */ - export enum size { - THUMB = 'thumb', - SMALL = 'small', - LARGE = 'large', - } - - + /** + * Possible values for size are thumb, small and large. + */ + export enum size { + THUMB = "thumb", + SMALL = "small", + LARGE = "large", + } } - diff --git a/src/models/NonTradeActivities.ts b/src/models/NonTradeActivities.ts index 575c351..455e93f 100644 --- a/src/models/NonTradeActivities.ts +++ b/src/models/NonTradeActivities.ts @@ -3,34 +3,33 @@ /* tslint:disable */ /* eslint-disable */ -import type { ActivityType } from './ActivityType'; +import type { ActivityType } from "./ActivityType"; export type NonTradeActivities = { - activity_type?: ActivityType; - /** - * An ID for the activity, always in “::” format. Can be sent as page_token in requests to facilitate the paging of results. - */ - id?: string; - /** - * The date on which the activity occurred or on which the transaction associated with the activity settled. - */ - date?: string; - /** - * The net amount of money (positive or negative) associated with the activity. - */ - net_amount?: string; - /** - * The symbol of the security involved with the activity. Not present for all activity types. - */ - symbol?: string; - /** - * For dividend activities, the number of shares that contributed to the payment. Not present for other activity types. - * - */ - qty?: string; - /** - * For dividend activities, the average amount paid per share. Not present for other activity types. - */ - per_share_amount?: string; + activity_type?: ActivityType; + /** + * An ID for the activity, always in “::” format. Can be sent as page_token in requests to facilitate the paging of results. + */ + id?: string; + /** + * The date on which the activity occurred or on which the transaction associated with the activity settled. + */ + date?: string; + /** + * The net amount of money (positive or negative) associated with the activity. + */ + net_amount?: string; + /** + * The symbol of the security involved with the activity. Not present for all activity types. + */ + symbol?: string; + /** + * For dividend activities, the number of shares that contributed to the payment. Not present for other activity types. + * + */ + qty?: string; + /** + * For dividend activities, the average amount paid per share. Not present for other activity types. + */ + per_share_amount?: string; }; - diff --git a/src/models/Order.ts b/src/models/Order.ts index a37f8cf..900ecc8 100644 --- a/src/models/Order.ts +++ b/src/models/Order.ts @@ -3,12 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { AssetClass } from './AssetClass'; -import type { OrderClass } from './OrderClass'; -import type { OrderSide } from './OrderSide'; -import type { OrderStatus } from './OrderStatus'; -import type { OrderType } from './OrderType'; -import type { TimeInForce } from './TimeInForce'; +import type { AssetClass } from "./AssetClass"; +import type { OrderClass } from "./OrderClass"; +import type { OrderSide } from "./OrderSide"; +import type { OrderStatus } from "./OrderStatus"; +import type { OrderType } from "./OrderType"; +import type { TimeInForce } from "./TimeInForce"; /** * The Orders API allows a user to monitor, place and cancel their orders with Alpaca. @@ -18,92 +18,91 @@ import type { TimeInForce } from './TimeInForce'; * Updates on open orders at Alpaca will also be sent over the streaming interface, which is the recommended method of maintaining order state. */ export type Order = { - /** - * Order ID - */ - id?: string; - /** - * Client unique order ID - */ - client_order_id?: string; - created_at?: string; - updated_at?: string | null; - submitted_at?: string | null; - filled_at?: string | null; - expired_at?: string | null; - canceled_at?: string | null; - failed_at?: string | null; - replaced_at?: string | null; - /** - * The order ID that this order was replaced by - */ - replaced_by?: string | null; - /** - * The order ID that this order replaces - */ - replaces?: string | null; - /** - * Asset ID - */ - asset_id?: string; - /** - * Asset symbol - */ - symbol: string; - asset_class?: AssetClass; - /** - * Ordered notional amount. If entered, qty will be null. Can take up to 9 decimal points. - */ - notional: string | null; - /** - * Ordered quantity. If entered, notional will be null. Can take up to 9 decimal points. - */ - qty: string | null; - /** - * Filled quantity - */ - filled_qty?: string; - /** - * Filled average price - */ - filled_avg_price?: string | null; - order_class?: OrderClass; - /** - * Deprecated in favour of the field "type" - * @deprecated - */ - order_type?: string; - type: OrderType; - side: OrderSide; - time_in_force: TimeInForce; - /** - * Limit price - */ - limit_price?: string | null; - /** - * Stop price - */ - stop_price?: string | null; - status?: OrderStatus; - /** - * If true, eligible for execution outside regular trading hours. - */ - extended_hours?: boolean; - /** - * When querying non-simple order_class orders in a nested style, an array of Order entities associated with this order. Otherwise, null. - */ - legs?: Array | null; - /** - * The percent value away from the high water mark for trailing stop orders. - */ - trail_percent?: string; - /** - * The dollar value away from the high water mark for trailing stop orders. - */ - trail_price?: string; - /** - * The highest (lowest) market price seen since the trailing stop order was submitted. - */ - hwm?: string; + /** + * Order ID + */ + id?: string; + /** + * Client unique order ID + */ + client_order_id?: string; + created_at?: string; + updated_at?: string | null; + submitted_at?: string | null; + filled_at?: string | null; + expired_at?: string | null; + canceled_at?: string | null; + failed_at?: string | null; + replaced_at?: string | null; + /** + * The order ID that this order was replaced by + */ + replaced_by?: string | null; + /** + * The order ID that this order replaces + */ + replaces?: string | null; + /** + * Asset ID + */ + asset_id?: string; + /** + * Asset symbol + */ + symbol: string; + asset_class?: AssetClass; + /** + * Ordered notional amount. If entered, qty will be null. Can take up to 9 decimal points. + */ + notional: string | null; + /** + * Ordered quantity. If entered, notional will be null. Can take up to 9 decimal points. + */ + qty: string | null; + /** + * Filled quantity + */ + filled_qty?: string; + /** + * Filled average price + */ + filled_avg_price?: string | null; + order_class?: OrderClass; + /** + * Deprecated in favour of the field "type" + * @deprecated + */ + order_type?: string; + type: OrderType; + side: OrderSide; + time_in_force: TimeInForce; + /** + * Limit price + */ + limit_price?: string | null; + /** + * Stop price + */ + stop_price?: string | null; + status?: OrderStatus; + /** + * If true, eligible for execution outside regular trading hours. + */ + extended_hours?: boolean; + /** + * When querying non-simple order_class orders in a nested style, an array of Order entities associated with this order. Otherwise, null. + */ + legs?: Array | null; + /** + * The percent value away from the high water mark for trailing stop orders. + */ + trail_percent?: string; + /** + * The dollar value away from the high water mark for trailing stop orders. + */ + trail_price?: string; + /** + * The highest (lowest) market price seen since the trailing stop order was submitted. + */ + hwm?: string; }; - diff --git a/src/models/OrderClass.ts b/src/models/OrderClass.ts index 8ad610e..f8f5f83 100644 --- a/src/models/OrderClass.ts +++ b/src/models/OrderClass.ts @@ -7,4 +7,4 @@ export enum OrderClass { OCO = "oco", OTO = "oto", EMPTY = "", -} \ No newline at end of file +} diff --git a/src/models/OrderSide.ts b/src/models/OrderSide.ts index 844e66d..76b3c4f 100644 --- a/src/models/OrderSide.ts +++ b/src/models/OrderSide.ts @@ -10,6 +10,6 @@ * - sell */ export enum OrderSide { - BUY = 'buy', - SELL = 'sell', + BUY = "buy", + SELL = "sell", } diff --git a/src/models/OrderStatus.ts b/src/models/OrderStatus.ts index 7a261bf..ea8c445 100644 --- a/src/models/OrderStatus.ts +++ b/src/models/OrderStatus.ts @@ -60,20 +60,20 @@ * An order may be canceled through the API up until the point it reaches a state of either filled, canceled, or expired. */ export enum OrderStatus { - NEW = 'new', - PARTIALLY_FILLED = 'partially_filled', - FILLED = 'filled', - DONE_FOR_DAY = 'done_for_day', - CANCELED = 'canceled', - EXPIRED = 'expired', - REPLACED = 'replaced', - PENDING_CANCEL = 'pending_cancel', - PENDING_REPLACE = 'pending_replace', - ACCEPTED = 'accepted', - PENDING_NEW = 'pending_new', - ACCEPTED_FOR_BIDDING = 'accepted_for_bidding', - STOPPED = 'stopped', - REJECTED = 'rejected', - SUSPENDED = 'suspended', - CALCULATED = 'calculated', + NEW = "new", + PARTIALLY_FILLED = "partially_filled", + FILLED = "filled", + DONE_FOR_DAY = "done_for_day", + CANCELED = "canceled", + EXPIRED = "expired", + REPLACED = "replaced", + PENDING_CANCEL = "pending_cancel", + PENDING_REPLACE = "pending_replace", + ACCEPTED = "accepted", + PENDING_NEW = "pending_new", + ACCEPTED_FOR_BIDDING = "accepted_for_bidding", + STOPPED = "stopped", + REJECTED = "rejected", + SUSPENDED = "suspended", + CALCULATED = "calculated", } diff --git a/src/models/OrderType.ts b/src/models/OrderType.ts index c92dbc3..538fe32 100644 --- a/src/models/OrderType.ts +++ b/src/models/OrderType.ts @@ -13,9 +13,9 @@ * - trailing_stop */ export enum OrderType { - MARKET = 'market', - LIMIT = 'limit', - STOP = 'stop', - STOP_LIMIT = 'stop_limit', - TRAILING_STOP = 'trailing_stop', + MARKET = "market", + LIMIT = "limit", + STOP = "stop", + STOP_LIMIT = "stop_limit", + TRAILING_STOP = "trailing_stop", } diff --git a/src/models/PatchOrderRequest.ts b/src/models/PatchOrderRequest.ts index 0b43d7b..c8bcdc6 100644 --- a/src/models/PatchOrderRequest.ts +++ b/src/models/PatchOrderRequest.ts @@ -3,32 +3,31 @@ /* tslint:disable */ /* eslint-disable */ -import type { TimeInForce } from './TimeInForce'; +import type { TimeInForce } from "./TimeInForce"; /** * Represents a request to patch an order. */ export type PatchOrderRequest = { - /** - * number of shares to trade - */ - qty?: string; - time_in_force?: TimeInForce; - /** - * required if original order type is limit or stop_limit - */ - limit_price?: string; - /** - * required if original order type is limit or stop_limit - */ - stop_price?: string; - /** - * the new value of the trail_price or trail_percent value (works only for type=“trailing_stop”) - */ - trail?: string; - /** - * A unique identifier for the order. Automatically generated if not sent. - */ - client_order_id?: string; + /** + * number of shares to trade + */ + qty?: string; + time_in_force?: TimeInForce; + /** + * required if original order type is limit or stop_limit + */ + limit_price?: string; + /** + * required if original order type is limit or stop_limit + */ + stop_price?: string; + /** + * the new value of the trail_price or trail_percent value (works only for type=“trailing_stop”) + */ + trail?: string; + /** + * A unique identifier for the order. Automatically generated if not sent. + */ + client_order_id?: string; }; - diff --git a/src/models/PortfolioHistory.ts b/src/models/PortfolioHistory.ts index 74e18b7..4cd2663 100644 --- a/src/models/PortfolioHistory.ts +++ b/src/models/PortfolioHistory.ts @@ -4,29 +4,28 @@ /* eslint-disable */ export type PortfolioHistory = { - /** - * time of each data element, left-labeled (the beginning of time window) - */ - timestamp?: Array; - /** - * equity value of the account in dollar amount as of the end of each time window - */ - equity?: Array; - /** - * profit/loss in dollar from the base value - */ - profit_loss?: Array; - /** - * profit/loss in percentage from the base value - */ - profit_loss_pct?: Array; - /** - * basis in dollar of the profit loss calculation - */ - base_value?: number; - /** - * time window size of each data element - */ - timeframe?: string; + /** + * time of each data element, left-labeled (the beginning of time window) + */ + timestamp?: Array; + /** + * equity value of the account in dollar amount as of the end of each time window + */ + equity?: Array; + /** + * profit/loss in dollar from the base value + */ + profit_loss?: Array; + /** + * profit/loss in percentage from the base value + */ + profit_loss_pct?: Array; + /** + * basis in dollar of the profit loss calculation + */ + base_value?: number; + /** + * time window size of each data element + */ + timeframe?: string; }; - diff --git a/src/models/Position.ts b/src/models/Position.ts index 6d7f026..7dec6c9 100644 --- a/src/models/Position.ts +++ b/src/models/Position.ts @@ -3,75 +3,74 @@ /* tslint:disable */ /* eslint-disable */ -import type { AssetClass } from './AssetClass'; -import type { Exchange } from './Exchange'; +import type { AssetClass } from "./AssetClass"; +import type { Exchange } from "./Exchange"; /** * The positions API provides information about an account’s current open positions. The response will include information such as cost basis, shares traded, and market value, which will be updated live as price information is updated. Once a position is closed, it will no longer be queryable through this API. */ export type Position = { - /** - * Asset ID - */ - asset_id: string; - /** - * Symbol name of the asset - */ - symbol: string; - exchange: Exchange; - asset_class: AssetClass; - /** - * Average entry price of the position - */ - avg_entry_price: string; - /** - * The number of shares - */ - qty: string; - /** - * Total number of shares available minus open orders - */ - qty_available?: string; - /** - * “long” - */ - side: string; - /** - * Total dollar amount of the position - */ - market_value: string; - /** - * Total cost basis in dollar - */ - cost_basis: string; - /** - * Unrealized profit/loss in dollars - */ - unrealized_pl: string; - /** - * Unrealized profit/loss percent (by a factor of 1) - */ - unrealized_plpc: string; - /** - * Unrealized profit/loss in dollars for the day - */ - unrealized_intraday_pl: string; - /** - * Unrealized profit/loss percent (by a factor of 1) - */ - unrealized_intraday_plpc: string; - /** - * Current asset price per share - */ - current_price: string; - /** - * Last day’s asset price per share based on the closing value of the last trading day - */ - lastday_price: string; - /** - * Percent change from last day price (by a factor of 1) - */ - change_today: string; - asset_marginable: boolean; + /** + * Asset ID + */ + asset_id: string; + /** + * Symbol name of the asset + */ + symbol: string; + exchange: Exchange; + asset_class: AssetClass; + /** + * Average entry price of the position + */ + avg_entry_price: string; + /** + * The number of shares + */ + qty: string; + /** + * Total number of shares available minus open orders + */ + qty_available?: string; + /** + * “long” + */ + side: string; + /** + * Total dollar amount of the position + */ + market_value: string; + /** + * Total cost basis in dollar + */ + cost_basis: string; + /** + * Unrealized profit/loss in dollars + */ + unrealized_pl: string; + /** + * Unrealized profit/loss percent (by a factor of 1) + */ + unrealized_plpc: string; + /** + * Unrealized profit/loss in dollars for the day + */ + unrealized_intraday_pl: string; + /** + * Unrealized profit/loss percent (by a factor of 1) + */ + unrealized_intraday_plpc: string; + /** + * Current asset price per share + */ + current_price: string; + /** + * Last day’s asset price per share based on the closing value of the last trading day + */ + lastday_price: string; + /** + * Percent change from last day price (by a factor of 1) + */ + change_today: string; + asset_marginable: boolean; }; - diff --git a/src/models/PositionClosedReponse.ts b/src/models/PositionClosedReponse.ts index 6b94e93..0a91cd0 100644 --- a/src/models/PositionClosedReponse.ts +++ b/src/models/PositionClosedReponse.ts @@ -3,20 +3,19 @@ /* tslint:disable */ /* eslint-disable */ -import type { Order } from './Order'; +import type { Order } from "./Order"; /** * Represents the result of asking the api to close a position. */ export type PositionClosedReponse = { - /** - * Symbol name of the asset - */ - symbol: string; - /** - * Http status code for the attempt to close this position - */ - status: string; - body?: Order; + /** + * Symbol name of the asset + */ + symbol: string; + /** + * Http status code for the attempt to close this position + */ + status: string; + body?: Order; }; - diff --git a/src/models/Quote.ts b/src/models/Quote.ts index 485f235..849533f 100644 --- a/src/models/Quote.ts +++ b/src/models/Quote.ts @@ -8,48 +8,47 @@ * */ export type Quote = { - /** - * Timestamp in RFC-3339 format with nanosecond precision - */ - 't': string; - /** - * ask exchange (Stock quote only) - */ - ax?: string; - /** - * ask price - * - */ - ap?: number; - /** - * ask size - * - */ - as?: number; - /** - * bid exchange (Stock quote only) - */ - bx?: string; - /** - * bid price - * - */ - bp?: number; - /** - * bid size - */ - bs?: number; - /** - * quote conditions (Stock quotes only) - */ - 'c'?: Array; - /** - * Exchange (Crypto quote Only) - */ - 'x'?: string; - /** - * Tape (Stock quote only) - */ - 'z'?: string; + /** + * Timestamp in RFC-3339 format with nanosecond precision + */ + t: string; + /** + * ask exchange (Stock quote only) + */ + ax?: string; + /** + * ask price + * + */ + ap?: number; + /** + * ask size + * + */ + as?: number; + /** + * bid exchange (Stock quote only) + */ + bx?: string; + /** + * bid price + * + */ + bp?: number; + /** + * bid size + */ + bs?: number; + /** + * quote conditions (Stock quotes only) + */ + c?: Array; + /** + * Exchange (Crypto quote Only) + */ + x?: string; + /** + * Tape (Stock quote only) + */ + z?: string; }; - diff --git a/src/models/QuotesResponse.ts b/src/models/QuotesResponse.ts index 2d9d24d..f701035 100644 --- a/src/models/QuotesResponse.ts +++ b/src/models/QuotesResponse.ts @@ -3,15 +3,14 @@ /* tslint:disable */ /* eslint-disable */ -import type { Quote } from './Quote'; +import type { Quote } from "./Quote"; /** * The Quotes API provides NBBO quotes for a given ticker symbol at a specified date. * */ export type QuotesResponse = { - quotes: Array | null; - symbol: string; - next_page_token?: string | null; + quotes: Array | null; + symbol: string; + next_page_token?: string | null; }; - diff --git a/src/models/Snapshot.ts b/src/models/Snapshot.ts index 378b5af..b5d8fc7 100644 --- a/src/models/Snapshot.ts +++ b/src/models/Snapshot.ts @@ -3,19 +3,18 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from './Bar'; -import type { Quote } from './Quote'; -import type { Trade } from './Trade'; +import type { Bar } from "./Bar"; +import type { Quote } from "./Quote"; +import type { Trade } from "./Trade"; /** * The Snapshot API for one ticker provides the latest trade, latest quote, minute bar daily bar and previous daily bar data for a given ticker symbol. * */ export type Snapshot = { - latestTrade?: Trade; - latestQuote?: Quote; - minuteBar?: Bar; - dailyBar?: Bar; - prevDailyBar?: Bar; + latestTrade?: Trade; + latestQuote?: Quote; + minuteBar?: Bar; + dailyBar?: Bar; + prevDailyBar?: Bar; }; - diff --git a/src/models/TimeInForce.ts b/src/models/TimeInForce.ts index f7a073c..eaf316d 100644 --- a/src/models/TimeInForce.ts +++ b/src/models/TimeInForce.ts @@ -27,10 +27,10 @@ * A Fill or Kill (FOK) order is only executed if the entire order quantity can be filled, otherwise the order is canceled. Only available with API v2. */ export enum TimeInForce { - DAY = 'day', - GTC = 'gtc', - OPG = 'opg', - CLS = 'cls', - IOC = 'ioc', - FOK = 'fok', + DAY = "day", + GTC = "gtc", + OPG = "opg", + CLS = "cls", + IOC = "ioc", + FOK = "fok", } diff --git a/src/models/Trade.ts b/src/models/Trade.ts index 6b4333d..f4cf327 100644 --- a/src/models/Trade.ts +++ b/src/models/Trade.ts @@ -7,37 +7,36 @@ * A model representing a trade */ export type Trade = { - /** - * Timestamp in RFC-3339 format with nanosecond precision - */ - 't'?: string; - /** - * Exchange where the trade happened. - */ - 'x': string; - /** - * Trade price. - */ - 'p'?: number; - /** - * Trade Size. - */ - 's'?: number; - /** - * Trade conditions (Stock trade only) - */ - 'c'?: Array; - /** - * Trade ID - */ - 'i': number; - /** - * Tape (Stock trade only) - */ - 'z'?: string; - /** - * Taker's side (crypto trade only) - */ - tks?: string; + /** + * Timestamp in RFC-3339 format with nanosecond precision + */ + t?: string; + /** + * Exchange where the trade happened. + */ + x: string; + /** + * Trade price. + */ + p?: number; + /** + * Trade Size. + */ + s?: number; + /** + * Trade conditions (Stock trade only) + */ + c?: Array; + /** + * Trade ID + */ + i: number; + /** + * Tape (Stock trade only) + */ + z?: string; + /** + * Taker's side (crypto trade only) + */ + tks?: string; }; - diff --git a/src/models/TradesResponse.ts b/src/models/TradesResponse.ts index 19ca0ec..e342f99 100644 --- a/src/models/TradesResponse.ts +++ b/src/models/TradesResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Trade } from './Trade'; +import type { Trade } from "./Trade"; /** * A model representing the result of hitting the Trades api. @@ -11,17 +11,16 @@ import type { Trade } from './Trade'; * Represents multiple Trades for a single symbol with support for paging. */ export type TradesResponse = { - /** - * Array of trades - */ - trades: Array; - /** - * Symbol that was queried - */ - symbol: string; - /** - * Token that can be used to query the next page - */ - next_page_token?: string | null; + /** + * Array of trades + */ + trades: Array; + /** + * Symbol that was queried + */ + symbol: string; + /** + * Token that can be used to query the next page + */ + next_page_token?: string | null; }; - diff --git a/src/models/TradingActivities.ts b/src/models/TradingActivities.ts index 4367934..84fb954 100644 --- a/src/models/TradingActivities.ts +++ b/src/models/TradingActivities.ts @@ -3,65 +3,61 @@ /* tslint:disable */ /* eslint-disable */ -import type { ActivityType } from './ActivityType'; -import type { OrderStatus } from './OrderStatus'; +import type { ActivityType } from "./ActivityType"; +import type { OrderStatus } from "./OrderStatus"; export type TradingActivities = { - activity_type?: ActivityType; - /** - * An id for the activity. Always in “::” format. Can be sent as page_token in requests to facilitate the paging of results. - */ - id?: string; - /** - * The cumulative quantity of shares involved in the execution. - */ - cum_qty?: string; - /** - * For partially_filled orders, the quantity of shares that are left to be filled. - * - */ - leaves_qty?: string; - /** - * The per-share price that the trade was executed at. - */ - price?: string; - /** - * The number of shares involved in the trade execution. - */ - qty?: string; - /** - * buy or sell - */ - side?: string; - /** - * The symbol of the security being traded. - */ - symbol?: string; - /** - * The time at which the execution occurred. - */ - transaction_time?: string; - /** - * The id for the order that filled. - */ - order_id?: string; - /** - * fill or partial_fill - */ - type?: TradingActivities.type; - order_status?: OrderStatus; + activity_type?: ActivityType; + /** + * An id for the activity. Always in “::” format. Can be sent as page_token in requests to facilitate the paging of results. + */ + id?: string; + /** + * The cumulative quantity of shares involved in the execution. + */ + cum_qty?: string; + /** + * For partially_filled orders, the quantity of shares that are left to be filled. + * + */ + leaves_qty?: string; + /** + * The per-share price that the trade was executed at. + */ + price?: string; + /** + * The number of shares involved in the trade execution. + */ + qty?: string; + /** + * buy or sell + */ + side?: string; + /** + * The symbol of the security being traded. + */ + symbol?: string; + /** + * The time at which the execution occurred. + */ + transaction_time?: string; + /** + * The id for the order that filled. + */ + order_id?: string; + /** + * fill or partial_fill + */ + type?: TradingActivities.type; + order_status?: OrderStatus; }; export namespace TradingActivities { - - /** - * fill or partial_fill - */ - export enum type { - FILL = 'fill', - PARTIAL_FILL = 'partial_fill', - } - - + /** + * fill or partial_fill + */ + export enum type { + FILL = "fill", + PARTIAL_FILL = "partial_fill", + } } - diff --git a/src/models/UpdateWatchlistRequest.ts b/src/models/UpdateWatchlistRequest.ts index 6e0a857..24ba98e 100644 --- a/src/models/UpdateWatchlistRequest.ts +++ b/src/models/UpdateWatchlistRequest.ts @@ -7,7 +7,6 @@ * Request format used for creating a new watchlist or updating an existing watchlist with a set of assets and name. */ export type UpdateWatchlistRequest = { - name: string; - symbols?: Array; + name: string; + symbols?: Array; }; - diff --git a/src/models/Watchlist.ts b/src/models/Watchlist.ts index 6153420..82fd0b9 100644 --- a/src/models/Watchlist.ts +++ b/src/models/Watchlist.ts @@ -3,30 +3,29 @@ /* tslint:disable */ /* eslint-disable */ -import type { Assets } from './Assets'; +import type { Assets } from "./Assets"; /** * The watchlist API provides CRUD operation for the account’s watchlist. An account can have multiple watchlists and each is uniquely identified by id but can also be addressed by user-defined name. Each watchlist is an ordered list of assets. * */ export type Watchlist = { - /** - * watchlist id - */ - id: string; - /** - * account ID - */ - account_id: string; - created_at: string; - updated_at: string; - /** - * user-defined watchlist name (up to 64 characters) - */ - name: string; - /** - * the content of this watchlist, in the order as registered by the client - */ - assets?: Array; + /** + * watchlist id + */ + id: string; + /** + * account ID + */ + account_id: string; + created_at: string; + updated_at: string; + /** + * user-defined watchlist name (up to 64 characters) + */ + name: string; + /** + * the content of this watchlist, in the order as registered by the client + */ + assets?: Array; }; - diff --git a/src/models/XBBO.ts b/src/models/XBBO.ts index d64dffa..3130cf6 100644 --- a/src/models/XBBO.ts +++ b/src/models/XBBO.ts @@ -7,33 +7,32 @@ * XBBO or Cross Best Bid and Offer represents the Best Bid and Offer for an exchange */ export type XBBO = { - /** - * Timestamp in RFC-3339 format with nanosecond precision. - */ - 't': string; - /** - * Ask exchange. - */ - ax: string; - /** - * Ask price. - */ - ap: number; - /** - * Ask size. - */ - as: number; - /** - * Bid exchange. - */ - bx: string; - /** - * Bid price. - */ - bp: number; - /** - * Bid size. - */ - bs: number; + /** + * Timestamp in RFC-3339 format with nanosecond precision. + */ + t: string; + /** + * Ask exchange. + */ + ax: string; + /** + * Ask price. + */ + ap: number; + /** + * Ask size. + */ + as: number; + /** + * Bid exchange. + */ + bx: string; + /** + * Bid price. + */ + bp: number; + /** + * Bid size. + */ + bs: number; }; - diff --git a/src/models/adjustment.ts b/src/models/adjustment.ts index 603baf7..a111b34 100644 --- a/src/models/adjustment.ts +++ b/src/models/adjustment.ts @@ -7,8 +7,8 @@ * specifies the corporate action adjustment(s) for bars data */ export enum adjustment { - RAW = 'raw', - SPLIT = 'split', - DIVIDEND = 'dividend', - ALL = 'all', + RAW = "raw", + SPLIT = "split", + DIVIDEND = "dividend", + ALL = "all", } diff --git a/src/models/crypto_exchange.ts b/src/models/crypto_exchange.ts index 47ed1d7..d5b14f5 100644 --- a/src/models/crypto_exchange.ts +++ b/src/models/crypto_exchange.ts @@ -7,7 +7,7 @@ * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ export enum crypto_exchange { - ERSX = 'ERSX', - CBSE = 'CBSE', - FTXU = 'FTXU', + ERSX = "ERSX", + CBSE = "CBSE", + FTXU = "FTXU", } diff --git a/src/models/feed.ts b/src/models/feed.ts index a108bb9..b429056 100644 --- a/src/models/feed.ts +++ b/src/models/feed.ts @@ -7,7 +7,7 @@ * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ export enum feed { - IEX = 'iex', - SIP = 'sip', - OTC = 'otc', + IEX = "iex", + SIP = "sip", + OTC = "otc", } diff --git a/src/services/AccountActivitiesService.ts b/src/services/AccountActivitiesService.ts index f580136..21990ac 100644 --- a/src/services/AccountActivitiesService.ts +++ b/src/services/AccountActivitiesService.ts @@ -2,104 +2,102 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { NonTradeActivities } from '../models/NonTradeActivities'; -import type { TradingActivities } from '../models/TradingActivities'; +import type { NonTradeActivities } from "../models/NonTradeActivities"; +import type { TradingActivities } from "../models/TradingActivities"; -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; export class AccountActivitiesService { + constructor(public readonly httpRequest: BaseHttpRequest) {} - constructor(public readonly httpRequest: BaseHttpRequest) {} - + /** + * Get account activities of one type + * Returns account activity entries for many types of activities. + * @returns any returns an array of Account activities + * @throws ApiError + */ + public getAccountActivities({ + activityTypes, + }: { /** - * Get account activities of one type - * Returns account activity entries for many types of activities. - * @returns any returns an array of Account activities - * @throws ApiError + * A comma-separated list of the activity types to include in the response. If unspecified, activities of all types will be returned. (Cannot be used with category) */ - public getAccountActivities({ - activityTypes, - }: { - /** - * A comma-separated list of the activity types to include in the response. If unspecified, activities of all types will be returned. (Cannot be used with category) - */ - activityTypes?: 'trade_activity' | 'non_trade_activity', - }): CancelablePromise> { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/account/activities', - query: { - 'activity_types': activityTypes, - }, - }); - } + activityTypes?: "trade_activity" | "non_trade_activity"; + }): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account/activities", + query: { + activity_types: activityTypes, + }, + }); + } + /** + * Get account activities of one type + * Returns account activity entries for a specific type of activity. + * @returns any returns an array of Account activities + * @throws ApiError + */ + public getAccountActivitiesByActivityType({ + activityType, + date, + until, + after, + direction, + pageSize, + pageToken, + category, + }: { /** - * Get account activities of one type - * Returns account activity entries for a specific type of activity. - * @returns any returns an array of Account activities - * @throws ApiError + * The activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page. */ - public getAccountActivitiesByActivityType({ - activityType, - date, - until, - after, - direction, - pageSize, - pageToken, - category, - }: { - /** - * The activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page. - */ - activityType: string, - /** - * The date for which you want to see activities. - */ - date?: string, - /** - * The response will contain only activities submitted before this date. (Cannot be used with date.) - */ - until?: string, - /** - * The response will contain only activities submitted after this date. (Cannot be used with date.) - */ - after?: string, - /** - * asc or desc (default desc if unspecified.) - */ - direction?: 'asc' | 'desc', - /** - * The maximum number of entries to return in the response. (See the section on paging above.) - */ - pageSize?: number, - /** - * The ID of the end of your current page of results. - */ - pageToken?: string, - /** - * trade_activity or non_trade_activity, to specify the kind of results the server should return. (Cannot be used with /{activity_type} or ?activity_types=...) - */ - category?: string, - }): CancelablePromise> { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/account/activities/{activity_type}', - path: { - 'activity_type': activityType, - }, - query: { - 'date': date, - 'until': until, - 'after': after, - 'direction': direction, - 'page_size': pageSize, - 'page_token': pageToken, - 'category': category, - }, - }); - } - + activityType: string; + /** + * The date for which you want to see activities. + */ + date?: string; + /** + * The response will contain only activities submitted before this date. (Cannot be used with date.) + */ + until?: string; + /** + * The response will contain only activities submitted after this date. (Cannot be used with date.) + */ + after?: string; + /** + * asc or desc (default desc if unspecified.) + */ + direction?: "asc" | "desc"; + /** + * The maximum number of entries to return in the response. (See the section on paging above.) + */ + pageSize?: number; + /** + * The ID of the end of your current page of results. + */ + pageToken?: string; + /** + * trade_activity or non_trade_activity, to specify the kind of results the server should return. (Cannot be used with /{activity_type} or ?activity_types=...) + */ + category?: string; + }): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account/activities/{activity_type}", + path: { + activity_type: activityType, + }, + query: { + date: date, + until: until, + after: after, + direction: direction, + page_size: pageSize, + page_token: pageToken, + category: category, + }, + }); + } } diff --git a/src/services/AccountConfigurationsService.ts b/src/services/AccountConfigurationsService.ts index daa6931..36e31fc 100644 --- a/src/services/AccountConfigurationsService.ts +++ b/src/services/AccountConfigurationsService.ts @@ -2,45 +2,43 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { AccountConfigurations } from '../models/AccountConfigurations'; +import type { AccountConfigurations } from "../models/AccountConfigurations"; -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; export class AccountConfigurationsService { + constructor(public readonly httpRequest: BaseHttpRequest) {} - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Account Configurations - * gets the current account configuration values - * @returns AccountConfigurations Successful response - * @throws ApiError - */ - public getAccountConfig(): CancelablePromise { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/account/configurations', - }); - } - - /** - * Account Configurations - * Updates and returns the current account configuration values - * @returns AccountConfigurations Successful response - * @throws ApiError - */ - public patchAccountConfig({ - requestBody, - }: { - requestBody?: AccountConfigurations, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'PATCH', - url: '/v2/account/configurations', - body: requestBody, - mediaType: 'application/json', - }); - } + /** + * Account Configurations + * gets the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ + public getAccountConfig(): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account/configurations", + }); + } + /** + * Account Configurations + * Updates and returns the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ + public patchAccountConfig({ + requestBody, + }: { + requestBody?: AccountConfigurations; + }): CancelablePromise { + return this.httpRequest.request({ + method: "PATCH", + url: "/v2/account/configurations", + body: requestBody, + mediaType: "application/json", + }); + } } diff --git a/src/services/AccountService.ts b/src/services/AccountService.ts index b8cf42f..ccd14be 100644 --- a/src/services/AccountService.ts +++ b/src/services/AccountService.ts @@ -22,4 +22,4 @@ export class AccountService { url: "/v2/account", }); } -} \ No newline at end of file +} diff --git a/src/services/AssetsService.ts b/src/services/AssetsService.ts index 198a5cb..15a0f28 100644 --- a/src/services/AssetsService.ts +++ b/src/services/AssetsService.ts @@ -80,4 +80,4 @@ export class AssetsService { }, }); } -} \ No newline at end of file +} diff --git a/src/services/CalendarService.ts b/src/services/CalendarService.ts index 2e73da0..f1b0626 100644 --- a/src/services/CalendarService.ts +++ b/src/services/CalendarService.ts @@ -2,50 +2,48 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { Calendar } from '../models/Calendar'; +import type { Calendar } from "../models/Calendar"; -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; export class CalendarService { + constructor(public readonly httpRequest: BaseHttpRequest) {} - constructor(public readonly httpRequest: BaseHttpRequest) {} - + /** + * Get Market Calendar info + * The calendar API serves the full list of market days from 1970 to 2029. It can also be queried by specifying a start and/or end time to narrow down the results. In addition to the dates, the response also contains the specific open and close times for the market days, taking into account early closures. + * + * Returns the market calendar. + * @returns Calendar OK + * @throws ApiError + */ + public getCalendar({ + start, + end, + dateType, + }: { /** - * Get Market Calendar info - * The calendar API serves the full list of market days from 1970 to 2029. It can also be queried by specifying a start and/or end time to narrow down the results. In addition to the dates, the response also contains the specific open and close times for the market days, taking into account early closures. - * - * Returns the market calendar. - * @returns Calendar OK - * @throws ApiError + * The first date to retrieve data for (inclusive) */ - public getCalendar({ - start, - end, - dateType, - }: { - /** - * The first date to retrieve data for (inclusive) - */ - start?: string, - /** - * The last date to retrieve data for (inclusive) - */ - end?: string, - /** - * Indicates what start and end mean. Enum: ‘TRADING’ or ‘SETTLEMENT’. Default value is ‘TRADING’. If TRADING is specified, returns a calendar whose trading date matches start, end. If SETTLEMENT is specified, returns the calendar whose settlement date matches start and end. - */ - dateType?: string, - }): CancelablePromise> { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/calendar', - query: { - 'start': start, - 'end': end, - 'date_type': dateType, - }, - }); - } - + start?: string; + /** + * The last date to retrieve data for (inclusive) + */ + end?: string; + /** + * Indicates what start and end mean. Enum: ‘TRADING’ or ‘SETTLEMENT’. Default value is ‘TRADING’. If TRADING is specified, returns a calendar whose trading date matches start, end. If SETTLEMENT is specified, returns the calendar whose settlement date matches start and end. + */ + dateType?: string; + }): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/calendar", + query: { + start: start, + end: end, + date_type: dateType, + }, + }); + } } diff --git a/src/services/ClockService.ts b/src/services/ClockService.ts index 25d16d8..42611eb 100644 --- a/src/services/ClockService.ts +++ b/src/services/ClockService.ts @@ -2,28 +2,26 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { Clock } from '../models/Clock'; +import type { Clock } from "../models/Clock"; -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; export class ClockService { + constructor(public readonly httpRequest: BaseHttpRequest) {} - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get Market Clock info - * The clock API serves the current market timestamp, whether or not the market is currently open, as well as the times of the next market open and close. - * - * Returns the market clock. - * @returns Clock OK - * @throws ApiError - */ - public getClock(): CancelablePromise { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/clock', - }); - } - + /** + * Get Market Clock info + * The clock API serves the current market timestamp, whether or not the market is currently open, as well as the times of the next market open and close. + * + * Returns the market clock. + * @returns Clock OK + * @throws ApiError + */ + public getClock(): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/clock", + }); + } } diff --git a/src/services/CryptoPricingDataApiService.ts b/src/services/CryptoPricingDataApiService.ts index e2f7bcf..6bdbc55 100644 --- a/src/services/CryptoPricingDataApiService.ts +++ b/src/services/CryptoPricingDataApiService.ts @@ -686,4 +686,4 @@ export class CryptoPricingDataApiService { url: "/v1beta1/crypto/meta/spreads", }); } -} \ No newline at end of file +} diff --git a/src/services/LogoService.ts b/src/services/LogoService.ts index bd5bc1a..0d51b34 100644 --- a/src/services/LogoService.ts +++ b/src/services/LogoService.ts @@ -41,4 +41,4 @@ export class LogoService { }, }); } -} \ No newline at end of file +} diff --git a/src/services/NewsService.ts b/src/services/NewsService.ts index dbdfc3b..0089ef4 100644 --- a/src/services/NewsService.ts +++ b/src/services/NewsService.ts @@ -74,4 +74,4 @@ export class NewsService { }, }); } -} \ No newline at end of file +} diff --git a/src/services/OrdersService.ts b/src/services/OrdersService.ts index 65c1bce..1db8a2d 100644 --- a/src/services/OrdersService.ts +++ b/src/services/OrdersService.ts @@ -2,218 +2,216 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { CanceledOrderResponse } from '../models/CanceledOrderResponse'; -import type { Order } from '../models/Order'; -import type { PatchOrderRequest } from '../models/PatchOrderRequest'; +import type { CanceledOrderResponse } from "../models/CanceledOrderResponse"; +import type { Order } from "../models/Order"; +import type { PatchOrderRequest } from "../models/PatchOrderRequest"; -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; export class OrdersService { + constructor(public readonly httpRequest: BaseHttpRequest) {} - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Order - * Places a new order for the given account. An order request may be rejected if the account is not authorized for trading, or if the tradable balance is insufficient to fill the order.. - * @returns Order Successful response - * @throws ApiError - */ - public postOrder({ - requestBody, - }: { - requestBody: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'POST', - url: '/v2/orders', - body: requestBody, - mediaType: 'application/json', - errors: { - 403: `Forbidden + /** + * Order + * Places a new order for the given account. An order request may be rejected if the account is not authorized for trading, or if the tradable balance is insufficient to fill the order.. + * @returns Order Successful response + * @throws ApiError + */ + public postOrder({ + requestBody, + }: { + requestBody: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "POST", + url: "/v2/orders", + body: requestBody, + mediaType: "application/json", + errors: { + 403: `Forbidden Buying power or shares is not sufficient.`, - 422: `Unprocessable + 422: `Unprocessable Input parameters are not recognized.`, - }, - }); - } + }, + }); + } + /** + * All Orders + * Retrieves a list of orders for the account, filtered by the supplied query parameters. + * @returns Order Successful response + * + * An array of Order objects + * @throws ApiError + */ + public getAllOrders({ + status, + limit, + after, + until, + direction, + nested, + symbols, + side, + }: { /** - * All Orders - * Retrieves a list of orders for the account, filtered by the supplied query parameters. - * @returns Order Successful response - * - * An array of Order objects - * @throws ApiError + * Order status to be queried. open, closed or all. Defaults to open. */ - public getAllOrders({ - status, - limit, - after, - until, - direction, - nested, - symbols, - side, - }: { - /** - * Order status to be queried. open, closed or all. Defaults to open. - */ - status?: 'open' | 'closed' | 'all', - /** - * The maximum number of orders in response. Defaults to 50 and max is 500. - */ - limit?: number, - /** - * The response will include only ones submitted after this timestamp (exclusive.) - */ - after?: string, - /** - * The response will include only ones submitted until this timestamp (exclusive.) - */ - until?: string, - /** - * The chronological order of response based on the submission time. asc or desc. Defaults to desc. - */ - direction?: 'asc' | 'desc', - /** - * If true, the result will roll up multi-leg orders under the legs field of primary order. - */ - nested?: boolean, - /** - * A comma-separated list of symbols to filter by (ex. “AAPL,TSLA,MSFT”). A currency pair is required for crypto orders (ex. “BTCUSD,BCHUSD,LTCUSD,ETCUSD”). - */ - symbols?: string, - /** - * Filters down to orders that have a matching side field set. - */ - side?: string, - }): CancelablePromise> { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/orders', - query: { - 'status': status, - 'limit': limit, - 'after': after, - 'until': until, - 'direction': direction, - 'nested': nested, - 'symbols': symbols, - 'side': side, - }, - }); - } - + status?: "open" | "closed" | "all"; /** - * All Orders - * Attempts to cancel all open orders. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. - * @returns CanceledOrderResponse Multi-Status with body. - * - * an array of objects that include the order id and http status code for each status request. - * @throws ApiError + * The maximum number of orders in response. Defaults to 50 and max is 500. */ - public deleteAllOrders(): CancelablePromise> { - return this.httpRequest.request({ - method: 'DELETE', - url: '/v2/orders', - errors: { - 500: `Failed to cancel order.`, - }, - }); - } - + limit?: number; + /** + * The response will include only ones submitted after this timestamp (exclusive.) + */ + after?: string; + /** + * The response will include only ones submitted until this timestamp (exclusive.) + */ + until?: string; + /** + * The chronological order of response based on the submission time. asc or desc. Defaults to desc. + */ + direction?: "asc" | "desc"; + /** + * If true, the result will roll up multi-leg orders under the legs field of primary order. + */ + nested?: boolean; + /** + * A comma-separated list of symbols to filter by (ex. “AAPL,TSLA,MSFT”). A currency pair is required for crypto orders (ex. “BTCUSD,BCHUSD,LTCUSD,ETCUSD”). + */ + symbols?: string; /** - * Order by Order ID - * Retrieves a single order for the given order_id. - * @returns Order Successful response - * @throws ApiError + * Filters down to orders that have a matching side field set. */ - public getOrderByOrderId({ - orderId, - nested, - }: { - /** - * order id - */ - orderId: string, - /** - * If true, the result will roll up multi-leg orders under the legs field of primary order. - */ - nested?: boolean, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/orders/{order_id}', - path: { - 'order_id': orderId, - }, - query: { - 'nested': nested, - }, - }); - } + side?: string; + }): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/orders", + query: { + status: status, + limit: limit, + after: after, + until: until, + direction: direction, + nested: nested, + symbols: symbols, + side: side, + }, + }); + } + /** + * All Orders + * Attempts to cancel all open orders. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. + * @returns CanceledOrderResponse Multi-Status with body. + * + * an array of objects that include the order id and http status code for each status request. + * @throws ApiError + */ + public deleteAllOrders(): CancelablePromise> { + return this.httpRequest.request({ + method: "DELETE", + url: "/v2/orders", + errors: { + 500: `Failed to cancel order.`, + }, + }); + } + + /** + * Order by Order ID + * Retrieves a single order for the given order_id. + * @returns Order Successful response + * @throws ApiError + */ + public getOrderByOrderId({ + orderId, + nested, + }: { + /** + * order id + */ + orderId: string; /** - * Order - * Replaces a single order with updated parameters. Each parameter overrides the corresponding attribute of the existing order. The other attributes remain the same as the existing order. - * - * A success return code from a replaced order does NOT guarantee the existing open order has been replaced. If the existing open order is filled before the replacing (new) order reaches the execution venue, the replacing (new) order is rejected, and these events are sent in the trade_updates stream channel. - * - * While an order is being replaced, buying power is reduced by the larger of the two orders that have been placed (the old order being replaced, and the newly placed order to replace it). If you are replacing a buy entry order with a higher limit price than the original order, the buying power is calculated based on the newly placed order. If you are replacing it with a lower limit price, the buying power is calculated based on the old order. - * - * @returns Order Successful response - * - * The new Order object with the new order ID. - * @throws ApiError + * If true, the result will roll up multi-leg orders under the legs field of primary order. */ - public patchOrderByOrderId({ - orderId, - requestBody, - }: { - /** - * order id - */ - orderId: string, - requestBody: PatchOrderRequest, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'PATCH', - url: '/v2/orders/{order_id}', - path: { - 'order_id': orderId, - }, - body: requestBody, - mediaType: 'application/json', - }); - } + nested?: boolean; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/orders/{order_id}", + path: { + order_id: orderId, + }, + query: { + nested: nested, + }, + }); + } + /** + * Order + * Replaces a single order with updated parameters. Each parameter overrides the corresponding attribute of the existing order. The other attributes remain the same as the existing order. + * + * A success return code from a replaced order does NOT guarantee the existing open order has been replaced. If the existing open order is filled before the replacing (new) order reaches the execution venue, the replacing (new) order is rejected, and these events are sent in the trade_updates stream channel. + * + * While an order is being replaced, buying power is reduced by the larger of the two orders that have been placed (the old order being replaced, and the newly placed order to replace it). If you are replacing a buy entry order with a higher limit price than the original order, the buying power is calculated based on the newly placed order. If you are replacing it with a lower limit price, the buying power is calculated based on the old order. + * + * @returns Order Successful response + * + * The new Order object with the new order ID. + * @throws ApiError + */ + public patchOrderByOrderId({ + orderId, + requestBody, + }: { /** - * Order by Order ID - * Attempts to cancel an Open Order. If the order is no longer cancelable, the request will be rejected with status 422; otherwise accepted with return status 204. - * @returns void - * @throws ApiError + * order id */ - public deleteOrderByOrderId({ - orderId, - }: { - /** - * order id - */ - orderId: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'DELETE', - url: '/v2/orders/{order_id}', - path: { - 'order_id': orderId, - }, - errors: { - 422: `The order status is not cancelable.`, - }, - }); - } + orderId: string; + requestBody: PatchOrderRequest; + }): CancelablePromise { + return this.httpRequest.request({ + method: "PATCH", + url: "/v2/orders/{order_id}", + path: { + order_id: orderId, + }, + body: requestBody, + mediaType: "application/json", + }); + } + /** + * Order by Order ID + * Attempts to cancel an Open Order. If the order is no longer cancelable, the request will be rejected with status 422; otherwise accepted with return status 204. + * @returns void + * @throws ApiError + */ + public deleteOrderByOrderId({ + orderId, + }: { + /** + * order id + */ + orderId: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "DELETE", + url: "/v2/orders/{order_id}", + path: { + order_id: orderId, + }, + errors: { + 422: `The order status is not cancelable.`, + }, + }); + } } diff --git a/src/services/PortfolioHistoryService.ts b/src/services/PortfolioHistoryService.ts index c4a0723..cb9f718 100644 --- a/src/services/PortfolioHistoryService.ts +++ b/src/services/PortfolioHistoryService.ts @@ -2,54 +2,52 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PortfolioHistory } from '../models/PortfolioHistory'; +import type { PortfolioHistory } from "../models/PortfolioHistory"; -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; export class PortfolioHistoryService { + constructor(public readonly httpRequest: BaseHttpRequest) {} - constructor(public readonly httpRequest: BaseHttpRequest) {} - + /** + * Account Portfolio History + * Returns timeseries data about equity and profit/loss (P/L) of the account in requested timespan. + * @returns PortfolioHistory Successful response + * @throws ApiError + */ + public getAccountPortfolioHistory({ + period, + timeframe, + dateEnd, + extendedHours, + }: { /** - * Account Portfolio History - * Returns timeseries data about equity and profit/loss (P/L) of the account in requested timespan. - * @returns PortfolioHistory Successful response - * @throws ApiError + * The duration of the data in + , such as 1D, where can be D for day, W for week, M for month and A for year. Defaults to 1M. */ - public getAccountPortfolioHistory({ - period, - timeframe, - dateEnd, - extendedHours, - }: { - /** - * The duration of the data in + , such as 1D, where can be D for day, W for week, M for month and A for year. Defaults to 1M. - */ - period?: string, - /** - * The resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. - */ - timeframe?: string, - /** - * The date the data is returned up to, in “YYYY-MM-DD” format. Defaults to the current market date (rolls over at the market open if extended_hours is false, otherwise at 7am ET) - */ - dateEnd?: string, - /** - * If true, include extended hours in the result. This is effective only for timeframe less than 1D. - */ - extendedHours?: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/account/portfolio/history', - query: { - 'period': period, - 'timeframe': timeframe, - 'date_end': dateEnd, - 'extended_hours': extendedHours, - }, - }); - } - + period?: string; + /** + * The resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. + */ + timeframe?: string; + /** + * The date the data is returned up to, in “YYYY-MM-DD” format. Defaults to the current market date (rolls over at the market open if extended_hours is false, otherwise at 7am ET) + */ + dateEnd?: string; + /** + * If true, include extended hours in the result. This is effective only for timeframe less than 1D. + */ + extendedHours?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account/portfolio/history", + query: { + period: period, + timeframe: timeframe, + date_end: dateEnd, + extended_hours: extendedHours, + }, + }); + } } diff --git a/src/services/PositionsService.ts b/src/services/PositionsService.ts index 4a10f61..ae56d3a 100644 --- a/src/services/PositionsService.ts +++ b/src/services/PositionsService.ts @@ -2,120 +2,118 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { Order } from '../models/Order'; -import type { Position } from '../models/Position'; -import type { PositionClosedReponse } from '../models/PositionClosedReponse'; +import type { Order } from "../models/Order"; +import type { Position } from "../models/Position"; +import type { PositionClosedReponse } from "../models/PositionClosedReponse"; -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; export class PositionsService { + constructor(public readonly httpRequest: BaseHttpRequest) {} - constructor(public readonly httpRequest: BaseHttpRequest) {} + /** + * All Open Positions + * The positions API provides information about an account’s current open positions. The response will include information such as cost basis, shares traded, and market value, which will be updated live as price information is updated. Once a position is closed, it will no longer be queryable through this API + * + * Retrieves a list of the account’s open positions + * @returns Position Successful response + * @throws ApiError + */ + public getAllOpenPositions(): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/positions", + }); + } + /** + * All Positions + * Closes (liquidates) all of the account’s open long and short positions. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. + * @returns PositionClosedReponse Multi-Status with body. + * + * an array of PositionClosed responses + * @throws ApiError + */ + public deleteAllOpenPositions({ + cancelOrders, + }: { /** - * All Open Positions - * The positions API provides information about an account’s current open positions. The response will include information such as cost basis, shares traded, and market value, which will be updated live as price information is updated. Once a position is closed, it will no longer be queryable through this API - * - * Retrieves a list of the account’s open positions - * @returns Position Successful response - * @throws ApiError + * If true is specified, cancel all open orders before liquidating all positions. */ - public getAllOpenPositions(): CancelablePromise> { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/positions', - }); - } + cancelOrders?: boolean; + }): CancelablePromise> { + return this.httpRequest.request({ + method: "DELETE", + url: "/v2/positions", + query: { + cancel_orders: cancelOrders, + }, + errors: { + 500: `Failed to liquidate`, + }, + }); + } + /** + * Open Position + * Retrieves the account’s open position for the given symbol or assetId. + * @returns Position Successful response + * @throws ApiError + */ + public getOpenPosition({ + symbolOrAssetId, + }: { /** - * All Positions - * Closes (liquidates) all of the account’s open long and short positions. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. - * @returns PositionClosedReponse Multi-Status with body. - * - * an array of PositionClosed responses - * @throws ApiError + * symbol or assetId */ - public deleteAllOpenPositions({ - cancelOrders, - }: { - /** - * If true is specified, cancel all open orders before liquidating all positions. - */ - cancelOrders?: boolean, - }): CancelablePromise> { - return this.httpRequest.request({ - method: 'DELETE', - url: '/v2/positions', - query: { - 'cancel_orders': cancelOrders, - }, - errors: { - 500: `Failed to liquidate`, - }, - }); - } + symbolOrAssetId: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/positions/{symbol_or_asset_id}", + path: { + symbol_or_asset_id: symbolOrAssetId, + }, + }); + } + /** + * Position + * Closes (liquidates) the account’s open position for the given symbol. Works for both long and short positions. + * @returns Order Successful response + * + * Returns the order created to close out this position + * @throws ApiError + */ + public deleteOpenPosition({ + symbolOrAssetId, + qty, + percentage, + }: { /** - * Open Position - * Retrieves the account’s open position for the given symbol or assetId. - * @returns Position Successful response - * @throws ApiError + * symbol or assetId */ - public getOpenPosition({ - symbolOrAssetId, - }: { - /** - * symbol or assetId - */ - symbolOrAssetId: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/positions/{symbol_or_asset_id}', - path: { - 'symbol_or_asset_id': symbolOrAssetId, - }, - }); - } - + symbolOrAssetId: string; /** - * Position - * Closes (liquidates) the account’s open position for the given symbol. Works for both long and short positions. - * @returns Order Successful response - * - * Returns the order created to close out this position - * @throws ApiError + * the number of shares to liquidate. Can accept up to 9 decimal points. Cannot work with percentage */ - public deleteOpenPosition({ - symbolOrAssetId, - qty, - percentage, - }: { - /** - * symbol or assetId - */ - symbolOrAssetId: string, - /** - * the number of shares to liquidate. Can accept up to 9 decimal points. Cannot work with percentage - */ - qty?: number, - /** - * percentage of position to liquidate. Must be between 0 and 100. Would only sell fractional if position is originally fractional. Can accept up to 9 decimal points. Cannot work with qty - */ - percentage?: number, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'DELETE', - url: '/v2/positions/{symbol_or_asset_id}', - path: { - 'symbol_or_asset_id': symbolOrAssetId, - }, - query: { - 'qty': qty, - 'percentage': percentage, - }, - }); - } - + qty?: number; + /** + * percentage of position to liquidate. Must be between 0 and 100. Would only sell fractional if position is originally fractional. Can accept up to 9 decimal points. Cannot work with qty + */ + percentage?: number; + }): CancelablePromise { + return this.httpRequest.request({ + method: "DELETE", + url: "/v2/positions/{symbol_or_asset_id}", + path: { + symbol_or_asset_id: symbolOrAssetId, + }, + query: { + qty: qty, + percentage: percentage, + }, + }); + } } diff --git a/src/services/ScreenerService.ts b/src/services/ScreenerService.ts index 1167c57..956c726 100644 --- a/src/services/ScreenerService.ts +++ b/src/services/ScreenerService.ts @@ -40,4 +40,4 @@ export class ScreenerService { }, }); } -} \ No newline at end of file +} diff --git a/src/services/StockPricingDataApiService.ts b/src/services/StockPricingDataApiService.ts index 32ab59e..40d5a14 100644 --- a/src/services/StockPricingDataApiService.ts +++ b/src/services/StockPricingDataApiService.ts @@ -672,4 +672,4 @@ export class StockPricingDataApiService { }, }); } -} \ No newline at end of file +} diff --git a/src/services/WatchlistsService.ts b/src/services/WatchlistsService.ts index ad3d897..fb1af99 100644 --- a/src/services/WatchlistsService.ts +++ b/src/services/WatchlistsService.ts @@ -2,290 +2,288 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { UpdateWatchlistRequest } from '../models/UpdateWatchlistRequest'; -import type { Watchlist } from '../models/Watchlist'; +import type { UpdateWatchlistRequest } from "../models/UpdateWatchlistRequest"; +import type { Watchlist } from "../models/Watchlist"; -import type { CancelablePromise } from '../core/CancelablePromise'; -import type { BaseHttpRequest } from '../core/BaseHttpRequest'; +import type { CancelablePromise } from "../core/CancelablePromise"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest"; export class WatchlistsService { + constructor(public readonly httpRequest: BaseHttpRequest) {} - constructor(public readonly httpRequest: BaseHttpRequest) {} + /** + * Watchlists + * Returns the list of watchlists registered under the account. + * @returns Watchlist Successful response + * @throws ApiError + */ + public getWatchlists(): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/watchlists", + }); + } - /** - * Watchlists - * Returns the list of watchlists registered under the account. - * @returns Watchlist Successful response - * @throws ApiError - */ - public getWatchlists(): CancelablePromise> { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/watchlists', - }); - } + /** + * Watchlist + * Create a new watchlist with initial set of assets. + * @returns Watchlist Successful response + * @throws ApiError + */ + public postWatchlist({ + requestBody, + }: { + requestBody: UpdateWatchlistRequest; + }): CancelablePromise { + return this.httpRequest.request({ + method: "POST", + url: "/v2/watchlists", + body: requestBody, + mediaType: "application/json", + }); + } + /** + * Get Watchlist by ID + * Returns a watchlist identified by the ID. + * @returns Watchlist Successful response + * @throws ApiError + */ + public getWatchlistById({ + watchlistId, + }: { /** - * Watchlist - * Create a new watchlist with initial set of assets. - * @returns Watchlist Successful response - * @throws ApiError + * watchlist id */ - public postWatchlist({ - requestBody, - }: { - requestBody: UpdateWatchlistRequest, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'POST', - url: '/v2/watchlists', - body: requestBody, - mediaType: 'application/json', - }); - } + watchlistId: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/watchlists/{watchlist_id}", + path: { + watchlist_id: watchlistId, + }, + }); + } + /** + * Update Watchlist By Id + * Update the name and/or content of watchlist + * @returns Watchlist Successful response + * @throws ApiError + */ + public updateWatchlistById({ + watchlistId, + requestBody, + }: { /** - * Get Watchlist by ID - * Returns a watchlist identified by the ID. - * @returns Watchlist Successful response - * @throws ApiError + * watchlist id */ - public getWatchlistById({ - watchlistId, - }: { - /** - * watchlist id - */ - watchlistId: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/watchlists/{watchlist_id}', - path: { - 'watchlist_id': watchlistId, - }, - }); - } + watchlistId: string; + requestBody?: UpdateWatchlistRequest; + }): CancelablePromise { + return this.httpRequest.request({ + method: "PUT", + url: "/v2/watchlists/{watchlist_id}", + path: { + watchlist_id: watchlistId, + }, + body: requestBody, + mediaType: "application/json", + }); + } + /** + * Add Asset to Watchlist + * Append an asset for the symbol to the end of watchlist asset list + * @returns Watchlist Successful response + * @throws ApiError + */ + public addAssetToWatchlist({ + watchlistId, + requestBody, + }: { /** - * Update Watchlist By Id - * Update the name and/or content of watchlist - * @returns Watchlist Successful response - * @throws ApiError + * watchlist id */ - public updateWatchlistById({ - watchlistId, - requestBody, - }: { - /** - * watchlist id - */ - watchlistId: string, - requestBody?: UpdateWatchlistRequest, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'PUT', - url: '/v2/watchlists/{watchlist_id}', - path: { - 'watchlist_id': watchlistId, - }, - body: requestBody, - mediaType: 'application/json', - }); - } + watchlistId: string; + requestBody?: { + /** + * the symbol name to add to the watchlist + */ + symbol?: string; + }; + }): CancelablePromise { + return this.httpRequest.request({ + method: "POST", + url: "/v2/watchlists/{watchlist_id}", + path: { + watchlist_id: watchlistId, + }, + body: requestBody, + mediaType: "application/json", + }); + } + /** + * Delete Watchlist By Id + * Delete a watchlist. This is a permanent deletion. + * @returns void + * @throws ApiError + */ + public deleteWatchlistById({ + watchlistId, + }: { /** - * Add Asset to Watchlist - * Append an asset for the symbol to the end of watchlist asset list - * @returns Watchlist Successful response - * @throws ApiError + * watchlist id */ - public addAssetToWatchlist({ - watchlistId, - requestBody, - }: { - /** - * watchlist id - */ - watchlistId: string, - requestBody?: { - /** - * the symbol name to add to the watchlist - */ - symbol?: string; - }, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'POST', - url: '/v2/watchlists/{watchlist_id}', - path: { - 'watchlist_id': watchlistId, - }, - body: requestBody, - mediaType: 'application/json', - }); - } + watchlistId: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "DELETE", + url: "/v2/watchlists/{watchlist_id}", + path: { + watchlist_id: watchlistId, + }, + errors: { + 404: `Watchlist not found`, + }, + }); + } + /** + * Get Watchlist by Name + * You can also call GET, PUT, POST and DELETE with watchlist name with another endpoint /v2/watchlists:by_name and query parameter name=, instead of /v2/watchlists/{watchlist_id} endpoints + * + * Returns a watchlist by name + * @returns Watchlist Successful response + * @throws ApiError + */ + public getWatchlistByName({ + name, + }: { /** - * Delete Watchlist By Id - * Delete a watchlist. This is a permanent deletion. - * @returns void - * @throws ApiError + * name of the watchlist */ - public deleteWatchlistById({ - watchlistId, - }: { - /** - * watchlist id - */ - watchlistId: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'DELETE', - url: '/v2/watchlists/{watchlist_id}', - path: { - 'watchlist_id': watchlistId, - }, - errors: { - 404: `Watchlist not found`, - }, - }); - } + name: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/watchlists:by_name", + query: { + name: name, + }, + }); + } + /** + * Update Watchlist By Name + * Update the name and/or content of watchlist + * @returns Watchlist Successful response + * @throws ApiError + */ + public updateWatchlistByName({ + name, + requestBody, + }: { /** - * Get Watchlist by Name - * You can also call GET, PUT, POST and DELETE with watchlist name with another endpoint /v2/watchlists:by_name and query parameter name=, instead of /v2/watchlists/{watchlist_id} endpoints - * - * Returns a watchlist by name - * @returns Watchlist Successful response - * @throws ApiError + * name of the watchlist */ - public getWatchlistByName({ - name, - }: { - /** - * name of the watchlist - */ - name: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'GET', - url: '/v2/watchlists:by_name', - query: { - 'name': name, - }, - }); - } + name: string; + requestBody?: UpdateWatchlistRequest; + }): CancelablePromise { + return this.httpRequest.request({ + method: "PUT", + url: "/v2/watchlists:by_name", + query: { + name: name, + }, + body: requestBody, + mediaType: "application/json", + }); + } + /** + * Add Asset to Watchlist By Name + * Append an asset for the symbol to the end of watchlist asset list + * @returns Watchlist Successful response + * @throws ApiError + */ + public addAssetToWatchlistByName({ + name, + requestBody, + }: { /** - * Update Watchlist By Name - * Update the name and/or content of watchlist - * @returns Watchlist Successful response - * @throws ApiError + * name of the watchlist */ - public updateWatchlistByName({ - name, - requestBody, - }: { - /** - * name of the watchlist - */ - name: string, - requestBody?: UpdateWatchlistRequest, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'PUT', - url: '/v2/watchlists:by_name', - query: { - 'name': name, - }, - body: requestBody, - mediaType: 'application/json', - }); - } + name: string; + requestBody?: { + /** + * the symbol name to add to the watchlist + */ + symbol?: string; + }; + }): CancelablePromise { + return this.httpRequest.request({ + method: "POST", + url: "/v2/watchlists:by_name", + query: { + name: name, + }, + body: requestBody, + mediaType: "application/json", + }); + } + /** + * Delete Watchlist By Name + * Delete a watchlist. This is a permanent deletion. + * @returns void + * @throws ApiError + */ + public deleteWatchlistByName({ + name, + }: { /** - * Add Asset to Watchlist By Name - * Append an asset for the symbol to the end of watchlist asset list - * @returns Watchlist Successful response - * @throws ApiError + * name of the watchlist */ - public addAssetToWatchlistByName({ - name, - requestBody, - }: { - /** - * name of the watchlist - */ - name: string, - requestBody?: { - /** - * the symbol name to add to the watchlist - */ - symbol?: string; - }, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'POST', - url: '/v2/watchlists:by_name', - query: { - 'name': name, - }, - body: requestBody, - mediaType: 'application/json', - }); - } + name: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "DELETE", + url: "/v2/watchlists:by_name", + query: { + name: name, + }, + }); + } + /** + * Symbol from Watchlist + * Delete one entry for an asset by symbol name + * @returns Watchlist Returns the updated watchlist + * @throws ApiError + */ + public removeAssetFromWatchlist({ + watchlistId, + symbol, + }: { /** - * Delete Watchlist By Name - * Delete a watchlist. This is a permanent deletion. - * @returns void - * @throws ApiError + * Watchlist ID */ - public deleteWatchlistByName({ - name, - }: { - /** - * name of the watchlist - */ - name: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'DELETE', - url: '/v2/watchlists:by_name', - query: { - 'name': name, - }, - }); - } - + watchlistId: string; /** - * Symbol from Watchlist - * Delete one entry for an asset by symbol name - * @returns Watchlist Returns the updated watchlist - * @throws ApiError + * symbol name to remove from the watchlist content */ - public removeAssetFromWatchlist({ - watchlistId, - symbol, - }: { - /** - * Watchlist ID - */ - watchlistId: string, - /** - * symbol name to remove from the watchlist content - */ - symbol: string, - }): CancelablePromise { - return this.httpRequest.request({ - method: 'DELETE', - url: '/v2/watchlists/{watchlist_id}/{symbol}', - path: { - 'watchlist_id': watchlistId, - 'symbol': symbol, - }, - }); - } - + symbol: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "DELETE", + url: "/v2/watchlists/{watchlist_id}/{symbol}", + path: { + watchlist_id: watchlistId, + symbol: symbol, + }, + }); + } } diff --git a/src/stuff.ts b/src/stuff.ts index e7a0954..6172201 100644 --- a/src/stuff.ts +++ b/src/stuff.ts @@ -27,4 +27,4 @@ export const endpoints: Endpoints = { data: (source: DataSource = "iex") => `wss://stream.data.alpaca.markets/v2/${source}`, }, -}; \ No newline at end of file +}; From 3e6cf97359095149c0592198a941cbc6f2a6ce9d Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 10:57:36 -0600 Subject: [PATCH 20/55] no commit message --- addPathExtensions.js | 49 +++++ package.json | 11 +- src/OpenAPIClient.ts | 46 ++--- src/core/ApiError.ts | 4 +- src/core/AxiosHttpRequest.ts | 10 +- src/core/BaseHttpRequest.ts | 6 +- src/core/OpenAPI.ts | 2 +- src/core/request.ts | 21 +-- src/index.ts | 172 +++++++++--------- src/models/Account.ts | 2 +- src/models/Assets.ts | 4 +- src/models/BarsResponse.ts | 2 +- src/models/GetNewsResponse.ts | 2 +- src/models/LatestBarResponse.ts | 2 +- src/models/LatestMultiBarsResponse.ts | 2 +- src/models/LatestMultiQuotesResponse.ts | 2 +- src/models/LatestMultiTradesResponse.ts | 2 +- src/models/LatestMultiXBBOResponse.ts | 2 +- src/models/LatestQuoteResponse.ts | 2 +- src/models/LatestTradeResponse.ts | 2 +- src/models/LatestXBBOResponse.ts | 2 +- src/models/MarketMoversResponse.ts | 2 +- src/models/MultiBarsResponse.ts | 2 +- src/models/MultiQuotesReponse.ts | 2 +- src/models/MultiSnapshotResponse.ts | 2 +- src/models/MultiTradesResponse.ts | 2 +- src/models/News.ts | 2 +- src/models/NonTradeActivities.ts | 2 +- src/models/Order.ts | 12 +- src/models/PatchOrderRequest.ts | 2 +- src/models/Position.ts | 4 +- src/models/PositionClosedReponse.ts | 2 +- src/models/QuotesResponse.ts | 2 +- src/models/Snapshot.ts | 6 +- src/models/TradesResponse.ts | 2 +- src/models/TradingActivities.ts | 4 +- src/models/Watchlist.ts | 2 +- src/services/AccountActivitiesService.ts | 8 +- src/services/AccountConfigurationsService.ts | 6 +- src/services/AccountService.ts | 6 +- src/services/AssetsService.ts | 6 +- src/services/CalendarService.ts | 6 +- src/services/ClockService.ts | 6 +- ...DataApiService.ts => CryptoDataService.ts} | 42 ++--- src/services/LogoService.ts | 4 +- src/services/NewsService.ts | 6 +- src/services/OrdersService.ts | 10 +- src/services/PortfolioHistoryService.ts | 6 +- src/services/PositionsService.ts | 10 +- src/services/ScreenerService.ts | 6 +- ...gDataApiService.ts => StockDataService.ts} | 38 ++-- src/services/WatchlistsService.ts | 8 +- src/stuff.ts | 30 --- tsconfig.json | 5 +- 54 files changed, 306 insertions(+), 294 deletions(-) create mode 100644 addPathExtensions.js rename src/services/{CryptoPricingDataApiService.ts => CryptoDataService.ts} (97%) rename src/services/{StockPricingDataApiService.ts => StockDataService.ts} (97%) delete mode 100644 src/stuff.ts diff --git a/addPathExtensions.js b/addPathExtensions.js new file mode 100644 index 0000000..97e8ee7 --- /dev/null +++ b/addPathExtensions.js @@ -0,0 +1,49 @@ +import fs from "fs"; +import glob from "glob"; + +// Directory where the files are located +const directoryPath = "./src"; + +console.log(`Looking for .ts files in: ${directoryPath}`); + +// Use glob to find all .ts files in the directory +glob(`${directoryPath}/**/*.ts`, {}, (err, files) => { + if (err) { + console.error(err); + process.exit(1); + } + + console.log(`Found ${files.length} files.`); + + // Loop through each file + files.forEach((filePath) => { + // Read the file + fs.readFile(filePath, "utf8", (err, data) => { + if (err) { + console.error(err); + process.exit(1); + } + + // Use a regular expression to replace import/export statements without .js with .js + const updatedData = data.replace( + /(from\s+['"])([^'"]+)(['"])/g, + (match, prePath, importPath, postPath) => { + if (!importPath.startsWith(".") || importPath.endsWith(".js")) { + return match; // skip if it's not a relative path or it already ends with .js + } + return `${prePath}${importPath}.js${postPath}`; + } + ); + + // Write the updated content back to the file + fs.writeFile(filePath, updatedData, "utf8", (err) => { + if (err) { + console.error(err); + process.exit(1); + } + + console.log(`Updated: ${filePath}`); + }); + }); + }); +}); \ No newline at end of file diff --git a/package.json b/package.json index e238c7c..70253bb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.2-alpha", + "version": "7.0.3-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ @@ -30,16 +30,15 @@ "stock" ], "type": "module", - "types": "./@types/index.d.ts", - "typings": "./@types/index.d.ts", + "types": "./dist/index.d.ts", + "typings": "./dist/index.d.ts", "main": "./dist/index.js", "engines": { "node": ">=14" }, "files": [ "src/", - "dist/", - "@types/" + "dist/" ], "repository": { "type": "git", @@ -75,4 +74,4 @@ "typescript": "^4.4.3", "vite": "^4.4.7" } -} +} \ No newline at end of file diff --git a/src/OpenAPIClient.ts b/src/OpenAPIClient.ts index 0734b20..a3dc688 100644 --- a/src/OpenAPIClient.ts +++ b/src/OpenAPIClient.ts @@ -1,22 +1,22 @@ -import type { BaseHttpRequest } from "./core/BaseHttpRequest"; -import type { OpenAPIConfig } from "./core/OpenAPI"; +import type { BaseHttpRequest } from "./core/BaseHttpRequest.js"; +import type { OpenAPIConfig } from "./core/OpenAPI.js"; -import { AxiosHttpRequest } from "./core/AxiosHttpRequest"; -import { AccountActivitiesService } from "./services/AccountActivitiesService"; -import { AccountConfigurationsService } from "./services/AccountConfigurationsService"; -import { AccountService } from "./services/AccountService"; -import { CalendarService } from "./services/CalendarService"; -import { ClockService } from "./services/ClockService"; -import { AssetsService } from "./services/AssetsService"; -import { OrdersService } from "./services/OrdersService"; -import { PortfolioHistoryService } from "./services/PortfolioHistoryService"; -import { PositionsService } from "./services/PositionsService"; -import { WatchlistsService } from "./services/WatchlistsService"; -import { CryptoPricingDataApiService } from "./services/CryptoPricingDataApiService"; -import { LogoService } from "./services/LogoService"; -import { NewsService } from "./services/NewsService"; -import { ScreenerService } from "./services/ScreenerService"; -import { StockPricingDataApiService } from "./services/StockPricingDataApiService"; +import { AxiosHttpRequest } from "./core/AxiosHttpRequest.js"; +import { AccountActivitiesService } from "./services/AccountActivitiesService.js"; +import { AccountConfigurationsService } from "./services/AccountConfigurationsService.js"; +import { AccountService } from "./services/AccountService.js"; +import { CalendarService } from "./services/CalendarService.js"; +import { ClockService } from "./services/ClockService.js"; +import { AssetsService } from "./services/AssetsService.js"; +import { OrdersService } from "./services/OrdersService.js"; +import { PortfolioHistoryService } from "./services/PortfolioHistoryService.js"; +import { PositionsService } from "./services/PositionsService.js"; +import { WatchlistsService } from "./services/WatchlistsService.js"; +import { CryptoDataService } from "./services/CryptoDataService.js"; +import { LogoService } from "./services/LogoService.js"; +import { NewsService } from "./services/NewsService.js"; +import { ScreenerService } from "./services/ScreenerService.js"; +import { StockDataService } from "./services/StockDataService.js"; type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest; @@ -24,11 +24,11 @@ export class OpenAPIClient { public readonly calendar: CalendarService; public readonly clock: ClockService; public readonly assets: AssetsService; - public readonly crypto: CryptoPricingDataApiService; + public readonly crypto: CryptoDataService; public readonly logo: LogoService; public readonly news: NewsService; public readonly screener: ScreenerService; - public readonly stocks: StockPricingDataApiService; + public readonly stocks: StockDataService; public readonly watchlists: WatchlistsService; public readonly request: BaseHttpRequest; public readonly account: { @@ -67,10 +67,10 @@ export class OpenAPIClient { this.calendar = new CalendarService(this.request); this.clock = new ClockService(this.request); this.assets = new AssetsService(this.request); - this.crypto = new CryptoPricingDataApiService(this.request); + this.crypto = new CryptoDataService(this.request); this.logo = new LogoService(this.request); this.news = new NewsService(this.request); this.screener = new ScreenerService(this.request); - this.stocks = new StockPricingDataApiService(this.request); + this.stocks = new StockDataService(this.request); } -} +} \ No newline at end of file diff --git a/src/core/ApiError.ts b/src/core/ApiError.ts index d9769d2..285dce8 100644 --- a/src/core/ApiError.ts +++ b/src/core/ApiError.ts @@ -2,8 +2,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ApiRequestOptions } from "./ApiRequestOptions"; -import type { ApiResult } from "./ApiResult"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import type { ApiResult } from "./ApiResult.js"; export class ApiError extends Error { public readonly url: string; diff --git a/src/core/AxiosHttpRequest.ts b/src/core/AxiosHttpRequest.ts index f2bc926..3c01a75 100644 --- a/src/core/AxiosHttpRequest.ts +++ b/src/core/AxiosHttpRequest.ts @@ -2,11 +2,11 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ApiRequestOptions } from "./ApiRequestOptions"; -import { BaseHttpRequest } from "./BaseHttpRequest"; -import type { CancelablePromise } from "./CancelablePromise"; -import type { OpenAPIConfig } from "./OpenAPI"; -import { request as __request } from "./request"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import { BaseHttpRequest } from "./BaseHttpRequest.js"; +import type { CancelablePromise } from "./CancelablePromise.js"; +import type { OpenAPIConfig } from "./OpenAPI.js"; +import { request as __request } from "./request.js"; export class AxiosHttpRequest extends BaseHttpRequest { constructor(config: OpenAPIConfig) { diff --git a/src/core/BaseHttpRequest.ts b/src/core/BaseHttpRequest.ts index f078115..3feabb2 100644 --- a/src/core/BaseHttpRequest.ts +++ b/src/core/BaseHttpRequest.ts @@ -2,9 +2,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ApiRequestOptions } from "./ApiRequestOptions"; -import type { CancelablePromise } from "./CancelablePromise"; -import type { OpenAPIConfig } from "./OpenAPI"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import type { CancelablePromise } from "./CancelablePromise.js"; +import type { OpenAPIConfig } from "./OpenAPI.js"; export abstract class BaseHttpRequest { constructor(public readonly config: OpenAPIConfig) {} diff --git a/src/core/OpenAPI.ts b/src/core/OpenAPI.ts index 392513f..fa914f8 100644 --- a/src/core/OpenAPI.ts +++ b/src/core/OpenAPI.ts @@ -2,7 +2,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ApiRequestOptions } from "./ApiRequestOptions"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; type Resolver = (options: ApiRequestOptions) => Promise; type Headers = Record; diff --git a/src/core/request.ts b/src/core/request.ts index 72c0a18..a394511 100644 --- a/src/core/request.ts +++ b/src/core/request.ts @@ -11,12 +11,12 @@ import type { } from "axios"; import FormData from "form-data"; -import { ApiError } from "./ApiError"; -import type { ApiRequestOptions } from "./ApiRequestOptions"; -import type { ApiResult } from "./ApiResult"; -import { CancelablePromise } from "./CancelablePromise"; -import type { OnCancel } from "./CancelablePromise"; -import type { OpenAPIConfig } from "./OpenAPI"; +import { ApiError } from "./ApiError.js"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import type { ApiResult } from "./ApiResult.js"; +import { CancelablePromise } from "./CancelablePromise.js"; +import type { OnCancel } from "./CancelablePromise.js"; +import type { OpenAPIConfig } from "./OpenAPI.js"; export const isDefined = ( value: T | null | undefined @@ -162,8 +162,6 @@ export const getHeaders = async ( formData?: FormData ): Promise> => { const token = await resolve(options, config.TOKEN); - const username = await resolve(options, config.USERNAME); - const password = await resolve(options, config.PASSWORD); const additionalHeaders = await resolve(options, config.HEADERS); const formHeaders = (typeof formData?.getHeaders === "function" && formData?.getHeaders()) || @@ -188,11 +186,6 @@ export const getHeaders = async ( headers["Authorization"] = `Bearer ${token}`; } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers["Authorization"] = `Basic ${credentials}`; - } - if (options.body) { if (options.mediaType) { headers["Content-Type"] = options.mediaType; @@ -361,4 +354,4 @@ export const request = ( reject(error); } }); -}; +}; \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 1c94f41..712e91c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,94 +2,94 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -export { OpenAPIClient } from "./OpenAPIClient"; +export { OpenAPIClient } from "./OpenAPIClient.js"; -export { ApiError } from "./core/ApiError"; -export { BaseHttpRequest } from "./core/BaseHttpRequest"; -export { CancelablePromise, CancelError } from "./core/CancelablePromise"; -export { OpenAPI } from "./core/OpenAPI"; -export type { OpenAPIConfig } from "./core/OpenAPI"; +export { ApiError } from "./core/ApiError.js"; +export { BaseHttpRequest } from "./core/BaseHttpRequest.js"; +export { CancelablePromise, CancelError } from "./core/CancelablePromise.js"; +export { OpenAPI } from "./core/OpenAPI.js"; +export type { OpenAPIConfig } from "./core/OpenAPI.js"; -export type { Account } from "./models/Account"; -export { AccountConfigurations } from "./models/AccountConfigurations"; -export { AccountStatus } from "./models/AccountStatus"; -export { ActivityType } from "./models/ActivityType"; -export type { AddAssetToWatchlistRequest } from "./models/AddAssetToWatchlistRequest"; -export { AssetClass } from "./models/AssetClass"; -export { Assets } from "./models/Assets"; -export type { Calendar } from "./models/Calendar"; -export type { CanceledOrderResponse } from "./models/CanceledOrderResponse"; -export type { Clock } from "./models/Clock"; -export { Exchange } from "./models/Exchange"; -export type { NonTradeActivities } from "./models/NonTradeActivities"; -export type { Order } from "./models/Order"; -export { OrderClass } from "./models/OrderClass"; -export { OrderSide } from "./models/OrderSide"; -export { OrderStatus } from "./models/OrderStatus"; -export { OrderType } from "./models/OrderType"; -export type { PatchOrderRequest } from "./models/PatchOrderRequest"; -export type { PortfolioHistory } from "./models/PortfolioHistory"; -export type { Position } from "./models/Position"; -export type { PositionClosedReponse } from "./models/PositionClosedReponse"; -export { TimeInForce } from "./models/TimeInForce"; -export { TradingActivities } from "./models/TradingActivities"; -export type { UpdateWatchlistRequest } from "./models/UpdateWatchlistRequest"; -export type { Watchlist } from "./models/Watchlist"; +export type { Account } from "./models/Account.js"; +export { AccountConfigurations } from "./models/AccountConfigurations.js"; +export { AccountStatus } from "./models/AccountStatus.js"; +export { ActivityType } from "./models/ActivityType.js"; +export type { AddAssetToWatchlistRequest } from "./models/AddAssetToWatchlistRequest.js"; +export { AssetClass } from "./models/AssetClass.js"; +export { Assets } from "./models/Assets.js"; +export type { Calendar } from "./models/Calendar.js"; +export type { CanceledOrderResponse } from "./models/CanceledOrderResponse.js"; +export type { Clock } from "./models/Clock.js"; +export { Exchange } from "./models/Exchange.js"; +export type { NonTradeActivities } from "./models/NonTradeActivities.js"; +export type { Order } from "./models/Order.js"; +export { OrderClass } from "./models/OrderClass.js"; +export { OrderSide } from "./models/OrderSide.js"; +export { OrderStatus } from "./models/OrderStatus.js"; +export { OrderType } from "./models/OrderType.js"; +export type { PatchOrderRequest } from "./models/PatchOrderRequest.js"; +export type { PortfolioHistory } from "./models/PortfolioHistory.js"; +export type { Position } from "./models/Position.js"; +export type { PositionClosedReponse } from "./models/PositionClosedReponse.js"; +export { TimeInForce } from "./models/TimeInForce.js"; +export { TradingActivities } from "./models/TradingActivities.js"; +export type { UpdateWatchlistRequest } from "./models/UpdateWatchlistRequest.js"; +export type { Watchlist } from "./models/Watchlist.js"; -export { AccountActivitiesService } from "./services/AccountActivitiesService"; -export { AccountConfigurationsService } from "./services/AccountConfigurationsService"; -export { AccountService } from "./services/AccountService"; -export { CalendarService } from "./services/CalendarService"; -export { ClockService } from "./services/ClockService"; -export { AssetsService } from "./services/AssetsService"; -export { OrdersService } from "./services/OrdersService"; -export { PortfolioHistoryService } from "./services/PortfolioHistoryService"; -export { PositionsService } from "./services/PositionsService"; -export { WatchlistsService } from "./services/WatchlistsService"; +export { AccountActivitiesService } from "./services/AccountActivitiesService.js"; +export { AccountConfigurationsService } from "./services/AccountConfigurationsService.js"; +export { AccountService } from "./services/AccountService.js"; +export { CalendarService } from "./services/CalendarService.js"; +export { ClockService } from "./services/ClockService.js"; +export { AssetsService } from "./services/AssetsService.js"; +export { OrdersService } from "./services/OrdersService.js"; +export { PortfolioHistoryService } from "./services/PortfolioHistoryService.js"; +export { PositionsService } from "./services/PositionsService.js"; +export { WatchlistsService } from "./services/WatchlistsService.js"; -export { adjustment } from "./models/adjustment"; -export { Bar } from "./models/Bar"; -export type { BarsResponse } from "./models/BarsResponse"; -export { crypto_exchange } from "./models/crypto_exchange"; -export type { crypto_exchanges } from "./models/crypto_exchanges"; -export type { crypto_symbol } from "./models/crypto_symbol"; -export type { crypto_symbols } from "./models/crypto_symbols"; -export type { CryptoSpreadsResponse } from "./models/CryptoSpreadsResponse"; -export type { end } from "./models/end"; -export type { ExchangesResponse } from "./models/ExchangesResponse"; -export { feed } from "./models/feed"; -export type { GetNewsResponse } from "./models/GetNewsResponse"; -export type { LatestBarResponse } from "./models/LatestBarResponse"; -export type { LatestMultiBarsResponse } from "./models/LatestMultiBarsResponse"; -export type { LatestMultiQuotesResponse } from "./models/LatestMultiQuotesResponse"; -export type { LatestMultiTradesResponse } from "./models/LatestMultiTradesResponse"; -export type { LatestMultiXBBOResponse } from "./models/LatestMultiXBBOResponse"; -export type { LatestQuoteResponse } from "./models/LatestQuoteResponse"; -export type { LatestTradeResponse } from "./models/LatestTradeResponse"; -export type { LatestXBBOResponse } from "./models/LatestXBBOResponse"; -export type { limit } from "./models/limit"; -export type { MarketMoverAsset } from "./models/MarketMoverAsset"; -export { MarketMoversResponse } from "./models/MarketMoversResponse"; -export type { MultiBarsResponse } from "./models/MultiBarsResponse"; -export type { MultiQuotesReponse } from "./models/MultiQuotesReponse"; -export type { MultiSnapshotResponse } from "./models/MultiSnapshotResponse"; -export type { MultiTradesResponse } from "./models/MultiTradesResponse"; -export type { News } from "./models/News"; -export { NewsImage } from "./models/NewsImage"; -export type { page_token } from "./models/page_token"; -export type { Quote } from "./models/Quote"; -export type { QuotesResponse } from "./models/QuotesResponse"; -export type { Snapshot } from "./models/Snapshot"; -export type { start } from "./models/start"; -export type { stock_symbol } from "./models/stock_symbol"; -export type { stock_symbols } from "./models/stock_symbols"; -export type { timeframe } from "./models/timeframe"; -export type { Trade } from "./models/Trade"; -export type { TradesResponse } from "./models/TradesResponse"; -export type { XBBO } from "./models/XBBO"; +export { adjustment } from "./models/adjustment.js"; +export { Bar } from "./models/Bar.js"; +export type { BarsResponse } from "./models/BarsResponse.js"; +export { crypto_exchange } from "./models/crypto_exchange.js"; +export type { crypto_exchanges } from "./models/crypto_exchanges.js"; +export type { crypto_symbol } from "./models/crypto_symbol.js"; +export type { crypto_symbols } from "./models/crypto_symbols.js"; +export type { CryptoSpreadsResponse } from "./models/CryptoSpreadsResponse.js"; +export type { end } from "./models/end.js"; +export type { ExchangesResponse } from "./models/ExchangesResponse.js"; +export { feed } from "./models/feed.js"; +export type { GetNewsResponse } from "./models/GetNewsResponse.js"; +export type { LatestBarResponse } from "./models/LatestBarResponse.js"; +export type { LatestMultiBarsResponse } from "./models/LatestMultiBarsResponse.js"; +export type { LatestMultiQuotesResponse } from "./models/LatestMultiQuotesResponse.js"; +export type { LatestMultiTradesResponse } from "./models/LatestMultiTradesResponse.js"; +export type { LatestMultiXBBOResponse } from "./models/LatestMultiXBBOResponse.js"; +export type { LatestQuoteResponse } from "./models/LatestQuoteResponse.js"; +export type { LatestTradeResponse } from "./models/LatestTradeResponse.js"; +export type { LatestXBBOResponse } from "./models/LatestXBBOResponse.js"; +export type { limit } from "./models/limit.js"; +export type { MarketMoverAsset } from "./models/MarketMoverAsset.js"; +export { MarketMoversResponse } from "./models/MarketMoversResponse.js"; +export type { MultiBarsResponse } from "./models/MultiBarsResponse.js"; +export type { MultiQuotesReponse } from "./models/MultiQuotesReponse.js"; +export type { MultiSnapshotResponse } from "./models/MultiSnapshotResponse.js"; +export type { MultiTradesResponse } from "./models/MultiTradesResponse.js"; +export type { News } from "./models/News.js"; +export { NewsImage } from "./models/NewsImage.js"; +export type { page_token } from "./models/page_token.js"; +export type { Quote } from "./models/Quote.js"; +export type { QuotesResponse } from "./models/QuotesResponse.js"; +export type { Snapshot } from "./models/Snapshot.js"; +export type { start } from "./models/start.js"; +export type { stock_symbol } from "./models/stock_symbol.js"; +export type { stock_symbols } from "./models/stock_symbols.js"; +export type { timeframe } from "./models/timeframe.js"; +export type { Trade } from "./models/Trade.js"; +export type { TradesResponse } from "./models/TradesResponse.js"; +export type { XBBO } from "./models/XBBO.js"; -export { CryptoPricingDataApiService } from "./services/CryptoPricingDataApiService"; -export { LogoService } from "./services/LogoService"; -export { NewsService } from "./services/NewsService"; -export { ScreenerService } from "./services/ScreenerService"; -export { StockPricingDataApiService } from "./services/StockPricingDataApiService"; +export { CryptoDataService } from "./services/CryptoDataService.js"; +export { LogoService } from "./services/LogoService.js"; +export { NewsService } from "./services/NewsService.js"; +export { ScreenerService } from "./services/ScreenerService.js"; +export { StockDataService } from "./services/StockDataService.js"; \ No newline at end of file diff --git a/src/models/Account.ts b/src/models/Account.ts index 5932cd9..8ef5423 100644 --- a/src/models/Account.ts +++ b/src/models/Account.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { AccountStatus } from "./AccountStatus"; +import type { AccountStatus } from "./AccountStatus.js"; /** * The account API serves important information related to an account, including account status, funds available for trade, funds available for withdrawal, and various flags relevant to an account’s ability to trade. An account maybe be blocked for just for trades (trades_blocked flag) or for both trades and transfers (account_blocked flag) if Alpaca identifies the account to engaging in any suspicious activity. Also, in accordance with FINRA’s pattern day trading rule, an account may be flagged for pattern day trading (pattern_day_trader flag), which would inhibit an account from placing any further day-trades. Please note that cryptocurrencies are not eligible assets to be used as collateral for margin accounts and will require the asset be traded using cash only. diff --git a/src/models/Assets.ts b/src/models/Assets.ts index 49eac4e..c805094 100644 --- a/src/models/Assets.ts +++ b/src/models/Assets.ts @@ -3,8 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { AssetClass } from "./AssetClass"; -import type { Exchange } from "./Exchange"; +import type { AssetClass } from "./AssetClass.js"; +import type { Exchange } from "./Exchange.js"; /** * The assets API serves as the master list of assets available for trade and data consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. Some assets are only available for data consumption via Polygon, and are not tradable with Alpaca. These assets will be marked with the flag tradable=false. diff --git a/src/models/BarsResponse.ts b/src/models/BarsResponse.ts index 129ae72..ffa38e4 100644 --- a/src/models/BarsResponse.ts +++ b/src/models/BarsResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from "./Bar"; +import type { Bar } from "./Bar.js"; export type BarsResponse = { /** diff --git a/src/models/GetNewsResponse.ts b/src/models/GetNewsResponse.ts index da51e1e..2eda66e 100644 --- a/src/models/GetNewsResponse.ts +++ b/src/models/GetNewsResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { News } from "./News"; +import type { News } from "./News.js"; export type GetNewsResponse = { news?: Array; diff --git a/src/models/LatestBarResponse.ts b/src/models/LatestBarResponse.ts index 635cf20..8683ce2 100644 --- a/src/models/LatestBarResponse.ts +++ b/src/models/LatestBarResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from "./Bar"; +import type { Bar } from "./Bar.js"; /** * A model representing the result of hitting one of the Latest Bar api endpoints. diff --git a/src/models/LatestMultiBarsResponse.ts b/src/models/LatestMultiBarsResponse.ts index 51df092..8e90505 100644 --- a/src/models/LatestMultiBarsResponse.ts +++ b/src/models/LatestMultiBarsResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from "./Bar"; +import type { Bar } from "./Bar.js"; /** * A model representing the result of hitting the Latest Multi Bars api; represents the latest Bars for multiple symbols. diff --git a/src/models/LatestMultiQuotesResponse.ts b/src/models/LatestMultiQuotesResponse.ts index 664de3d..c00f1f0 100644 --- a/src/models/LatestMultiQuotesResponse.ts +++ b/src/models/LatestMultiQuotesResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Quote } from "./Quote"; +import type { Quote } from "./Quote.js"; export type LatestMultiQuotesResponse = { quotes: Record; diff --git a/src/models/LatestMultiTradesResponse.ts b/src/models/LatestMultiTradesResponse.ts index 884a9ad..650fa7a 100644 --- a/src/models/LatestMultiTradesResponse.ts +++ b/src/models/LatestMultiTradesResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Trade } from "./Trade"; +import type { Trade } from "./Trade.js"; export type LatestMultiTradesResponse = { trades: Record; diff --git a/src/models/LatestMultiXBBOResponse.ts b/src/models/LatestMultiXBBOResponse.ts index 5867da6..c617152 100644 --- a/src/models/LatestMultiXBBOResponse.ts +++ b/src/models/LatestMultiXBBOResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { XBBO } from "./XBBO"; +import type { XBBO } from "./XBBO.js"; export type LatestMultiXBBOResponse = { xbbos: Record; diff --git a/src/models/LatestQuoteResponse.ts b/src/models/LatestQuoteResponse.ts index b50a7bc..e71323e 100644 --- a/src/models/LatestQuoteResponse.ts +++ b/src/models/LatestQuoteResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Quote } from "./Quote"; +import type { Quote } from "./Quote.js"; /** * A model representing the result of hitting the Latest Quote api. diff --git a/src/models/LatestTradeResponse.ts b/src/models/LatestTradeResponse.ts index e71cdf7..34c38a2 100644 --- a/src/models/LatestTradeResponse.ts +++ b/src/models/LatestTradeResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Trade } from "./Trade"; +import type { Trade } from "./Trade.js"; /** * A model representing the result of hitting the Latest Trade api. diff --git a/src/models/LatestXBBOResponse.ts b/src/models/LatestXBBOResponse.ts index c0948f3..3421c3b 100644 --- a/src/models/LatestXBBOResponse.ts +++ b/src/models/LatestXBBOResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { XBBO } from "./XBBO"; +import type { XBBO } from "./XBBO.js"; /** * Represents the Latest XBBO for a crypto symbol that calculates the Best Bid and Offer across multiple exchanges. diff --git a/src/models/MarketMoversResponse.ts b/src/models/MarketMoversResponse.ts index 565f01f..cabd129 100644 --- a/src/models/MarketMoversResponse.ts +++ b/src/models/MarketMoversResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { MarketMoverAsset } from "./MarketMoverAsset"; +import type { MarketMoverAsset } from "./MarketMoverAsset.js"; /** * Contains list of market movers diff --git a/src/models/MultiBarsResponse.ts b/src/models/MultiBarsResponse.ts index 3904917..1a89ddd 100644 --- a/src/models/MultiBarsResponse.ts +++ b/src/models/MultiBarsResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from "./Bar"; +import type { Bar } from "./Bar.js"; /** * A model representing the result of hitting the Multi Bars api; represents multiple Bars for multiple symbols. diff --git a/src/models/MultiQuotesReponse.ts b/src/models/MultiQuotesReponse.ts index 25a27c0..1d6252c 100644 --- a/src/models/MultiQuotesReponse.ts +++ b/src/models/MultiQuotesReponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Quote } from "./Quote"; +import type { Quote } from "./Quote.js"; /** * A model representing the result of hitting the Multi Quotes api; represents multiple Quotes for multiple symbols. diff --git a/src/models/MultiSnapshotResponse.ts b/src/models/MultiSnapshotResponse.ts index daa4d5f..48b5f0e 100644 --- a/src/models/MultiSnapshotResponse.ts +++ b/src/models/MultiSnapshotResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Snapshot } from "./Snapshot"; +import type { Snapshot } from "./Snapshot.js"; /** * A model representing the result of hitting the Multi Snapshots api; represents Snapshots for multiple symbols. diff --git a/src/models/MultiTradesResponse.ts b/src/models/MultiTradesResponse.ts index 9669441..5ca1c5e 100644 --- a/src/models/MultiTradesResponse.ts +++ b/src/models/MultiTradesResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Trade } from "./Trade"; +import type { Trade } from "./Trade.js"; /** * A model representing the result of hitting the Multi Trades api; represents multiple trades for multiple symbols. diff --git a/src/models/News.ts b/src/models/News.ts index 6c08e90..4b19bdd 100644 --- a/src/models/News.ts +++ b/src/models/News.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { NewsImage } from "./NewsImage"; +import type { NewsImage } from "./NewsImage.js"; /** * Model representing a news article from the Alpaca Market Data API diff --git a/src/models/NonTradeActivities.ts b/src/models/NonTradeActivities.ts index 455e93f..7a657d1 100644 --- a/src/models/NonTradeActivities.ts +++ b/src/models/NonTradeActivities.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { ActivityType } from "./ActivityType"; +import type { ActivityType } from "./ActivityType.js"; export type NonTradeActivities = { activity_type?: ActivityType; diff --git a/src/models/Order.ts b/src/models/Order.ts index 900ecc8..41e4e0b 100644 --- a/src/models/Order.ts +++ b/src/models/Order.ts @@ -3,12 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { AssetClass } from "./AssetClass"; -import type { OrderClass } from "./OrderClass"; -import type { OrderSide } from "./OrderSide"; -import type { OrderStatus } from "./OrderStatus"; -import type { OrderType } from "./OrderType"; -import type { TimeInForce } from "./TimeInForce"; +import type { AssetClass } from "./AssetClass.js"; +import type { OrderClass } from "./OrderClass.js"; +import type { OrderSide } from "./OrderSide.js"; +import type { OrderStatus } from "./OrderStatus.js"; +import type { OrderType } from "./OrderType.js"; +import type { TimeInForce } from "./TimeInForce.js"; /** * The Orders API allows a user to monitor, place and cancel their orders with Alpaca. diff --git a/src/models/PatchOrderRequest.ts b/src/models/PatchOrderRequest.ts index c8bcdc6..e36fdbf 100644 --- a/src/models/PatchOrderRequest.ts +++ b/src/models/PatchOrderRequest.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { TimeInForce } from "./TimeInForce"; +import type { TimeInForce } from "./TimeInForce.js"; /** * Represents a request to patch an order. diff --git a/src/models/Position.ts b/src/models/Position.ts index 7dec6c9..4068c2f 100644 --- a/src/models/Position.ts +++ b/src/models/Position.ts @@ -3,8 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { AssetClass } from "./AssetClass"; -import type { Exchange } from "./Exchange"; +import type { AssetClass } from "./AssetClass.js"; +import type { Exchange } from "./Exchange.js"; /** * The positions API provides information about an account’s current open positions. The response will include information such as cost basis, shares traded, and market value, which will be updated live as price information is updated. Once a position is closed, it will no longer be queryable through this API. diff --git a/src/models/PositionClosedReponse.ts b/src/models/PositionClosedReponse.ts index 0a91cd0..7d15532 100644 --- a/src/models/PositionClosedReponse.ts +++ b/src/models/PositionClosedReponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Order } from "./Order"; +import type { Order } from "./Order.js"; /** * Represents the result of asking the api to close a position. diff --git a/src/models/QuotesResponse.ts b/src/models/QuotesResponse.ts index f701035..519ff66 100644 --- a/src/models/QuotesResponse.ts +++ b/src/models/QuotesResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Quote } from "./Quote"; +import type { Quote } from "./Quote.js"; /** * The Quotes API provides NBBO quotes for a given ticker symbol at a specified date. diff --git a/src/models/Snapshot.ts b/src/models/Snapshot.ts index b5d8fc7..5663c09 100644 --- a/src/models/Snapshot.ts +++ b/src/models/Snapshot.ts @@ -3,9 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { Bar } from "./Bar"; -import type { Quote } from "./Quote"; -import type { Trade } from "./Trade"; +import type { Bar } from "./Bar.js"; +import type { Quote } from "./Quote.js"; +import type { Trade } from "./Trade.js"; /** * The Snapshot API for one ticker provides the latest trade, latest quote, minute bar daily bar and previous daily bar data for a given ticker symbol. diff --git a/src/models/TradesResponse.ts b/src/models/TradesResponse.ts index e342f99..8129986 100644 --- a/src/models/TradesResponse.ts +++ b/src/models/TradesResponse.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Trade } from "./Trade"; +import type { Trade } from "./Trade.js"; /** * A model representing the result of hitting the Trades api. diff --git a/src/models/TradingActivities.ts b/src/models/TradingActivities.ts index 84fb954..3adc964 100644 --- a/src/models/TradingActivities.ts +++ b/src/models/TradingActivities.ts @@ -3,8 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { ActivityType } from "./ActivityType"; -import type { OrderStatus } from "./OrderStatus"; +import type { ActivityType } from "./ActivityType.js"; +import type { OrderStatus } from "./OrderStatus.js"; export type TradingActivities = { activity_type?: ActivityType; diff --git a/src/models/Watchlist.ts b/src/models/Watchlist.ts index 82fd0b9..68b8916 100644 --- a/src/models/Watchlist.ts +++ b/src/models/Watchlist.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { Assets } from "./Assets"; +import type { Assets } from "./Assets.js"; /** * The watchlist API provides CRUD operation for the account’s watchlist. An account can have multiple watchlists and each is uniquely identified by id but can also be addressed by user-defined name. Each watchlist is an ordered list of assets. diff --git a/src/services/AccountActivitiesService.ts b/src/services/AccountActivitiesService.ts index 21990ac..d84893c 100644 --- a/src/services/AccountActivitiesService.ts +++ b/src/services/AccountActivitiesService.ts @@ -2,11 +2,11 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { NonTradeActivities } from "../models/NonTradeActivities"; -import type { TradingActivities } from "../models/TradingActivities"; +import type { NonTradeActivities } from "../models/NonTradeActivities.js"; +import type { TradingActivities } from "../models/TradingActivities.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class AccountActivitiesService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/AccountConfigurationsService.ts b/src/services/AccountConfigurationsService.ts index 36e31fc..057f89f 100644 --- a/src/services/AccountConfigurationsService.ts +++ b/src/services/AccountConfigurationsService.ts @@ -2,10 +2,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { AccountConfigurations } from "../models/AccountConfigurations"; +import type { AccountConfigurations } from "../models/AccountConfigurations.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class AccountConfigurationsService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/AccountService.ts b/src/services/AccountService.ts index ccd14be..f3789e7 100644 --- a/src/services/AccountService.ts +++ b/src/services/AccountService.ts @@ -2,10 +2,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { Account } from "../models/Account"; +import type { Account } from "../models/Account.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class AccountService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/AssetsService.ts b/src/services/AssetsService.ts index 15a0f28..eb9c016 100644 --- a/src/services/AssetsService.ts +++ b/src/services/AssetsService.ts @@ -2,10 +2,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { Assets } from "../models/Assets"; +import type { Assets } from "../models/Assets.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class AssetsService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/CalendarService.ts b/src/services/CalendarService.ts index f1b0626..3fbe642 100644 --- a/src/services/CalendarService.ts +++ b/src/services/CalendarService.ts @@ -2,10 +2,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { Calendar } from "../models/Calendar"; +import type { Calendar } from "../models/Calendar.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class CalendarService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/ClockService.ts b/src/services/ClockService.ts index 42611eb..e442824 100644 --- a/src/services/ClockService.ts +++ b/src/services/ClockService.ts @@ -2,10 +2,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { Clock } from "../models/Clock"; +import type { Clock } from "../models/Clock.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class ClockService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/CryptoPricingDataApiService.ts b/src/services/CryptoDataService.ts similarity index 97% rename from src/services/CryptoPricingDataApiService.ts rename to src/services/CryptoDataService.ts index 6bdbc55..e8707fe 100644 --- a/src/services/CryptoPricingDataApiService.ts +++ b/src/services/CryptoDataService.ts @@ -2,28 +2,28 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { BarsResponse } from "../models/BarsResponse"; -import type { CryptoSpreadsResponse } from "../models/CryptoSpreadsResponse"; -import type { LatestBarResponse } from "../models/LatestBarResponse"; -import type { LatestMultiBarsResponse } from "../models/LatestMultiBarsResponse"; -import type { LatestMultiQuotesResponse } from "../models/LatestMultiQuotesResponse"; -import type { LatestMultiTradesResponse } from "../models/LatestMultiTradesResponse"; -import type { LatestMultiXBBOResponse } from "../models/LatestMultiXBBOResponse"; -import type { LatestQuoteResponse } from "../models/LatestQuoteResponse"; -import type { LatestTradeResponse } from "../models/LatestTradeResponse"; -import type { LatestXBBOResponse } from "../models/LatestXBBOResponse"; -import type { MultiBarsResponse } from "../models/MultiBarsResponse"; -import type { MultiQuotesReponse } from "../models/MultiQuotesReponse"; -import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse"; -import type { MultiTradesResponse } from "../models/MultiTradesResponse"; -import type { QuotesResponse } from "../models/QuotesResponse"; -import type { Snapshot } from "../models/Snapshot"; -import type { TradesResponse } from "../models/TradesResponse"; +import type { BarsResponse } from "../models/BarsResponse.js"; +import type { CryptoSpreadsResponse } from "../models/CryptoSpreadsResponse.js"; +import type { LatestBarResponse } from "../models/LatestBarResponse.js"; +import type { LatestMultiBarsResponse } from "../models/LatestMultiBarsResponse.js"; +import type { LatestMultiQuotesResponse } from "../models/LatestMultiQuotesResponse.js"; +import type { LatestMultiTradesResponse } from "../models/LatestMultiTradesResponse.js"; +import type { LatestMultiXBBOResponse } from "../models/LatestMultiXBBOResponse.js"; +import type { LatestQuoteResponse } from "../models/LatestQuoteResponse.js"; +import type { LatestTradeResponse } from "../models/LatestTradeResponse.js"; +import type { LatestXBBOResponse } from "../models/LatestXBBOResponse.js"; +import type { MultiBarsResponse } from "../models/MultiBarsResponse.js"; +import type { MultiQuotesReponse } from "../models/MultiQuotesReponse.js"; +import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse.js"; +import type { MultiTradesResponse } from "../models/MultiTradesResponse.js"; +import type { QuotesResponse } from "../models/QuotesResponse.js"; +import type { Snapshot } from "../models/Snapshot.js"; +import type { TradesResponse } from "../models/TradesResponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; -export class CryptoPricingDataApiService { +export class CryptoDataService { constructor(public readonly httpRequest: BaseHttpRequest) {} /** @@ -686,4 +686,4 @@ export class CryptoPricingDataApiService { url: "/v1beta1/crypto/meta/spreads", }); } -} +} \ No newline at end of file diff --git a/src/services/LogoService.ts b/src/services/LogoService.ts index 0d51b34..2c18f14 100644 --- a/src/services/LogoService.ts +++ b/src/services/LogoService.ts @@ -2,8 +2,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class LogoService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/NewsService.ts b/src/services/NewsService.ts index 0089ef4..d2878c1 100644 --- a/src/services/NewsService.ts +++ b/src/services/NewsService.ts @@ -2,10 +2,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { GetNewsResponse } from "../models/GetNewsResponse"; +import type { GetNewsResponse } from "../models/GetNewsResponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class NewsService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/OrdersService.ts b/src/services/OrdersService.ts index 1db8a2d..060f06d 100644 --- a/src/services/OrdersService.ts +++ b/src/services/OrdersService.ts @@ -2,12 +2,12 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { CanceledOrderResponse } from "../models/CanceledOrderResponse"; -import type { Order } from "../models/Order"; -import type { PatchOrderRequest } from "../models/PatchOrderRequest"; +import type { CanceledOrderResponse } from "../models/CanceledOrderResponse.js"; +import type { Order } from "../models/Order.js"; +import type { PatchOrderRequest } from "../models/PatchOrderRequest.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class OrdersService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/PortfolioHistoryService.ts b/src/services/PortfolioHistoryService.ts index cb9f718..cf1d857 100644 --- a/src/services/PortfolioHistoryService.ts +++ b/src/services/PortfolioHistoryService.ts @@ -2,10 +2,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PortfolioHistory } from "../models/PortfolioHistory"; +import type { PortfolioHistory } from "../models/PortfolioHistory.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class PortfolioHistoryService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/PositionsService.ts b/src/services/PositionsService.ts index ae56d3a..80acc23 100644 --- a/src/services/PositionsService.ts +++ b/src/services/PositionsService.ts @@ -2,12 +2,12 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { Order } from "../models/Order"; -import type { Position } from "../models/Position"; -import type { PositionClosedReponse } from "../models/PositionClosedReponse"; +import type { Order } from "../models/Order.js"; +import type { Position } from "../models/Position.js"; +import type { PositionClosedReponse } from "../models/PositionClosedReponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class PositionsService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/ScreenerService.ts b/src/services/ScreenerService.ts index 956c726..ec4dc2d 100644 --- a/src/services/ScreenerService.ts +++ b/src/services/ScreenerService.ts @@ -2,10 +2,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { MarketMoversResponse } from "../models/MarketMoversResponse"; +import type { MarketMoversResponse } from "../models/MarketMoversResponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class ScreenerService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/StockPricingDataApiService.ts b/src/services/StockDataService.ts similarity index 97% rename from src/services/StockPricingDataApiService.ts rename to src/services/StockDataService.ts index 40d5a14..13520af 100644 --- a/src/services/StockPricingDataApiService.ts +++ b/src/services/StockDataService.ts @@ -2,26 +2,26 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { BarsResponse } from "../models/BarsResponse"; -import type { ExchangesResponse } from "../models/ExchangesResponse"; -import type { LatestBarResponse } from "../models/LatestBarResponse"; -import type { LatestMultiBarsResponse } from "../models/LatestMultiBarsResponse"; -import type { LatestMultiQuotesResponse } from "../models/LatestMultiQuotesResponse"; -import type { LatestMultiTradesResponse } from "../models/LatestMultiTradesResponse"; -import type { LatestQuoteResponse } from "../models/LatestQuoteResponse"; -import type { LatestTradeResponse } from "../models/LatestTradeResponse"; -import type { MultiBarsResponse } from "../models/MultiBarsResponse"; -import type { MultiQuotesReponse } from "../models/MultiQuotesReponse"; -import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse"; -import type { MultiTradesResponse } from "../models/MultiTradesResponse"; -import type { QuotesResponse } from "../models/QuotesResponse"; -import type { Snapshot } from "../models/Snapshot"; -import type { TradesResponse } from "../models/TradesResponse"; +import type { BarsResponse } from "../models/BarsResponse.js"; +import type { ExchangesResponse } from "../models/ExchangesResponse.js"; +import type { LatestBarResponse } from "../models/LatestBarResponse.js"; +import type { LatestMultiBarsResponse } from "../models/LatestMultiBarsResponse.js"; +import type { LatestMultiQuotesResponse } from "../models/LatestMultiQuotesResponse.js"; +import type { LatestMultiTradesResponse } from "../models/LatestMultiTradesResponse.js"; +import type { LatestQuoteResponse } from "../models/LatestQuoteResponse.js"; +import type { LatestTradeResponse } from "../models/LatestTradeResponse.js"; +import type { MultiBarsResponse } from "../models/MultiBarsResponse.js"; +import type { MultiQuotesReponse } from "../models/MultiQuotesReponse.js"; +import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse.js"; +import type { MultiTradesResponse } from "../models/MultiTradesResponse.js"; +import type { QuotesResponse } from "../models/QuotesResponse.js"; +import type { Snapshot } from "../models/Snapshot.js"; +import type { TradesResponse } from "../models/TradesResponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; -export class StockPricingDataApiService { +export class StockDataService { constructor(public readonly httpRequest: BaseHttpRequest) {} /** @@ -672,4 +672,4 @@ export class StockPricingDataApiService { }, }); } -} +} \ No newline at end of file diff --git a/src/services/WatchlistsService.ts b/src/services/WatchlistsService.ts index fb1af99..ea1bfb8 100644 --- a/src/services/WatchlistsService.ts +++ b/src/services/WatchlistsService.ts @@ -2,11 +2,11 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { UpdateWatchlistRequest } from "../models/UpdateWatchlistRequest"; -import type { Watchlist } from "../models/Watchlist"; +import type { UpdateWatchlistRequest } from "../models/UpdateWatchlistRequest.js"; +import type { Watchlist } from "../models/Watchlist.js"; -import type { CancelablePromise } from "../core/CancelablePromise"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest"; +import type { CancelablePromise } from "../core/CancelablePromise.js"; +import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class WatchlistsService { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/stuff.ts b/src/stuff.ts deleted file mode 100644 index 6172201..0000000 --- a/src/stuff.ts +++ /dev/null @@ -1,30 +0,0 @@ -export type DataSource = "iex" | "sip"; - -export interface Endpoints { - rest: { - v1beta1: string; - v2: string; - data_v2: string; - data_v1: string; - data_v1beta3: string; - }; - websocket: { - api: string; - data: (source: DataSource) => string; - }; -} - -export const endpoints: Endpoints = { - rest: { - v1beta1: "https://data.alpaca.markets/v1beta1", - v2: "https://api.alpaca.markets/v2", - data_v2: "https://data.alpaca.markets/v2", - data_v1: "https://data.alpaca.markets/v1", - data_v1beta3: "https://data.alpaca.markets/v1beta3/crypto", - }, - websocket: { - api: "wss://api.alpaca.markets/stream", - data: (source: DataSource = "iex") => - `wss://stream.data.alpaca.markets/v2/${source}`, - }, -}; diff --git a/tsconfig.json b/tsconfig.json index 98c5d29..bcd300c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,11 +12,12 @@ "noImplicitAny": false, "noUnusedLocals": true, "outDir": "dist", - "sourceMap": false, + "sourceMap": true, "strict": true, "target": "ES6", "baseUrl": "src", - "declarationDir": "dist/@types" + "sourceRoot": "src", + "declarationDir": "dist" }, "include": ["src"], "exclude": ["node_modules", "dist"] From 464986fe237c8cf4cd2650efab73b4337e4bc4fb Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:19:49 -0600 Subject: [PATCH 21/55] no commit message --- .github/workflows/prettier.yml | 14 ++------------ package.json | 2 +- .../addPathExtensions.js | 14 ++++++++------ 3 files changed, 11 insertions(+), 19 deletions(-) rename addPathExtensions.js => scripts/addPathExtensions.js (77%) diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 65f370d..ada2abf 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -11,18 +11,8 @@ on: jobs: format: runs-on: ubuntu-latest - steps: - name: Check out code uses: actions/checkout@v2 - - - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: '14' - - - name: Install dependencies - run: npm ci - - - name: Run prettier - run: npx prettier --write . \ No newline at end of file + - name: Prettier Action + uses: creyD/prettier_action@v4.3 \ No newline at end of file diff --git a/package.json b/package.json index 70253bb..3c0f1fe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.3-alpha", + "version": "7.0.4-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/addPathExtensions.js b/scripts/addPathExtensions.js similarity index 77% rename from addPathExtensions.js rename to scripts/addPathExtensions.js index 97e8ee7..56c02e0 100644 --- a/addPathExtensions.js +++ b/scripts/addPathExtensions.js @@ -1,12 +1,14 @@ +// we need this to map the import/export statements to .js + import fs from "fs"; import glob from "glob"; -// Directory where the files are located +// directory where the files are located const directoryPath = "./src"; console.log(`Looking for .ts files in: ${directoryPath}`); -// Use glob to find all .ts files in the directory +// use glob to find all .ts files in the directory glob(`${directoryPath}/**/*.ts`, {}, (err, files) => { if (err) { console.error(err); @@ -15,16 +17,16 @@ glob(`${directoryPath}/**/*.ts`, {}, (err, files) => { console.log(`Found ${files.length} files.`); - // Loop through each file + // loop through each file files.forEach((filePath) => { - // Read the file + // read the file fs.readFile(filePath, "utf8", (err, data) => { if (err) { console.error(err); process.exit(1); } - // Use a regular expression to replace import/export statements without .js with .js + // replace import/export statements without .js with .js const updatedData = data.replace( /(from\s+['"])([^'"]+)(['"])/g, (match, prePath, importPath, postPath) => { @@ -35,7 +37,7 @@ glob(`${directoryPath}/**/*.ts`, {}, (err, files) => { } ); - // Write the updated content back to the file + // write the updated content back to the file fs.writeFile(filePath, updatedData, "utf8", (err) => { if (err) { console.error(err); From 46c2b293c79fe0aee0b98b6936e4543e0fe596b2 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:27:48 -0600 Subject: [PATCH 22/55] no commit message --- .github/workflows/{prettier.yml => prettify.yml} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename .github/workflows/{prettier.yml => prettify.yml} (80%) diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettify.yml similarity index 80% rename from .github/workflows/prettier.yml rename to .github/workflows/prettify.yml index ada2abf..5469ba2 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettify.yml @@ -1,5 +1,4 @@ -name: Pretty Formatting - +name: Prettify on: push: branches: @@ -7,12 +6,13 @@ on: pull_request: branches: - main - jobs: format: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} - name: Prettier Action uses: creyD/prettier_action@v4.3 \ No newline at end of file From acc43077536e4f96f1f2b076920c35a0438705da Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:33:38 -0600 Subject: [PATCH 23/55] no commit message --- .github/workflows/prettify.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index 5469ba2..0afdf53 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -14,5 +14,7 @@ jobs: uses: actions/checkout@v2 with: ref: ${{ github.head_ref }} - - name: Prettier Action - uses: creyD/prettier_action@v4.3 \ No newline at end of file + - name: Format code + uses: creyD/prettier_action@v4.3 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 243e46ad1140ea97455057d9f14326676cd97ac8 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:35:58 -0600 Subject: [PATCH 24/55] no commit message --- .github/workflows/prettify.yml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index 0afdf53..def614d 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -1,20 +1,19 @@ name: Prettify on: - push: - branches: - - main pull_request: - branches: - - main + branches: [main] jobs: - format: + prettier: runs-on: ubuntu-latest steps: - - name: Check out code - uses: actions/checkout@v2 + - name: Checkout + uses: actions/checkout@v3 with: + fetch-depth: 0 ref: ${{ github.head_ref }} + persist-credentials: false - name: Format code - uses: creyD/prettier_action@v4.3 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + uses: creyD/prettier_action@v4.2 + with: + dry: True + github_token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 3c6e9dff4d88d381513f8113be77c24ba8238110 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:38:25 -0600 Subject: [PATCH 25/55] no commit message --- .github/workflows/prettify.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index def614d..2dfaed8 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -2,6 +2,8 @@ name: Prettify on: pull_request: branches: [main] + push: + branches: [main] jobs: prettier: runs-on: ubuntu-latest @@ -12,8 +14,14 @@ jobs: fetch-depth: 0 ref: ${{ github.head_ref }} persist-credentials: false + - name: Use Node.js + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies + run: npm ci - name: Format code uses: creyD/prettier_action@v4.2 with: - dry: True + dry: true github_token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From cf45408d9d564ffc8f7e086c02b973821d34f852 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:40:13 -0600 Subject: [PATCH 26/55] no commit message --- .github/workflows/prettify.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index 2dfaed8..e4bf423 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -14,10 +14,9 @@ jobs: fetch-depth: 0 ref: ${{ github.head_ref }} persist-credentials: false - - name: Use Node.js - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: - node-version: '14' + node-version: 16 - name: Install dependencies run: npm ci - name: Format code From e7f1db411d9e8f8888fc1ba3aeb3077aa30ab0fa Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:43:52 -0600 Subject: [PATCH 27/55] no commit message --- .github/workflows/prettify.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index e4bf423..40e9dc9 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -23,4 +23,5 @@ jobs: uses: creyD/prettier_action@v4.2 with: dry: true - github_token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + github_token: ${{ secrets.GITHUB_TOKEN }} + prettier_options: --write ./src \ No newline at end of file From 306a24e7bf7bc1310baa836ae7cda25b279514d7 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:46:38 -0600 Subject: [PATCH 28/55] no commit message --- .github/workflows/prettify.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index 40e9dc9..bf0093b 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -19,6 +19,10 @@ jobs: node-version: 16 - name: Install dependencies run: npm ci + - name: Add newlines + uses: Logerfo/newline-action@0.0.4 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} - name: Format code uses: creyD/prettier_action@v4.2 with: From 910219c7819a3fcbf6dad508448030a6f8644288 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:59:19 -0600 Subject: [PATCH 29/55] no commit message --- .github/workflows/prettify.yml | 5 ----- prettierrc.json => .prettierrc.json | 0 2 files changed, 5 deletions(-) rename prettierrc.json => .prettierrc.json (100%) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index bf0093b..d35dd06 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -19,13 +19,8 @@ jobs: node-version: 16 - name: Install dependencies run: npm ci - - name: Add newlines - uses: Logerfo/newline-action@0.0.4 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - name: Format code uses: creyD/prettier_action@v4.2 with: - dry: true github_token: ${{ secrets.GITHUB_TOKEN }} prettier_options: --write ./src \ No newline at end of file diff --git a/prettierrc.json b/.prettierrc.json similarity index 100% rename from prettierrc.json rename to .prettierrc.json From 2ad911dde89e2a544d6898dc073cf7405806e529 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 12:00:32 -0600 Subject: [PATCH 30/55] no commit message --- .github/workflows/prettify.yml | 1 + .prettierrc.json | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index d35dd06..40e9dc9 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -22,5 +22,6 @@ jobs: - name: Format code uses: creyD/prettier_action@v4.2 with: + dry: true github_token: ${{ secrets.GITHUB_TOKEN }} prettier_options: --write ./src \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json index 783d291..76821ea 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -15,6 +15,5 @@ "htmlWhitespaceSensitivity": "css", "endOfLine": "lf", "embeddedLanguageFormatting": "auto", - "singleAttributePerLine": false, - "pluginSearchDirs": false + "singleAttributePerLine": false } \ No newline at end of file From 1e5c88a8095779344173aa69bfefeb78161477d3 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 12:04:30 -0600 Subject: [PATCH 31/55] no commit message --- .github/workflows/prettify.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index 40e9dc9..69ca653 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -22,6 +22,6 @@ jobs: - name: Format code uses: creyD/prettier_action@v4.2 with: - dry: true + dry: false github_token: ${{ secrets.GITHUB_TOKEN }} prettier_options: --write ./src \ No newline at end of file From b961796660795886353f3943f5fc9b068e6adef0 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 12:12:28 -0600 Subject: [PATCH 32/55] no commit message --- .github/workflows/prettify.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prettify.yml b/.github/workflows/prettify.yml index 69ca653..91c8699 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/prettify.yml @@ -22,6 +22,6 @@ jobs: - name: Format code uses: creyD/prettier_action@v4.2 with: - dry: false + dry: true github_token: ${{ secrets.GITHUB_TOKEN }} - prettier_options: --write ./src \ No newline at end of file + prettier_options: --check ./src \ No newline at end of file From e10e10461cef3dc1cc733e68dcd6b99665c447e7 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 12:16:36 -0600 Subject: [PATCH 33/55] no commit message --- src/BaseURL.ts | 4 ++++ src/{OpenAPIClient.ts => Client.ts} | 27 ++++++++++++++++++++------- src/core/request.ts | 2 +- src/index.ts | 4 ++-- src/services/CryptoDataService.ts | 3 +-- src/services/StockDataService.ts | 2 +- 6 files changed, 29 insertions(+), 13 deletions(-) create mode 100644 src/BaseURL.ts rename src/{OpenAPIClient.ts => Client.ts} (86%) diff --git a/src/BaseURL.ts b/src/BaseURL.ts new file mode 100644 index 0000000..5cc483c --- /dev/null +++ b/src/BaseURL.ts @@ -0,0 +1,4 @@ +export const BaseURL = { + beta: "https://data.alpaca.markets/v1beta1", + account: "https://api.alpaca.markets/v2", +}; diff --git a/src/OpenAPIClient.ts b/src/Client.ts similarity index 86% rename from src/OpenAPIClient.ts rename to src/Client.ts index a3dc688..9fbbbe9 100644 --- a/src/OpenAPIClient.ts +++ b/src/Client.ts @@ -17,10 +17,19 @@ import { LogoService } from "./services/LogoService.js"; import { NewsService } from "./services/NewsService.js"; import { ScreenerService } from "./services/ScreenerService.js"; import { StockDataService } from "./services/StockDataService.js"; +import { BaseURL } from "./BaseURL"; type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest; -export class OpenAPIClient { +interface ClientOptions { + baseURL: typeof BaseURL | string; + credentials: { + key: string; + secret: string; + }; +} + +export class Client { public readonly calendar: CalendarService; public readonly clock: ClockService; public readonly assets: AssetsService; @@ -41,17 +50,21 @@ export class OpenAPIClient { }; constructor( - config?: Partial, + options?: ClientOptions, HttpRequest: HttpRequestConstructor = AxiosHttpRequest ) { this.request = new HttpRequest({ BASE: config?.BASE ?? "https://paper-api.alpaca.markets", VERSION: config?.VERSION ?? "2.0.0", WITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false, - CREDENTIALS: config?.CREDENTIALS ?? "include", - TOKEN: config?.TOKEN, - HEADERS: config?.HEADERS, - ENCODE_PATH: config?.ENCODE_PATH, + CREDENTIALS: options?.CREDENTIALS ?? "include", + TOKEN: options?.TOKEN, + HEADERS: !!options?.credentials + ? { + "APCA-API-KEY-ID": options.credentials.key, + "APCA-API-SECRET-KEY": options.credentials.secret, + } + : undefined, }); this.account = { @@ -73,4 +86,4 @@ export class OpenAPIClient { this.screener = new ScreenerService(this.request); this.stocks = new StockDataService(this.request); } -} \ No newline at end of file +} diff --git a/src/core/request.ts b/src/core/request.ts index a394511..b5b3428 100644 --- a/src/core/request.ts +++ b/src/core/request.ts @@ -354,4 +354,4 @@ export const request = ( reject(error); } }); -}; \ No newline at end of file +}; diff --git a/src/index.ts b/src/index.ts index 712e91c..b0a179e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,7 +2,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -export { OpenAPIClient } from "./OpenAPIClient.js"; +export { Client } from "./Client"; export { ApiError } from "./core/ApiError.js"; export { BaseHttpRequest } from "./core/BaseHttpRequest.js"; @@ -92,4 +92,4 @@ export { CryptoDataService } from "./services/CryptoDataService.js"; export { LogoService } from "./services/LogoService.js"; export { NewsService } from "./services/NewsService.js"; export { ScreenerService } from "./services/ScreenerService.js"; -export { StockDataService } from "./services/StockDataService.js"; \ No newline at end of file +export { StockDataService } from "./services/StockDataService.js"; diff --git a/src/services/CryptoDataService.ts b/src/services/CryptoDataService.ts index e8707fe..1144cff 100644 --- a/src/services/CryptoDataService.ts +++ b/src/services/CryptoDataService.ts @@ -19,7 +19,6 @@ import type { MultiTradesResponse } from "../models/MultiTradesResponse.js"; import type { QuotesResponse } from "../models/QuotesResponse.js"; import type { Snapshot } from "../models/Snapshot.js"; import type { TradesResponse } from "../models/TradesResponse.js"; - import type { CancelablePromise } from "../core/CancelablePromise.js"; import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; @@ -686,4 +685,4 @@ export class CryptoDataService { url: "/v1beta1/crypto/meta/spreads", }); } -} \ No newline at end of file +} diff --git a/src/services/StockDataService.ts b/src/services/StockDataService.ts index 13520af..b28b9fe 100644 --- a/src/services/StockDataService.ts +++ b/src/services/StockDataService.ts @@ -672,4 +672,4 @@ export class StockDataService { }, }); } -} \ No newline at end of file +} From 6901f3f85a1658afc641408f00f273ed546c6730 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 12:18:09 -0600 Subject: [PATCH 34/55] no commit message --- .github/workflows/{prettify.yml => pretty.yml} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename .github/workflows/{prettify.yml => pretty.yml} (86%) diff --git a/.github/workflows/prettify.yml b/.github/workflows/pretty.yml similarity index 86% rename from .github/workflows/prettify.yml rename to .github/workflows/pretty.yml index 91c8699..b37c6c0 100644 --- a/.github/workflows/prettify.yml +++ b/.github/workflows/pretty.yml @@ -1,4 +1,4 @@ -name: Prettify +name: Prettier Check on: pull_request: branches: [main] @@ -19,9 +19,9 @@ jobs: node-version: 16 - name: Install dependencies run: npm ci - - name: Format code + - name: Check code uses: creyD/prettier_action@v4.2 with: dry: true github_token: ${{ secrets.GITHUB_TOKEN }} - prettier_options: --check ./src \ No newline at end of file + prettier_options: --check ./src From fb689f45e02cc5af49ee48e00d154e8621ebbbc7 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 12:42:07 -0600 Subject: [PATCH 35/55] no commit message --- package.json | 7 +-- scripts/addPathExtensions.js | 8 +--- src/BaseURL.ts | 4 -- src/Client.ts | 82 +++++++++++++++++++----------------- src/core/OpenAPI.ts | 10 ----- src/core/request.ts | 14 +++--- src/index.ts | 2 +- 7 files changed, 56 insertions(+), 71 deletions(-) delete mode 100644 src/BaseURL.ts diff --git a/package.json b/package.json index 3c0f1fe..9b5b809 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.4-alpha", + "version": "7.0.5-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ @@ -46,7 +46,8 @@ }, "scripts": { "prepublishOnly": "npm run build", - "build": "rimraf dist && tsc --build" + "build": "rimraf dist && npm run extensions && tsc --build", + "extensions": "node ./scripts/addPathExtensions.js" }, "dependencies": { "abort-controller": "^3.0.0", @@ -74,4 +75,4 @@ "typescript": "^4.4.3", "vite": "^4.4.7" } -} \ No newline at end of file +} diff --git a/scripts/addPathExtensions.js b/scripts/addPathExtensions.js index 56c02e0..9f81661 100644 --- a/scripts/addPathExtensions.js +++ b/scripts/addPathExtensions.js @@ -6,8 +6,6 @@ import glob from "glob"; // directory where the files are located const directoryPath = "./src"; -console.log(`Looking for .ts files in: ${directoryPath}`); - // use glob to find all .ts files in the directory glob(`${directoryPath}/**/*.ts`, {}, (err, files) => { if (err) { @@ -15,8 +13,6 @@ glob(`${directoryPath}/**/*.ts`, {}, (err, files) => { process.exit(1); } - console.log(`Found ${files.length} files.`); - // loop through each file files.forEach((filePath) => { // read the file @@ -43,9 +39,7 @@ glob(`${directoryPath}/**/*.ts`, {}, (err, files) => { console.error(err); process.exit(1); } - - console.log(`Updated: ${filePath}`); }); }); }); -}); \ No newline at end of file +}); diff --git a/src/BaseURL.ts b/src/BaseURL.ts deleted file mode 100644 index 5cc483c..0000000 --- a/src/BaseURL.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const BaseURL = { - beta: "https://data.alpaca.markets/v1beta1", - account: "https://api.alpaca.markets/v2", -}; diff --git a/src/Client.ts b/src/Client.ts index 9fbbbe9..b0e5dcb 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,34 +1,52 @@ -import type { BaseHttpRequest } from "./core/BaseHttpRequest.js"; import type { OpenAPIConfig } from "./core/OpenAPI.js"; +import type { BaseHttpRequest } from "./core/BaseHttpRequest.js"; import { AxiosHttpRequest } from "./core/AxiosHttpRequest.js"; -import { AccountActivitiesService } from "./services/AccountActivitiesService.js"; -import { AccountConfigurationsService } from "./services/AccountConfigurationsService.js"; -import { AccountService } from "./services/AccountService.js"; -import { CalendarService } from "./services/CalendarService.js"; + +import { LogoService } from "./services/LogoService.js"; +import { NewsService } from "./services/NewsService.js"; import { ClockService } from "./services/ClockService.js"; -import { AssetsService } from "./services/AssetsService.js"; import { OrdersService } from "./services/OrdersService.js"; -import { PortfolioHistoryService } from "./services/PortfolioHistoryService.js"; -import { PositionsService } from "./services/PositionsService.js"; -import { WatchlistsService } from "./services/WatchlistsService.js"; +import { AssetsService } from "./services/AssetsService.js"; +import { AccountService } from "./services/AccountService.js"; +import { CalendarService } from "./services/CalendarService.js"; import { CryptoDataService } from "./services/CryptoDataService.js"; -import { LogoService } from "./services/LogoService.js"; -import { NewsService } from "./services/NewsService.js"; -import { ScreenerService } from "./services/ScreenerService.js"; import { StockDataService } from "./services/StockDataService.js"; -import { BaseURL } from "./BaseURL"; +import { ScreenerService } from "./services/ScreenerService.js"; +import { PositionsService } from "./services/PositionsService.js"; +import { WatchlistsService } from "./services/WatchlistsService.js"; +import { AccountActivitiesService } from "./services/AccountActivitiesService.js"; +import { PortfolioHistoryService } from "./services/PortfolioHistoryService.js"; +import { AccountConfigurationsService } from "./services/AccountConfigurationsService.js"; type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest; interface ClientOptions { - baseURL: typeof BaseURL | string; + paper: boolean; credentials: { key: string; secret: string; }; } +// bundle all account services into one class for convenience +class AccountServices extends AccountService { + activities: AccountActivitiesService; + configurations: AccountConfigurationsService; + positions: PositionsService; + orders: OrdersService; + portfolioHistory: PortfolioHistoryService; + + constructor(httpRequest: BaseHttpRequest) { + super(httpRequest); + this.activities = new AccountActivitiesService(httpRequest); + this.configurations = new AccountConfigurationsService(httpRequest); + this.positions = new PositionsService(httpRequest); + this.orders = new OrdersService(httpRequest); + this.portfolioHistory = new PortfolioHistoryService(httpRequest); + } +} + export class Client { public readonly calendar: CalendarService; public readonly clock: ClockService; @@ -40,42 +58,28 @@ export class Client { public readonly stocks: StockDataService; public readonly watchlists: WatchlistsService; public readonly request: BaseHttpRequest; - public readonly account: { - activities: AccountActivitiesService; - configurations: AccountConfigurationsService; - positions: PositionsService; - orders: OrdersService; - portfolioHistory: PortfolioHistoryService; - service: AccountService; - }; + public readonly account: AccountServices; constructor( options?: ClientOptions, HttpRequest: HttpRequestConstructor = AxiosHttpRequest ) { + const { paper, credentials } = options ?? {}; + this.request = new HttpRequest({ - BASE: config?.BASE ?? "https://paper-api.alpaca.markets", - VERSION: config?.VERSION ?? "2.0.0", - WITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false, - CREDENTIALS: options?.CREDENTIALS ?? "include", - TOKEN: options?.TOKEN, - HEADERS: !!options?.credentials + BASE: + paper === true || paper === undefined + ? "https://paper-api.alpaca.markets" + : "https://api.alpaca.markets", + HEADERS: !!credentials ? { - "APCA-API-KEY-ID": options.credentials.key, - "APCA-API-SECRET-KEY": options.credentials.secret, + "APCA-API-KEY-ID": credentials.key, + "APCA-API-SECRET-KEY": credentials.secret, } : undefined, }); - this.account = { - service: new AccountService(this.request), - activities: new AccountActivitiesService(this.request), - configurations: new AccountConfigurationsService(this.request), - positions: new PositionsService(this.request), - portfolioHistory: new PortfolioHistoryService(this.request), - orders: new OrdersService(this.request), - }; - + this.account = new AccountServices(this.request); this.watchlists = new WatchlistsService(this.request); this.calendar = new CalendarService(this.request); this.clock = new ClockService(this.request); diff --git a/src/core/OpenAPI.ts b/src/core/OpenAPI.ts index fa914f8..09413df 100644 --- a/src/core/OpenAPI.ts +++ b/src/core/OpenAPI.ts @@ -9,20 +9,10 @@ type Headers = Record; export type OpenAPIConfig = { BASE: string; - VERSION: string; - WITH_CREDENTIALS: boolean; - CREDENTIALS: "include" | "omit" | "same-origin"; - TOKEN?: string | Resolver | undefined; HEADERS?: Headers | Resolver | undefined; - ENCODE_PATH?: ((path: string) => string) | undefined; }; export const OpenAPI: OpenAPIConfig = { BASE: "https://paper-api.alpaca.markets", - VERSION: "2.0.0", - WITH_CREDENTIALS: false, - CREDENTIALS: "include", - TOKEN: undefined, HEADERS: undefined, - ENCODE_PATH: undefined, }; diff --git a/src/core/request.ts b/src/core/request.ts index b5b3428..423e8ba 100644 --- a/src/core/request.ts +++ b/src/core/request.ts @@ -97,16 +97,17 @@ export const getQueryString = (params: Record): string => { }; const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { - const encoder = config.ENCODE_PATH || encodeURI; + const encoder = encodeURI; - const path = options.url - .replace("{api-version}", config.VERSION) - .replace(/{(.*?)}/g, (substring: string, group: string) => { + const path = options.url.replace( + /{(.*?)}/g, + (substring: string, group: string) => { if (options.path?.hasOwnProperty(group)) { return encoder(String(options.path[group])); } return substring; - }); + } + ); const url = `${config.BASE}${path}`; if (options.query) { @@ -161,7 +162,7 @@ export const getHeaders = async ( options: ApiRequestOptions, formData?: FormData ): Promise> => { - const token = await resolve(options, config.TOKEN); + const token = await resolve(options); const additionalHeaders = await resolve(options, config.HEADERS); const formHeaders = (typeof formData?.getHeaders === "function" && formData?.getHeaders()) || @@ -225,7 +226,6 @@ export const sendRequest = async ( headers, data: body ?? formData, method: options.method, - withCredentials: config.WITH_CREDENTIALS, cancelToken: source.token, }; diff --git a/src/index.ts b/src/index.ts index b0a179e..b38ed1a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,7 +2,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -export { Client } from "./Client"; +export { Client } from "./Client.js"; export { ApiError } from "./core/ApiError.js"; export { BaseHttpRequest } from "./core/BaseHttpRequest.js"; From f859444886f56613ea4d6e841ed896438b39d8de Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 14:48:20 -0600 Subject: [PATCH 36/55] no commit message --- package.json | 2 +- src/Client.ts | 3 ++- src/services/CryptoDataService.ts | 5 ++++- src/services/StockDataService.ts | 5 ++++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 9b5b809..24aade3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.5-alpha", + "version": "7.0.6-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/src/Client.ts b/src/Client.ts index b0e5dcb..5188c2f 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -48,6 +48,8 @@ class AccountServices extends AccountService { } export class Client { + private readonly request: BaseHttpRequest; + public readonly calendar: CalendarService; public readonly clock: ClockService; public readonly assets: AssetsService; @@ -57,7 +59,6 @@ export class Client { public readonly screener: ScreenerService; public readonly stocks: StockDataService; public readonly watchlists: WatchlistsService; - public readonly request: BaseHttpRequest; public readonly account: AccountServices; constructor( diff --git a/src/services/CryptoDataService.ts b/src/services/CryptoDataService.ts index 1144cff..e2afe71 100644 --- a/src/services/CryptoDataService.ts +++ b/src/services/CryptoDataService.ts @@ -23,7 +23,10 @@ import type { CancelablePromise } from "../core/CancelablePromise.js"; import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class CryptoDataService { - constructor(public readonly httpRequest: BaseHttpRequest) {} + constructor(public readonly httpRequest: BaseHttpRequest) { + // change the baseURL to data.alpaca.markets + this.httpRequest.config.BASE = "https://data.alpaca.markets"; + } /** * Get Trade data for multiple crypto symbols diff --git a/src/services/StockDataService.ts b/src/services/StockDataService.ts index b28b9fe..4aeedc3 100644 --- a/src/services/StockDataService.ts +++ b/src/services/StockDataService.ts @@ -22,7 +22,10 @@ import type { CancelablePromise } from "../core/CancelablePromise.js"; import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; export class StockDataService { - constructor(public readonly httpRequest: BaseHttpRequest) {} + constructor(public readonly httpRequest: BaseHttpRequest) { + // change the baseURL to data.alpaca.markets + this.httpRequest.config.BASE = "https://data.alpaca.markets"; + } /** * Get Bar data for multiple stock symbols From 59dec10966b985ebc76cdd262248be8ef245d5a6 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 14:56:49 -0600 Subject: [PATCH 37/55] no commit message --- package.json | 2 +- src/models/QuotesResponse.ts | 16 ------ src/services/CryptoDataService.ts | 94 ++++++------------------------- 3 files changed, 19 insertions(+), 93 deletions(-) delete mode 100644 src/models/QuotesResponse.ts diff --git a/package.json b/package.json index 24aade3..0887b97 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.6-alpha", + "version": "7.0.7-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/src/models/QuotesResponse.ts b/src/models/QuotesResponse.ts deleted file mode 100644 index 519ff66..0000000 --- a/src/models/QuotesResponse.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { Quote } from "./Quote.js"; - -/** - * The Quotes API provides NBBO quotes for a given ticker symbol at a specified date. - * - */ -export type QuotesResponse = { - quotes: Array | null; - symbol: string; - next_page_token?: string | null; -}; diff --git a/src/services/CryptoDataService.ts b/src/services/CryptoDataService.ts index e2afe71..2317cfe 100644 --- a/src/services/CryptoDataService.ts +++ b/src/services/CryptoDataService.ts @@ -16,7 +16,6 @@ import type { MultiBarsResponse } from "../models/MultiBarsResponse.js"; import type { MultiQuotesReponse } from "../models/MultiQuotesReponse.js"; import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse.js"; import type { MultiTradesResponse } from "../models/MultiTradesResponse.js"; -import type { QuotesResponse } from "../models/QuotesResponse.js"; import type { Snapshot } from "../models/Snapshot.js"; import type { TradesResponse } from "../models/TradesResponse.js"; import type { CancelablePromise } from "../core/CancelablePromise.js"; @@ -73,7 +72,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/trades", + url: "/v1beta3/crypto/us/trades", query: { start: start, end: end, @@ -106,7 +105,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/trades/latest", + url: "/v1beta3/crypto/us/trades/latest", query: { symbols: symbols, exchange: exchange, @@ -155,7 +154,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/{symbol}/trades", + url: "/v1beta3/crypto/us/{symbol}/trades", path: { symbol: symbol, }, @@ -190,7 +189,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/{symbol}/trades/latest", + url: "/v1beta3/crypto/us/{symbol}/trades/latest", path: { symbol: symbol, }, @@ -250,7 +249,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/bars", + url: "/v1beta3/crypto/us/bars", query: { symbols: symbols, start: start, @@ -284,7 +283,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/bars/latest", + url: "/v1beta3/crypto/us/bars/latest", query: { symbols: symbols, exchange: exchange, @@ -338,7 +337,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/{symbol}/bars", + url: "/v1beta3/crypto/us/{symbol}/bars", path: { symbol: symbol, }, @@ -374,7 +373,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/{symbol}/bars/latest", + url: "/v1beta3/crypto/us/{symbol}/bars/latest", path: { symbol: symbol, }, @@ -429,7 +428,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/quotes", + url: "/v1beta3/crypto/us/quotes", query: { start: start, end: end, @@ -462,7 +461,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/quotes/latest", + url: "/v1beta3/crypto/us/latest/quotes", query: { symbols: symbols, exchange: exchange, @@ -470,61 +469,6 @@ export class CryptoDataService { }); } - /** - * Get Quotes for crypto symbol - * The Quotes API provides quotes for a given crypto symbol at a specified date. Returns quotes for the queried crypto symbol - * @returns QuotesResponse Successful response - * @throws ApiError - */ - public getQuotesForCryptoSymbol({ - symbol, - start, - end, - exchanges, - limit, - pageToken, - }: { - /** - * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. - */ - symbol: string; - /** - * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. - */ - start?: string; - /** - * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. - */ - end?: string; - /** - * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchanges?: string; - /** - * Number of data points to return. Must be in range 1-10000, defaults to 1000. - */ - limit?: number; - /** - * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. - */ - pageToken?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta1/crypto/{symbol}/quotes", - path: { - symbol: symbol, - }, - query: { - start: start, - end: end, - exchanges: exchanges, - limit: limit, - page_token: pageToken, - }, - }); - } - /** * Latest Quote * Returns latest quote for the queried crypto symbol @@ -536,7 +480,7 @@ export class CryptoDataService { exchange, }: { /** - * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH */ symbol: string; /** @@ -546,11 +490,9 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/{symbol}/quotes/latest", - path: { - symbol: symbol, - }, + url: "/v1beta3/crypto/us/latest/quotes", query: { + symbols: [symbol], exchange: exchange, }, }); @@ -577,7 +519,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/snapshots", + url: "/v1beta3/crypto/us/snapshots", query: { exchange: exchange, symbols: symbols, @@ -606,7 +548,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/{symbol}/snapshot", + url: "/v1beta3/crypto/us/{symbol}/snapshot", path: { symbol: symbol, }, @@ -637,7 +579,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/xbbos/latest", + url: "/v1beta3/crypto/us/xbbos/latest", query: { symbols: symbols, exchanges: exchanges, @@ -666,7 +608,7 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/{symbol}/xbbo/latest", + url: "/v1beta3/crypto/us/{symbol}/xbbo/latest", path: { symbol: symbol, }, @@ -685,7 +627,7 @@ export class CryptoDataService { public getCryptoMetaSpreads(): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta1/crypto/meta/spreads", + url: "/v1beta3/crypto/us/meta/spreads", }); } } From 625abb087f59678a60fe429df43bb44c4adfac60 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 15:44:29 -0600 Subject: [PATCH 38/55] no commit message --- package.json | 2 +- src/index.ts | 4 - src/models/CryptoSpreadsResponse.ts | 8 -- src/models/LatestMultiXBBOResponse.ts | 10 -- src/models/LatestXBBOResponse.ts | 14 --- src/services/CryptoDataService.ts | 142 +++++--------------------- src/services/StockDataService.ts | 3 +- 7 files changed, 30 insertions(+), 153 deletions(-) delete mode 100644 src/models/CryptoSpreadsResponse.ts delete mode 100644 src/models/LatestMultiXBBOResponse.ts delete mode 100644 src/models/LatestXBBOResponse.ts diff --git a/package.json b/package.json index 0887b97..6ec532a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.7-alpha", + "version": "7.0.8-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/src/index.ts b/src/index.ts index b38ed1a..f694839 100644 --- a/src/index.ts +++ b/src/index.ts @@ -54,7 +54,6 @@ export { crypto_exchange } from "./models/crypto_exchange.js"; export type { crypto_exchanges } from "./models/crypto_exchanges.js"; export type { crypto_symbol } from "./models/crypto_symbol.js"; export type { crypto_symbols } from "./models/crypto_symbols.js"; -export type { CryptoSpreadsResponse } from "./models/CryptoSpreadsResponse.js"; export type { end } from "./models/end.js"; export type { ExchangesResponse } from "./models/ExchangesResponse.js"; export { feed } from "./models/feed.js"; @@ -63,10 +62,8 @@ export type { LatestBarResponse } from "./models/LatestBarResponse.js"; export type { LatestMultiBarsResponse } from "./models/LatestMultiBarsResponse.js"; export type { LatestMultiQuotesResponse } from "./models/LatestMultiQuotesResponse.js"; export type { LatestMultiTradesResponse } from "./models/LatestMultiTradesResponse.js"; -export type { LatestMultiXBBOResponse } from "./models/LatestMultiXBBOResponse.js"; export type { LatestQuoteResponse } from "./models/LatestQuoteResponse.js"; export type { LatestTradeResponse } from "./models/LatestTradeResponse.js"; -export type { LatestXBBOResponse } from "./models/LatestXBBOResponse.js"; export type { limit } from "./models/limit.js"; export type { MarketMoverAsset } from "./models/MarketMoverAsset.js"; export { MarketMoversResponse } from "./models/MarketMoversResponse.js"; @@ -78,7 +75,6 @@ export type { News } from "./models/News.js"; export { NewsImage } from "./models/NewsImage.js"; export type { page_token } from "./models/page_token.js"; export type { Quote } from "./models/Quote.js"; -export type { QuotesResponse } from "./models/QuotesResponse.js"; export type { Snapshot } from "./models/Snapshot.js"; export type { start } from "./models/start.js"; export type { stock_symbol } from "./models/stock_symbol.js"; diff --git a/src/models/CryptoSpreadsResponse.ts b/src/models/CryptoSpreadsResponse.ts deleted file mode 100644 index 52727af..0000000 --- a/src/models/CryptoSpreadsResponse.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type CryptoSpreadsResponse = { - spreads: Record; -}; diff --git a/src/models/LatestMultiXBBOResponse.ts b/src/models/LatestMultiXBBOResponse.ts deleted file mode 100644 index c617152..0000000 --- a/src/models/LatestMultiXBBOResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { XBBO } from "./XBBO.js"; - -export type LatestMultiXBBOResponse = { - xbbos: Record; -}; diff --git a/src/models/LatestXBBOResponse.ts b/src/models/LatestXBBOResponse.ts deleted file mode 100644 index 3421c3b..0000000 --- a/src/models/LatestXBBOResponse.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { XBBO } from "./XBBO.js"; - -/** - * Represents the Latest XBBO for a crypto symbol that calculates the Best Bid and Offer across multiple exchanges. - */ -export type LatestXBBOResponse = { - symbol: string; - xbbo: XBBO; -}; diff --git a/src/services/CryptoDataService.ts b/src/services/CryptoDataService.ts index 2317cfe..d7a3eeb 100644 --- a/src/services/CryptoDataService.ts +++ b/src/services/CryptoDataService.ts @@ -3,15 +3,12 @@ /* tslint:disable */ /* eslint-disable */ import type { BarsResponse } from "../models/BarsResponse.js"; -import type { CryptoSpreadsResponse } from "../models/CryptoSpreadsResponse.js"; import type { LatestBarResponse } from "../models/LatestBarResponse.js"; import type { LatestMultiBarsResponse } from "../models/LatestMultiBarsResponse.js"; import type { LatestMultiQuotesResponse } from "../models/LatestMultiQuotesResponse.js"; import type { LatestMultiTradesResponse } from "../models/LatestMultiTradesResponse.js"; -import type { LatestMultiXBBOResponse } from "../models/LatestMultiXBBOResponse.js"; import type { LatestQuoteResponse } from "../models/LatestQuoteResponse.js"; import type { LatestTradeResponse } from "../models/LatestTradeResponse.js"; -import type { LatestXBBOResponse } from "../models/LatestXBBOResponse.js"; import type { MultiBarsResponse } from "../models/MultiBarsResponse.js"; import type { MultiQuotesReponse } from "../models/MultiQuotesReponse.js"; import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse.js"; @@ -37,7 +34,7 @@ export class CryptoDataService { * @returns MultiTradesResponse Successful response * @throws ApiError */ - public getTradesForMultipleCryptoSymbols({ + public getTradesForMultipleSymbols({ symbols, start, end, @@ -90,7 +87,7 @@ export class CryptoDataService { * @returns LatestMultiTradesResponse OK * @throws ApiError */ - public getLatestTradesForMultipleCryptoSymbols({ + public getLatestTradesForMultipleSymbols({ symbols, exchange, }: { @@ -107,8 +104,8 @@ export class CryptoDataService { method: "GET", url: "/v1beta3/crypto/us/trades/latest", query: { - symbols: symbols, - exchange: exchange, + symbols, + exchange, }, }); } @@ -119,7 +116,7 @@ export class CryptoDataService { * @returns TradesResponse Successful response * @throws ApiError */ - public getTradesForCryptoSymbol({ + public getTradesForSymbol({ symbol, start, end, @@ -154,11 +151,9 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta3/crypto/us/{symbol}/trades", - path: { - symbol: symbol, - }, + url: "/v1beta3/crypto/us/trades", query: { + symbols: symbol, start: start, end: end, exchanges: exchanges, @@ -174,7 +169,7 @@ export class CryptoDataService { * @returns LatestTradeResponse Successful response * @throws ApiError */ - public getLatestTradesForCryptoSymbol({ + public getLatestTradesForSymbol({ symbol, exchange, }: { @@ -189,11 +184,9 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta3/crypto/us/{symbol}/trades/latest", - path: { - symbol: symbol, - }, + url: "/v1beta3/crypto/us/latest/trades", query: { + symbols: symbol, exchange: exchange, }, }); @@ -209,7 +202,7 @@ export class CryptoDataService { * @returns MultiBarsResponse Successful response * @throws ApiError */ - public getBarsForMultipleCryptoSymbols({ + public getBarsForMultipleSymbols({ symbols, timeframe, start, @@ -268,7 +261,7 @@ export class CryptoDataService { * @returns LatestMultiBarsResponse OK * @throws ApiError */ - public getLatestBarsForMultipleCryptoSymbols({ + public getLatestBarsForMultipleSymbols({ symbols, exchange, }: { @@ -285,8 +278,8 @@ export class CryptoDataService { method: "GET", url: "/v1beta3/crypto/us/bars/latest", query: { - symbols: symbols, - exchange: exchange, + symbols, + exchange, }, }); } @@ -297,7 +290,7 @@ export class CryptoDataService { * @returns BarsResponse Successful response * @throws ApiError */ - public getBarsForCryptoSymbol({ + public getBarsForSymbol({ symbol, timeframe, start, @@ -337,11 +330,9 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta3/crypto/us/{symbol}/bars", - path: { - symbol: symbol, - }, + url: "/v1beta3/crypto/us/bars", query: { + symbols: symbol, start: start, end: end, timeframe: timeframe, @@ -358,7 +349,7 @@ export class CryptoDataService { * @returns LatestBarResponse OK * @throws ApiError */ - public getLatestBarsForCryptoSymbol({ + public getLatestBarsForSymbol({ symbol, exchange, }: { @@ -373,11 +364,9 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta3/crypto/us/{symbol}/bars/latest", - path: { - symbol: symbol, - }, + url: "/v1beta3/crypto/us/latest/bars", query: { + symbols: symbol, exchange: exchange, }, }); @@ -393,7 +382,7 @@ export class CryptoDataService { * @returns MultiQuotesReponse Successful response * @throws ApiError */ - public getQuotesForMultipleCryptoSymbols({ + public getQuotesForMultipleSymbols({ symbols, start, end, @@ -446,7 +435,7 @@ export class CryptoDataService { * @returns LatestMultiQuotesResponse OK * @throws ApiError */ - public getLatestQuotesForMultipleCryptoSymbols({ + public getLatestQuotesForMultipleSymbols({ symbols, exchange, }: { @@ -475,7 +464,7 @@ export class CryptoDataService { * @returns LatestQuoteResponse Successful response * @throws ApiError */ - public getLatestQuoteForCryptoSymbol({ + public getLatestQuoteForSymbol({ symbol, exchange, }: { @@ -492,7 +481,7 @@ export class CryptoDataService { method: "GET", url: "/v1beta3/crypto/us/latest/quotes", query: { - symbols: [symbol], + symbols: symbol, exchange: exchange, }, }); @@ -504,7 +493,7 @@ export class CryptoDataService { * @returns MultiSnapshotResponse Successful response * @throws ApiError */ - public getSnapshotsForMultipleCryptoSymbols({ + public getSnapshotsForMultipleSymbols({ exchange, symbols, }: { @@ -533,7 +522,7 @@ export class CryptoDataService { * @returns Snapshot Successful response * @throws ApiError */ - public getSnapshotForCryptoSymbol({ + public getSnapshotForSymbol({ symbol, exchange, }: { @@ -548,86 +537,11 @@ export class CryptoDataService { }): CancelablePromise { return this.httpRequest.request({ method: "GET", - url: "/v1beta3/crypto/us/{symbol}/snapshot", - path: { - symbol: symbol, - }, + url: "/v1beta3/crypto/us/snapshot", query: { + symbols: symbol, exchange: exchange, }, }); } - - /** - * Get Latest XBBO for multiple crypto symbols - * Returns the latest XBBO for a given list crypto symbols that calculates the Best Bid and Offer across multiple exchanges. If exchanges is not specified then only the exchanges that can be traded on Alpaca are included in the calculation. - * @returns LatestMultiXBBOResponse OK - * @throws ApiError - */ - public getLatestXbboForMultipleCryptoSymbols({ - symbols, - exchanges, - }: { - /** - * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH - */ - symbols: string; - /** - * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchanges?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/xbbos/latest", - query: { - symbols: symbols, - exchanges: exchanges, - }, - }); - } - - /** - * Get Latest XBBO for a single crypto symbol - * Returns the XBBO for a crypto symbol that calculates the Best Bid and Offer across multiple exchanges. If exchanges is not specified then only the exchanges that can be traded on Alpaca are included in the calculation. - * @returns LatestXBBOResponse Successful response - * @throws ApiError - */ - public getLatestXbboForCryptoSymbol({ - symbol, - exchanges, - }: { - /** - * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. - */ - symbol: string; - /** - * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchanges?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/{symbol}/xbbo/latest", - path: { - symbol: symbol, - }, - query: { - exchanges: exchanges, - }, - }); - } - - /** - * Get list of crypto spreads per exchange - * Get list of crypto spreads for the different exchanges Alpaca supports in basis points. - * @returns CryptoSpreadsResponse OK - * @throws ApiError - */ - public getCryptoMetaSpreads(): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/meta/spreads", - }); - } } diff --git a/src/services/StockDataService.ts b/src/services/StockDataService.ts index 4aeedc3..0260409 100644 --- a/src/services/StockDataService.ts +++ b/src/services/StockDataService.ts @@ -14,7 +14,6 @@ import type { MultiBarsResponse } from "../models/MultiBarsResponse.js"; import type { MultiQuotesReponse } from "../models/MultiQuotesReponse.js"; import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse.js"; import type { MultiTradesResponse } from "../models/MultiTradesResponse.js"; -import type { QuotesResponse } from "../models/QuotesResponse.js"; import type { Snapshot } from "../models/Snapshot.js"; import type { TradesResponse } from "../models/TradesResponse.js"; @@ -520,7 +519,7 @@ export class StockDataService { * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { + }): CancelablePromise { return this.httpRequest.request({ method: "GET", url: "/v2/stocks/{symbol}/quotes", From 43ec1b46927c20a3c4c533aa1b2b151878d110ff Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 25 Jul 2023 15:45:50 -0600 Subject: [PATCH 39/55] no commit message --- package.json | 2 +- src/services/StockDataService.ts | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 6ec532a..3c9a7a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.8-alpha", + "version": "7.0.9-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/src/services/StockDataService.ts b/src/services/StockDataService.ts index 0260409..3616f5c 100644 --- a/src/services/StockDataService.ts +++ b/src/services/StockDataService.ts @@ -36,7 +36,7 @@ export class StockDataService { * @returns MultiBarsResponse Successful response * @throws ApiError */ - public getBarsForMultipleStockSymbols({ + public getBarsForMultipleSymbols({ symbols, timeframe, start, @@ -101,7 +101,7 @@ export class StockDataService { * @returns LatestMultiBarsResponse OK * @throws ApiError */ - public getLatestBarsForMultipleStockSymbols({ + public getLatestBarsForMultipleSymbols({ symbols, feed, }: { @@ -130,7 +130,7 @@ export class StockDataService { * @returns BarsResponse Successful response * @throws ApiError */ - public getBarsForStockSymbol({ + public getBarsForSymbol({ symbol, timeframe, start, @@ -197,7 +197,7 @@ export class StockDataService { * @returns LatestBarResponse OK * @throws ApiError */ - public getLatestBarForStockSymbol({ + public getLatestBarForSymbol({ symbol, feed, }: { @@ -232,7 +232,7 @@ export class StockDataService { * @returns MultiTradesResponse Successful response * @throws ApiError */ - public getTradesForMultipleStockSymbols({ + public getTradesForMultipleSymbols({ symbols, start, end, @@ -285,7 +285,7 @@ export class StockDataService { * @returns LatestMultiTradesResponse OK * @throws ApiError */ - public getLatestTradesForMultipleStockSymbols({ + public getLatestTradesForMultipleSymbols({ symbols, feed, }: { @@ -314,7 +314,7 @@ export class StockDataService { * @returns TradesResponse Successful response * @throws ApiError */ - public getTradesForStockSymbol({ + public getTradesForSymbol({ symbol, start, end, @@ -369,7 +369,7 @@ export class StockDataService { * @returns LatestTradeResponse Successful response * @throws ApiError */ - public getLatestTradeForStockSymbol({ + public getLatestTradeForSymbol({ symbol, feed, }: { @@ -405,7 +405,7 @@ export class StockDataService { * * @throws ApiError */ - public getQuotesForMultipleStockSymbols({ + public getQuotesForMultipleSymbols({ symbols, start, end, @@ -458,7 +458,7 @@ export class StockDataService { * @returns LatestMultiQuotesResponse OK * @throws ApiError */ - public getLatestQuotesForMultipleStockSymbols({ + public getLatestQuotesForMultipleSymbols({ symbols, feed, }: { @@ -487,7 +487,7 @@ export class StockDataService { * @returns QuotesResponse Successful response * @throws ApiError */ - public getQuotesForStockSymbol({ + public getQuotesForSymbol({ symbol, start, end, @@ -542,7 +542,7 @@ export class StockDataService { * @returns LatestQuoteResponse Successful response * @throws ApiError */ - public getLatestQuoteForStockSymbol({ + public getLatestQuoteForSymbol({ symbol, feed, }: { @@ -573,7 +573,7 @@ export class StockDataService { * @returns MultiSnapshotResponse Successful response * @throws ApiError */ - public getSnapshotsForMultipleStockSymbols({ + public getSnapshotsForMultipleSymbols({ symbols, feed, }: { @@ -602,7 +602,7 @@ export class StockDataService { * @returns Snapshot Successful response * @throws ApiError */ - public getSnapshotForStockSymbol({ + public getSnapshotForSymbol({ symbol, feed, }: { From 8d79a6709e70361d642ed7f739c5bb64921fc7ac Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Wed, 26 Jul 2023 08:25:06 -0600 Subject: [PATCH 40/55] refactor --- src/Client.ts | 100 +++++----- src/core/AxiosHttpRequest.ts | 25 --- src/core/BaseHttpRequest.ts | 13 -- src/core/OpenAPI.ts | 18 -- src/{models => entities}/Account.ts | 5 - .../AccountConfigurations.ts | 5 - src/{models => entities}/AccountStatus.ts | 5 - src/{models => entities}/ActivityType.ts | 5 - .../AddAssetToWatchlistRequest.ts | 5 - src/{models => entities}/AssetClass.ts | 5 - src/{models => entities}/Assets.ts | 5 - src/{models => entities}/Bar.ts | 0 src/{models => entities}/BarsResponse.ts | 5 - src/{models => entities}/Calendar.ts | 5 - .../CanceledOrderResponse.ts | 5 - src/{models => entities}/Clock.ts | 5 - src/{models => entities}/Exchange.ts | 5 - src/{models => entities}/ExchangesResponse.ts | 5 - src/{models => entities}/GetNewsResponse.ts | 5 - src/{models => entities}/LatestBarResponse.ts | 5 - .../LatestMultiBarsResponse.ts | 5 - src/entities/LatestMultiQuotesResponse.ts | 5 + src/entities/LatestMultiTradesResponse.ts | 5 + .../LatestQuoteResponse.ts | 5 - .../LatestTradeResponse.ts | 5 - src/{models => entities}/MarketMoverAsset.ts | 5 - .../MarketMoversResponse.ts | 5 - src/{models => entities}/MultiBarsResponse.ts | 5 - .../MultiQuotesReponse.ts | 5 - .../MultiSnapshotResponse.ts | 5 - .../MultiTradesResponse.ts | 5 - src/{models => entities}/News.ts | 5 - src/{models => entities}/NewsImage.ts | 5 - .../NonTradeActivities.ts | 5 - src/{models => entities}/Order.ts | 5 - src/{models => entities}/OrderClass.ts | 0 src/entities/OrderSide.ts | 10 + src/{models => entities}/OrderStatus.ts | 5 - src/{models => entities}/OrderType.ts | 5 - src/{models => entities}/PatchOrderRequest.ts | 5 - src/{models => entities}/PortfolioHistory.ts | 5 - src/{models => entities}/Position.ts | 5 - .../PositionClosedReponse.ts | 5 - src/{models => entities}/Quote.ts | 5 - src/{models => entities}/Snapshot.ts | 5 - src/{models => entities}/TimeInForce.ts | 5 - src/{models => entities}/Trade.ts | 5 - src/{models => entities}/TradesResponse.ts | 5 - src/{models => entities}/TradingActivities.ts | 5 - .../UpdateWatchlistRequest.ts | 5 - src/{models => entities}/Watchlist.ts | 5 - src/{models => entities}/XBBO.ts | 5 - src/{models => entities}/adjustment.ts | 5 - src/{models => entities}/crypto_exchange.ts | 5 - src/{models => entities}/crypto_exchanges.ts | 5 - src/{models => entities}/crypto_symbol.ts | 5 - src/{models => entities}/crypto_symbols.ts | 5 - src/{models => entities}/end.ts | 5 - src/{models => entities}/feed.ts | 5 - src/entities/limit.ts | 4 + src/{models => entities}/page_token.ts | 5 - src/{models => entities}/start.ts | 5 - src/entities/stock_symbol.ts | 4 + src/entities/stock_symbols.ts | 4 + src/{models => entities}/timeframe.ts | 5 - src/index.ts | 166 ++++++++-------- src/models/LatestMultiQuotesResponse.ts | 10 - src/models/LatestMultiTradesResponse.ts | 10 - src/models/OrderSide.ts | 15 -- src/models/limit.ts | 9 - src/models/stock_symbol.ts | 9 - src/models/stock_symbols.ts | 9 - src/paths/account.ts | 187 ++++++++++++++++++ .../AssetsService.ts => paths/assets.ts} | 12 +- .../CalendarService.ts => paths/calendar.ts} | 12 +- .../ClockService.ts => paths/clock.ts} | 12 +- .../CryptoDataService.ts => paths/crypto.ts} | 36 ++-- .../LogoService.ts => paths/logos.ts} | 10 +- .../NewsService.ts => paths/news.ts} | 12 +- .../OrdersService.ts => paths/orders.ts} | 16 +- .../positions.ts} | 16 +- .../ScreenerService.ts => paths/screener.ts} | 12 +- .../StockDataService.ts => paths/stocks.ts} | 43 ++-- .../watchlists.ts} | 14 +- src/{core => rest}/ApiError.ts | 8 +- src/{core => rest}/ApiRequestOptions.ts | 4 - src/{core => rest}/ApiResult.ts | 4 - src/rest/AxiosHttpRequest.ts | 21 ++ src/rest/BaseHttpRequest.ts | 9 + src/{core => rest}/CancelablePromise.ts | 4 - src/{core => rest}/request.ts | 16 +- src/services/AccountActivitiesService.ts | 103 ---------- src/services/AccountConfigurationsService.ts | 44 ----- src/services/AccountService.ts | 25 --- src/services/PortfolioHistoryService.ts | 53 ----- 95 files changed, 468 insertions(+), 886 deletions(-) delete mode 100644 src/core/AxiosHttpRequest.ts delete mode 100644 src/core/BaseHttpRequest.ts delete mode 100644 src/core/OpenAPI.ts rename src/{models => entities}/Account.ts (97%) rename src/{models => entities}/AccountConfigurations.ts (91%) rename src/{models => entities}/AccountStatus.ts (88%) rename src/{models => entities}/ActivityType.ts (93%) rename src/{models => entities}/AddAssetToWatchlistRequest.ts (59%) rename src/{models => entities}/AssetClass.ts (56%) rename src/{models => entities}/Assets.ts (92%) rename src/{models => entities}/Bar.ts (100%) rename src/{models => entities}/BarsResponse.ts (66%) rename src/{models => entities}/Calendar.ts (76%) rename src/{models => entities}/CanceledOrderResponse.ts (60%) rename src/{models => entities}/Clock.ts (69%) rename src/{models => entities}/Exchange.ts (70%) rename src/{models => entities}/ExchangesResponse.ts (63%) rename src/{models => entities}/GetNewsResponse.ts (56%) rename src/{models => entities}/LatestBarResponse.ts (68%) rename src/{models => entities}/LatestMultiBarsResponse.ts (64%) create mode 100644 src/entities/LatestMultiQuotesResponse.ts create mode 100644 src/entities/LatestMultiTradesResponse.ts rename src/{models => entities}/LatestQuoteResponse.ts (68%) rename src/{models => entities}/LatestTradeResponse.ts (71%) rename src/{models => entities}/MarketMoverAsset.ts (73%) rename src/{models => entities}/MarketMoversResponse.ts (82%) rename src/{models => entities}/MultiBarsResponse.ts (84%) rename src/{models => entities}/MultiQuotesReponse.ts (85%) rename src/{models => entities}/MultiSnapshotResponse.ts (72%) rename src/{models => entities}/MultiTradesResponse.ts (83%) rename src/{models => entities}/News.ts (88%) rename src/{models => entities}/NewsImage.ts (80%) rename src/{models => entities}/NonTradeActivities.ts (87%) rename src/{models => entities}/Order.ts (95%) rename src/{models => entities}/OrderClass.ts (100%) create mode 100644 src/entities/OrderSide.ts rename src/{models => entities}/OrderStatus.ts (96%) rename src/{models => entities}/OrderType.ts (68%) rename src/{models => entities}/PatchOrderRequest.ts (83%) rename src/{models => entities}/PortfolioHistory.ts (82%) rename src/{models => entities}/Position.ts (92%) rename src/{models => entities}/PositionClosedReponse.ts (70%) rename src/{models => entities}/Quote.ts (84%) rename src/{models => entities}/Snapshot.ts (75%) rename src/{models => entities}/TimeInForce.ts (95%) rename src/{models => entities}/Trade.ts (80%) rename src/{models => entities}/TradesResponse.ts (76%) rename src/{models => entities}/TradingActivities.ts (90%) rename src/{models => entities}/UpdateWatchlistRequest.ts (62%) rename src/{models => entities}/Watchlist.ts (83%) rename src/{models => entities}/XBBO.ts (77%) rename src/{models => entities}/adjustment.ts (56%) rename src/{models => entities}/crypto_exchange.ts (59%) rename src/{models => entities}/crypto_exchanges.ts (56%) rename src/{models => entities}/crypto_symbol.ts (58%) rename src/{models => entities}/crypto_symbols.ts (61%) rename src/{models => entities}/end.ts (50%) rename src/{models => entities}/feed.ts (61%) create mode 100644 src/entities/limit.ts rename src/{models => entities}/page_token.ts (59%) rename src/{models => entities}/start.ts (51%) create mode 100644 src/entities/stock_symbol.ts create mode 100644 src/entities/stock_symbols.ts rename src/{models => entities}/timeframe.ts (58%) delete mode 100644 src/models/LatestMultiQuotesResponse.ts delete mode 100644 src/models/LatestMultiTradesResponse.ts delete mode 100644 src/models/OrderSide.ts delete mode 100644 src/models/limit.ts delete mode 100644 src/models/stock_symbol.ts delete mode 100644 src/models/stock_symbols.ts create mode 100644 src/paths/account.ts rename src/{services/AssetsService.ts => paths/assets.ts} (85%) rename src/{services/CalendarService.ts => paths/calendar.ts} (78%) rename src/{services/ClockService.ts => paths/clock.ts} (58%) rename src/{services/CryptoDataService.ts => paths/crypto.ts} (93%) rename src/{services/LogoService.ts => paths/logos.ts} (79%) rename src/{services/NewsService.ts => paths/news.ts} (84%) rename src/{services/OrdersService.ts => paths/orders.ts} (92%) rename src/{services/PositionsService.ts => paths/positions.ts} (86%) rename src/{services/ScreenerService.ts => paths/screener.ts} (70%) rename src/{services/StockDataService.ts => paths/stocks.ts} (92%) rename src/{services/WatchlistsService.ts => paths/watchlists.ts} (93%) rename src/{core => rest}/ApiError.ts (68%) rename src/{core => rest}/ApiRequestOptions.ts (79%) rename src/{core => rest}/ApiResult.ts (54%) create mode 100644 src/rest/AxiosHttpRequest.ts create mode 100644 src/rest/BaseHttpRequest.ts rename src/{core => rest}/CancelablePromise.ts (96%) rename src/{core => rest}/request.ts (94%) delete mode 100644 src/services/AccountActivitiesService.ts delete mode 100644 src/services/AccountConfigurationsService.ts delete mode 100644 src/services/AccountService.ts delete mode 100644 src/services/PortfolioHistoryService.ts diff --git a/src/Client.ts b/src/Client.ts index 5188c2f..29359ce 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,23 +1,35 @@ -import type { OpenAPIConfig } from "./core/OpenAPI.js"; -import type { BaseHttpRequest } from "./core/BaseHttpRequest.js"; +import type { BaseHttpRequest } from "./rest/BaseHttpRequest"; +import type { ApiRequestOptions } from "./rest/ApiRequestOptions"; -import { AxiosHttpRequest } from "./core/AxiosHttpRequest.js"; +import { AxiosHttpRequest } from "./rest/AxiosHttpRequest"; +import { Logos } from "./paths/logos"; +import { News } from "./paths/news"; +import { Clock } from "./paths/clock"; +import { Orders } from "./paths/orders"; +import { Assets } from "./paths/assets"; +import { AccountService } from "./paths/AccountService.js"; +import { Calendar } from "./paths/calendar"; +import { Crypto } from "./paths/crypto"; +import { Stocks } from "./paths/stocks"; +import { Screener } from "./paths/screener"; +import { Positions } from "./paths/positions"; +import { Watchlists } from "./paths/watchlists"; +import { Account } from "./paths/account"; +import { PortfolioHistoryService } from "./paths/PortfolioHistoryService.js"; +import { AccountConfigurations } from "./paths/AccountConfigurations"; -import { LogoService } from "./services/LogoService.js"; -import { NewsService } from "./services/NewsService.js"; -import { ClockService } from "./services/ClockService.js"; -import { OrdersService } from "./services/OrdersService.js"; -import { AssetsService } from "./services/AssetsService.js"; -import { AccountService } from "./services/AccountService.js"; -import { CalendarService } from "./services/CalendarService.js"; -import { CryptoDataService } from "./services/CryptoDataService.js"; -import { StockDataService } from "./services/StockDataService.js"; -import { ScreenerService } from "./services/ScreenerService.js"; -import { PositionsService } from "./services/PositionsService.js"; -import { WatchlistsService } from "./services/WatchlistsService.js"; -import { AccountActivitiesService } from "./services/AccountActivitiesService.js"; -import { PortfolioHistoryService } from "./services/PortfolioHistoryService.js"; -import { AccountConfigurationsService } from "./services/AccountConfigurationsService.js"; +type Resolver = (options: ApiRequestOptions) => Promise; +type Headers = Record; + +export type OpenAPIConfig = { + BASE: string; + HEADERS?: Headers | Resolver | undefined; +}; + +export const OpenAPI: OpenAPIConfig = { + BASE: "https://paper-api.alpaca.markets", + HEADERS: undefined, +}; type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest; @@ -31,18 +43,18 @@ interface ClientOptions { // bundle all account services into one class for convenience class AccountServices extends AccountService { - activities: AccountActivitiesService; - configurations: AccountConfigurationsService; - positions: PositionsService; - orders: OrdersService; + activities: Account; + configurations: AccountConfigurations; + positions: Positions; + orders: Orders; portfolioHistory: PortfolioHistoryService; constructor(httpRequest: BaseHttpRequest) { super(httpRequest); - this.activities = new AccountActivitiesService(httpRequest); - this.configurations = new AccountConfigurationsService(httpRequest); - this.positions = new PositionsService(httpRequest); - this.orders = new OrdersService(httpRequest); + this.activities = new Account(httpRequest); + this.configurations = new AccountConfigurations(httpRequest); + this.positions = new Positions(httpRequest); + this.orders = new Orders(httpRequest); this.portfolioHistory = new PortfolioHistoryService(httpRequest); } } @@ -50,15 +62,15 @@ class AccountServices extends AccountService { export class Client { private readonly request: BaseHttpRequest; - public readonly calendar: CalendarService; - public readonly clock: ClockService; - public readonly assets: AssetsService; - public readonly crypto: CryptoDataService; - public readonly logo: LogoService; - public readonly news: NewsService; - public readonly screener: ScreenerService; - public readonly stocks: StockDataService; - public readonly watchlists: WatchlistsService; + public readonly calendar: Calendar; + public readonly clock: Clock; + public readonly assets: Assets; + public readonly crypto: Crypto; + public readonly logo: Logos; + public readonly news: News; + public readonly screener: Screener; + public readonly stocks: Stocks; + public readonly watchlists: Watchlists; public readonly account: AccountServices; constructor( @@ -81,14 +93,14 @@ export class Client { }); this.account = new AccountServices(this.request); - this.watchlists = new WatchlistsService(this.request); - this.calendar = new CalendarService(this.request); - this.clock = new ClockService(this.request); - this.assets = new AssetsService(this.request); - this.crypto = new CryptoDataService(this.request); - this.logo = new LogoService(this.request); - this.news = new NewsService(this.request); - this.screener = new ScreenerService(this.request); - this.stocks = new StockDataService(this.request); + this.watchlists = new Watchlists(this.request); + this.calendar = new Calendar(this.request); + this.clock = new Clock(this.request); + this.assets = new Assets(this.request); + this.crypto = new Crypto(this.request); + this.logo = new Logos(this.request); + this.news = new News(this.request); + this.screener = new Screener(this.request); + this.stocks = new Stocks(this.request); } } diff --git a/src/core/AxiosHttpRequest.ts b/src/core/AxiosHttpRequest.ts deleted file mode 100644 index 3c01a75..0000000 --- a/src/core/AxiosHttpRequest.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ApiRequestOptions } from "./ApiRequestOptions.js"; -import { BaseHttpRequest } from "./BaseHttpRequest.js"; -import type { CancelablePromise } from "./CancelablePromise.js"; -import type { OpenAPIConfig } from "./OpenAPI.js"; -import { request as __request } from "./request.js"; - -export class AxiosHttpRequest extends BaseHttpRequest { - constructor(config: OpenAPIConfig) { - super(config); - } - - /** - * Request method - * @param options The request options from the service - * @returns CancelablePromise - * @throws ApiError - */ - public override request(options: ApiRequestOptions): CancelablePromise { - return __request(this.config, options); - } -} diff --git a/src/core/BaseHttpRequest.ts b/src/core/BaseHttpRequest.ts deleted file mode 100644 index 3feabb2..0000000 --- a/src/core/BaseHttpRequest.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ApiRequestOptions } from "./ApiRequestOptions.js"; -import type { CancelablePromise } from "./CancelablePromise.js"; -import type { OpenAPIConfig } from "./OpenAPI.js"; - -export abstract class BaseHttpRequest { - constructor(public readonly config: OpenAPIConfig) {} - - public abstract request(options: ApiRequestOptions): CancelablePromise; -} diff --git a/src/core/OpenAPI.ts b/src/core/OpenAPI.ts deleted file mode 100644 index 09413df..0000000 --- a/src/core/OpenAPI.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ApiRequestOptions } from "./ApiRequestOptions.js"; - -type Resolver = (options: ApiRequestOptions) => Promise; -type Headers = Record; - -export type OpenAPIConfig = { - BASE: string; - HEADERS?: Headers | Resolver | undefined; -}; - -export const OpenAPI: OpenAPIConfig = { - BASE: "https://paper-api.alpaca.markets", - HEADERS: undefined, -}; diff --git a/src/models/Account.ts b/src/entities/Account.ts similarity index 97% rename from src/models/Account.ts rename to src/entities/Account.ts index 8ef5423..3410bd2 100644 --- a/src/models/Account.ts +++ b/src/entities/Account.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { AccountStatus } from "./AccountStatus.js"; /** diff --git a/src/models/AccountConfigurations.ts b/src/entities/AccountConfigurations.ts similarity index 91% rename from src/models/AccountConfigurations.ts rename to src/entities/AccountConfigurations.ts index 9b6e677..0b7543d 100644 --- a/src/models/AccountConfigurations.ts +++ b/src/entities/AccountConfigurations.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * The account configuration API provides custom configurations about your trading account settings. These configurations control various allow you to modify settings to suit your trading needs. */ diff --git a/src/models/AccountStatus.ts b/src/entities/AccountStatus.ts similarity index 88% rename from src/models/AccountStatus.ts rename to src/entities/AccountStatus.ts index d28d1de..775d46c 100644 --- a/src/models/AccountStatus.ts +++ b/src/entities/AccountStatus.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * An enum representing the various possible account status values. * diff --git a/src/models/ActivityType.ts b/src/entities/ActivityType.ts similarity index 93% rename from src/models/ActivityType.ts rename to src/entities/ActivityType.ts index 8ea09c7..dd2feab 100644 --- a/src/models/ActivityType.ts +++ b/src/entities/ActivityType.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * - FILL * Order fills (both partial and full fills) diff --git a/src/models/AddAssetToWatchlistRequest.ts b/src/entities/AddAssetToWatchlistRequest.ts similarity index 59% rename from src/models/AddAssetToWatchlistRequest.ts rename to src/entities/AddAssetToWatchlistRequest.ts index 7bca95c..e8d482f 100644 --- a/src/models/AddAssetToWatchlistRequest.ts +++ b/src/entities/AddAssetToWatchlistRequest.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Append an asset for the symbol to the end of watchlist asset list */ diff --git a/src/models/AssetClass.ts b/src/entities/AssetClass.ts similarity index 56% rename from src/models/AssetClass.ts rename to src/entities/AssetClass.ts index 4b2ad9d..921ceda 100644 --- a/src/models/AssetClass.ts +++ b/src/entities/AssetClass.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Represents what class of asset this is. Currently only supports `us_equity` or `crypto` */ diff --git a/src/models/Assets.ts b/src/entities/Assets.ts similarity index 92% rename from src/models/Assets.ts rename to src/entities/Assets.ts index c805094..105832e 100644 --- a/src/models/Assets.ts +++ b/src/entities/Assets.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { AssetClass } from "./AssetClass.js"; import type { Exchange } from "./Exchange.js"; diff --git a/src/models/Bar.ts b/src/entities/Bar.ts similarity index 100% rename from src/models/Bar.ts rename to src/entities/Bar.ts diff --git a/src/models/BarsResponse.ts b/src/entities/BarsResponse.ts similarity index 66% rename from src/models/BarsResponse.ts rename to src/entities/BarsResponse.ts index ffa38e4..fd24d73 100644 --- a/src/models/BarsResponse.ts +++ b/src/entities/BarsResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Bar } from "./Bar.js"; export type BarsResponse = { diff --git a/src/models/Calendar.ts b/src/entities/Calendar.ts similarity index 76% rename from src/models/Calendar.ts rename to src/entities/Calendar.ts index fa3a002..f1e3500 100644 --- a/src/models/Calendar.ts +++ b/src/entities/Calendar.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - export type Calendar = { /** * Date string in “%Y-%m-%d” format diff --git a/src/models/CanceledOrderResponse.ts b/src/entities/CanceledOrderResponse.ts similarity index 60% rename from src/models/CanceledOrderResponse.ts rename to src/entities/CanceledOrderResponse.ts index 8920e7e..cecbb86 100644 --- a/src/models/CanceledOrderResponse.ts +++ b/src/entities/CanceledOrderResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Represents the result of a request to cancel and order */ diff --git a/src/models/Clock.ts b/src/entities/Clock.ts similarity index 69% rename from src/models/Clock.ts rename to src/entities/Clock.ts index cd5dca0..2e9f15b 100644 --- a/src/models/Clock.ts +++ b/src/entities/Clock.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - export type Clock = { /** * Current timestamp diff --git a/src/models/Exchange.ts b/src/entities/Exchange.ts similarity index 70% rename from src/models/Exchange.ts rename to src/entities/Exchange.ts index fea5301..1b9c529 100644 --- a/src/models/Exchange.ts +++ b/src/entities/Exchange.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Represents the current exchanges Alpaca supports. List is currently: * diff --git a/src/models/ExchangesResponse.ts b/src/entities/ExchangesResponse.ts similarity index 63% rename from src/models/ExchangesResponse.ts rename to src/entities/ExchangesResponse.ts index 8f1fce1..5016231 100644 --- a/src/models/ExchangesResponse.ts +++ b/src/entities/ExchangesResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Returns an object representing the exchanges we support. The keys are the short form codes you will see in our responses and the values are their respective full names. */ diff --git a/src/models/GetNewsResponse.ts b/src/entities/GetNewsResponse.ts similarity index 56% rename from src/models/GetNewsResponse.ts rename to src/entities/GetNewsResponse.ts index 2eda66e..f126e4c 100644 --- a/src/models/GetNewsResponse.ts +++ b/src/entities/GetNewsResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { News } from "./News.js"; export type GetNewsResponse = { diff --git a/src/models/LatestBarResponse.ts b/src/entities/LatestBarResponse.ts similarity index 68% rename from src/models/LatestBarResponse.ts rename to src/entities/LatestBarResponse.ts index 8683ce2..8200c51 100644 --- a/src/models/LatestBarResponse.ts +++ b/src/entities/LatestBarResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Bar } from "./Bar.js"; /** diff --git a/src/models/LatestMultiBarsResponse.ts b/src/entities/LatestMultiBarsResponse.ts similarity index 64% rename from src/models/LatestMultiBarsResponse.ts rename to src/entities/LatestMultiBarsResponse.ts index 8e90505..3aede63 100644 --- a/src/models/LatestMultiBarsResponse.ts +++ b/src/entities/LatestMultiBarsResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Bar } from "./Bar.js"; /** diff --git a/src/entities/LatestMultiQuotesResponse.ts b/src/entities/LatestMultiQuotesResponse.ts new file mode 100644 index 0000000..d6a9424 --- /dev/null +++ b/src/entities/LatestMultiQuotesResponse.ts @@ -0,0 +1,5 @@ +import type { Quote } from "./Quote.js"; + +export type LatestMultiQuotesResponse = { + quotes: Record; +}; diff --git a/src/entities/LatestMultiTradesResponse.ts b/src/entities/LatestMultiTradesResponse.ts new file mode 100644 index 0000000..cfcab26 --- /dev/null +++ b/src/entities/LatestMultiTradesResponse.ts @@ -0,0 +1,5 @@ +import type { Trade } from "./Trade.js"; + +export type LatestMultiTradesResponse = { + trades: Record; +}; diff --git a/src/models/LatestQuoteResponse.ts b/src/entities/LatestQuoteResponse.ts similarity index 68% rename from src/models/LatestQuoteResponse.ts rename to src/entities/LatestQuoteResponse.ts index e71323e..0592975 100644 --- a/src/models/LatestQuoteResponse.ts +++ b/src/entities/LatestQuoteResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Quote } from "./Quote.js"; /** diff --git a/src/models/LatestTradeResponse.ts b/src/entities/LatestTradeResponse.ts similarity index 71% rename from src/models/LatestTradeResponse.ts rename to src/entities/LatestTradeResponse.ts index 34c38a2..6300987 100644 --- a/src/models/LatestTradeResponse.ts +++ b/src/entities/LatestTradeResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Trade } from "./Trade.js"; /** diff --git a/src/models/MarketMoverAsset.ts b/src/entities/MarketMoverAsset.ts similarity index 73% rename from src/models/MarketMoverAsset.ts rename to src/entities/MarketMoverAsset.ts index bcf2297..a5b5024 100644 --- a/src/models/MarketMoverAsset.ts +++ b/src/entities/MarketMoverAsset.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Name or source of given news article */ diff --git a/src/models/MarketMoversResponse.ts b/src/entities/MarketMoversResponse.ts similarity index 82% rename from src/models/MarketMoversResponse.ts rename to src/entities/MarketMoversResponse.ts index cabd129..64c28f9 100644 --- a/src/models/MarketMoversResponse.ts +++ b/src/entities/MarketMoversResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { MarketMoverAsset } from "./MarketMoverAsset.js"; /** diff --git a/src/models/MultiBarsResponse.ts b/src/entities/MultiBarsResponse.ts similarity index 84% rename from src/models/MultiBarsResponse.ts rename to src/entities/MultiBarsResponse.ts index 1a89ddd..0922719 100644 --- a/src/models/MultiBarsResponse.ts +++ b/src/entities/MultiBarsResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Bar } from "./Bar.js"; /** diff --git a/src/models/MultiQuotesReponse.ts b/src/entities/MultiQuotesReponse.ts similarity index 85% rename from src/models/MultiQuotesReponse.ts rename to src/entities/MultiQuotesReponse.ts index 1d6252c..e2d7cf0 100644 --- a/src/models/MultiQuotesReponse.ts +++ b/src/entities/MultiQuotesReponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Quote } from "./Quote.js"; /** diff --git a/src/models/MultiSnapshotResponse.ts b/src/entities/MultiSnapshotResponse.ts similarity index 72% rename from src/models/MultiSnapshotResponse.ts rename to src/entities/MultiSnapshotResponse.ts index 48b5f0e..38e3b21 100644 --- a/src/models/MultiSnapshotResponse.ts +++ b/src/entities/MultiSnapshotResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Snapshot } from "./Snapshot.js"; /** diff --git a/src/models/MultiTradesResponse.ts b/src/entities/MultiTradesResponse.ts similarity index 83% rename from src/models/MultiTradesResponse.ts rename to src/entities/MultiTradesResponse.ts index 5ca1c5e..0785bf9 100644 --- a/src/models/MultiTradesResponse.ts +++ b/src/entities/MultiTradesResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Trade } from "./Trade.js"; /** diff --git a/src/models/News.ts b/src/entities/News.ts similarity index 88% rename from src/models/News.ts rename to src/entities/News.ts index 4b19bdd..eab6294 100644 --- a/src/models/News.ts +++ b/src/entities/News.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { NewsImage } from "./NewsImage.js"; /** diff --git a/src/models/NewsImage.ts b/src/entities/NewsImage.ts similarity index 80% rename from src/models/NewsImage.ts rename to src/entities/NewsImage.ts index 52e2714..e27d526 100644 --- a/src/models/NewsImage.ts +++ b/src/entities/NewsImage.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * A model representing images for news article. simply a url to the image along with a size parameter suggesting the display size of the image */ diff --git a/src/models/NonTradeActivities.ts b/src/entities/NonTradeActivities.ts similarity index 87% rename from src/models/NonTradeActivities.ts rename to src/entities/NonTradeActivities.ts index 7a657d1..5354783 100644 --- a/src/models/NonTradeActivities.ts +++ b/src/entities/NonTradeActivities.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { ActivityType } from "./ActivityType.js"; export type NonTradeActivities = { diff --git a/src/models/Order.ts b/src/entities/Order.ts similarity index 95% rename from src/models/Order.ts rename to src/entities/Order.ts index 41e4e0b..9ea2195 100644 --- a/src/models/Order.ts +++ b/src/entities/Order.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { AssetClass } from "./AssetClass.js"; import type { OrderClass } from "./OrderClass.js"; import type { OrderSide } from "./OrderSide.js"; diff --git a/src/models/OrderClass.ts b/src/entities/OrderClass.ts similarity index 100% rename from src/models/OrderClass.ts rename to src/entities/OrderClass.ts diff --git a/src/entities/OrderSide.ts b/src/entities/OrderSide.ts new file mode 100644 index 0000000..175cd9f --- /dev/null +++ b/src/entities/OrderSide.ts @@ -0,0 +1,10 @@ +/** + * Represents which side this order was on: + * + * - buy + * - sell + */ +export enum OrderSide { + BUY = "buy", + SELL = "sell", +} diff --git a/src/models/OrderStatus.ts b/src/entities/OrderStatus.ts similarity index 96% rename from src/models/OrderStatus.ts rename to src/entities/OrderStatus.ts index ea8c445..e0bd965 100644 --- a/src/models/OrderStatus.ts +++ b/src/entities/OrderStatus.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * An order executed through Alpaca can experience several status changes during its lifecycle. The most common statuses are described in detail below: * diff --git a/src/models/OrderType.ts b/src/entities/OrderType.ts similarity index 68% rename from src/models/OrderType.ts rename to src/entities/OrderType.ts index 538fe32..ddf5540 100644 --- a/src/models/OrderType.ts +++ b/src/entities/OrderType.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Represents the types of orders Alpaca currently supports * diff --git a/src/models/PatchOrderRequest.ts b/src/entities/PatchOrderRequest.ts similarity index 83% rename from src/models/PatchOrderRequest.ts rename to src/entities/PatchOrderRequest.ts index e36fdbf..ed10f20 100644 --- a/src/models/PatchOrderRequest.ts +++ b/src/entities/PatchOrderRequest.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { TimeInForce } from "./TimeInForce.js"; /** diff --git a/src/models/PortfolioHistory.ts b/src/entities/PortfolioHistory.ts similarity index 82% rename from src/models/PortfolioHistory.ts rename to src/entities/PortfolioHistory.ts index 4cd2663..1a70e0e 100644 --- a/src/models/PortfolioHistory.ts +++ b/src/entities/PortfolioHistory.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - export type PortfolioHistory = { /** * time of each data element, left-labeled (the beginning of time window) diff --git a/src/models/Position.ts b/src/entities/Position.ts similarity index 92% rename from src/models/Position.ts rename to src/entities/Position.ts index 4068c2f..dc9b58a 100644 --- a/src/models/Position.ts +++ b/src/entities/Position.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { AssetClass } from "./AssetClass.js"; import type { Exchange } from "./Exchange.js"; diff --git a/src/models/PositionClosedReponse.ts b/src/entities/PositionClosedReponse.ts similarity index 70% rename from src/models/PositionClosedReponse.ts rename to src/entities/PositionClosedReponse.ts index 7d15532..d1b53da 100644 --- a/src/models/PositionClosedReponse.ts +++ b/src/entities/PositionClosedReponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Order } from "./Order.js"; /** diff --git a/src/models/Quote.ts b/src/entities/Quote.ts similarity index 84% rename from src/models/Quote.ts rename to src/entities/Quote.ts index 849533f..91c172c 100644 --- a/src/models/Quote.ts +++ b/src/entities/Quote.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * The Quotes API provides NBBO quotes for a given ticker symbol at a specified date. * diff --git a/src/models/Snapshot.ts b/src/entities/Snapshot.ts similarity index 75% rename from src/models/Snapshot.ts rename to src/entities/Snapshot.ts index 5663c09..0ee582e 100644 --- a/src/models/Snapshot.ts +++ b/src/entities/Snapshot.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Bar } from "./Bar.js"; import type { Quote } from "./Quote.js"; import type { Trade } from "./Trade.js"; diff --git a/src/models/TimeInForce.ts b/src/entities/TimeInForce.ts similarity index 95% rename from src/models/TimeInForce.ts rename to src/entities/TimeInForce.ts index eaf316d..ad9fda8 100644 --- a/src/models/TimeInForce.ts +++ b/src/entities/TimeInForce.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Note: For Crypto Trading, Alpaca supports the following Time-In-Force designations: day, gtc, ioc and fok. OPG and CLS are not supported. * diff --git a/src/models/Trade.ts b/src/entities/Trade.ts similarity index 80% rename from src/models/Trade.ts rename to src/entities/Trade.ts index f4cf327..c6f33a0 100644 --- a/src/models/Trade.ts +++ b/src/entities/Trade.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * A model representing a trade */ diff --git a/src/models/TradesResponse.ts b/src/entities/TradesResponse.ts similarity index 76% rename from src/models/TradesResponse.ts rename to src/entities/TradesResponse.ts index 8129986..5580982 100644 --- a/src/models/TradesResponse.ts +++ b/src/entities/TradesResponse.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Trade } from "./Trade.js"; /** diff --git a/src/models/TradingActivities.ts b/src/entities/TradingActivities.ts similarity index 90% rename from src/models/TradingActivities.ts rename to src/entities/TradingActivities.ts index 3adc964..deba394 100644 --- a/src/models/TradingActivities.ts +++ b/src/entities/TradingActivities.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { ActivityType } from "./ActivityType.js"; import type { OrderStatus } from "./OrderStatus.js"; diff --git a/src/models/UpdateWatchlistRequest.ts b/src/entities/UpdateWatchlistRequest.ts similarity index 62% rename from src/models/UpdateWatchlistRequest.ts rename to src/entities/UpdateWatchlistRequest.ts index 24ba98e..917218a 100644 --- a/src/models/UpdateWatchlistRequest.ts +++ b/src/entities/UpdateWatchlistRequest.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Request format used for creating a new watchlist or updating an existing watchlist with a set of assets and name. */ diff --git a/src/models/Watchlist.ts b/src/entities/Watchlist.ts similarity index 83% rename from src/models/Watchlist.ts rename to src/entities/Watchlist.ts index 68b8916..26a85a1 100644 --- a/src/models/Watchlist.ts +++ b/src/entities/Watchlist.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - import type { Assets } from "./Assets.js"; /** diff --git a/src/models/XBBO.ts b/src/entities/XBBO.ts similarity index 77% rename from src/models/XBBO.ts rename to src/entities/XBBO.ts index 3130cf6..a1c1ac0 100644 --- a/src/models/XBBO.ts +++ b/src/entities/XBBO.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * XBBO or Cross Best Bid and Offer represents the Best Bid and Offer for an exchange */ diff --git a/src/models/adjustment.ts b/src/entities/adjustment.ts similarity index 56% rename from src/models/adjustment.ts rename to src/entities/adjustment.ts index a111b34..38a43c6 100644 --- a/src/models/adjustment.ts +++ b/src/entities/adjustment.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * specifies the corporate action adjustment(s) for bars data */ diff --git a/src/models/crypto_exchange.ts b/src/entities/crypto_exchange.ts similarity index 59% rename from src/models/crypto_exchange.ts rename to src/entities/crypto_exchange.ts index d5b14f5..b441010 100644 --- a/src/models/crypto_exchange.ts +++ b/src/entities/crypto_exchange.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ diff --git a/src/models/crypto_exchanges.ts b/src/entities/crypto_exchanges.ts similarity index 56% rename from src/models/crypto_exchanges.ts rename to src/entities/crypto_exchanges.ts index cbaa295..70d4ee6 100644 --- a/src/models/crypto_exchanges.ts +++ b/src/entities/crypto_exchanges.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ diff --git a/src/models/crypto_symbol.ts b/src/entities/crypto_symbol.ts similarity index 58% rename from src/models/crypto_symbol.ts rename to src/entities/crypto_symbol.ts index 07ed689..747ce1b 100644 --- a/src/models/crypto_symbol.ts +++ b/src/entities/crypto_symbol.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. */ diff --git a/src/models/crypto_symbols.ts b/src/entities/crypto_symbols.ts similarity index 61% rename from src/models/crypto_symbols.ts rename to src/entities/crypto_symbols.ts index 3add23a..f260c07 100644 --- a/src/models/crypto_symbols.ts +++ b/src/entities/crypto_symbols.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH */ diff --git a/src/models/end.ts b/src/entities/end.ts similarity index 50% rename from src/models/end.ts rename to src/entities/end.ts index 5c7331c..ac0983b 100644 --- a/src/models/end.ts +++ b/src/entities/end.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. */ diff --git a/src/models/feed.ts b/src/entities/feed.ts similarity index 61% rename from src/models/feed.ts rename to src/entities/feed.ts index b429056..58f120e 100644 --- a/src/models/feed.ts +++ b/src/entities/feed.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ diff --git a/src/entities/limit.ts b/src/entities/limit.ts new file mode 100644 index 0000000..c1724af --- /dev/null +++ b/src/entities/limit.ts @@ -0,0 +1,4 @@ +/** + * Number of data points to return. Must be in range 1-10000, defaults to 1000. + */ +export type limit = number; diff --git a/src/models/page_token.ts b/src/entities/page_token.ts similarity index 59% rename from src/models/page_token.ts rename to src/entities/page_token.ts index 2b8b49b..107ff95 100644 --- a/src/models/page_token.ts +++ b/src/entities/page_token.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. */ diff --git a/src/models/start.ts b/src/entities/start.ts similarity index 51% rename from src/models/start.ts rename to src/entities/start.ts index 7c4f0f2..8f4bff2 100644 --- a/src/models/start.ts +++ b/src/entities/start.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. */ diff --git a/src/entities/stock_symbol.ts b/src/entities/stock_symbol.ts new file mode 100644 index 0000000..7542329 --- /dev/null +++ b/src/entities/stock_symbol.ts @@ -0,0 +1,4 @@ +/** + * The stock ticker symbol to query for. + */ +export type stock_symbol = string; diff --git a/src/entities/stock_symbols.ts b/src/entities/stock_symbols.ts new file mode 100644 index 0000000..106124d --- /dev/null +++ b/src/entities/stock_symbols.ts @@ -0,0 +1,4 @@ +/** + * The comma-separated list of stock ticker symbols to query for. + */ +export type stock_symbols = string; diff --git a/src/models/timeframe.ts b/src/entities/timeframe.ts similarity index 58% rename from src/models/timeframe.ts rename to src/entities/timeframe.ts index 884b115..519a291 100644 --- a/src/models/timeframe.ts +++ b/src/entities/timeframe.ts @@ -1,8 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - /** * Timeframe for the aggregation. Values are customizeable, frequently used examples: 1Min, 15Min, 1Hour, 1Day. Limits: 1Min-59Min, 1Hour-23Hour. */ diff --git a/src/index.ts b/src/index.ts index f694839..7fabc30 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,91 +1,87 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ export { Client } from "./Client.js"; -export { ApiError } from "./core/ApiError.js"; -export { BaseHttpRequest } from "./core/BaseHttpRequest.js"; -export { CancelablePromise, CancelError } from "./core/CancelablePromise.js"; -export { OpenAPI } from "./core/OpenAPI.js"; -export type { OpenAPIConfig } from "./core/OpenAPI.js"; +export { ApiError } from "./rest/ApiError"; +export { BaseHttpRequest } from "./rest/BaseHttpRequest"; +export { CancelablePromise, CancelError } from "./rest/CancelablePromise"; +export { OpenAPI } from "./OpenAPI"; +export type { OpenAPIConfig } from "./OpenAPI"; -export type { Account } from "./models/Account.js"; -export { AccountConfigurations } from "./models/AccountConfigurations.js"; -export { AccountStatus } from "./models/AccountStatus.js"; -export { ActivityType } from "./models/ActivityType.js"; -export type { AddAssetToWatchlistRequest } from "./models/AddAssetToWatchlistRequest.js"; -export { AssetClass } from "./models/AssetClass.js"; -export { Assets } from "./models/Assets.js"; -export type { Calendar } from "./models/Calendar.js"; -export type { CanceledOrderResponse } from "./models/CanceledOrderResponse.js"; -export type { Clock } from "./models/Clock.js"; -export { Exchange } from "./models/Exchange.js"; -export type { NonTradeActivities } from "./models/NonTradeActivities.js"; -export type { Order } from "./models/Order.js"; -export { OrderClass } from "./models/OrderClass.js"; -export { OrderSide } from "./models/OrderSide.js"; -export { OrderStatus } from "./models/OrderStatus.js"; -export { OrderType } from "./models/OrderType.js"; -export type { PatchOrderRequest } from "./models/PatchOrderRequest.js"; -export type { PortfolioHistory } from "./models/PortfolioHistory.js"; -export type { Position } from "./models/Position.js"; -export type { PositionClosedReponse } from "./models/PositionClosedReponse.js"; -export { TimeInForce } from "./models/TimeInForce.js"; -export { TradingActivities } from "./models/TradingActivities.js"; -export type { UpdateWatchlistRequest } from "./models/UpdateWatchlistRequest.js"; -export type { Watchlist } from "./models/Watchlist.js"; +export type { Account } from "./entities/Account.js"; +export { AccountConfigurations } from "./entities/AccountConfigurations.js"; +export { AccountStatus } from "./entities/AccountStatus.js"; +export { ActivityType } from "./entities/ActivityType.js"; +export type { AddAssetToWatchlistRequest } from "./entities/AddAssetToWatchlistRequest.js"; +export { AssetClass } from "./entities/AssetClass.js"; +export { Assets } from "./entities/Assets.js"; +export type { Calendar } from "./entities/Calendar.js"; +export type { CanceledOrderResponse } from "./entities/CanceledOrderResponse.js"; +export type { Clock } from "./entities/Clock.js"; +export { Exchange } from "./entities/Exchange.js"; +export type { NonTradeActivities } from "./entities/NonTradeActivities.js"; +export type { Order } from "./entities/Order.js"; +export { OrderClass } from "./entities/OrderClass.js"; +export { OrderSide } from "./entities/OrderSide.js"; +export { OrderStatus } from "./entities/OrderStatus.js"; +export { OrderType } from "./entities/OrderType.js"; +export type { PatchOrderRequest } from "./entities/PatchOrderRequest.js"; +export type { PortfolioHistory } from "./entities/PortfolioHistory.js"; +export type { Position } from "./entities/Position.js"; +export type { PositionClosedReponse } from "./entities/PositionClosedReponse.js"; +export { TimeInForce } from "./entities/TimeInForce.js"; +export { TradingActivities } from "./entities/TradingActivities.js"; +export type { UpdateWatchlistRequest } from "./entities/UpdateWatchlistRequest.js"; +export type { Watchlist } from "./entities/Watchlist.js"; -export { AccountActivitiesService } from "./services/AccountActivitiesService.js"; -export { AccountConfigurationsService } from "./services/AccountConfigurationsService.js"; -export { AccountService } from "./services/AccountService.js"; -export { CalendarService } from "./services/CalendarService.js"; -export { ClockService } from "./services/ClockService.js"; -export { AssetsService } from "./services/AssetsService.js"; -export { OrdersService } from "./services/OrdersService.js"; -export { PortfolioHistoryService } from "./services/PortfolioHistoryService.js"; -export { PositionsService } from "./services/PositionsService.js"; -export { WatchlistsService } from "./services/WatchlistsService.js"; +export { Account } from "./paths/account"; +export { AccountConfigurations } from "./paths/AccountConfigurations"; +export { AccountService } from "./paths/AccountService.js"; +export { Calendar } from "./paths/calendar"; +export { Clock } from "./paths/clock"; +export { Assets } from "./paths/assets"; +export { Orders } from "./paths/orders"; +export { PortfolioHistoryService } from "./paths/PortfolioHistoryService.js"; +export { Positions } from "./paths/positions"; +export { Watchlists } from "./paths/watchlists"; -export { adjustment } from "./models/adjustment.js"; -export { Bar } from "./models/Bar.js"; -export type { BarsResponse } from "./models/BarsResponse.js"; -export { crypto_exchange } from "./models/crypto_exchange.js"; -export type { crypto_exchanges } from "./models/crypto_exchanges.js"; -export type { crypto_symbol } from "./models/crypto_symbol.js"; -export type { crypto_symbols } from "./models/crypto_symbols.js"; -export type { end } from "./models/end.js"; -export type { ExchangesResponse } from "./models/ExchangesResponse.js"; -export { feed } from "./models/feed.js"; -export type { GetNewsResponse } from "./models/GetNewsResponse.js"; -export type { LatestBarResponse } from "./models/LatestBarResponse.js"; -export type { LatestMultiBarsResponse } from "./models/LatestMultiBarsResponse.js"; -export type { LatestMultiQuotesResponse } from "./models/LatestMultiQuotesResponse.js"; -export type { LatestMultiTradesResponse } from "./models/LatestMultiTradesResponse.js"; -export type { LatestQuoteResponse } from "./models/LatestQuoteResponse.js"; -export type { LatestTradeResponse } from "./models/LatestTradeResponse.js"; -export type { limit } from "./models/limit.js"; -export type { MarketMoverAsset } from "./models/MarketMoverAsset.js"; -export { MarketMoversResponse } from "./models/MarketMoversResponse.js"; -export type { MultiBarsResponse } from "./models/MultiBarsResponse.js"; -export type { MultiQuotesReponse } from "./models/MultiQuotesReponse.js"; -export type { MultiSnapshotResponse } from "./models/MultiSnapshotResponse.js"; -export type { MultiTradesResponse } from "./models/MultiTradesResponse.js"; -export type { News } from "./models/News.js"; -export { NewsImage } from "./models/NewsImage.js"; -export type { page_token } from "./models/page_token.js"; -export type { Quote } from "./models/Quote.js"; -export type { Snapshot } from "./models/Snapshot.js"; -export type { start } from "./models/start.js"; -export type { stock_symbol } from "./models/stock_symbol.js"; -export type { stock_symbols } from "./models/stock_symbols.js"; -export type { timeframe } from "./models/timeframe.js"; -export type { Trade } from "./models/Trade.js"; -export type { TradesResponse } from "./models/TradesResponse.js"; -export type { XBBO } from "./models/XBBO.js"; +export { adjustment } from "./entities/adjustment.js"; +export { Bar } from "./entities/Bar.js"; +export type { BarsResponse } from "./entities/BarsResponse.js"; +export { crypto_exchange } from "./entities/crypto_exchange.js"; +export type { crypto_exchanges } from "./entities/crypto_exchanges.js"; +export type { crypto_symbol } from "./entities/crypto_symbol.js"; +export type { crypto_symbols } from "./entities/crypto_symbols.js"; +export type { end } from "./entities/end.js"; +export type { ExchangesResponse } from "./entities/ExchangesResponse.js"; +export { feed } from "./entities/feed.js"; +export type { GetNewsResponse } from "./entities/GetNewsResponse.js"; +export type { LatestBarResponse } from "./entities/LatestBarResponse.js"; +export type { LatestMultiBarsResponse } from "./entities/LatestMultiBarsResponse.js"; +export type { LatestMultiQuotesResponse } from "./entities/LatestMultiQuotesResponse.js"; +export type { LatestMultiTradesResponse } from "./entities/LatestMultiTradesResponse.js"; +export type { LatestQuoteResponse } from "./entities/LatestQuoteResponse.js"; +export type { LatestTradeResponse } from "./entities/LatestTradeResponse.js"; +export type { limit } from "./entities/limit.js"; +export type { MarketMoverAsset } from "./entities/MarketMoverAsset.js"; +export { MarketMoversResponse } from "./entities/MarketMoversResponse.js"; +export type { MultiBarsResponse } from "./entities/MultiBarsResponse.js"; +export type { MultiQuotesReponse } from "./entities/MultiQuotesReponse.js"; +export type { MultiSnapshotResponse } from "./entities/MultiSnapshotResponse.js"; +export type { MultiTradesResponse } from "./entities/MultiTradesResponse.js"; +export type { News } from "./entities/News.js"; +export { NewsImage } from "./entities/NewsImage.js"; +export type { page_token } from "./entities/page_token.js"; +export type { Quote } from "./entities/Quote.js"; +export type { Snapshot } from "./entities/Snapshot.js"; +export type { start } from "./entities/start.js"; +export type { stock_symbol } from "./entities/stock_symbol.js"; +export type { stock_symbols } from "./entities/stock_symbols.js"; +export type { timeframe } from "./entities/timeframe.js"; +export type { Trade } from "./entities/Trade.js"; +export type { TradesResponse } from "./entities/TradesResponse.js"; +export type { XBBO } from "./entities/XBBO.js"; -export { CryptoDataService } from "./services/CryptoDataService.js"; -export { LogoService } from "./services/LogoService.js"; -export { NewsService } from "./services/NewsService.js"; -export { ScreenerService } from "./services/ScreenerService.js"; -export { StockDataService } from "./services/StockDataService.js"; +export { Crypto } from "./paths/crypto"; +export { Logos } from "./paths/logos"; +export { News } from "./paths/news"; +export { Screener } from "./paths/screener"; +export { Stocks } from "./paths/stocks"; diff --git a/src/models/LatestMultiQuotesResponse.ts b/src/models/LatestMultiQuotesResponse.ts deleted file mode 100644 index c00f1f0..0000000 --- a/src/models/LatestMultiQuotesResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { Quote } from "./Quote.js"; - -export type LatestMultiQuotesResponse = { - quotes: Record; -}; diff --git a/src/models/LatestMultiTradesResponse.ts b/src/models/LatestMultiTradesResponse.ts deleted file mode 100644 index 650fa7a..0000000 --- a/src/models/LatestMultiTradesResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { Trade } from "./Trade.js"; - -export type LatestMultiTradesResponse = { - trades: Record; -}; diff --git a/src/models/OrderSide.ts b/src/models/OrderSide.ts deleted file mode 100644 index 76b3c4f..0000000 --- a/src/models/OrderSide.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -/** - * Represents which side this order was on: - * - * - buy - * - sell - */ -export enum OrderSide { - BUY = "buy", - SELL = "sell", -} diff --git a/src/models/limit.ts b/src/models/limit.ts deleted file mode 100644 index 8c06aa3..0000000 --- a/src/models/limit.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -/** - * Number of data points to return. Must be in range 1-10000, defaults to 1000. - */ -export type limit = number; diff --git a/src/models/stock_symbol.ts b/src/models/stock_symbol.ts deleted file mode 100644 index 392f887..0000000 --- a/src/models/stock_symbol.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -/** - * The stock ticker symbol to query for. - */ -export type stock_symbol = string; diff --git a/src/models/stock_symbols.ts b/src/models/stock_symbols.ts deleted file mode 100644 index 0bca185..0000000 --- a/src/models/stock_symbols.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -/** - * The comma-separated list of stock ticker symbols to query for. - */ -export type stock_symbols = string; diff --git a/src/paths/account.ts b/src/paths/account.ts new file mode 100644 index 0000000..0638f39 --- /dev/null +++ b/src/paths/account.ts @@ -0,0 +1,187 @@ +import type { NonTradeActivities } from "../entities/NonTradeActivities.js"; +import type { TradingActivities } from "../entities/TradingActivities.js"; + +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; +import { AccountConfigurations } from "../entities/AccountConfigurations"; +import { PortfolioHistory } from "../entities/PortfolioHistory"; + +export class Account { + constructor(public readonly httpRequest: BaseHttpRequest) {} + + /** + * Get account activities of one type + * Returns account activity entries for many types of activities. + * @returns any returns an array of Account activities + * @throws ApiError + */ + public getAccountActivities({ + activityTypes, + }: { + /** + * A comma-separated list of the activity types to include in the response. If unspecified, activities of all types will be returned. (Cannot be used with category) + */ + activityTypes?: "trade_activity" | "non_trade_activity"; + }): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account/activities", + query: { + activity_types: activityTypes, + }, + }); + } + + /** + * Get account activities of one type + * Returns account activity entries for a specific type of activity. + * @returns any returns an array of Account activities + * @throws ApiError + */ + public getAccountActivitiesByActivityType({ + activityType, + date, + until, + after, + direction, + pageSize, + pageToken, + category, + }: { + /** + * The activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page. + */ + activityType: string; + /** + * The date for which you want to see activities. + */ + date?: string; + /** + * The response will contain only activities submitted before this date. (Cannot be used with date.) + */ + until?: string; + /** + * The response will contain only activities submitted after this date. (Cannot be used with date.) + */ + after?: string; + /** + * asc or desc (default desc if unspecified.) + */ + direction?: "asc" | "desc"; + /** + * The maximum number of entries to return in the response. (See the section on paging above.) + */ + pageSize?: number; + /** + * The ID of the end of your current page of results. + */ + pageToken?: string; + /** + * trade_activity or non_trade_activity, to specify the kind of results the server should return. (Cannot be used with /{activity_type} or ?activity_types=...) + */ + category?: string; + }): CancelablePromise> { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account/activities/{activity_type}", + path: { + activity_type: activityType, + }, + query: { + date: date, + until: until, + after: after, + direction: direction, + page_size: pageSize, + page_token: pageToken, + category: category, + }, + }); + } + + /** + * Account Configurations + * gets the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ + public getAccountConfig(): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account/configurations", + }); + } + + /** + * Account Configurations + * Updates and returns the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ + public patchAccountConfig({ + requestBody, + }: { + requestBody?: AccountConfigurations; + }): CancelablePromise { + return this.httpRequest.request({ + method: "PATCH", + url: "/v2/account/configurations", + body: requestBody, + mediaType: "application/json", + }); + } + + /** + * Get account + * Returns the account associated with the API key. + * @returns Account OK + * @throws ApiError + */ + public getAccount(): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account", + }); + } + + /** + * Account Portfolio History + * Returns timeseries data about equity and profit/loss (P/L) of the account in requested timespan. + * @returns PortfolioHistory Successful response + * @throws ApiError + */ + public getAccountPortfolioHistory({ + period, + timeframe, + dateEnd, + extendedHours, + }: { + /** + * The duration of the data in + , such as 1D, where can be D for day, W for week, M for month and A for year. Defaults to 1M. + */ + period?: string; + /** + * The resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. + */ + timeframe?: string; + /** + * The date the data is returned up to, in “YYYY-MM-DD” format. Defaults to the current market date (rolls over at the market open if extended_hours is false, otherwise at 7am ET) + */ + dateEnd?: string; + /** + * If true, include extended hours in the result. This is effective only for timeframe less than 1D. + */ + extendedHours?: string; + }): CancelablePromise { + return this.httpRequest.request({ + method: "GET", + url: "/v2/account/portfolio/history", + query: { + period: period, + timeframe: timeframe, + date_end: dateEnd, + extended_hours: extendedHours, + }, + }); + } +} diff --git a/src/services/AssetsService.ts b/src/paths/assets.ts similarity index 85% rename from src/services/AssetsService.ts rename to src/paths/assets.ts index eb9c016..3b5fddc 100644 --- a/src/services/AssetsService.ts +++ b/src/paths/assets.ts @@ -1,13 +1,9 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { Assets } from "../models/Assets.js"; +import type { Assets } from "../entities/Assets.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class AssetsService { +export class Assets { constructor(public readonly httpRequest: BaseHttpRequest) {} /** diff --git a/src/services/CalendarService.ts b/src/paths/calendar.ts similarity index 78% rename from src/services/CalendarService.ts rename to src/paths/calendar.ts index 3fbe642..f4115ad 100644 --- a/src/services/CalendarService.ts +++ b/src/paths/calendar.ts @@ -1,13 +1,9 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { Calendar } from "../models/Calendar.js"; +import type { Calendar } from "../entities/Calendar.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class CalendarService { +export class Calendar { constructor(public readonly httpRequest: BaseHttpRequest) {} /** diff --git a/src/services/ClockService.ts b/src/paths/clock.ts similarity index 58% rename from src/services/ClockService.ts rename to src/paths/clock.ts index e442824..a1af8a7 100644 --- a/src/services/ClockService.ts +++ b/src/paths/clock.ts @@ -1,13 +1,9 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { Clock } from "../models/Clock.js"; +import type { Clock } from "../entities/Clock.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class ClockService { +export class Clock { constructor(public readonly httpRequest: BaseHttpRequest) {} /** diff --git a/src/services/CryptoDataService.ts b/src/paths/crypto.ts similarity index 93% rename from src/services/CryptoDataService.ts rename to src/paths/crypto.ts index d7a3eeb..2824480 100644 --- a/src/services/CryptoDataService.ts +++ b/src/paths/crypto.ts @@ -1,24 +1,20 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { BarsResponse } from "../models/BarsResponse.js"; -import type { LatestBarResponse } from "../models/LatestBarResponse.js"; -import type { LatestMultiBarsResponse } from "../models/LatestMultiBarsResponse.js"; -import type { LatestMultiQuotesResponse } from "../models/LatestMultiQuotesResponse.js"; -import type { LatestMultiTradesResponse } from "../models/LatestMultiTradesResponse.js"; -import type { LatestQuoteResponse } from "../models/LatestQuoteResponse.js"; -import type { LatestTradeResponse } from "../models/LatestTradeResponse.js"; -import type { MultiBarsResponse } from "../models/MultiBarsResponse.js"; -import type { MultiQuotesReponse } from "../models/MultiQuotesReponse.js"; -import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse.js"; -import type { MultiTradesResponse } from "../models/MultiTradesResponse.js"; -import type { Snapshot } from "../models/Snapshot.js"; -import type { TradesResponse } from "../models/TradesResponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { BarsResponse } from "../entities/BarsResponse.js"; +import type { LatestBarResponse } from "../entities/LatestBarResponse.js"; +import type { LatestMultiBarsResponse } from "../entities/LatestMultiBarsResponse.js"; +import type { LatestMultiQuotesResponse } from "../entities/LatestMultiQuotesResponse.js"; +import type { LatestMultiTradesResponse } from "../entities/LatestMultiTradesResponse.js"; +import type { LatestQuoteResponse } from "../entities/LatestQuoteResponse.js"; +import type { LatestTradeResponse } from "../entities/LatestTradeResponse.js"; +import type { MultiBarsResponse } from "../entities/MultiBarsResponse.js"; +import type { MultiQuotesReponse } from "../entities/MultiQuotesReponse.js"; +import type { MultiSnapshotResponse } from "../entities/MultiSnapshotResponse.js"; +import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; +import type { Snapshot } from "../entities/Snapshot.js"; +import type { TradesResponse } from "../entities/TradesResponse.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class CryptoDataService { +export class Crypto { constructor(public readonly httpRequest: BaseHttpRequest) { // change the baseURL to data.alpaca.markets this.httpRequest.config.BASE = "https://data.alpaca.markets"; diff --git a/src/services/LogoService.ts b/src/paths/logos.ts similarity index 79% rename from src/services/LogoService.ts rename to src/paths/logos.ts index 2c18f14..50e9dcf 100644 --- a/src/services/LogoService.ts +++ b/src/paths/logos.ts @@ -1,11 +1,7 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class LogoService { +export class Logos { constructor(public readonly httpRequest: BaseHttpRequest) {} /** diff --git a/src/services/NewsService.ts b/src/paths/news.ts similarity index 84% rename from src/services/NewsService.ts rename to src/paths/news.ts index d2878c1..5ea7211 100644 --- a/src/services/NewsService.ts +++ b/src/paths/news.ts @@ -1,13 +1,9 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { GetNewsResponse } from "../models/GetNewsResponse.js"; +import type { GetNewsResponse } from "../entities/GetNewsResponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class NewsService { +export class News { constructor(public readonly httpRequest: BaseHttpRequest) {} /** diff --git a/src/services/OrdersService.ts b/src/paths/orders.ts similarity index 92% rename from src/services/OrdersService.ts rename to src/paths/orders.ts index 060f06d..24eaf9a 100644 --- a/src/services/OrdersService.ts +++ b/src/paths/orders.ts @@ -1,15 +1,11 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { CanceledOrderResponse } from "../models/CanceledOrderResponse.js"; -import type { Order } from "../models/Order.js"; -import type { PatchOrderRequest } from "../models/PatchOrderRequest.js"; +import type { CanceledOrderResponse } from "../entities/CanceledOrderResponse.js"; +import type { Order } from "../entities/Order.js"; +import type { PatchOrderRequest } from "../entities/PatchOrderRequest.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class OrdersService { +export class Orders { constructor(public readonly httpRequest: BaseHttpRequest) {} /** diff --git a/src/services/PositionsService.ts b/src/paths/positions.ts similarity index 86% rename from src/services/PositionsService.ts rename to src/paths/positions.ts index 80acc23..53d0bc6 100644 --- a/src/services/PositionsService.ts +++ b/src/paths/positions.ts @@ -1,15 +1,11 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { Order } from "../models/Order.js"; -import type { Position } from "../models/Position.js"; -import type { PositionClosedReponse } from "../models/PositionClosedReponse.js"; +import type { Order } from "../entities/Order.js"; +import type { Position } from "../entities/Position.js"; +import type { PositionClosedReponse } from "../entities/PositionClosedReponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class PositionsService { +export class Positions { constructor(public readonly httpRequest: BaseHttpRequest) {} /** diff --git a/src/services/ScreenerService.ts b/src/paths/screener.ts similarity index 70% rename from src/services/ScreenerService.ts rename to src/paths/screener.ts index ec4dc2d..1241b6c 100644 --- a/src/services/ScreenerService.ts +++ b/src/paths/screener.ts @@ -1,13 +1,9 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { MarketMoversResponse } from "../models/MarketMoversResponse.js"; +import type { MarketMoversResponse } from "../entities/MarketMoversResponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class ScreenerService { +export class Screener { constructor(public readonly httpRequest: BaseHttpRequest) {} /** diff --git a/src/services/StockDataService.ts b/src/paths/stocks.ts similarity index 92% rename from src/services/StockDataService.ts rename to src/paths/stocks.ts index 3616f5c..696899a 100644 --- a/src/services/StockDataService.ts +++ b/src/paths/stocks.ts @@ -1,30 +1,23 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { BarsResponse } from "../models/BarsResponse.js"; -import type { ExchangesResponse } from "../models/ExchangesResponse.js"; -import type { LatestBarResponse } from "../models/LatestBarResponse.js"; -import type { LatestMultiBarsResponse } from "../models/LatestMultiBarsResponse.js"; -import type { LatestMultiQuotesResponse } from "../models/LatestMultiQuotesResponse.js"; -import type { LatestMultiTradesResponse } from "../models/LatestMultiTradesResponse.js"; -import type { LatestQuoteResponse } from "../models/LatestQuoteResponse.js"; -import type { LatestTradeResponse } from "../models/LatestTradeResponse.js"; -import type { MultiBarsResponse } from "../models/MultiBarsResponse.js"; -import type { MultiQuotesReponse } from "../models/MultiQuotesReponse.js"; -import type { MultiSnapshotResponse } from "../models/MultiSnapshotResponse.js"; -import type { MultiTradesResponse } from "../models/MultiTradesResponse.js"; -import type { Snapshot } from "../models/Snapshot.js"; -import type { TradesResponse } from "../models/TradesResponse.js"; +import type { BarsResponse } from "../entities/BarsResponse.js"; +import type { ExchangesResponse } from "../entities/ExchangesResponse.js"; +import type { LatestBarResponse } from "../entities/LatestBarResponse.js"; +import type { LatestMultiBarsResponse } from "../entities/LatestMultiBarsResponse.js"; +import type { LatestMultiQuotesResponse } from "../entities/LatestMultiQuotesResponse.js"; +import type { LatestMultiTradesResponse } from "../entities/LatestMultiTradesResponse.js"; +import type { LatestQuoteResponse } from "../entities/LatestQuoteResponse.js"; +import type { LatestTradeResponse } from "../entities/LatestTradeResponse.js"; +import type { MultiBarsResponse } from "../entities/MultiBarsResponse.js"; +import type { MultiQuotesReponse } from "../entities/MultiQuotesReponse.js"; +import type { MultiSnapshotResponse } from "../entities/MultiSnapshotResponse.js"; +import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; +import type { Snapshot } from "../entities/Snapshot.js"; +import type { TradesResponse } from "../entities/TradesResponse.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class StockDataService { - constructor(public readonly httpRequest: BaseHttpRequest) { - // change the baseURL to data.alpaca.markets - this.httpRequest.config.BASE = "https://data.alpaca.markets"; - } +export class Stocks { + constructor(public readonly httpRequest: BaseHttpRequest) {} /** * Get Bar data for multiple stock symbols diff --git a/src/services/WatchlistsService.ts b/src/paths/watchlists.ts similarity index 93% rename from src/services/WatchlistsService.ts rename to src/paths/watchlists.ts index ea1bfb8..dfe82d6 100644 --- a/src/services/WatchlistsService.ts +++ b/src/paths/watchlists.ts @@ -1,14 +1,10 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { UpdateWatchlistRequest } from "../models/UpdateWatchlistRequest.js"; -import type { Watchlist } from "../models/Watchlist.js"; +import type { UpdateWatchlistRequest } from "../entities/UpdateWatchlistRequest.js"; +import type { Watchlist } from "../entities/Watchlist.js"; -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class WatchlistsService { +export class Watchlists { constructor(public readonly httpRequest: BaseHttpRequest) {} /** diff --git a/src/core/ApiError.ts b/src/rest/ApiError.ts similarity index 68% rename from src/core/ApiError.ts rename to src/rest/ApiError.ts index 285dce8..f092775 100644 --- a/src/core/ApiError.ts +++ b/src/rest/ApiError.ts @@ -1,9 +1,5 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ApiRequestOptions } from "./ApiRequestOptions.js"; -import type { ApiResult } from "./ApiResult.js"; +import type { ApiRequestOptions } from "./ApiRequestOptions"; +import type { ApiResult } from "./ApiResult"; export class ApiError extends Error { public readonly url: string; diff --git a/src/core/ApiRequestOptions.ts b/src/rest/ApiRequestOptions.ts similarity index 79% rename from src/core/ApiRequestOptions.ts rename to src/rest/ApiRequestOptions.ts index ac9a2ca..5e844f9 100644 --- a/src/core/ApiRequestOptions.ts +++ b/src/rest/ApiRequestOptions.ts @@ -1,7 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ export type ApiRequestOptions = { readonly method: | "GET" diff --git a/src/core/ApiResult.ts b/src/rest/ApiResult.ts similarity index 54% rename from src/core/ApiResult.ts rename to src/rest/ApiResult.ts index 63ed6c4..1234c8a 100644 --- a/src/core/ApiResult.ts +++ b/src/rest/ApiResult.ts @@ -1,7 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ export type ApiResult = { readonly url: string; readonly ok: boolean; diff --git a/src/rest/AxiosHttpRequest.ts b/src/rest/AxiosHttpRequest.ts new file mode 100644 index 0000000..f2e4cb8 --- /dev/null +++ b/src/rest/AxiosHttpRequest.ts @@ -0,0 +1,21 @@ +import type { ApiRequestOptions } from "./ApiRequestOptions"; +import { BaseHttpRequest } from "./BaseHttpRequest"; +import type { CancelablePromise } from "./CancelablePromise"; +import type { OpenAPIConfig } from "../OpenAPI"; +import { request as __request } from "./request"; + +export class AxiosHttpRequest extends BaseHttpRequest { + constructor(config: OpenAPIConfig) { + super(config); + } + + /** + * Request method + * @param options The request options from the service + * @returns CancelablePromise + * @throws ApiError + */ + public override request(options: ApiRequestOptions): CancelablePromise { + return __request(this.config, options); + } +} diff --git a/src/rest/BaseHttpRequest.ts b/src/rest/BaseHttpRequest.ts new file mode 100644 index 0000000..b374489 --- /dev/null +++ b/src/rest/BaseHttpRequest.ts @@ -0,0 +1,9 @@ +import type { ApiRequestOptions } from "./ApiRequestOptions"; +import type { CancelablePromise } from "./CancelablePromise"; +import type { OpenAPIConfig } from "../OpenAPI"; + +export abstract class BaseHttpRequest { + constructor(public readonly config: OpenAPIConfig) {} + + public abstract request(options: ApiRequestOptions): CancelablePromise; +} diff --git a/src/core/CancelablePromise.ts b/src/rest/CancelablePromise.ts similarity index 96% rename from src/core/CancelablePromise.ts rename to src/rest/CancelablePromise.ts index 5220853..933332c 100644 --- a/src/core/CancelablePromise.ts +++ b/src/rest/CancelablePromise.ts @@ -1,7 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ export class CancelError extends Error { constructor(message: string) { super(message); diff --git a/src/core/request.ts b/src/rest/request.ts similarity index 94% rename from src/core/request.ts rename to src/rest/request.ts index 423e8ba..71dbf88 100644 --- a/src/core/request.ts +++ b/src/rest/request.ts @@ -1,7 +1,3 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ import axios from "axios"; import type { AxiosError, @@ -11,12 +7,12 @@ import type { } from "axios"; import FormData from "form-data"; -import { ApiError } from "./ApiError.js"; -import type { ApiRequestOptions } from "./ApiRequestOptions.js"; -import type { ApiResult } from "./ApiResult.js"; -import { CancelablePromise } from "./CancelablePromise.js"; -import type { OnCancel } from "./CancelablePromise.js"; -import type { OpenAPIConfig } from "./OpenAPI.js"; +import { ApiError } from "./ApiError"; +import type { ApiRequestOptions } from "./ApiRequestOptions"; +import type { ApiResult } from "./ApiResult"; +import { CancelablePromise } from "./CancelablePromise"; +import type { OnCancel } from "./CancelablePromise"; +import type { OpenAPIConfig } from "../OpenAPI"; export const isDefined = ( value: T | null | undefined diff --git a/src/services/AccountActivitiesService.ts b/src/services/AccountActivitiesService.ts deleted file mode 100644 index d84893c..0000000 --- a/src/services/AccountActivitiesService.ts +++ /dev/null @@ -1,103 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { NonTradeActivities } from "../models/NonTradeActivities.js"; -import type { TradingActivities } from "../models/TradingActivities.js"; - -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; - -export class AccountActivitiesService { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get account activities of one type - * Returns account activity entries for many types of activities. - * @returns any returns an array of Account activities - * @throws ApiError - */ - public getAccountActivities({ - activityTypes, - }: { - /** - * A comma-separated list of the activity types to include in the response. If unspecified, activities of all types will be returned. (Cannot be used with category) - */ - activityTypes?: "trade_activity" | "non_trade_activity"; - }): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account/activities", - query: { - activity_types: activityTypes, - }, - }); - } - - /** - * Get account activities of one type - * Returns account activity entries for a specific type of activity. - * @returns any returns an array of Account activities - * @throws ApiError - */ - public getAccountActivitiesByActivityType({ - activityType, - date, - until, - after, - direction, - pageSize, - pageToken, - category, - }: { - /** - * The activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page. - */ - activityType: string; - /** - * The date for which you want to see activities. - */ - date?: string; - /** - * The response will contain only activities submitted before this date. (Cannot be used with date.) - */ - until?: string; - /** - * The response will contain only activities submitted after this date. (Cannot be used with date.) - */ - after?: string; - /** - * asc or desc (default desc if unspecified.) - */ - direction?: "asc" | "desc"; - /** - * The maximum number of entries to return in the response. (See the section on paging above.) - */ - pageSize?: number; - /** - * The ID of the end of your current page of results. - */ - pageToken?: string; - /** - * trade_activity or non_trade_activity, to specify the kind of results the server should return. (Cannot be used with /{activity_type} or ?activity_types=...) - */ - category?: string; - }): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account/activities/{activity_type}", - path: { - activity_type: activityType, - }, - query: { - date: date, - until: until, - after: after, - direction: direction, - page_size: pageSize, - page_token: pageToken, - category: category, - }, - }); - } -} diff --git a/src/services/AccountConfigurationsService.ts b/src/services/AccountConfigurationsService.ts deleted file mode 100644 index 057f89f..0000000 --- a/src/services/AccountConfigurationsService.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { AccountConfigurations } from "../models/AccountConfigurations.js"; - -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; - -export class AccountConfigurationsService { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Account Configurations - * gets the current account configuration values - * @returns AccountConfigurations Successful response - * @throws ApiError - */ - public getAccountConfig(): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account/configurations", - }); - } - - /** - * Account Configurations - * Updates and returns the current account configuration values - * @returns AccountConfigurations Successful response - * @throws ApiError - */ - public patchAccountConfig({ - requestBody, - }: { - requestBody?: AccountConfigurations; - }): CancelablePromise { - return this.httpRequest.request({ - method: "PATCH", - url: "/v2/account/configurations", - body: requestBody, - mediaType: "application/json", - }); - } -} diff --git a/src/services/AccountService.ts b/src/services/AccountService.ts deleted file mode 100644 index f3789e7..0000000 --- a/src/services/AccountService.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { Account } from "../models/Account.js"; - -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; - -export class AccountService { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get account - * Returns the account associated with the API key. - * @returns Account OK - * @throws ApiError - */ - public getAccount(): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account", - }); - } -} diff --git a/src/services/PortfolioHistoryService.ts b/src/services/PortfolioHistoryService.ts deleted file mode 100644 index cf1d857..0000000 --- a/src/services/PortfolioHistoryService.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { PortfolioHistory } from "../models/PortfolioHistory.js"; - -import type { CancelablePromise } from "../core/CancelablePromise.js"; -import type { BaseHttpRequest } from "../core/BaseHttpRequest.js"; - -export class PortfolioHistoryService { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Account Portfolio History - * Returns timeseries data about equity and profit/loss (P/L) of the account in requested timespan. - * @returns PortfolioHistory Successful response - * @throws ApiError - */ - public getAccountPortfolioHistory({ - period, - timeframe, - dateEnd, - extendedHours, - }: { - /** - * The duration of the data in + , such as 1D, where can be D for day, W for week, M for month and A for year. Defaults to 1M. - */ - period?: string; - /** - * The resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. - */ - timeframe?: string; - /** - * The date the data is returned up to, in “YYYY-MM-DD” format. Defaults to the current market date (rolls over at the market open if extended_hours is false, otherwise at 7am ET) - */ - dateEnd?: string; - /** - * If true, include extended hours in the result. This is effective only for timeframe less than 1D. - */ - extendedHours?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account/portfolio/history", - query: { - period: period, - timeframe: timeframe, - date_end: dateEnd, - extended_hours: extendedHours, - }, - }); - } -} From e8ed8114c89b85e1b5a130fcebfe2249cd97e1e0 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Wed, 26 Jul 2023 10:47:22 -0600 Subject: [PATCH 41/55] refactor --- src/Client.ts | 76 +++-------- src/api/account.ts | 208 +++++++++++++++++++++++++++++++ src/api/assets.ts | 85 +++++++++++++ src/api/calendar.ts | 50 ++++++++ src/{paths => api}/clock.ts | 0 src/{paths => api}/crypto.ts | 0 src/{paths => api}/logos.ts | 0 src/{paths => api}/news.ts | 0 src/{paths => api}/orders.ts | 0 src/{paths => api}/positions.ts | 0 src/{paths => api}/screener.ts | 0 src/{paths => api}/stocks.ts | 0 src/{paths => api}/watchlists.ts | 0 src/index.ts | 30 ++--- src/paths/account.ts | 187 --------------------------- src/paths/assets.ts | 79 ------------ src/paths/calendar.ts | 45 ------- src/rest/prewrap.ts | 28 +++++ tsconfig.json | 4 +- 19 files changed, 407 insertions(+), 385 deletions(-) create mode 100644 src/api/account.ts create mode 100644 src/api/assets.ts create mode 100644 src/api/calendar.ts rename src/{paths => api}/clock.ts (100%) rename src/{paths => api}/crypto.ts (100%) rename src/{paths => api}/logos.ts (100%) rename src/{paths => api}/news.ts (100%) rename src/{paths => api}/orders.ts (100%) rename src/{paths => api}/positions.ts (100%) rename src/{paths => api}/screener.ts (100%) rename src/{paths => api}/stocks.ts (100%) rename src/{paths => api}/watchlists.ts (100%) delete mode 100644 src/paths/account.ts delete mode 100644 src/paths/assets.ts delete mode 100644 src/paths/calendar.ts create mode 100644 src/rest/prewrap.ts diff --git a/src/Client.ts b/src/Client.ts index 29359ce..739c19f 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,22 +1,8 @@ import type { BaseHttpRequest } from "./rest/BaseHttpRequest"; import type { ApiRequestOptions } from "./rest/ApiRequestOptions"; - +import account from "./api/account"; import { AxiosHttpRequest } from "./rest/AxiosHttpRequest"; -import { Logos } from "./paths/logos"; -import { News } from "./paths/news"; -import { Clock } from "./paths/clock"; -import { Orders } from "./paths/orders"; -import { Assets } from "./paths/assets"; -import { AccountService } from "./paths/AccountService.js"; -import { Calendar } from "./paths/calendar"; -import { Crypto } from "./paths/crypto"; -import { Stocks } from "./paths/stocks"; -import { Screener } from "./paths/screener"; -import { Positions } from "./paths/positions"; -import { Watchlists } from "./paths/watchlists"; -import { Account } from "./paths/account"; -import { PortfolioHistoryService } from "./paths/PortfolioHistoryService.js"; -import { AccountConfigurations } from "./paths/AccountConfigurations"; +import { prewrap } from "./rest/prewrap"; type Resolver = (options: ApiRequestOptions) => Promise; type Headers = Record; @@ -41,37 +27,8 @@ interface ClientOptions { }; } -// bundle all account services into one class for convenience -class AccountServices extends AccountService { - activities: Account; - configurations: AccountConfigurations; - positions: Positions; - orders: Orders; - portfolioHistory: PortfolioHistoryService; - - constructor(httpRequest: BaseHttpRequest) { - super(httpRequest); - this.activities = new Account(httpRequest); - this.configurations = new AccountConfigurations(httpRequest); - this.positions = new Positions(httpRequest); - this.orders = new Orders(httpRequest); - this.portfolioHistory = new PortfolioHistoryService(httpRequest); - } -} - export class Client { - private readonly request: BaseHttpRequest; - - public readonly calendar: Calendar; - public readonly clock: Clock; - public readonly assets: Assets; - public readonly crypto: Crypto; - public readonly logo: Logos; - public readonly news: News; - public readonly screener: Screener; - public readonly stocks: Stocks; - public readonly watchlists: Watchlists; - public readonly account: AccountServices; + private readonly baseHttpRequest: BaseHttpRequest; constructor( options?: ClientOptions, @@ -79,7 +36,9 @@ export class Client { ) { const { paper, credentials } = options ?? {}; - this.request = new HttpRequest({ + // base request object for all requests + // changes based on paper/live mode and/or data endpoints + this.baseHttpRequest = new HttpRequest({ BASE: paper === true || paper === undefined ? "https://paper-api.alpaca.markets" @@ -91,16 +50,19 @@ export class Client { } : undefined, }); + } + + get account() { + return prewrap(account, this.baseHttpRequest.config); + } - this.account = new AccountServices(this.request); - this.watchlists = new Watchlists(this.request); - this.calendar = new Calendar(this.request); - this.clock = new Clock(this.request); - this.assets = new Assets(this.request); - this.crypto = new Crypto(this.request); - this.logo = new Logos(this.request); - this.news = new News(this.request); - this.screener = new Screener(this.request); - this.stocks = new Stocks(this.request); + get assets() { + return prewrap(assets, this.baseHttpRequest.config); } } + +const client = new Client(); + +client.account.get().then((account) => { + console.log(account); +}); diff --git a/src/api/account.ts b/src/api/account.ts new file mode 100644 index 0000000..320a7ce --- /dev/null +++ b/src/api/account.ts @@ -0,0 +1,208 @@ +import type { + Account, + NonTradeActivities, + TradingActivities, + CancelablePromise, + BaseHttpRequest, + AccountConfigurations, + PortfolioHistory, +} from "../"; + +const activities = { + /** + * Get account activities of one type + * Returns account activity entries for many types of activities. + * @returns any returns an array of Account activities + * @throws ApiError + */ + get: ( + httpRequest: BaseHttpRequest, + { + activityTypes, + }: { + /** + * A comma-separated list of the activity types to include in the response. If unspecified, activities of all types will be returned. (Cannot be used with category) + */ + activityTypes?: "trade_activity" | "non_trade_activity"; + } + ): CancelablePromise> => { + return httpRequest.request({ + method: "GET", + url: "/v2/account/activities", + query: { + activity_types: activityTypes, + }, + }); + }, + /** + * Get account activities of one type + * Returns account activity entries for a specific type of activity. + * @returns any returns an array of Account activities + * @throws ApiError + */ + getByType: ( + httpRequest: BaseHttpRequest, + { + activityType, + date, + until, + after, + direction, + pageSize, + pageToken, + category, + }: { + /** + * The activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page. + */ + activityType: string; + /** + * The date for which you want to see activities. + */ + date?: string; + /** + * The response will contain only activities submitted before this date. (Cannot be used with date.) + */ + until?: string; + /** + * The response will contain only activities submitted after this date. (Cannot be used with date.) + */ + after?: string; + /** + * asc or desc (default desc if unspecified.) + */ + direction?: "asc" | "desc"; + /** + * The maximum number of entries to return in the response. (See the section on paging above.) + */ + pageSize?: number; + /** + * The ID of the end of your current page of results. + */ + pageToken?: string; + /** + * trade_activity or non_trade_activity, to specify the kind of results the server should return. (Cannot be used with /{activity_type} or ?activity_types=...) + */ + category?: string; + } + ): CancelablePromise> => { + return httpRequest.request({ + method: "GET", + url: "/v2/account/activities/{activity_type}", + path: { + activity_type: activityType, + }, + query: { + date: date, + until: until, + after: after, + direction: direction, + page_size: pageSize, + page_token: pageToken, + category: category, + }, + }); + }, +}; + +/** + * Get account + * Returns the account associated with the API key. + * @returns Account OK + * @throws ApiError + */ +function get(httpRequest: BaseHttpRequest): CancelablePromise { + return httpRequest.request({ + method: "GET", + url: "/v2/account", + }); +} + +/** + * Account Portfolio History + * Returns timeseries data about equity and profit/loss (P/L) of the account in requested timespan. + * @returns PortfolioHistory Successful response + * @throws ApiError + */ +function portfolioHistory( + httpRequest: BaseHttpRequest, + { + period, + timeframe, + dateEnd, + extendedHours, + }: { + /** + * The duration of the data in + , such as 1D, where can be D for day, W for week, M for month and A for year. Defaults to 1M. + */ + period?: string; + /** + * The resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. + */ + timeframe?: string; + /** + * The date the data is returned up to, in “YYYY-MM-DD” format. Defaults to the current market date (rolls over at the market open if extended_hours is false, otherwise at 7am ET) + */ + dateEnd?: string; + /** + * If true, include extended hours in the result. This is effective only for timeframe less than 1D. + */ + extendedHours?: string; + } +): CancelablePromise { + return httpRequest.request({ + method: "GET", + url: "/v2/account/portfolio/history", + query: { + period: period, + timeframe: timeframe, + date_end: dateEnd, + extended_hours: extendedHours, + }, + }); +} + +const config = { + /** + * Account Configurations + * gets the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ + get: ( + httpRequest: BaseHttpRequest + ): CancelablePromise => { + return httpRequest.request({ + method: "GET", + url: "/v2/account/configurations", + }); + }, + /** + * Account Configurations + * Updates and returns the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ + patch: ( + httpRequest: BaseHttpRequest, + { + requestBody, + }: { + requestBody?: AccountConfigurations; + } + ): CancelablePromise => { + return httpRequest.request({ + method: "PATCH", + url: "/v2/account/configurations", + body: requestBody, + mediaType: "application/json", + }); + }, +}; + +export default { + get, + config, + activities, + portfolioHistory, +}; diff --git a/src/api/assets.ts b/src/api/assets.ts new file mode 100644 index 0000000..12541b5 --- /dev/null +++ b/src/api/assets.ts @@ -0,0 +1,85 @@ +import type { Assets } from "../entities/Assets.js"; +import type { CancelablePromise } from "../rest/CancelablePromise"; +import { BaseHttpRequest } from "../rest/BaseHttpRequest"; + +/** + * Get Assets + * The assets API serves as the master list of assets available for trade and data consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. + * @returns Assets An array of asset objects + * @throws ApiError + */ +function get( + httpRequest: BaseHttpRequest, + { + status, + assetClass, + exchange, + attributes, + }: { + /** + * e.g. “active”. By default, all statuses are included. + */ + status?: string; + /** + * Defaults to us_equity. + */ + assetClass?: string; + /** + * Optional AMEX, ARCA, BATS, NYSE, NASDAQ, NYSEARCA or OTC + */ + exchange?: string; + /** + * Comma separated values to query for more than one attribute. + */ + attributes?: string; + } +): CancelablePromise> { + return httpRequest.request({ + method: "GET", + url: "/v2/assets", + query: { + status: status, + asset_class: assetClass, + exchange: exchange, + attributes: attributes, + }, + }); +} + +/** + * Get an Asset by ID or Symbol + * Get the asset model for a given symbol or asset_id. The symbol or asset_id should be passed in as a path parameter. + * + * **Note**: For crypto, the symbol has to follow old symbology, e.g. BTCUSD. + * + * **Note**: For coin pairs, the symbol should be separated by spare symbol (/), e.g. BTC/USDT. Since spare is a special character in HTTP, use the URL encoded version instead, e.g. /v2/assets/BTC%2FUSDT + * @returns Assets An Asset object + * @throws ApiError + */ +function getBySymbolOrAssetId( + httpRequest: BaseHttpRequest, + { + symbolOrAssetId, + }: { + /** + * symbol or assetId + */ + symbolOrAssetId: string; + } +): CancelablePromise { + return httpRequest.request({ + method: "GET", + url: "/v2/assets/{symbol_or_asset_id}", + path: { + symbol_or_asset_id: symbolOrAssetId, + }, + errors: { + 404: `Not Found`, + }, + }); +} + +export default { + get, + getBySymbolOrAssetId, +}; diff --git a/src/api/calendar.ts b/src/api/calendar.ts new file mode 100644 index 0000000..14e1059 --- /dev/null +++ b/src/api/calendar.ts @@ -0,0 +1,50 @@ +import type { Calendar } from "../entities/Calendar.js"; + +import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; + +const methods = { + // we preset this on client creation + httpRequest: null as unknown as BaseHttpRequest, + getCalendar, +}; + +// expose all methods as properties of a single object +export default methods; + +/** + * Get Market Calendar info + * The calendar API serves the full list of market days from 1970 to 2029. It can also be queried by specifying a start and/or end time to narrow down the results. In addition to the dates, the response also contains the specific open and close times for the market days, taking into account early closures. + * + * Returns the market calendar. + * @returns Calendar OK + * @throws ApiError + */ +function getCalendar({ + start, + end, + dateType, +}: { + /** + * The first date to retrieve data for (inclusive) + */ + start?: string; + /** + * The last date to retrieve data for (inclusive) + */ + end?: string; + /** + * Indicates what start and end mean. Enum: ‘TRADING’ or ‘SETTLEMENT’. Default value is ‘TRADING’. If TRADING is specified, returns a calendar whose trading date matches start, end. If SETTLEMENT is specified, returns the calendar whose settlement date matches start and end. + */ + dateType?: string; +}): CancelablePromise> { + return methods.httpRequest.request({ + method: "GET", + url: "/v2/calendar", + query: { + start: start, + end: end, + date_type: dateType, + }, + }); +} diff --git a/src/paths/clock.ts b/src/api/clock.ts similarity index 100% rename from src/paths/clock.ts rename to src/api/clock.ts diff --git a/src/paths/crypto.ts b/src/api/crypto.ts similarity index 100% rename from src/paths/crypto.ts rename to src/api/crypto.ts diff --git a/src/paths/logos.ts b/src/api/logos.ts similarity index 100% rename from src/paths/logos.ts rename to src/api/logos.ts diff --git a/src/paths/news.ts b/src/api/news.ts similarity index 100% rename from src/paths/news.ts rename to src/api/news.ts diff --git a/src/paths/orders.ts b/src/api/orders.ts similarity index 100% rename from src/paths/orders.ts rename to src/api/orders.ts diff --git a/src/paths/positions.ts b/src/api/positions.ts similarity index 100% rename from src/paths/positions.ts rename to src/api/positions.ts diff --git a/src/paths/screener.ts b/src/api/screener.ts similarity index 100% rename from src/paths/screener.ts rename to src/api/screener.ts diff --git a/src/paths/stocks.ts b/src/api/stocks.ts similarity index 100% rename from src/paths/stocks.ts rename to src/api/stocks.ts diff --git a/src/paths/watchlists.ts b/src/api/watchlists.ts similarity index 100% rename from src/paths/watchlists.ts rename to src/api/watchlists.ts diff --git a/src/index.ts b/src/index.ts index 7fabc30..bb64087 100644 --- a/src/index.ts +++ b/src/index.ts @@ -32,16 +32,16 @@ export { TradingActivities } from "./entities/TradingActivities.js"; export type { UpdateWatchlistRequest } from "./entities/UpdateWatchlistRequest.js"; export type { Watchlist } from "./entities/Watchlist.js"; -export { Account } from "./paths/account"; -export { AccountConfigurations } from "./paths/AccountConfigurations"; -export { AccountService } from "./paths/AccountService.js"; -export { Calendar } from "./paths/calendar"; -export { Clock } from "./paths/clock"; -export { Assets } from "./paths/assets"; -export { Orders } from "./paths/orders"; -export { PortfolioHistoryService } from "./paths/PortfolioHistoryService.js"; -export { Positions } from "./paths/positions"; -export { Watchlists } from "./paths/watchlists"; +export { Account } from "./api/account"; +export { AccountConfigurations } from "./api/AccountConfigurations"; +export { AccountService } from "./api/AccountService.js"; +export { Calendar } from "./api/calendar"; +export { Clock } from "./api/clock"; +export { Assets } from "./api/assets"; +export { Orders } from "./api/orders"; +export { PortfolioHistoryService } from "./api/PortfolioHistoryService.js"; +export { Positions } from "./api/positions"; +export { Watchlists } from "./api/watchlists"; export { adjustment } from "./entities/adjustment.js"; export { Bar } from "./entities/Bar.js"; @@ -80,8 +80,8 @@ export type { Trade } from "./entities/Trade.js"; export type { TradesResponse } from "./entities/TradesResponse.js"; export type { XBBO } from "./entities/XBBO.js"; -export { Crypto } from "./paths/crypto"; -export { Logos } from "./paths/logos"; -export { News } from "./paths/news"; -export { Screener } from "./paths/screener"; -export { Stocks } from "./paths/stocks"; +export { Crypto } from "./api/crypto"; +export { Logos } from "./api/logos"; +export { News } from "./api/news"; +export { Screener } from "./api/screener"; +export { Stocks } from "./api/stocks"; diff --git a/src/paths/account.ts b/src/paths/account.ts deleted file mode 100644 index 0638f39..0000000 --- a/src/paths/account.ts +++ /dev/null @@ -1,187 +0,0 @@ -import type { NonTradeActivities } from "../entities/NonTradeActivities.js"; -import type { TradingActivities } from "../entities/TradingActivities.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -import { AccountConfigurations } from "../entities/AccountConfigurations"; -import { PortfolioHistory } from "../entities/PortfolioHistory"; - -export class Account { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get account activities of one type - * Returns account activity entries for many types of activities. - * @returns any returns an array of Account activities - * @throws ApiError - */ - public getAccountActivities({ - activityTypes, - }: { - /** - * A comma-separated list of the activity types to include in the response. If unspecified, activities of all types will be returned. (Cannot be used with category) - */ - activityTypes?: "trade_activity" | "non_trade_activity"; - }): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account/activities", - query: { - activity_types: activityTypes, - }, - }); - } - - /** - * Get account activities of one type - * Returns account activity entries for a specific type of activity. - * @returns any returns an array of Account activities - * @throws ApiError - */ - public getAccountActivitiesByActivityType({ - activityType, - date, - until, - after, - direction, - pageSize, - pageToken, - category, - }: { - /** - * The activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page. - */ - activityType: string; - /** - * The date for which you want to see activities. - */ - date?: string; - /** - * The response will contain only activities submitted before this date. (Cannot be used with date.) - */ - until?: string; - /** - * The response will contain only activities submitted after this date. (Cannot be used with date.) - */ - after?: string; - /** - * asc or desc (default desc if unspecified.) - */ - direction?: "asc" | "desc"; - /** - * The maximum number of entries to return in the response. (See the section on paging above.) - */ - pageSize?: number; - /** - * The ID of the end of your current page of results. - */ - pageToken?: string; - /** - * trade_activity or non_trade_activity, to specify the kind of results the server should return. (Cannot be used with /{activity_type} or ?activity_types=...) - */ - category?: string; - }): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account/activities/{activity_type}", - path: { - activity_type: activityType, - }, - query: { - date: date, - until: until, - after: after, - direction: direction, - page_size: pageSize, - page_token: pageToken, - category: category, - }, - }); - } - - /** - * Account Configurations - * gets the current account configuration values - * @returns AccountConfigurations Successful response - * @throws ApiError - */ - public getAccountConfig(): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account/configurations", - }); - } - - /** - * Account Configurations - * Updates and returns the current account configuration values - * @returns AccountConfigurations Successful response - * @throws ApiError - */ - public patchAccountConfig({ - requestBody, - }: { - requestBody?: AccountConfigurations; - }): CancelablePromise { - return this.httpRequest.request({ - method: "PATCH", - url: "/v2/account/configurations", - body: requestBody, - mediaType: "application/json", - }); - } - - /** - * Get account - * Returns the account associated with the API key. - * @returns Account OK - * @throws ApiError - */ - public getAccount(): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account", - }); - } - - /** - * Account Portfolio History - * Returns timeseries data about equity and profit/loss (P/L) of the account in requested timespan. - * @returns PortfolioHistory Successful response - * @throws ApiError - */ - public getAccountPortfolioHistory({ - period, - timeframe, - dateEnd, - extendedHours, - }: { - /** - * The duration of the data in + , such as 1D, where can be D for day, W for week, M for month and A for year. Defaults to 1M. - */ - period?: string; - /** - * The resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. - */ - timeframe?: string; - /** - * The date the data is returned up to, in “YYYY-MM-DD” format. Defaults to the current market date (rolls over at the market open if extended_hours is false, otherwise at 7am ET) - */ - dateEnd?: string; - /** - * If true, include extended hours in the result. This is effective only for timeframe less than 1D. - */ - extendedHours?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/account/portfolio/history", - query: { - period: period, - timeframe: timeframe, - date_end: dateEnd, - extended_hours: extendedHours, - }, - }); - } -} diff --git a/src/paths/assets.ts b/src/paths/assets.ts deleted file mode 100644 index 3b5fddc..0000000 --- a/src/paths/assets.ts +++ /dev/null @@ -1,79 +0,0 @@ -import type { Assets } from "../entities/Assets.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; - -export class Assets { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get Assets - * The assets API serves as the master list of assets available for trade and data consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. - * @returns Assets An array of asset objects - * @throws ApiError - */ - public getAssets({ - status, - assetClass, - exchange, - attributes, - }: { - /** - * e.g. “active”. By default, all statuses are included. - */ - status?: string; - /** - * Defaults to us_equity. - */ - assetClass?: string; - /** - * Optional AMEX, ARCA, BATS, NYSE, NASDAQ, NYSEARCA or OTC - */ - exchange?: string; - /** - * Comma separated values to query for more than one attribute. - */ - attributes?: string; - }): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/assets", - query: { - status: status, - asset_class: assetClass, - exchange: exchange, - attributes: attributes, - }, - }); - } - - /** - * Get an Asset by ID or Symbol - * Get the asset model for a given symbol or asset_id. The symbol or asset_id should be passed in as a path parameter. - * - * **Note**: For crypto, the symbol has to follow old symbology, e.g. BTCUSD. - * - * **Note**: For coin pairs, the symbol should be separated by spare symbol (/), e.g. BTC/USDT. Since spare is a special character in HTTP, use the URL encoded version instead, e.g. /v2/assets/BTC%2FUSDT - * @returns Assets An Asset object - * @throws ApiError - */ - public getAssetsSymbolOrAssetId({ - symbolOrAssetId, - }: { - /** - * symbol or assetId - */ - symbolOrAssetId: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/assets/{symbol_or_asset_id}", - path: { - symbol_or_asset_id: symbolOrAssetId, - }, - errors: { - 404: `Not Found`, - }, - }); - } -} diff --git a/src/paths/calendar.ts b/src/paths/calendar.ts deleted file mode 100644 index f4115ad..0000000 --- a/src/paths/calendar.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { Calendar } from "../entities/Calendar.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; - -export class Calendar { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get Market Calendar info - * The calendar API serves the full list of market days from 1970 to 2029. It can also be queried by specifying a start and/or end time to narrow down the results. In addition to the dates, the response also contains the specific open and close times for the market days, taking into account early closures. - * - * Returns the market calendar. - * @returns Calendar OK - * @throws ApiError - */ - public getCalendar({ - start, - end, - dateType, - }: { - /** - * The first date to retrieve data for (inclusive) - */ - start?: string; - /** - * The last date to retrieve data for (inclusive) - */ - end?: string; - /** - * Indicates what start and end mean. Enum: ‘TRADING’ or ‘SETTLEMENT’. Default value is ‘TRADING’. If TRADING is specified, returns a calendar whose trading date matches start, end. If SETTLEMENT is specified, returns the calendar whose settlement date matches start and end. - */ - dateType?: string; - }): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/calendar", - query: { - start: start, - end: end, - date_type: dateType, - }, - }); - } -} diff --git a/src/rest/prewrap.ts b/src/rest/prewrap.ts new file mode 100644 index 0000000..cc4e155 --- /dev/null +++ b/src/rest/prewrap.ts @@ -0,0 +1,28 @@ +import { BaseHttpRequest } from "./BaseHttpRequest"; + +type OmitFirstArg = F extends (x: any, ...args: infer A) => infer R + ? (...args: A) => R + : never; + +type PreWrapped = { + [K in keyof T]: T[K] extends (...args: any[]) => any + ? OmitFirstArg + : PreWrapped; +}; + +export function prewrap( + methods: T, + httpRequest: BaseHttpRequest +): PreWrapped { + const wrappedMethods: any = {}; + + for (let [key, method] of Object.entries(methods)) { + if (typeof method === "function") { + wrappedMethods[key] = (...args: any[]) => method(httpRequest, ...args); + } else if (typeof method === "object") { + wrappedMethods[key] = prewrap(method, httpRequest); + } + } + + return wrappedMethods; +} diff --git a/tsconfig.json b/tsconfig.json index bcd300c..7ca9311 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,7 +13,7 @@ "noUnusedLocals": true, "outDir": "dist", "sourceMap": true, - "strict": true, + "strict": false, "target": "ES6", "baseUrl": "src", "sourceRoot": "src", @@ -21,4 +21,4 @@ }, "include": ["src"], "exclude": ["node_modules", "dist"] -} \ No newline at end of file +} From fb8d12fcdab8f4c02fa2a121c6260dd6d0fae6bb Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Wed, 26 Jul 2023 11:23:21 -0600 Subject: [PATCH 42/55] refactor --- src/Client.ts | 18 +- src/api/account.ts | 42 ++-- src/api/assets.ts | 17 +- src/api/calendar.ts | 57 +++-- src/api/clock.ts | 37 ++-- src/api/crypto.ts | 517 +++++++++++++++++++++++--------------------- src/api/index.ts | 4 + 7 files changed, 357 insertions(+), 335 deletions(-) create mode 100644 src/api/index.ts diff --git a/src/Client.ts b/src/Client.ts index 739c19f..b4b4ad4 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,8 +1,10 @@ import type { BaseHttpRequest } from "./rest/BaseHttpRequest"; import type { ApiRequestOptions } from "./rest/ApiRequestOptions"; -import account from "./api/account"; -import { AxiosHttpRequest } from "./rest/AxiosHttpRequest"; + import { prewrap } from "./rest/prewrap"; +import { AxiosHttpRequest } from "./rest/AxiosHttpRequest"; + +import { account, assets, clock, calendar } from "./api"; type Resolver = (options: ApiRequestOptions) => Promise; type Headers = Record; @@ -59,10 +61,18 @@ export class Client { get assets() { return prewrap(assets, this.baseHttpRequest.config); } + + get clock() { + return prewrap(clock, this.baseHttpRequest.config); + } + + get calendar() { + return prewrap(calendar, this.baseHttpRequest.config); + } } const client = new Client(); -client.account.get().then((account) => { - console.log(account); +client.assets.list({}).then((assets) => { + console.log(assets); }); diff --git a/src/api/account.ts b/src/api/account.ts index 320a7ce..82221fe 100644 --- a/src/api/account.ts +++ b/src/api/account.ts @@ -25,15 +25,14 @@ const activities = { */ activityTypes?: "trade_activity" | "non_trade_activity"; } - ): CancelablePromise> => { - return httpRequest.request({ + ): CancelablePromise> => + httpRequest.request({ method: "GET", url: "/v2/account/activities", query: { activity_types: activityTypes, }, - }); - }, + }), /** * Get account activities of one type * Returns account activity entries for a specific type of activity. @@ -85,8 +84,8 @@ const activities = { */ category?: string; } - ): CancelablePromise> => { - return httpRequest.request({ + ): CancelablePromise> => + httpRequest.request({ method: "GET", url: "/v2/account/activities/{activity_type}", path: { @@ -101,8 +100,7 @@ const activities = { page_token: pageToken, category: category, }, - }); - }, + }), }; /** @@ -111,12 +109,11 @@ const activities = { * @returns Account OK * @throws ApiError */ -function get(httpRequest: BaseHttpRequest): CancelablePromise { - return httpRequest.request({ +const get = (httpRequest: BaseHttpRequest): CancelablePromise => + httpRequest.request({ method: "GET", url: "/v2/account", }); -} /** * Account Portfolio History @@ -124,7 +121,7 @@ function get(httpRequest: BaseHttpRequest): CancelablePromise { * @returns PortfolioHistory Successful response * @throws ApiError */ -function portfolioHistory( +const portfolioHistory = ( httpRequest: BaseHttpRequest, { period, @@ -149,8 +146,8 @@ function portfolioHistory( */ extendedHours?: string; } -): CancelablePromise { - return httpRequest.request({ +): CancelablePromise => + httpRequest.request({ method: "GET", url: "/v2/account/portfolio/history", query: { @@ -160,7 +157,6 @@ function portfolioHistory( extended_hours: extendedHours, }, }); -} const config = { /** @@ -171,33 +167,31 @@ const config = { */ get: ( httpRequest: BaseHttpRequest - ): CancelablePromise => { - return httpRequest.request({ + ): CancelablePromise => + httpRequest.request({ method: "GET", url: "/v2/account/configurations", - }); - }, + }), /** * Account Configurations * Updates and returns the current account configuration values * @returns AccountConfigurations Successful response * @throws ApiError */ - patch: ( + update: ( httpRequest: BaseHttpRequest, { requestBody, }: { requestBody?: AccountConfigurations; } - ): CancelablePromise => { - return httpRequest.request({ + ): CancelablePromise => + httpRequest.request({ method: "PATCH", url: "/v2/account/configurations", body: requestBody, mediaType: "application/json", - }); - }, + }), }; export default { diff --git a/src/api/assets.ts b/src/api/assets.ts index 12541b5..2541360 100644 --- a/src/api/assets.ts +++ b/src/api/assets.ts @@ -1,5 +1,6 @@ import type { Assets } from "../entities/Assets.js"; import type { CancelablePromise } from "../rest/CancelablePromise"; + import { BaseHttpRequest } from "../rest/BaseHttpRequest"; /** @@ -8,7 +9,7 @@ import { BaseHttpRequest } from "../rest/BaseHttpRequest"; * @returns Assets An array of asset objects * @throws ApiError */ -function get( +const list = ( httpRequest: BaseHttpRequest, { status, @@ -33,8 +34,8 @@ function get( */ attributes?: string; } -): CancelablePromise> { - return httpRequest.request({ +): CancelablePromise> => + httpRequest.request({ method: "GET", url: "/v2/assets", query: { @@ -44,7 +45,6 @@ function get( attributes: attributes, }, }); -} /** * Get an Asset by ID or Symbol @@ -56,7 +56,7 @@ function get( * @returns Assets An Asset object * @throws ApiError */ -function getBySymbolOrAssetId( +const getBySymbolOrAssetId = ( httpRequest: BaseHttpRequest, { symbolOrAssetId, @@ -66,8 +66,8 @@ function getBySymbolOrAssetId( */ symbolOrAssetId: string; } -): CancelablePromise { - return httpRequest.request({ +): CancelablePromise => + httpRequest.request({ method: "GET", url: "/v2/assets/{symbol_or_asset_id}", path: { @@ -77,9 +77,8 @@ function getBySymbolOrAssetId( 404: `Not Found`, }, }); -} export default { - get, + list, getBySymbolOrAssetId, }; diff --git a/src/api/calendar.ts b/src/api/calendar.ts index 14e1059..c3c78ed 100644 --- a/src/api/calendar.ts +++ b/src/api/calendar.ts @@ -1,16 +1,7 @@ import type { Calendar } from "../entities/Calendar.js"; - import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; - -const methods = { - // we preset this on client creation - httpRequest: null as unknown as BaseHttpRequest, - getCalendar, -}; -// expose all methods as properties of a single object -export default methods; +import { BaseHttpRequest } from "../rest/BaseHttpRequest"; /** * Get Market Calendar info @@ -20,25 +11,28 @@ export default methods; * @returns Calendar OK * @throws ApiError */ -function getCalendar({ - start, - end, - dateType, -}: { - /** - * The first date to retrieve data for (inclusive) - */ - start?: string; - /** - * The last date to retrieve data for (inclusive) - */ - end?: string; - /** - * Indicates what start and end mean. Enum: ‘TRADING’ or ‘SETTLEMENT’. Default value is ‘TRADING’. If TRADING is specified, returns a calendar whose trading date matches start, end. If SETTLEMENT is specified, returns the calendar whose settlement date matches start and end. - */ - dateType?: string; -}): CancelablePromise> { - return methods.httpRequest.request({ +const get = ( + httpRequest: BaseHttpRequest, + { + start, + end, + dateType, + }: { + /** + * The first date to retrieve data for (inclusive) + */ + start?: string; + /** + * The last date to retrieve data for (inclusive) + */ + end?: string; + /** + * Indicates what start and end mean. Enum: ‘TRADING’ or ‘SETTLEMENT’. Default value is ‘TRADING’. If TRADING is specified, returns a calendar whose trading date matches start, end. If SETTLEMENT is specified, returns the calendar whose settlement date matches start and end. + */ + dateType?: string; + } +): CancelablePromise> => + httpRequest.request({ method: "GET", url: "/v2/calendar", query: { @@ -47,4 +41,7 @@ function getCalendar({ date_type: dateType, }, }); -} + +export default { + get, +}; diff --git a/src/api/clock.ts b/src/api/clock.ts index a1af8a7..0fe7fca 100644 --- a/src/api/clock.ts +++ b/src/api/clock.ts @@ -1,23 +1,22 @@ import type { Clock } from "../entities/Clock.js"; - import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class Clock { - constructor(public readonly httpRequest: BaseHttpRequest) {} +import { BaseHttpRequest } from "../rest/BaseHttpRequest"; + +/** + * Get Market Clock info + * The clock API serves the current market timestamp, whether the market is currently open, as well as the times of the next market open and close. + * + * Returns the market clock. + * @returns Clock OK + * @throws ApiError + */ +const get = (httpRequest: BaseHttpRequest): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v2/clock", + }); - /** - * Get Market Clock info - * The clock API serves the current market timestamp, whether or not the market is currently open, as well as the times of the next market open and close. - * - * Returns the market clock. - * @returns Clock OK - * @throws ApiError - */ - public getClock(): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/clock", - }); - } -} +export default { + get, +}; diff --git a/src/api/crypto.ts b/src/api/crypto.ts index 2824480..1a5dc2b 100644 --- a/src/api/crypto.ts +++ b/src/api/crypto.ts @@ -14,23 +14,19 @@ import type { TradesResponse } from "../entities/TradesResponse.js"; import type { CancelablePromise } from "../rest/CancelablePromise"; import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; -export class Crypto { - constructor(public readonly httpRequest: BaseHttpRequest) { - // change the baseURL to data.alpaca.markets - this.httpRequest.config.BASE = "https://data.alpaca.markets"; - } - - /** - * Get Trade data for multiple crypto symbols - * The Multi Trades API provides historical trade data for a list of given crypto symbols on a specified date. Returns trades for the queried crypto symbols. - * - * Returned results are sorted by symbol first then by Trade timestamp. This means that you are likely to see only one symbol in your first response if there are enough Trades for that symbol to hit the limit you requested on that request. - * - * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Trades were found for them. - * @returns MultiTradesResponse Successful response - * @throws ApiError - */ - public getTradesForMultipleSymbols({ +/** + * Get Trade data for multiple crypto symbols + * The Multi Trades API provides historical trade data for a list of given crypto symbols on a specified date. Returns trades for the queried crypto symbols. + * + * Returned results are sorted by symbol first then by Trade timestamp. This means that you are likely to see only one symbol in your first response if there are enough Trades for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Trades were found for them. + * @returns MultiTradesResponse Successful response + * @throws ApiError + */ +const getTradesForMultipleSymbols = ( + httpRequest: BaseHttpRequest, + { symbols, start, end, @@ -62,28 +58,30 @@ export class Crypto { * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. */ pageToken?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/trades", - query: { - start: start, - end: end, - exchanges: exchanges, - limit: limit, - page_token: pageToken, - symbols: symbols, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/trades", + query: { + start: start, + end: end, + exchanges: exchanges, + limit: limit, + page_token: pageToken, + symbols: symbols, + }, + }); - /** - * Get Latest Trade data for multiple Crypto symbols - * Provides latest trade data for a list of given crypto symbols. - * @returns LatestMultiTradesResponse OK - * @throws ApiError - */ - public getLatestTradesForMultipleSymbols({ +/** + * Get Latest Trade data for multiple Crypto symbols + * Provides latest trade data for a list of given crypto symbols. + * @returns LatestMultiTradesResponse OK + * @throws ApiError + */ +const getLatestTradesForMultipleSymbols = ( + httpRequest: BaseHttpRequest, + { symbols, exchange, }: { @@ -95,24 +93,26 @@ export class Crypto { * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ exchange: "ERSX" | "CBSE" | "FTXU"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/trades/latest", - query: { - symbols, - exchange, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/trades/latest", + query: { + symbols, + exchange, + }, + }); - /** - * Get Trade data for a crypto symbol - * The Trades API provides historical trade data for a given crypto symbol on a specified date. Returns trades for the queried crypto symbol - * @returns TradesResponse Successful response - * @throws ApiError - */ - public getTradesForSymbol({ +/** + * Get Trade data for a crypto symbol + * The Trades API provides historical trade data for a given crypto symbol on a specified date. Returns trades for the queried crypto symbol + * @returns TradesResponse Successful response + * @throws ApiError + */ +const getTradesForSymbol = ( + httpRequest: BaseHttpRequest, + { symbol, start, end, @@ -144,28 +144,30 @@ export class Crypto { * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. */ pageToken?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/trades", - query: { - symbols: symbol, - start: start, - end: end, - exchanges: exchanges, - limit: limit, - page_token: pageToken, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/trades", + query: { + symbols: symbol, + start: start, + end: end, + exchanges: exchanges, + limit: limit, + page_token: pageToken, + }, + }); - /** - * Latest Trades - * The Latest Trades API provides the latest historical trade data for a given crypto symbol. Returns trades for the queried crypto symbol. - * @returns LatestTradeResponse Successful response - * @throws ApiError - */ - public getLatestTradesForSymbol({ +/** + * Latest Trades + * The Latest Trades API provides the latest historical trade data for a given crypto symbol. Returns trades for the queried crypto symbol. + * @returns LatestTradeResponse Successful response + * @throws ApiError + */ +const getLatestTradesForSymbol = ( + httpRequest: BaseHttpRequest, + { symbol, exchange, }: { @@ -177,28 +179,30 @@ export class Crypto { * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ exchange: "ERSX" | "CBSE" | "FTXU"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/latest/trades", - query: { - symbols: symbol, - exchange: exchange, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/latest/trades", + query: { + symbols: symbol, + exchange: exchange, + }, + }); - /** - * Get Bars for multiple Crypto symbols - * returns aggregate historical data for the requested crypto symbols. - * - * Returned results are sorted by symbol first then by Bar timestamp. This means that you are likely to see only one symbol in your first response if there are enough Bars for that symbol to hit the limit you requested on that request. - * - * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Bars were found for them. - * @returns MultiBarsResponse Successful response - * @throws ApiError - */ - public getBarsForMultipleSymbols({ +/** + * Get Bars for multiple Crypto symbols + * returns aggregate historical data for the requested crypto symbols. + * + * Returned results are sorted by symbol first then by Bar timestamp. This means that you are likely to see only one symbol in your first response if there are enough Bars for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Bars were found for them. + * @returns MultiBarsResponse Successful response + * @throws ApiError + */ +const getBarsForMultipleSymbols = ( + httpRequest: BaseHttpRequest, + { symbols, timeframe, start, @@ -235,29 +239,31 @@ export class Crypto { * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ exchanges?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/bars", - query: { - symbols: symbols, - start: start, - end: end, - timeframe: timeframe, - page_token: pageToken, - limit: limit, - exchanges: exchanges, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/bars", + query: { + symbols: symbols, + start: start, + end: end, + timeframe: timeframe, + page_token: pageToken, + limit: limit, + exchanges: exchanges, + }, + }); - /** - * Get Latest Bars for multiple Crypto symbols - * returns latest historical data for the requested crypto symbols for a specific exchange - * @returns LatestMultiBarsResponse OK - * @throws ApiError - */ - public getLatestBarsForMultipleSymbols({ +/** + * Get Latest Bars for multiple Crypto symbols + * returns latest historical data for the requested crypto symbols for a specific exchange + * @returns LatestMultiBarsResponse OK + * @throws ApiError + */ +const getLatestBarsForMultipleSymbols = ( + httpRequest: BaseHttpRequest, + { symbols, exchange, }: { @@ -269,24 +275,26 @@ export class Crypto { * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ exchange: "ERSX" | "CBSE" | "FTXU"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/bars/latest", - query: { - symbols, - exchange, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/bars/latest", + query: { + symbols, + exchange, + }, + }); - /** - * Get Bar data for a crypto symbol - * The Bars API returns aggregate historical data for the requested securities.. Returns bars for the queried crypto symbol - * @returns BarsResponse Successful response - * @throws ApiError - */ - public getBarsForSymbol({ +/** + * Get Bar data for a crypto symbol + * The Bars API returns aggregate historical data for the requested securities.. Returns bars for the queried crypto symbol + * @returns BarsResponse Successful response + * @throws ApiError + */ +const getBarsForSymbol = ( + httpRequest: BaseHttpRequest, + { symbol, timeframe, start, @@ -323,29 +331,31 @@ export class Crypto { * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. */ pageToken?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/bars", - query: { - symbols: symbol, - start: start, - end: end, - timeframe: timeframe, - exchanges: exchanges, - limit: limit, - page_token: pageToken, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/bars", + query: { + symbols: symbol, + start: start, + end: end, + timeframe: timeframe, + exchanges: exchanges, + limit: limit, + page_token: pageToken, + }, + }); - /** - * Get Latest Bar data for a Crypto symbol - * Gets latest historical bar data for the requested crypto symbol for a specific exchange - * @returns LatestBarResponse OK - * @throws ApiError - */ - public getLatestBarsForSymbol({ +/** + * Get Latest Bar data for a Crypto symbol + * Gets latest historical bar data for the requested crypto symbol for a specific exchange + * @returns LatestBarResponse OK + * @throws ApiError + */ +const getLatestBarsForSymbol = ( + httpRequest: BaseHttpRequest, + { symbol, exchange, }: { @@ -357,28 +367,30 @@ export class Crypto { * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ exchange: "ERSX" | "CBSE" | "FTXU"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/latest/bars", - query: { - symbols: symbol, - exchange: exchange, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/latest/bars", + query: { + symbols: symbol, + exchange: exchange, + }, + }); - /** - * Get Quotes for multiple crypto symbols - * The Multi Quotes API provides quotes for a list of given crypto symbols at a specified date. Returns quotes for each of the queried crypto symbols. - * - * Returned results are sorted by symbol first then by Quote timestamp. This means that you are likely to see only one symbol in your first response if there are enough Quotes for that symbol to hit the limit you requested on that request. - * - * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Quotes were found for them. - * @returns MultiQuotesReponse Successful response - * @throws ApiError - */ - public getQuotesForMultipleSymbols({ +/** + * Get Quotes for multiple crypto symbols + * The Multi Quotes API provides quotes for a list of given crypto symbols at a specified date. Returns quotes for each of the queried crypto symbols. + * + * Returned results are sorted by symbol first then by Quote timestamp. This means that you are likely to see only one symbol in your first response if there are enough Quotes for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Quotes were found for them. + * @returns MultiQuotesReponse Successful response + * @throws ApiError + */ +const getQuotesForMultipleSymbols = ( + httpRequest: BaseHttpRequest, + { symbols, start, end, @@ -410,28 +422,30 @@ export class Crypto { * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. */ pageToken?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/quotes", - query: { - start: start, - end: end, - exchanges: exchanges, - limit: limit, - page_token: pageToken, - symbols: symbols, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/quotes", + query: { + start: start, + end: end, + exchanges: exchanges, + limit: limit, + page_token: pageToken, + symbols: symbols, + }, + }); - /** - * Get Latest Quotes for multiple Crypto symbols - * Provides latest quotes for a list of given crypto symbols. - * @returns LatestMultiQuotesResponse OK - * @throws ApiError - */ - public getLatestQuotesForMultipleSymbols({ +/** + * Get Latest Quotes for multiple Crypto symbols + * Provides latest quotes for a list of given crypto symbols. + * @returns LatestMultiQuotesResponse OK + * @throws ApiError + */ +const getLatestQuotesForMultipleSymbols = ( + httpRequest: BaseHttpRequest, + { symbols, exchange, }: { @@ -443,24 +457,26 @@ export class Crypto { * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ exchange: "ERSX" | "CBSE" | "FTXU"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/latest/quotes", - query: { - symbols: symbols, - exchange: exchange, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/latest/quotes", + query: { + symbols: symbols, + exchange: exchange, + }, + }); - /** - * Latest Quote - * Returns latest quote for the queried crypto symbol - * @returns LatestQuoteResponse Successful response - * @throws ApiError - */ - public getLatestQuoteForSymbol({ +/** + * Latest Quote + * Returns latest quote for the queried crypto symbol + * @returns LatestQuoteResponse Successful response + * @throws ApiError + */ +const getLatestQuoteForSymbol = ( + httpRequest: BaseHttpRequest, + { symbol, exchange, }: { @@ -472,24 +488,26 @@ export class Crypto { * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ exchange: "ERSX" | "CBSE" | "FTXU"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/latest/quotes", - query: { - symbols: symbol, - exchange: exchange, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/latest/quotes", + query: { + symbols: symbol, + exchange: exchange, + }, + }); - /** - * Get Snapshots for multiple crypto symbols - * The Multi Snapshot API returns the latest trade, latest quote, minute bar daily bar, and previous daily bar data for list of given crypto symbols. - * @returns MultiSnapshotResponse Successful response - * @throws ApiError - */ - public getSnapshotsForMultipleSymbols({ +/** + * Get Snapshots for multiple crypto symbols + * The Multi Snapshot API returns the latest trade, latest quote, minute bar daily bar, and previous daily bar data for list of given crypto symbols. + * @returns MultiSnapshotResponse Successful response + * @throws ApiError + */ +const getSnapshotsForMultipleSymbols = ( + httpRequest: BaseHttpRequest, + { exchange, symbols, }: { @@ -501,24 +519,26 @@ export class Crypto { * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH */ symbols: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/snapshots", - query: { - exchange: exchange, - symbols: symbols, - }, - }); } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/snapshots", + query: { + exchange: exchange, + symbols: symbols, + }, + }); - /** - * Get a Snapshot for a crypto symbol - * The Snapshot API returns the latest trade, latest quote, minute bar daily bar, and previous daily bar data for a given crypto symbol. - * @returns Snapshot Successful response - * @throws ApiError - */ - public getSnapshotForSymbol({ +/** + * Get a Snapshot for a crypto symbol + * The Snapshot API returns the latest trade, latest quote, minute bar daily bar, and previous daily bar data for a given crypto symbol. + * @returns Snapshot Successful response + * @throws ApiError + */ +const getSnapshotForSymbol = ( + httpRequest: BaseHttpRequest, + { symbol, exchange, }: { @@ -530,14 +550,13 @@ export class Crypto { * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` */ exchange: "ERSX" | "CBSE" | "FTXU"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/snapshot", - query: { - symbols: symbol, - exchange: exchange, - }, - }); } -} +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v1beta3/crypto/us/snapshot", + query: { + symbols: symbol, + exchange: exchange, + }, + }); diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 0000000..a1d7483 --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,4 @@ +export { default as account } from "./account"; +export { default as assets } from "./assets"; +export { default as clock } from "./clock"; +export { default as calendar } from "./calendar"; From 9215ed3461887ae2542f139c57fbc908694ed4e4 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 7 Aug 2023 13:04:28 -0600 Subject: [PATCH 43/55] delete account.ts new account.ts refactor: ApiError.ts refactor: AxiosHttpRequest.ts refactor: BaseHttpRequest.ts refactor: Client.ts refactor: index.ts move from calendar.ts, move to calendar.ts move from clock.ts, move to clock.ts move from crypto.ts, move to crypto.ts delete index.ts new index.ts move from logos.ts, move to logos.ts move from news.ts, move to news.ts move from orders.ts, move to orders.ts move from positions.ts, move to positions.ts refactor: prewrap.ts refactor: request.ts move from screener.ts, move to screener.ts move from stocks.ts, move to stocks.ts move from watchlists.ts, move to watchlists.ts --- src/Client.ts | 64 +++--- src/api/account.ts | 202 ------------------- src/api/index.ts | 4 - src/api/logos.ts | 40 ---- src/api/orders.ts | 213 -------------------- src/api/positions.ts | 115 ----------- src/api/screener.ts | 39 ---- src/api/watchlists.ts | 285 --------------------------- src/index.ts | 30 +-- src/rest/ApiError.ts | 4 +- src/rest/AxiosHttpRequest.ts | 12 +- src/rest/BaseHttpRequest.ts | 8 +- src/rest/prewrap.ts | 2 +- src/rest/request.ts | 20 +- src/services/account.ts | 193 ++++++++++++++++++ src/{api => services}/assets.ts | 13 +- src/{api => services}/calendar.ts | 10 +- src/{api => services}/clock.ts | 12 +- src/{api => services}/crypto.ts | 264 +------------------------ src/services/index.ts | 25 +++ src/services/logos.ts | 39 ++++ src/{api => services}/news.ts | 55 +++--- src/services/orders.ts | 226 +++++++++++++++++++++ src/services/positions.ts | 122 ++++++++++++ src/services/screener.ts | 38 ++++ src/{api => services}/stocks.ts | 4 +- src/services/watchlists.ts | 313 ++++++++++++++++++++++++++++++ 27 files changed, 1069 insertions(+), 1283 deletions(-) delete mode 100644 src/api/account.ts delete mode 100644 src/api/index.ts delete mode 100644 src/api/logos.ts delete mode 100644 src/api/orders.ts delete mode 100644 src/api/positions.ts delete mode 100644 src/api/screener.ts delete mode 100644 src/api/watchlists.ts create mode 100644 src/services/account.ts rename src/{api => services}/assets.ts (92%) rename src/{api => services}/calendar.ts (92%) rename src/{api => services}/clock.ts (73%) rename src/{api => services}/crypto.ts (57%) create mode 100644 src/services/index.ts create mode 100644 src/services/logos.ts rename src/{api => services}/news.ts (65%) create mode 100644 src/services/orders.ts create mode 100644 src/services/positions.ts create mode 100644 src/services/screener.ts rename src/{api => services}/stocks.ts (99%) create mode 100644 src/services/watchlists.ts diff --git a/src/Client.ts b/src/Client.ts index b4b4ad4..ab71ff7 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,25 +1,20 @@ -import type { BaseHttpRequest } from "./rest/BaseHttpRequest"; -import type { ApiRequestOptions } from "./rest/ApiRequestOptions"; +import services from "./services/index.js"; -import { prewrap } from "./rest/prewrap"; -import { AxiosHttpRequest } from "./rest/AxiosHttpRequest"; +import type { BaseHttpRequest } from "./rest/BaseHttpRequest.js"; +import type { ApiRequestOptions } from "./rest/ApiRequestOptions.js"; -import { account, assets, clock, calendar } from "./api"; +import { prewrap } from "./rest/prewrap.js"; +import { AxiosHttpRequest } from "./rest/AxiosHttpRequest.js"; type Resolver = (options: ApiRequestOptions) => Promise; type Headers = Record; -export type OpenAPIConfig = { +export type Config = { BASE: string; HEADERS?: Headers | Resolver | undefined; }; -export const OpenAPI: OpenAPIConfig = { - BASE: "https://paper-api.alpaca.markets", - HEADERS: undefined, -}; - -type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest; +type HttpRequestConstructor = new (config: Config) => BaseHttpRequest; interface ClientOptions { paper: boolean; @@ -54,25 +49,38 @@ export class Client { }); } - get account() { - return prewrap(account, this.baseHttpRequest.config); - } - - get assets() { - return prewrap(assets, this.baseHttpRequest.config); + get v2() { + const { account, assets, clock, calendar, orders, positions, watchlists } = + services; + + return prewrap( + { + ...account, + ...assets, + ...clock, + ...calendar, + ...orders, + ...positions, + ...watchlists, + }, + this.baseHttpRequest + ); } - get clock() { - return prewrap(clock, this.baseHttpRequest.config); + get v1beta3() { + const { crypto } = services; + return prewrap(crypto, this.baseHttpRequest); } - get calendar() { - return prewrap(calendar, this.baseHttpRequest.config); + get v1beta1() { + const { news, screener, logos } = services; + return prewrap( + { + ...news, + ...screener, + ...logos, + }, + this.baseHttpRequest + ); } } - -const client = new Client(); - -client.assets.list({}).then((assets) => { - console.log(assets); -}); diff --git a/src/api/account.ts b/src/api/account.ts deleted file mode 100644 index 82221fe..0000000 --- a/src/api/account.ts +++ /dev/null @@ -1,202 +0,0 @@ -import type { - Account, - NonTradeActivities, - TradingActivities, - CancelablePromise, - BaseHttpRequest, - AccountConfigurations, - PortfolioHistory, -} from "../"; - -const activities = { - /** - * Get account activities of one type - * Returns account activity entries for many types of activities. - * @returns any returns an array of Account activities - * @throws ApiError - */ - get: ( - httpRequest: BaseHttpRequest, - { - activityTypes, - }: { - /** - * A comma-separated list of the activity types to include in the response. If unspecified, activities of all types will be returned. (Cannot be used with category) - */ - activityTypes?: "trade_activity" | "non_trade_activity"; - } - ): CancelablePromise> => - httpRequest.request({ - method: "GET", - url: "/v2/account/activities", - query: { - activity_types: activityTypes, - }, - }), - /** - * Get account activities of one type - * Returns account activity entries for a specific type of activity. - * @returns any returns an array of Account activities - * @throws ApiError - */ - getByType: ( - httpRequest: BaseHttpRequest, - { - activityType, - date, - until, - after, - direction, - pageSize, - pageToken, - category, - }: { - /** - * The activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page. - */ - activityType: string; - /** - * The date for which you want to see activities. - */ - date?: string; - /** - * The response will contain only activities submitted before this date. (Cannot be used with date.) - */ - until?: string; - /** - * The response will contain only activities submitted after this date. (Cannot be used with date.) - */ - after?: string; - /** - * asc or desc (default desc if unspecified.) - */ - direction?: "asc" | "desc"; - /** - * The maximum number of entries to return in the response. (See the section on paging above.) - */ - pageSize?: number; - /** - * The ID of the end of your current page of results. - */ - pageToken?: string; - /** - * trade_activity or non_trade_activity, to specify the kind of results the server should return. (Cannot be used with /{activity_type} or ?activity_types=...) - */ - category?: string; - } - ): CancelablePromise> => - httpRequest.request({ - method: "GET", - url: "/v2/account/activities/{activity_type}", - path: { - activity_type: activityType, - }, - query: { - date: date, - until: until, - after: after, - direction: direction, - page_size: pageSize, - page_token: pageToken, - category: category, - }, - }), -}; - -/** - * Get account - * Returns the account associated with the API key. - * @returns Account OK - * @throws ApiError - */ -const get = (httpRequest: BaseHttpRequest): CancelablePromise => - httpRequest.request({ - method: "GET", - url: "/v2/account", - }); - -/** - * Account Portfolio History - * Returns timeseries data about equity and profit/loss (P/L) of the account in requested timespan. - * @returns PortfolioHistory Successful response - * @throws ApiError - */ -const portfolioHistory = ( - httpRequest: BaseHttpRequest, - { - period, - timeframe, - dateEnd, - extendedHours, - }: { - /** - * The duration of the data in + , such as 1D, where can be D for day, W for week, M for month and A for year. Defaults to 1M. - */ - period?: string; - /** - * The resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. - */ - timeframe?: string; - /** - * The date the data is returned up to, in “YYYY-MM-DD” format. Defaults to the current market date (rolls over at the market open if extended_hours is false, otherwise at 7am ET) - */ - dateEnd?: string; - /** - * If true, include extended hours in the result. This is effective only for timeframe less than 1D. - */ - extendedHours?: string; - } -): CancelablePromise => - httpRequest.request({ - method: "GET", - url: "/v2/account/portfolio/history", - query: { - period: period, - timeframe: timeframe, - date_end: dateEnd, - extended_hours: extendedHours, - }, - }); - -const config = { - /** - * Account Configurations - * gets the current account configuration values - * @returns AccountConfigurations Successful response - * @throws ApiError - */ - get: ( - httpRequest: BaseHttpRequest - ): CancelablePromise => - httpRequest.request({ - method: "GET", - url: "/v2/account/configurations", - }), - /** - * Account Configurations - * Updates and returns the current account configuration values - * @returns AccountConfigurations Successful response - * @throws ApiError - */ - update: ( - httpRequest: BaseHttpRequest, - { - requestBody, - }: { - requestBody?: AccountConfigurations; - } - ): CancelablePromise => - httpRequest.request({ - method: "PATCH", - url: "/v2/account/configurations", - body: requestBody, - mediaType: "application/json", - }), -}; - -export default { - get, - config, - activities, - portfolioHistory, -}; diff --git a/src/api/index.ts b/src/api/index.ts deleted file mode 100644 index a1d7483..0000000 --- a/src/api/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { default as account } from "./account"; -export { default as assets } from "./assets"; -export { default as clock } from "./clock"; -export { default as calendar } from "./calendar"; diff --git a/src/api/logos.ts b/src/api/logos.ts deleted file mode 100644 index 50e9dcf..0000000 --- a/src/api/logos.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; - -export class Logos { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get Logo for symbol - * Returns logo image resource for provided symbol. - * @returns binary Returns the requested logo as an image. - * @throws ApiError - */ - public getLogoForSymbol({ - cryptoOrStockSymbol, - placeholder = true, - }: { - /** - * The crypto or stock symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. - */ - cryptoOrStockSymbol: string; - /** - * If true then the api will generate a placeholder image if no logo was found. Defaults to true - */ - placeholder?: boolean; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta1/logos/{crypto_or_stock_symbol}", - path: { - crypto_or_stock_symbol: cryptoOrStockSymbol, - }, - query: { - placeholder: placeholder, - }, - errors: { - 404: `No Logo was found for this symbol. This code will only be returned if you set \`placeholder\` to false. Otherwise we will generate a placeholder image for this symbol`, - }, - }); - } -} diff --git a/src/api/orders.ts b/src/api/orders.ts deleted file mode 100644 index 24eaf9a..0000000 --- a/src/api/orders.ts +++ /dev/null @@ -1,213 +0,0 @@ -import type { CanceledOrderResponse } from "../entities/CanceledOrderResponse.js"; -import type { Order } from "../entities/Order.js"; -import type { PatchOrderRequest } from "../entities/PatchOrderRequest.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; - -export class Orders { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Order - * Places a new order for the given account. An order request may be rejected if the account is not authorized for trading, or if the tradable balance is insufficient to fill the order.. - * @returns Order Successful response - * @throws ApiError - */ - public postOrder({ - requestBody, - }: { - requestBody: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "POST", - url: "/v2/orders", - body: requestBody, - mediaType: "application/json", - errors: { - 403: `Forbidden - - Buying power or shares is not sufficient.`, - 422: `Unprocessable - - Input parameters are not recognized.`, - }, - }); - } - - /** - * All Orders - * Retrieves a list of orders for the account, filtered by the supplied query parameters. - * @returns Order Successful response - * - * An array of Order objects - * @throws ApiError - */ - public getAllOrders({ - status, - limit, - after, - until, - direction, - nested, - symbols, - side, - }: { - /** - * Order status to be queried. open, closed or all. Defaults to open. - */ - status?: "open" | "closed" | "all"; - /** - * The maximum number of orders in response. Defaults to 50 and max is 500. - */ - limit?: number; - /** - * The response will include only ones submitted after this timestamp (exclusive.) - */ - after?: string; - /** - * The response will include only ones submitted until this timestamp (exclusive.) - */ - until?: string; - /** - * The chronological order of response based on the submission time. asc or desc. Defaults to desc. - */ - direction?: "asc" | "desc"; - /** - * If true, the result will roll up multi-leg orders under the legs field of primary order. - */ - nested?: boolean; - /** - * A comma-separated list of symbols to filter by (ex. “AAPL,TSLA,MSFT”). A currency pair is required for crypto orders (ex. “BTCUSD,BCHUSD,LTCUSD,ETCUSD”). - */ - symbols?: string; - /** - * Filters down to orders that have a matching side field set. - */ - side?: string; - }): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/orders", - query: { - status: status, - limit: limit, - after: after, - until: until, - direction: direction, - nested: nested, - symbols: symbols, - side: side, - }, - }); - } - - /** - * All Orders - * Attempts to cancel all open orders. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. - * @returns CanceledOrderResponse Multi-Status with body. - * - * an array of objects that include the order id and http status code for each status request. - * @throws ApiError - */ - public deleteAllOrders(): CancelablePromise> { - return this.httpRequest.request({ - method: "DELETE", - url: "/v2/orders", - errors: { - 500: `Failed to cancel order.`, - }, - }); - } - - /** - * Order by Order ID - * Retrieves a single order for the given order_id. - * @returns Order Successful response - * @throws ApiError - */ - public getOrderByOrderId({ - orderId, - nested, - }: { - /** - * order id - */ - orderId: string; - /** - * If true, the result will roll up multi-leg orders under the legs field of primary order. - */ - nested?: boolean; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/orders/{order_id}", - path: { - order_id: orderId, - }, - query: { - nested: nested, - }, - }); - } - - /** - * Order - * Replaces a single order with updated parameters. Each parameter overrides the corresponding attribute of the existing order. The other attributes remain the same as the existing order. - * - * A success return code from a replaced order does NOT guarantee the existing open order has been replaced. If the existing open order is filled before the replacing (new) order reaches the execution venue, the replacing (new) order is rejected, and these events are sent in the trade_updates stream channel. - * - * While an order is being replaced, buying power is reduced by the larger of the two orders that have been placed (the old order being replaced, and the newly placed order to replace it). If you are replacing a buy entry order with a higher limit price than the original order, the buying power is calculated based on the newly placed order. If you are replacing it with a lower limit price, the buying power is calculated based on the old order. - * - * @returns Order Successful response - * - * The new Order object with the new order ID. - * @throws ApiError - */ - public patchOrderByOrderId({ - orderId, - requestBody, - }: { - /** - * order id - */ - orderId: string; - requestBody: PatchOrderRequest; - }): CancelablePromise { - return this.httpRequest.request({ - method: "PATCH", - url: "/v2/orders/{order_id}", - path: { - order_id: orderId, - }, - body: requestBody, - mediaType: "application/json", - }); - } - - /** - * Order by Order ID - * Attempts to cancel an Open Order. If the order is no longer cancelable, the request will be rejected with status 422; otherwise accepted with return status 204. - * @returns void - * @throws ApiError - */ - public deleteOrderByOrderId({ - orderId, - }: { - /** - * order id - */ - orderId: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "DELETE", - url: "/v2/orders/{order_id}", - path: { - order_id: orderId, - }, - errors: { - 422: `The order status is not cancelable.`, - }, - }); - } -} diff --git a/src/api/positions.ts b/src/api/positions.ts deleted file mode 100644 index 53d0bc6..0000000 --- a/src/api/positions.ts +++ /dev/null @@ -1,115 +0,0 @@ -import type { Order } from "../entities/Order.js"; -import type { Position } from "../entities/Position.js"; -import type { PositionClosedReponse } from "../entities/PositionClosedReponse.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; - -export class Positions { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * All Open Positions - * The positions API provides information about an account’s current open positions. The response will include information such as cost basis, shares traded, and market value, which will be updated live as price information is updated. Once a position is closed, it will no longer be queryable through this API - * - * Retrieves a list of the account’s open positions - * @returns Position Successful response - * @throws ApiError - */ - public getAllOpenPositions(): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/positions", - }); - } - - /** - * All Positions - * Closes (liquidates) all of the account’s open long and short positions. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. - * @returns PositionClosedReponse Multi-Status with body. - * - * an array of PositionClosed responses - * @throws ApiError - */ - public deleteAllOpenPositions({ - cancelOrders, - }: { - /** - * If true is specified, cancel all open orders before liquidating all positions. - */ - cancelOrders?: boolean; - }): CancelablePromise> { - return this.httpRequest.request({ - method: "DELETE", - url: "/v2/positions", - query: { - cancel_orders: cancelOrders, - }, - errors: { - 500: `Failed to liquidate`, - }, - }); - } - - /** - * Open Position - * Retrieves the account’s open position for the given symbol or assetId. - * @returns Position Successful response - * @throws ApiError - */ - public getOpenPosition({ - symbolOrAssetId, - }: { - /** - * symbol or assetId - */ - symbolOrAssetId: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/positions/{symbol_or_asset_id}", - path: { - symbol_or_asset_id: symbolOrAssetId, - }, - }); - } - - /** - * Position - * Closes (liquidates) the account’s open position for the given symbol. Works for both long and short positions. - * @returns Order Successful response - * - * Returns the order created to close out this position - * @throws ApiError - */ - public deleteOpenPosition({ - symbolOrAssetId, - qty, - percentage, - }: { - /** - * symbol or assetId - */ - symbolOrAssetId: string; - /** - * the number of shares to liquidate. Can accept up to 9 decimal points. Cannot work with percentage - */ - qty?: number; - /** - * percentage of position to liquidate. Must be between 0 and 100. Would only sell fractional if position is originally fractional. Can accept up to 9 decimal points. Cannot work with qty - */ - percentage?: number; - }): CancelablePromise { - return this.httpRequest.request({ - method: "DELETE", - url: "/v2/positions/{symbol_or_asset_id}", - path: { - symbol_or_asset_id: symbolOrAssetId, - }, - query: { - qty: qty, - percentage: percentage, - }, - }); - } -} diff --git a/src/api/screener.ts b/src/api/screener.ts deleted file mode 100644 index 1241b6c..0000000 --- a/src/api/screener.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { MarketMoversResponse } from "../entities/MarketMoversResponse.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; - -export class Screener { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Get Top Market Movers by Market type - * Returns top market movers for stocks. By default will return top 5 market gainers and losers. - * @returns MarketMoversResponse OK - * @throws ApiError - */ - public getTopMoversByMarketType({ - marketType, - top = 10, - }: { - /** - * Screen specific market (stocks or crypto) - */ - marketType: "stocks" | "crypto"; - /** - * Number of top market movers to fetch (gainers and losers). Will return number top for each. By default 10 gainers and 10 losers. - */ - top?: number; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta1/screener/{market_type}/movers", - path: { - market_type: marketType, - }, - query: { - top: top, - }, - }); - } -} diff --git a/src/api/watchlists.ts b/src/api/watchlists.ts deleted file mode 100644 index dfe82d6..0000000 --- a/src/api/watchlists.ts +++ /dev/null @@ -1,285 +0,0 @@ -import type { UpdateWatchlistRequest } from "../entities/UpdateWatchlistRequest.js"; -import type { Watchlist } from "../entities/Watchlist.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; - -export class Watchlists { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * Watchlists - * Returns the list of watchlists registered under the account. - * @returns Watchlist Successful response - * @throws ApiError - */ - public getWatchlists(): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/watchlists", - }); - } - - /** - * Watchlist - * Create a new watchlist with initial set of assets. - * @returns Watchlist Successful response - * @throws ApiError - */ - public postWatchlist({ - requestBody, - }: { - requestBody: UpdateWatchlistRequest; - }): CancelablePromise { - return this.httpRequest.request({ - method: "POST", - url: "/v2/watchlists", - body: requestBody, - mediaType: "application/json", - }); - } - - /** - * Get Watchlist by ID - * Returns a watchlist identified by the ID. - * @returns Watchlist Successful response - * @throws ApiError - */ - public getWatchlistById({ - watchlistId, - }: { - /** - * watchlist id - */ - watchlistId: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/watchlists/{watchlist_id}", - path: { - watchlist_id: watchlistId, - }, - }); - } - - /** - * Update Watchlist By Id - * Update the name and/or content of watchlist - * @returns Watchlist Successful response - * @throws ApiError - */ - public updateWatchlistById({ - watchlistId, - requestBody, - }: { - /** - * watchlist id - */ - watchlistId: string; - requestBody?: UpdateWatchlistRequest; - }): CancelablePromise { - return this.httpRequest.request({ - method: "PUT", - url: "/v2/watchlists/{watchlist_id}", - path: { - watchlist_id: watchlistId, - }, - body: requestBody, - mediaType: "application/json", - }); - } - - /** - * Add Asset to Watchlist - * Append an asset for the symbol to the end of watchlist asset list - * @returns Watchlist Successful response - * @throws ApiError - */ - public addAssetToWatchlist({ - watchlistId, - requestBody, - }: { - /** - * watchlist id - */ - watchlistId: string; - requestBody?: { - /** - * the symbol name to add to the watchlist - */ - symbol?: string; - }; - }): CancelablePromise { - return this.httpRequest.request({ - method: "POST", - url: "/v2/watchlists/{watchlist_id}", - path: { - watchlist_id: watchlistId, - }, - body: requestBody, - mediaType: "application/json", - }); - } - - /** - * Delete Watchlist By Id - * Delete a watchlist. This is a permanent deletion. - * @returns void - * @throws ApiError - */ - public deleteWatchlistById({ - watchlistId, - }: { - /** - * watchlist id - */ - watchlistId: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "DELETE", - url: "/v2/watchlists/{watchlist_id}", - path: { - watchlist_id: watchlistId, - }, - errors: { - 404: `Watchlist not found`, - }, - }); - } - - /** - * Get Watchlist by Name - * You can also call GET, PUT, POST and DELETE with watchlist name with another endpoint /v2/watchlists:by_name and query parameter name=, instead of /v2/watchlists/{watchlist_id} endpoints - * - * Returns a watchlist by name - * @returns Watchlist Successful response - * @throws ApiError - */ - public getWatchlistByName({ - name, - }: { - /** - * name of the watchlist - */ - name: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/watchlists:by_name", - query: { - name: name, - }, - }); - } - - /** - * Update Watchlist By Name - * Update the name and/or content of watchlist - * @returns Watchlist Successful response - * @throws ApiError - */ - public updateWatchlistByName({ - name, - requestBody, - }: { - /** - * name of the watchlist - */ - name: string; - requestBody?: UpdateWatchlistRequest; - }): CancelablePromise { - return this.httpRequest.request({ - method: "PUT", - url: "/v2/watchlists:by_name", - query: { - name: name, - }, - body: requestBody, - mediaType: "application/json", - }); - } - - /** - * Add Asset to Watchlist By Name - * Append an asset for the symbol to the end of watchlist asset list - * @returns Watchlist Successful response - * @throws ApiError - */ - public addAssetToWatchlistByName({ - name, - requestBody, - }: { - /** - * name of the watchlist - */ - name: string; - requestBody?: { - /** - * the symbol name to add to the watchlist - */ - symbol?: string; - }; - }): CancelablePromise { - return this.httpRequest.request({ - method: "POST", - url: "/v2/watchlists:by_name", - query: { - name: name, - }, - body: requestBody, - mediaType: "application/json", - }); - } - - /** - * Delete Watchlist By Name - * Delete a watchlist. This is a permanent deletion. - * @returns void - * @throws ApiError - */ - public deleteWatchlistByName({ - name, - }: { - /** - * name of the watchlist - */ - name: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "DELETE", - url: "/v2/watchlists:by_name", - query: { - name: name, - }, - }); - } - - /** - * Symbol from Watchlist - * Delete one entry for an asset by symbol name - * @returns Watchlist Returns the updated watchlist - * @throws ApiError - */ - public removeAssetFromWatchlist({ - watchlistId, - symbol, - }: { - /** - * Watchlist ID - */ - watchlistId: string; - /** - * symbol name to remove from the watchlist content - */ - symbol: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "DELETE", - url: "/v2/watchlists/{watchlist_id}/{symbol}", - path: { - watchlist_id: watchlistId, - symbol: symbol, - }, - }); - } -} diff --git a/src/index.ts b/src/index.ts index bb64087..4c9e51f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,21 +1,14 @@ export { Client } from "./Client.js"; -export { ApiError } from "./rest/ApiError"; -export { BaseHttpRequest } from "./rest/BaseHttpRequest"; -export { CancelablePromise, CancelError } from "./rest/CancelablePromise"; -export { OpenAPI } from "./OpenAPI"; -export type { OpenAPIConfig } from "./OpenAPI"; +export { ApiError } from "./rest/ApiError.js"; +export { BaseHttpRequest } from "./rest/BaseHttpRequest.js"; +export { CancelablePromise, CancelError } from "./rest/CancelablePromise.js"; -export type { Account } from "./entities/Account.js"; -export { AccountConfigurations } from "./entities/AccountConfigurations.js"; export { AccountStatus } from "./entities/AccountStatus.js"; export { ActivityType } from "./entities/ActivityType.js"; export type { AddAssetToWatchlistRequest } from "./entities/AddAssetToWatchlistRequest.js"; export { AssetClass } from "./entities/AssetClass.js"; -export { Assets } from "./entities/Assets.js"; -export type { Calendar } from "./entities/Calendar.js"; export type { CanceledOrderResponse } from "./entities/CanceledOrderResponse.js"; -export type { Clock } from "./entities/Clock.js"; export { Exchange } from "./entities/Exchange.js"; export type { NonTradeActivities } from "./entities/NonTradeActivities.js"; export type { Order } from "./entities/Order.js"; @@ -32,17 +25,6 @@ export { TradingActivities } from "./entities/TradingActivities.js"; export type { UpdateWatchlistRequest } from "./entities/UpdateWatchlistRequest.js"; export type { Watchlist } from "./entities/Watchlist.js"; -export { Account } from "./api/account"; -export { AccountConfigurations } from "./api/AccountConfigurations"; -export { AccountService } from "./api/AccountService.js"; -export { Calendar } from "./api/calendar"; -export { Clock } from "./api/clock"; -export { Assets } from "./api/assets"; -export { Orders } from "./api/orders"; -export { PortfolioHistoryService } from "./api/PortfolioHistoryService.js"; -export { Positions } from "./api/positions"; -export { Watchlists } from "./api/watchlists"; - export { adjustment } from "./entities/adjustment.js"; export { Bar } from "./entities/Bar.js"; export type { BarsResponse } from "./entities/BarsResponse.js"; @@ -80,8 +62,4 @@ export type { Trade } from "./entities/Trade.js"; export type { TradesResponse } from "./entities/TradesResponse.js"; export type { XBBO } from "./entities/XBBO.js"; -export { Crypto } from "./api/crypto"; -export { Logos } from "./api/logos"; -export { News } from "./api/news"; -export { Screener } from "./api/screener"; -export { Stocks } from "./api/stocks"; +export { Stocks } from "./services/stocks.js"; diff --git a/src/rest/ApiError.ts b/src/rest/ApiError.ts index f092775..f74e664 100644 --- a/src/rest/ApiError.ts +++ b/src/rest/ApiError.ts @@ -1,5 +1,5 @@ -import type { ApiRequestOptions } from "./ApiRequestOptions"; -import type { ApiResult } from "./ApiResult"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import type { ApiResult } from "./ApiResult.js"; export class ApiError extends Error { public readonly url: string; diff --git a/src/rest/AxiosHttpRequest.ts b/src/rest/AxiosHttpRequest.ts index f2e4cb8..7765f23 100644 --- a/src/rest/AxiosHttpRequest.ts +++ b/src/rest/AxiosHttpRequest.ts @@ -1,11 +1,11 @@ -import type { ApiRequestOptions } from "./ApiRequestOptions"; -import { BaseHttpRequest } from "./BaseHttpRequest"; -import type { CancelablePromise } from "./CancelablePromise"; -import type { OpenAPIConfig } from "../OpenAPI"; -import { request as __request } from "./request"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import { BaseHttpRequest } from "./BaseHttpRequest.js"; +import type { CancelablePromise } from "./CancelablePromise.js"; +import { request as __request } from "./request.js"; +import { Config } from "../Client.js"; export class AxiosHttpRequest extends BaseHttpRequest { - constructor(config: OpenAPIConfig) { + constructor(config: Config) { super(config); } diff --git a/src/rest/BaseHttpRequest.ts b/src/rest/BaseHttpRequest.ts index b374489..cf15a36 100644 --- a/src/rest/BaseHttpRequest.ts +++ b/src/rest/BaseHttpRequest.ts @@ -1,9 +1,9 @@ -import type { ApiRequestOptions } from "./ApiRequestOptions"; -import type { CancelablePromise } from "./CancelablePromise"; -import type { OpenAPIConfig } from "../OpenAPI"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import type { CancelablePromise } from "./CancelablePromise.js"; +import { Config } from "../Client.js"; export abstract class BaseHttpRequest { - constructor(public readonly config: OpenAPIConfig) {} + constructor(public readonly config: Config) {} public abstract request(options: ApiRequestOptions): CancelablePromise; } diff --git a/src/rest/prewrap.ts b/src/rest/prewrap.ts index cc4e155..cf0c82b 100644 --- a/src/rest/prewrap.ts +++ b/src/rest/prewrap.ts @@ -1,4 +1,4 @@ -import { BaseHttpRequest } from "./BaseHttpRequest"; +import { BaseHttpRequest } from "./BaseHttpRequest.js"; type OmitFirstArg = F extends (x: any, ...args: infer A) => infer R ? (...args: A) => R diff --git a/src/rest/request.ts b/src/rest/request.ts index 71dbf88..e957494 100644 --- a/src/rest/request.ts +++ b/src/rest/request.ts @@ -7,12 +7,12 @@ import type { } from "axios"; import FormData from "form-data"; -import { ApiError } from "./ApiError"; -import type { ApiRequestOptions } from "./ApiRequestOptions"; -import type { ApiResult } from "./ApiResult"; -import { CancelablePromise } from "./CancelablePromise"; -import type { OnCancel } from "./CancelablePromise"; -import type { OpenAPIConfig } from "../OpenAPI"; +import { ApiError } from "./ApiError.js"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import type { ApiResult } from "./ApiResult.js"; +import { CancelablePromise } from "./CancelablePromise.js"; +import type { OnCancel } from "./CancelablePromise.js"; +import { Config } from "../Client.js"; export const isDefined = ( value: T | null | undefined @@ -92,7 +92,7 @@ export const getQueryString = (params: Record): string => { return ""; }; -const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { +const getUrl = (config: Config, options: ApiRequestOptions): string => { const encoder = encodeURI; const path = options.url.replace( @@ -154,7 +154,7 @@ export const resolve = async ( }; export const getHeaders = async ( - config: OpenAPIConfig, + config: Config, options: ApiRequestOptions, formData?: FormData ): Promise> => { @@ -206,7 +206,7 @@ export const getRequestBody = (options: ApiRequestOptions): any => { }; export const sendRequest = async ( - config: OpenAPIConfig, + config: Config, options: ApiRequestOptions, url: string, body: any, @@ -306,7 +306,7 @@ export const catchErrorCodes = ( * @throws ApiError */ export const request = ( - config: OpenAPIConfig, + config: Config, options: ApiRequestOptions, axiosClient: AxiosInstance = axios ): CancelablePromise => { diff --git a/src/services/account.ts b/src/services/account.ts new file mode 100644 index 0000000..c5812cf --- /dev/null +++ b/src/services/account.ts @@ -0,0 +1,193 @@ +import { TradingActivities } from "../entities/TradingActivities.js"; +import { NonTradeActivities } from "../entities/NonTradeActivities.js"; +import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +import { CancelablePromise } from "../rest/CancelablePromise.js"; +import { AccountConfigurations } from "../entities/AccountConfigurations.js"; +import { PortfolioHistory } from "../entities/PortfolioHistory.js"; +import { Account } from "../entities/Account.js"; + +/** + * Get account activities of one type + * Returns account activity entries for many types of activities. + * @returns any returns an array of Account activities + * @throws ApiError + */ +export const getActivities = ( + httpRequest: BaseHttpRequest, + { + activityTypes, + }: { + /** + * A comma-separated list of the activity types to include in the response. If unspecified, activities of all types will be returned. (Cannot be used with category) + */ + activityTypes?: "trade_activity" | "non_trade_activity"; + } +): CancelablePromise> => + httpRequest.request({ + method: "GET", + url: "/v2/account/activities", + query: { + activity_types: activityTypes, + }, + }); + +/** + * Get account activities of one type + * Returns account activity entries for a specific type of activity. + * @returns any returns an array of Account activities + * @throws ApiError + */ +export const getActivitiesByType = ( + httpRequest: BaseHttpRequest, + { + activityType, + date, + until, + after, + direction, + pageSize, + pageToken, + category, + }: { + /** + * The activity type you want to view entries for. A list of valid activity types can be found at the bottom of this page. + */ + activityType: string; + /** + * The date for which you want to see activities. + */ + date?: string; + /** + * The response will contain only activities submitted before this date. (Cannot be used with date.) + */ + until?: string; + /** + * The response will contain only activities submitted after this date. (Cannot be used with date.) + */ + after?: string; + /** + * asc or desc (default desc if unspecified.) + */ + direction?: "asc" | "desc"; + /** + * The maximum number of entries to return in the response. (See the section on paging above.) + */ + pageSize?: number; + /** + * The ID of the end of your current page of results. + */ + pageToken?: string; + /** + * trade_activity or non_trade_activity, to specify the kind of results the server should return. (Cannot be used with /{activity_type} or ?activity_types=...) + */ + category?: string; + } +): CancelablePromise> => + httpRequest.request({ + method: "GET", + url: "/v2/account/activities/{activity_type}", + path: { + activity_type: activityType, + }, + query: { + date: date, + until: until, + after: after, + direction: direction, + page_size: pageSize, + page_token: pageToken, + category: category, + }, + }); + +/** + * Get account + * Returns the account associated with the API key. + * @returns Account OK + * @throws ApiError + */ +export const getAccount = ( + httpRequest: BaseHttpRequest +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v2/account", + }); + +/** + * Account Portfolio History + * Returns timeseries data about equity and profit/loss (P/L) of the account in requested timespan. + * @returns PortfolioHistory Successful response + * @throws ApiError + */ +export const getPortfolioHistory = ( + httpRequest: BaseHttpRequest, + { + period, + timeframe, + dateEnd, + extendedHours, + }: { + /** + * The duration of the data in + , such as 1D, where can be D for day, W for week, M for month and A for year. Defaults to 1M. + */ + period?: string; + /** + * The resolution of time window. 1Min, 5Min, 15Min, 1H, or 1D. If omitted, 1Min for less than 7 days period, 15Min for less than 30 days, or otherwise 1D. + */ + timeframe?: string; + /** + * The date the data is returned up to, in “YYYY-MM-DD” format. Defaults to the current market date (rolls over at the market open if extended_hours is false, otherwise at 7am ET) + */ + dateEnd?: string; + /** + * If true, include extended hours in the result. This is effective only for timeframe less than 1D. + */ + extendedHours?: string; + } +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v2/account/portfolio/history", + query: { + period: period, + timeframe: timeframe, + date_end: dateEnd, + extended_hours: extendedHours, + }, + }); + +/** + * Account Configurations + * gets the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ +export const getConfig = ( + httpRequest: BaseHttpRequest +): CancelablePromise => + httpRequest.request({ + method: "GET", + url: "/v2/account/configurations", + }); + +/** + * Account Configurations + * Updates and returns the current account configuration values + * @returns AccountConfigurations Successful response + * @throws ApiError + */ +export const patchConfig = ( + httpRequest: BaseHttpRequest, + { + requestBody, + }: { + requestBody?: AccountConfigurations; + } +): CancelablePromise => + httpRequest.request({ + method: "PATCH", + url: "/v2/account/configurations", + body: requestBody, + mediaType: "application/json", + }); diff --git a/src/api/assets.ts b/src/services/assets.ts similarity index 92% rename from src/api/assets.ts rename to src/services/assets.ts index 2541360..bb626d1 100644 --- a/src/api/assets.ts +++ b/src/services/assets.ts @@ -1,7 +1,7 @@ import type { Assets } from "../entities/Assets.js"; -import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; -import { BaseHttpRequest } from "../rest/BaseHttpRequest"; +import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; /** * Get Assets @@ -9,7 +9,7 @@ import { BaseHttpRequest } from "../rest/BaseHttpRequest"; * @returns Assets An array of asset objects * @throws ApiError */ -const list = ( +export const getAssets = ( httpRequest: BaseHttpRequest, { status, @@ -56,7 +56,7 @@ const list = ( * @returns Assets An Asset object * @throws ApiError */ -const getBySymbolOrAssetId = ( +export const getBySymbolOrAssetId = ( httpRequest: BaseHttpRequest, { symbolOrAssetId, @@ -77,8 +77,3 @@ const getBySymbolOrAssetId = ( 404: `Not Found`, }, }); - -export default { - list, - getBySymbolOrAssetId, -}; diff --git a/src/api/calendar.ts b/src/services/calendar.ts similarity index 92% rename from src/api/calendar.ts rename to src/services/calendar.ts index c3c78ed..44a497d 100644 --- a/src/api/calendar.ts +++ b/src/services/calendar.ts @@ -1,7 +1,7 @@ import type { Calendar } from "../entities/Calendar.js"; -import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; -import { BaseHttpRequest } from "../rest/BaseHttpRequest"; +import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; /** * Get Market Calendar info @@ -11,7 +11,7 @@ import { BaseHttpRequest } from "../rest/BaseHttpRequest"; * @returns Calendar OK * @throws ApiError */ -const get = ( +export const getCalendar = ( httpRequest: BaseHttpRequest, { start, @@ -41,7 +41,3 @@ const get = ( date_type: dateType, }, }); - -export default { - get, -}; diff --git a/src/api/clock.ts b/src/services/clock.ts similarity index 73% rename from src/api/clock.ts rename to src/services/clock.ts index 0fe7fca..9b74dcf 100644 --- a/src/api/clock.ts +++ b/src/services/clock.ts @@ -1,7 +1,7 @@ import type { Clock } from "../entities/Clock.js"; -import type { CancelablePromise } from "../rest/CancelablePromise"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; -import { BaseHttpRequest } from "../rest/BaseHttpRequest"; +import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; /** * Get Market Clock info @@ -11,12 +11,10 @@ import { BaseHttpRequest } from "../rest/BaseHttpRequest"; * @returns Clock OK * @throws ApiError */ -const get = (httpRequest: BaseHttpRequest): CancelablePromise => +export const getClock = ( + httpRequest: BaseHttpRequest +): CancelablePromise => httpRequest.request({ method: "GET", url: "/v2/clock", }); - -export default { - get, -}; diff --git a/src/api/crypto.ts b/src/services/crypto.ts similarity index 57% rename from src/api/crypto.ts rename to src/services/crypto.ts index 1a5dc2b..a2e8770 100644 --- a/src/api/crypto.ts +++ b/src/services/crypto.ts @@ -1,18 +1,12 @@ -import type { BarsResponse } from "../entities/BarsResponse.js"; -import type { LatestBarResponse } from "../entities/LatestBarResponse.js"; import type { LatestMultiBarsResponse } from "../entities/LatestMultiBarsResponse.js"; import type { LatestMultiQuotesResponse } from "../entities/LatestMultiQuotesResponse.js"; import type { LatestMultiTradesResponse } from "../entities/LatestMultiTradesResponse.js"; -import type { LatestQuoteResponse } from "../entities/LatestQuoteResponse.js"; -import type { LatestTradeResponse } from "../entities/LatestTradeResponse.js"; import type { MultiBarsResponse } from "../entities/MultiBarsResponse.js"; import type { MultiQuotesReponse } from "../entities/MultiQuotesReponse.js"; import type { MultiSnapshotResponse } from "../entities/MultiSnapshotResponse.js"; import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; -import type { Snapshot } from "../entities/Snapshot.js"; -import type { TradesResponse } from "../entities/TradesResponse.js"; -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; /** * Get Trade data for multiple crypto symbols @@ -24,7 +18,7 @@ import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; * @returns MultiTradesResponse Successful response * @throws ApiError */ -const getTradesForMultipleSymbols = ( +export const getTrades = ( httpRequest: BaseHttpRequest, { symbols, @@ -79,7 +73,7 @@ const getTradesForMultipleSymbols = ( * @returns LatestMultiTradesResponse OK * @throws ApiError */ -const getLatestTradesForMultipleSymbols = ( +export const getLatestTrades = ( httpRequest: BaseHttpRequest, { symbols, @@ -104,92 +98,6 @@ const getLatestTradesForMultipleSymbols = ( }, }); -/** - * Get Trade data for a crypto symbol - * The Trades API provides historical trade data for a given crypto symbol on a specified date. Returns trades for the queried crypto symbol - * @returns TradesResponse Successful response - * @throws ApiError - */ -const getTradesForSymbol = ( - httpRequest: BaseHttpRequest, - { - symbol, - start, - end, - exchanges, - limit, - pageToken, - }: { - /** - * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. - */ - symbol: string; - /** - * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. - */ - start?: string; - /** - * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. - */ - end?: string; - /** - * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchanges?: string; - /** - * Number of data points to return. Must be in range 1-10000, defaults to 1000. - */ - limit?: number; - /** - * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. - */ - pageToken?: string; - } -): CancelablePromise => - httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/trades", - query: { - symbols: symbol, - start: start, - end: end, - exchanges: exchanges, - limit: limit, - page_token: pageToken, - }, - }); - -/** - * Latest Trades - * The Latest Trades API provides the latest historical trade data for a given crypto symbol. Returns trades for the queried crypto symbol. - * @returns LatestTradeResponse Successful response - * @throws ApiError - */ -const getLatestTradesForSymbol = ( - httpRequest: BaseHttpRequest, - { - symbol, - exchange, - }: { - /** - * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. - */ - symbol: string; - /** - * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchange: "ERSX" | "CBSE" | "FTXU"; - } -): CancelablePromise => - httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/latest/trades", - query: { - symbols: symbol, - exchange: exchange, - }, - }); - /** * Get Bars for multiple Crypto symbols * returns aggregate historical data for the requested crypto symbols. @@ -200,7 +108,7 @@ const getLatestTradesForSymbol = ( * @returns MultiBarsResponse Successful response * @throws ApiError */ -const getBarsForMultipleSymbols = ( +export const getBars = ( httpRequest: BaseHttpRequest, { symbols, @@ -261,7 +169,7 @@ const getBarsForMultipleSymbols = ( * @returns LatestMultiBarsResponse OK * @throws ApiError */ -const getLatestBarsForMultipleSymbols = ( +export const getLatestBars = ( httpRequest: BaseHttpRequest, { symbols, @@ -286,98 +194,6 @@ const getLatestBarsForMultipleSymbols = ( }, }); -/** - * Get Bar data for a crypto symbol - * The Bars API returns aggregate historical data for the requested securities.. Returns bars for the queried crypto symbol - * @returns BarsResponse Successful response - * @throws ApiError - */ -const getBarsForSymbol = ( - httpRequest: BaseHttpRequest, - { - symbol, - timeframe, - start, - end, - exchanges, - limit, - pageToken, - }: { - /** - * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. - */ - symbol: string; - /** - * Timeframe for the aggregation. Values are customizeable, frequently used examples: 1Min, 15Min, 1Hour, 1Day. Limits: 1Min-59Min, 1Hour-23Hour. - */ - timeframe: string; - /** - * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. - */ - start?: string; - /** - * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. - */ - end?: string; - /** - * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchanges?: string; - /** - * Number of data points to return. Must be in range 1-10000, defaults to 1000. - */ - limit?: number; - /** - * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. - */ - pageToken?: string; - } -): CancelablePromise => - httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/bars", - query: { - symbols: symbol, - start: start, - end: end, - timeframe: timeframe, - exchanges: exchanges, - limit: limit, - page_token: pageToken, - }, - }); - -/** - * Get Latest Bar data for a Crypto symbol - * Gets latest historical bar data for the requested crypto symbol for a specific exchange - * @returns LatestBarResponse OK - * @throws ApiError - */ -const getLatestBarsForSymbol = ( - httpRequest: BaseHttpRequest, - { - symbol, - exchange, - }: { - /** - * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. - */ - symbol: string; - /** - * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchange: "ERSX" | "CBSE" | "FTXU"; - } -): CancelablePromise => - httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/latest/bars", - query: { - symbols: symbol, - exchange: exchange, - }, - }); - /** * Get Quotes for multiple crypto symbols * The Multi Quotes API provides quotes for a list of given crypto symbols at a specified date. Returns quotes for each of the queried crypto symbols. @@ -388,7 +204,7 @@ const getLatestBarsForSymbol = ( * @returns MultiQuotesReponse Successful response * @throws ApiError */ -const getQuotesForMultipleSymbols = ( +export const getQuotes = ( httpRequest: BaseHttpRequest, { symbols, @@ -443,7 +259,7 @@ const getQuotesForMultipleSymbols = ( * @returns LatestMultiQuotesResponse OK * @throws ApiError */ -const getLatestQuotesForMultipleSymbols = ( +export const getLatestQuotes = ( httpRequest: BaseHttpRequest, { symbols, @@ -468,44 +284,13 @@ const getLatestQuotesForMultipleSymbols = ( }, }); -/** - * Latest Quote - * Returns latest quote for the queried crypto symbol - * @returns LatestQuoteResponse Successful response - * @throws ApiError - */ -const getLatestQuoteForSymbol = ( - httpRequest: BaseHttpRequest, - { - symbol, - exchange, - }: { - /** - * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH - */ - symbol: string; - /** - * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchange: "ERSX" | "CBSE" | "FTXU"; - } -): CancelablePromise => - httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/latest/quotes", - query: { - symbols: symbol, - exchange: exchange, - }, - }); - /** * Get Snapshots for multiple crypto symbols * The Multi Snapshot API returns the latest trade, latest quote, minute bar daily bar, and previous daily bar data for list of given crypto symbols. * @returns MultiSnapshotResponse Successful response * @throws ApiError */ -const getSnapshotsForMultipleSymbols = ( +export const getSnapshots = ( httpRequest: BaseHttpRequest, { exchange, @@ -529,34 +314,3 @@ const getSnapshotsForMultipleSymbols = ( symbols: symbols, }, }); - -/** - * Get a Snapshot for a crypto symbol - * The Snapshot API returns the latest trade, latest quote, minute bar daily bar, and previous daily bar data for a given crypto symbol. - * @returns Snapshot Successful response - * @throws ApiError - */ -const getSnapshotForSymbol = ( - httpRequest: BaseHttpRequest, - { - symbol, - exchange, - }: { - /** - * The crypto symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. - */ - symbol: string; - /** - * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchange: "ERSX" | "CBSE" | "FTXU"; - } -): CancelablePromise => - httpRequest.request({ - method: "GET", - url: "/v1beta3/crypto/us/snapshot", - query: { - symbols: symbol, - exchange: exchange, - }, - }); diff --git a/src/services/index.ts b/src/services/index.ts new file mode 100644 index 0000000..d7e3bbb --- /dev/null +++ b/src/services/index.ts @@ -0,0 +1,25 @@ +import * as account from "./account.js"; +import * as assets from "./assets.js"; +import * as clock from "./clock.js"; +import * as calendar from "./calendar.js"; +import * as news from "./news.js"; +import * as orders from "./orders.js"; +import * as positions from "./positions.js"; +import * as watchlists from "./watchlists.js"; +import * as crypto from "./crypto.js"; +import * as screener from "./screener.js"; +import * as logos from "./logos.js"; + +export default { + account, + assets, + clock, + calendar, + news, + orders, + positions, + watchlists, + crypto, + screener, + logos, +}; diff --git a/src/services/logos.ts b/src/services/logos.ts new file mode 100644 index 0000000..72e9ed1 --- /dev/null +++ b/src/services/logos.ts @@ -0,0 +1,39 @@ +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; + +/** + * Get Logo for symbol + * Returns logo image resource for provided symbol. + * @returns binary Returns the requested logo as an image. + * @throws ApiError + */ +export const getLogoForSymbol = ( + httpRequest: BaseHttpRequest, + { + cryptoOrStockSymbol, + placeholder = true, + }: { + /** + * The crypto or stock symbol to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD" would be how you query for BTC. + */ + cryptoOrStockSymbol: string; + /** + * If true then the api will generate a placeholder image if no logo was found. Defaults to true + */ + placeholder?: boolean; + } +): CancelablePromise => { + return httpRequest.request({ + method: "GET", + url: "/v1beta1/logos/{crypto_or_stock_symbol}", + path: { + crypto_or_stock_symbol: cryptoOrStockSymbol, + }, + query: { + placeholder: placeholder, + }, + errors: { + 404: `No Logo was found for this symbol. This code will only be returned if you set \`placeholder\` to false. Otherwise we will generate a placeholder image for this symbol`, + }, + }); +}; diff --git a/src/api/news.ts b/src/services/news.ts similarity index 65% rename from src/api/news.ts rename to src/services/news.ts index 5ea7211..277423b 100644 --- a/src/api/news.ts +++ b/src/services/news.ts @@ -1,18 +1,17 @@ import type { GetNewsResponse } from "../entities/GetNewsResponse.js"; -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; -export class News { - constructor(public readonly httpRequest: BaseHttpRequest) {} - - /** - * News API - * Returns latest news articles across stocks and crypto. By default returns latest 10 news articles. - * @returns GetNewsResponse Successful response - * @throws ApiError - */ - public getNews({ +/** + * News API + * Returns latest news articles across stocks and crypto. By default returns latest 10 news articles. + * @returns GetNewsResponse Successful response + * @throws ApiError + */ +export const getNews = ( + httpRequest: BaseHttpRequest, + { symbols, start, end, @@ -54,20 +53,20 @@ export class News { * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. */ pageToken?: string; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v1beta1/news", - query: { - start: start, - end: end, - symbols: symbols, - limit: limit, - sort: sort, - include_content: includeContent, - exclude_contentless: excludeContentless, - page_token: pageToken, - }, - }); } -} +): CancelablePromise => { + return httpRequest.request({ + method: "GET", + url: "/v1beta1/news", + query: { + start: start, + end: end, + symbols: symbols, + limit: limit, + sort: sort, + include_content: includeContent, + exclude_contentless: excludeContentless, + page_token: pageToken, + }, + }); +}; diff --git a/src/services/orders.ts b/src/services/orders.ts new file mode 100644 index 0000000..85957f0 --- /dev/null +++ b/src/services/orders.ts @@ -0,0 +1,226 @@ +import type { CanceledOrderResponse } from "../entities/CanceledOrderResponse.js"; +import type { Order } from "../entities/Order.js"; +import type { PatchOrderRequest } from "../entities/PatchOrderRequest.js"; + +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; + +/** + * Order + * Places a new order for the given account. An order request may be rejected if the account is not authorized for trading, or if the tradable balance is insufficient to fill the order.. + * @returns Order Successful response + * @throws ApiError + */ +export const postOrder = ( + httpRequest: BaseHttpRequest, + { + requestBody, + }: { + requestBody: string; + } +): CancelablePromise => { + return httpRequest.request({ + method: "POST", + url: "/v2/orders", + body: requestBody, + mediaType: "application/json", + errors: { + 403: `Forbidden + + Buying power or shares is not sufficient.`, + 422: `Unprocessable + + Input parameters are not recognized.`, + }, + }); +}; + +/** + * All Orders + * Retrieves a list of orders for the account, filtered by the supplied query parameters. + * @returns Order Successful response + * + * An array of Order objects + * @throws ApiError + */ +export const getAllOrders = ( + httpRequest: BaseHttpRequest, + { + status, + limit, + after, + until, + direction, + nested, + symbols, + side, + }: { + /** + * Order status to be queried. open, closed or all. Defaults to open. + */ + status?: "open" | "closed" | "all"; + /** + * The maximum number of orders in response. Defaults to 50 and max is 500. + */ + limit?: number; + /** + * The response will include only ones submitted after this timestamp (exclusive.) + */ + after?: string; + /** + * The response will include only ones submitted until this timestamp (exclusive.) + */ + until?: string; + /** + * The chronological order of response based on the submission time. asc or desc. Defaults to desc. + */ + direction?: "asc" | "desc"; + /** + * If true, the result will roll up multi-leg orders under the legs field of primary order. + */ + nested?: boolean; + /** + * A comma-separated list of symbols to filter by (ex. “AAPL,TSLA,MSFT”). A currency pair is required for crypto orders (ex. “BTCUSD,BCHUSD,LTCUSD,ETCUSD”). + */ + symbols?: string; + /** + * Filters down to orders that have a matching side field set. + */ + side?: string; + } +): CancelablePromise> => { + return httpRequest.request({ + method: "GET", + url: "/v2/orders", + query: { + status: status, + limit: limit, + after: after, + until: until, + direction: direction, + nested: nested, + symbols: symbols, + side: side, + }, + }); +}; + +/** + * All Orders + * Attempts to cancel all open orders. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. + * @returns CanceledOrderResponse Multi-Status with body. + * + * an array of objects that include the order id and http status code for each status request. + * @throws ApiError + */ +export const deleteAllOrders = ( + httpRequest: BaseHttpRequest +): CancelablePromise> => { + return httpRequest.request({ + method: "DELETE", + url: "/v2/orders", + errors: { + 500: `Failed to cancel order.`, + }, + }); +}; + +/** + * Order by Order ID + * Retrieves a single order for the given order_id. + * @returns Order Successful response + * @throws ApiError + */ +export const getOrderByOrderId = ( + httpRequest: BaseHttpRequest, + { + orderId, + nested, + }: { + /** + * order id + */ + orderId: string; + /** + * If true, the result will roll up multi-leg orders under the legs field of primary order. + */ + nested?: boolean; + } +): CancelablePromise => { + return httpRequest.request({ + method: "GET", + url: "/v2/orders/{order_id}", + path: { + order_id: orderId, + }, + query: { + nested: nested, + }, + }); +}; + +/** + * Order + * Replaces a single order with updated parameters. Each parameter overrides the corresponding attribute of the existing order. The other attributes remain the same as the existing order. + * + * A success return code from a replaced order does NOT guarantee the existing open order has been replaced. If the existing open order is filled before the replacing (new) order reaches the execution venue, the replacing (new) order is rejected, and these events are sent in the trade_updates stream channel. + * + * While an order is being replaced, buying power is reduced by the larger of the two orders that have been placed (the old order being replaced, and the newly placed order to replace it). If you are replacing a buy entry order with a higher limit price than the original order, the buying power is calculated based on the newly placed order. If you are replacing it with a lower limit price, the buying power is calculated based on the old order. + * + * @returns Order Successful response + * + * The new Order object with the new order ID. + * @throws ApiError + */ +export const patchOrderByOrderId = ( + httpRequest: BaseHttpRequest, + { + orderId, + requestBody, + }: { + /** + * order id + */ + orderId: string; + requestBody: PatchOrderRequest; + } +): CancelablePromise => { + return httpRequest.request({ + method: "PATCH", + url: "/v2/orders/{order_id}", + path: { + order_id: orderId, + }, + body: requestBody, + mediaType: "application/json", + }); +}; + +/** + * Order by Order ID + * Attempts to cancel an Open Order. If the order is no longer cancelable, the request will be rejected with status 422; otherwise accepted with return status 204. + * @returns void + * @throws ApiError + */ +export const deleteOrderByOrderId = ( + httpRequest: BaseHttpRequest, + { + orderId, + }: { + /** + * order id + */ + orderId: string; + } +): CancelablePromise => { + return httpRequest.request({ + method: "DELETE", + url: "/v2/orders/{order_id}", + path: { + order_id: orderId, + }, + errors: { + 422: `The order status is not cancelable.`, + }, + }); +}; diff --git a/src/services/positions.ts b/src/services/positions.ts new file mode 100644 index 0000000..acbdebd --- /dev/null +++ b/src/services/positions.ts @@ -0,0 +1,122 @@ +import type { Order } from "../entities/Order.js"; +import type { Position } from "../entities/Position.js"; +import type { PositionClosedReponse } from "../entities/PositionClosedReponse.js"; + +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; + +/** + * All Open Positions + * The positions API provides information about an account’s current open positions. The response will include information such as cost basis, shares traded, and market value, which will be updated live as price information is updated. Once a position is closed, it will no longer be queryable through this API + * + * Retrieves a list of the account’s open positions + * @returns Position Successful response + * @throws ApiError + */ +export const getAllOpenPositions = ( + httpRequest: BaseHttpRequest +): CancelablePromise> => { + return httpRequest.request({ + method: "GET", + url: "/v2/positions", + }); +}; + +/** + * All Positions + * Closes (liquidates) all of the account’s open long and short positions. A response will be provided for each order that is attempted to be cancelled. If an order is no longer cancelable, the server will respond with status 500 and reject the request. + * @returns PositionClosedReponse Multi-Status with body. + * + * an array of PositionClosed responses + * @throws ApiError + */ +export const deleteAllOpenPositions = ( + httpRequest: BaseHttpRequest, + { + cancelOrders, + }: { + /** + * If true is specified, cancel all open orders before liquidating all positions. + */ + cancelOrders?: boolean; + } +): CancelablePromise> => { + return httpRequest.request({ + method: "DELETE", + url: "/v2/positions", + query: { + cancel_orders: cancelOrders, + }, + errors: { + 500: `Failed to liquidate`, + }, + }); +}; + +/** + * Open Position + * Retrieves the account’s open position for the given symbol or assetId. + * @returns Position Successful response + * @throws ApiError + */ +export const getOpenPosition = ( + httpRequest: BaseHttpRequest, + { + symbolOrAssetId, + }: { + /** + * symbol or assetId + */ + symbolOrAssetId: string; + } +): CancelablePromise => { + return httpRequest.request({ + method: "GET", + url: "/v2/positions/{symbol_or_asset_id}", + path: { + symbol_or_asset_id: symbolOrAssetId, + }, + }); +}; + +/** + * Position + * Closes (liquidates) the account’s open position for the given symbol. Works for both long and short positions. + * @returns Order Successful response + * + * Returns the order created to close out this position + * @throws ApiError + */ +export const deleteOpenPosition = ( + httpRequest: BaseHttpRequest, + { + symbolOrAssetId, + qty, + percentage, + }: { + /** + * symbol or assetId + */ + symbolOrAssetId: string; + /** + * the number of shares to liquidate. Can accept up to 9 decimal points. Cannot work with percentage + */ + qty?: number; + /** + * percentage of position to liquidate. Must be between 0 and 100. Would only sell fractional if position is originally fractional. Can accept up to 9 decimal points. Cannot work with qty + */ + percentage?: number; + } +): CancelablePromise => { + return httpRequest.request({ + method: "DELETE", + url: "/v2/positions/{symbol_or_asset_id}", + path: { + symbol_or_asset_id: symbolOrAssetId, + }, + query: { + qty: qty, + percentage: percentage, + }, + }); +}; diff --git a/src/services/screener.ts b/src/services/screener.ts new file mode 100644 index 0000000..a6a369a --- /dev/null +++ b/src/services/screener.ts @@ -0,0 +1,38 @@ +import type { MarketMoversResponse } from "../entities/MarketMoversResponse.js"; + +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; + +/** + * Get Top Market Movers by Market type + * Returns top market movers for stocks. By default will return top 5 market gainers and losers. + * @returns MarketMoversResponse OK + * @throws ApiError + */ +export const getTopMoversByMarketType = ( + httpRequest: BaseHttpRequest, + { + marketType, + top = 10, + }: { + /** + * Screen specific market (stocks or crypto) + */ + marketType: "stocks" | "crypto"; + /** + * Number of top market movers to fetch (gainers and losers). Will return number top for each. By default 10 gainers and 10 losers. + */ + top?: number; + } +): CancelablePromise => { + return httpRequest.request({ + method: "GET", + url: "/v1beta1/screener/{market_type}/movers", + path: { + market_type: marketType, + }, + query: { + top: top, + }, + }); +}; diff --git a/src/api/stocks.ts b/src/services/stocks.ts similarity index 99% rename from src/api/stocks.ts rename to src/services/stocks.ts index 696899a..a700421 100644 --- a/src/api/stocks.ts +++ b/src/services/stocks.ts @@ -13,8 +13,8 @@ import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; import type { Snapshot } from "../entities/Snapshot.js"; import type { TradesResponse } from "../entities/TradesResponse.js"; -import type { CancelablePromise } from "../rest/CancelablePromise"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; export class Stocks { constructor(public readonly httpRequest: BaseHttpRequest) {} diff --git a/src/services/watchlists.ts b/src/services/watchlists.ts new file mode 100644 index 0000000..ab2b8d2 --- /dev/null +++ b/src/services/watchlists.ts @@ -0,0 +1,313 @@ +import type { UpdateWatchlistRequest } from "../entities/UpdateWatchlistRequest.js"; +import type { Watchlist } from "../entities/Watchlist.js"; + +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; + +/** + * Watchlists + * Returns the list of watchlists registered under the account. + * @returns Watchlist Successful response + * @throws ApiError + */ +export const getWatchlists = ( + httpRequest: BaseHttpRequest +): CancelablePromise> => { + return httpRequest.request({ + method: "GET", + url: "/v2/watchlists", + }); +}; + +/** + * Watchlist + * Create a new watchlist with initial set of assets. + * @returns Watchlist Successful response + * @throws ApiError + */ +export const postWatchlist = ( + httpRequest: BaseHttpRequest, + { + requestBody, + }: { + requestBody: UpdateWatchlistRequest; + } +): CancelablePromise => { + return httpRequest.request({ + method: "POST", + url: "/v2/watchlists", + body: requestBody, + mediaType: "application/json", + }); +}; + +/** + * Get Watchlist by ID + * Returns a watchlist identified by the ID. + * @returns Watchlist Successful response + * @throws ApiError + */ +export const getWatchlistById = ( + httpRequest: BaseHttpRequest, + { + watchlistId, + }: { + /** + * watchlist id + */ + watchlistId: string; + } +): CancelablePromise => { + return httpRequest.request({ + method: "GET", + url: "/v2/watchlists/{watchlist_id}", + path: { + watchlist_id: watchlistId, + }, + }); +}; + +/** + * Update Watchlist By Id + * Update the name and/or content of watchlist + * @returns Watchlist Successful response + * @throws ApiError + */ +export const updateWatchlistByI = ( + httpRequest: BaseHttpRequest, + { + watchlistId, + requestBody, + }: { + /** + * watchlist id + */ + watchlistId: string; + requestBody?: UpdateWatchlistRequest; + } +): CancelablePromise => { + return httpRequest.request({ + method: "PUT", + url: "/v2/watchlists/{watchlist_id}", + path: { + watchlist_id: watchlistId, + }, + body: requestBody, + mediaType: "application/json", + }); +}; + +/** + * Add Asset to Watchlist + * Append an asset for the symbol to the end of watchlist asset list + * @returns Watchlist Successful response + * @throws ApiError + */ +export const addAssetToWatchlist = ( + httpRequest: BaseHttpRequest, + { + watchlistId, + requestBody, + }: { + /** + * watchlist id + */ + watchlistId: string; + requestBody?: { + /** + * the symbol name to add to the watchlist + */ + symbol?: string; + }; + } +): CancelablePromise => { + return httpRequest.request({ + method: "POST", + url: "/v2/watchlists/{watchlist_id}", + path: { + watchlist_id: watchlistId, + }, + body: requestBody, + mediaType: "application/json", + }); +}; + +/** + * Delete Watchlist By Id + * Delete a watchlist. This is a permanent deletion. + * @returns void + * @throws ApiError + */ +export const deleteWatchlistById = ( + httpRequest: BaseHttpRequest, + { + watchlistId, + }: { + /** + * watchlist id + */ + watchlistId: string; + } +): CancelablePromise => { + return httpRequest.request({ + method: "DELETE", + url: "/v2/watchlists/{watchlist_id}", + path: { + watchlist_id: watchlistId, + }, + errors: { + 404: `Watchlist not found`, + }, + }); +}; + +/** + * Get Watchlist by Name + * You can also call GET, PUT, POST and DELETE with watchlist name with another endpoint /v2/watchlists:by_name and query parameter name=, instead of /v2/watchlists/{watchlist_id} endpoints + * + * Returns a watchlist by name + * @returns Watchlist Successful response + * @throws ApiError + */ +export const getWatchlistByName = ( + httpRequest: BaseHttpRequest, + { + name, + }: { + /** + * name of the watchlist + */ + name: string; + } +): CancelablePromise => { + return httpRequest.request({ + method: "GET", + url: "/v2/watchlists:by_name", + query: { + name: name, + }, + }); +}; + +/** + * Update Watchlist By Name + * Update the name and/or content of watchlist + * @returns Watchlist Successful response + * @throws ApiError + */ +export const updateWatchlistByName = ( + httpRequest: BaseHttpRequest, + { + name, + requestBody, + }: { + /** + * name of the watchlist + */ + name: string; + requestBody?: UpdateWatchlistRequest; + } +): CancelablePromise => { + return httpRequest.request({ + method: "PUT", + url: "/v2/watchlists:by_name", + query: { + name: name, + }, + body: requestBody, + mediaType: "application/json", + }); +}; + +/** + * Add Asset to Watchlist By Name + * Append an asset for the symbol to the end of watchlist asset list + * @returns Watchlist Successful response + * @throws ApiError + */ +export const addAssetToWatchlistByName = ( + httpRequest: BaseHttpRequest, + { + name, + requestBody, + }: { + /** + * name of the watchlist + */ + name: string; + requestBody?: { + /** + * the symbol name to add to the watchlist + */ + symbol?: string; + }; + } +): CancelablePromise => { + return httpRequest.request({ + method: "POST", + url: "/v2/watchlists:by_name", + query: { + name: name, + }, + body: requestBody, + mediaType: "application/json", + }); +}; + +/** + * Delete Watchlist By Name + * Delete a watchlist. This is a permanent deletion. + * @returns void + * @throws ApiError + */ +export const deleteWatchlistByName = ( + httpRequest: BaseHttpRequest, + { + name, + }: { + /** + * name of the watchlist + */ + name: string; + } +): CancelablePromise => { + return httpRequest.request({ + method: "DELETE", + url: "/v2/watchlists:by_name", + query: { + name: name, + }, + }); +}; + +/** + * Symbol from Watchlist + * Delete one entry for an asset by symbol name + * @returns Watchlist Returns the updated watchlist + * @throws ApiError + */ +export const removeAssetFromWatchlist = ( + httpRequest: BaseHttpRequest, + { + watchlistId, + symbol, + }: { + /** + * Watchlist ID + */ + watchlistId: string; + /** + * symbol name to remove from the watchlist content + */ + symbol: string; + } +): CancelablePromise => { + return httpRequest.request({ + method: "DELETE", + url: "/v2/watchlists/{watchlist_id}/{symbol}", + path: { + watchlist_id: watchlistId, + symbol: symbol, + }, + }); +}; From 0cf065c07d529f73f8dbc9fa88895895a9eb0025 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 7 Aug 2023 13:12:44 -0600 Subject: [PATCH 44/55] chore: Update entity types and constants --- src/entities/index.ts | 62 ++++++++++++++++++++++ src/index.ts | 121 ++++++++++++++++++++++-------------------- 2 files changed, 125 insertions(+), 58 deletions(-) create mode 100644 src/entities/index.ts diff --git a/src/entities/index.ts b/src/entities/index.ts new file mode 100644 index 0000000..75ba45b --- /dev/null +++ b/src/entities/index.ts @@ -0,0 +1,62 @@ +// Exporting all types and constants from individual files +export { Account } from "./Account.js"; +export { AccountConfigurations } from "./AccountConfigurations.js"; +export { AccountStatus } from "./AccountStatus.js"; +export { ActivityType } from "./ActivityType.js"; +export type { AddAssetToWatchlistRequest } from "./AddAssetToWatchlistRequest.js"; +export { AssetClass } from "./AssetClass.js"; +export { Assets } from "./Assets.js"; +export { Bar } from "./Bar.js"; +export type { BarsResponse } from "./BarsResponse.js"; +export { Calendar } from "./Calendar.js"; +export type { CanceledOrderResponse } from "./CanceledOrderResponse.js"; +export { Clock } from "./Clock.js"; +export { Exchange } from "./Exchange.js"; +export type { ExchangesResponse } from "./ExchangesResponse.js"; +export type { GetNewsResponse } from "./GetNewsResponse.js"; +export type { LatestBarResponse } from "./LatestBarResponse.js"; +export type { LatestMultiBarsResponse } from "./LatestMultiBarsResponse.js"; +export type { LatestMultiQuotesResponse } from "./LatestMultiQuotesResponse.js"; +export type { LatestMultiTradesResponse } from "./LatestMultiTradesResponse.js"; +export type { LatestQuoteResponse } from "./LatestQuoteResponse.js"; +export type { LatestTradeResponse } from "./LatestTradeResponse.js"; +export type { MarketMoverAsset } from "./MarketMoverAsset.js"; +export { MarketMoversResponse } from "./MarketMoversResponse.js"; +export type { MultiBarsResponse } from "./MultiBarsResponse.js"; +export type { MultiQuotesReponse } from "./MultiQuotesReponse.js"; +export type { MultiSnapshotResponse } from "./MultiSnapshotResponse.js"; +export type { MultiTradesResponse } from "./MultiTradesResponse.js"; +export type { News } from "./News.js"; +export { NewsImage } from "./NewsImage.js"; +export type { NonTradeActivities } from "./NonTradeActivities.js"; +export type { Order } from "./Order.js"; +export { OrderClass } from "./OrderClass.js"; +export { OrderSide } from "./OrderSide.js"; +export { OrderStatus } from "./OrderStatus.js"; +export { OrderType } from "./OrderType.js"; +export type { PatchOrderRequest } from "./PatchOrderRequest.js"; +export type { PortfolioHistory } from "./PortfolioHistory.js"; +export type { Position } from "./Position.js"; +export type { PositionClosedReponse } from "./PositionClosedReponse.js"; +export type { Quote } from "./Quote.js"; +export type { Snapshot } from "./Snapshot.js"; +export { TimeInForce } from "./TimeInForce.js"; +export type { Trade } from "./Trade.js"; +export type { TradesResponse } from "./TradesResponse.js"; +export { TradingActivities } from "./TradingActivities.js"; +export type { UpdateWatchlistRequest } from "./UpdateWatchlistRequest.js"; +export type { Watchlist } from "./Watchlist.js"; +export type { XBBO } from "./XBBO.js"; +export { adjustment } from "./adjustment.js"; +export { crypto_exchange } from "./crypto_exchange.js"; +export type { crypto_exchanges } from "./crypto_exchanges.js"; +export type { crypto_symbol } from "./crypto_symbol.js"; +export type { crypto_symbols } from "./crypto_symbols.js"; +export type { end } from "./end.js"; +export { feed } from "./feed.js"; +export type { limit } from "./limit.js"; +export type { page_token } from "./page_token.js"; +export type { start } from "./start.js"; +export type { stock_symbol } from "./stock_symbol.js"; +export type { stock_symbols } from "./stock_symbols.js"; +export type { timeframe } from "./timeframe.js"; diff --git a/src/index.ts b/src/index.ts index 4c9e51f..b755655 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,65 +1,70 @@ export { Client } from "./Client.js"; +// rest export { ApiError } from "./rest/ApiError.js"; export { BaseHttpRequest } from "./rest/BaseHttpRequest.js"; export { CancelablePromise, CancelError } from "./rest/CancelablePromise.js"; -export { AccountStatus } from "./entities/AccountStatus.js"; -export { ActivityType } from "./entities/ActivityType.js"; -export type { AddAssetToWatchlistRequest } from "./entities/AddAssetToWatchlistRequest.js"; -export { AssetClass } from "./entities/AssetClass.js"; -export type { CanceledOrderResponse } from "./entities/CanceledOrderResponse.js"; -export { Exchange } from "./entities/Exchange.js"; -export type { NonTradeActivities } from "./entities/NonTradeActivities.js"; -export type { Order } from "./entities/Order.js"; -export { OrderClass } from "./entities/OrderClass.js"; -export { OrderSide } from "./entities/OrderSide.js"; -export { OrderStatus } from "./entities/OrderStatus.js"; -export { OrderType } from "./entities/OrderType.js"; -export type { PatchOrderRequest } from "./entities/PatchOrderRequest.js"; -export type { PortfolioHistory } from "./entities/PortfolioHistory.js"; -export type { Position } from "./entities/Position.js"; -export type { PositionClosedReponse } from "./entities/PositionClosedReponse.js"; -export { TimeInForce } from "./entities/TimeInForce.js"; -export { TradingActivities } from "./entities/TradingActivities.js"; -export type { UpdateWatchlistRequest } from "./entities/UpdateWatchlistRequest.js"; -export type { Watchlist } from "./entities/Watchlist.js"; +// entity types +export type { + AddAssetToWatchlistRequest, + CanceledOrderResponse, + NonTradeActivities, + Order, + PatchOrderRequest, + PortfolioHistory, + Position, + PositionClosedReponse, + UpdateWatchlistRequest, + Watchlist, + BarsResponse, + crypto_exchanges, + crypto_symbol, + crypto_symbols, + end, + ExchangesResponse, + GetNewsResponse, + LatestBarResponse, + LatestMultiBarsResponse, + LatestMultiQuotesResponse, + LatestMultiTradesResponse, + LatestQuoteResponse, + LatestTradeResponse, + limit, + MarketMoverAsset, + MultiBarsResponse, + MultiQuotesReponse, + MultiSnapshotResponse, + MultiTradesResponse, + News, + page_token, + Quote, + Snapshot, + start, + stock_symbol, + stock_symbols, + timeframe, + Trade, + TradesResponse, + XBBO, +} from "./entities/index.js"; -export { adjustment } from "./entities/adjustment.js"; -export { Bar } from "./entities/Bar.js"; -export type { BarsResponse } from "./entities/BarsResponse.js"; -export { crypto_exchange } from "./entities/crypto_exchange.js"; -export type { crypto_exchanges } from "./entities/crypto_exchanges.js"; -export type { crypto_symbol } from "./entities/crypto_symbol.js"; -export type { crypto_symbols } from "./entities/crypto_symbols.js"; -export type { end } from "./entities/end.js"; -export type { ExchangesResponse } from "./entities/ExchangesResponse.js"; -export { feed } from "./entities/feed.js"; -export type { GetNewsResponse } from "./entities/GetNewsResponse.js"; -export type { LatestBarResponse } from "./entities/LatestBarResponse.js"; -export type { LatestMultiBarsResponse } from "./entities/LatestMultiBarsResponse.js"; -export type { LatestMultiQuotesResponse } from "./entities/LatestMultiQuotesResponse.js"; -export type { LatestMultiTradesResponse } from "./entities/LatestMultiTradesResponse.js"; -export type { LatestQuoteResponse } from "./entities/LatestQuoteResponse.js"; -export type { LatestTradeResponse } from "./entities/LatestTradeResponse.js"; -export type { limit } from "./entities/limit.js"; -export type { MarketMoverAsset } from "./entities/MarketMoverAsset.js"; -export { MarketMoversResponse } from "./entities/MarketMoversResponse.js"; -export type { MultiBarsResponse } from "./entities/MultiBarsResponse.js"; -export type { MultiQuotesReponse } from "./entities/MultiQuotesReponse.js"; -export type { MultiSnapshotResponse } from "./entities/MultiSnapshotResponse.js"; -export type { MultiTradesResponse } from "./entities/MultiTradesResponse.js"; -export type { News } from "./entities/News.js"; -export { NewsImage } from "./entities/NewsImage.js"; -export type { page_token } from "./entities/page_token.js"; -export type { Quote } from "./entities/Quote.js"; -export type { Snapshot } from "./entities/Snapshot.js"; -export type { start } from "./entities/start.js"; -export type { stock_symbol } from "./entities/stock_symbol.js"; -export type { stock_symbols } from "./entities/stock_symbols.js"; -export type { timeframe } from "./entities/timeframe.js"; -export type { Trade } from "./entities/Trade.js"; -export type { TradesResponse } from "./entities/TradesResponse.js"; -export type { XBBO } from "./entities/XBBO.js"; - -export { Stocks } from "./services/stocks.js"; +// entity constants +export { + AccountStatus, + ActivityType, + AssetClass, + Exchange, + OrderClass, + OrderSide, + OrderStatus, + OrderType, + TimeInForce, + TradingActivities, + adjustment, + Bar, + crypto_exchange, + feed, + MarketMoversResponse, + NewsImage, +} from "./entities/index.js"; From 45f287f08810cf906e988a9ad663939726887b14 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 7 Aug 2023 13:13:14 -0600 Subject: [PATCH 45/55] bump: Update version to 7.0.10-alpha --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3c9a7a6..766ff0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.9-alpha", + "version": "7.0.10-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ From b9a6f90049577df42e4ddee032de3d92b3411c59 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 8 Aug 2023 13:46:49 -0600 Subject: [PATCH 46/55] refactor: Crypto and Stocks API methods, added customBase function for base URL. --- package.json | 2 +- src/services/crypto.ts | 35 ++- src/services/index.ts | 2 + src/services/stocks.ts | 689 ++++++++++++----------------------------- 4 files changed, 229 insertions(+), 499 deletions(-) diff --git a/package.json b/package.json index 766ff0b..54fd70c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.10-alpha", + "version": "7.0.11-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/src/services/crypto.ts b/src/services/crypto.ts index a2e8770..259dbc4 100644 --- a/src/services/crypto.ts +++ b/src/services/crypto.ts @@ -8,6 +8,13 @@ import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; import type { CancelablePromise } from "../rest/CancelablePromise.js"; import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +const BASE = "https://data.alpaca.markets"; + +const customBase = (httpRequest: BaseHttpRequest) => { + httpRequest.config.BASE = BASE; + return httpRequest; +}; + /** * Get Trade data for multiple crypto symbols * The Multi Trades API provides historical trade data for a list of given crypto symbols on a specified date. Returns trades for the queried crypto symbols. @@ -18,7 +25,7 @@ import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; * @returns MultiTradesResponse Successful response * @throws ApiError */ -export const getTrades = ( +export const getCryptoTrades = ( httpRequest: BaseHttpRequest, { symbols, @@ -54,7 +61,7 @@ export const getTrades = ( pageToken?: string; } ): CancelablePromise => - httpRequest.request({ + customBase(httpRequest).request({ method: "GET", url: "/v1beta3/crypto/us/trades", query: { @@ -73,7 +80,7 @@ export const getTrades = ( * @returns LatestMultiTradesResponse OK * @throws ApiError */ -export const getLatestTrades = ( +export const getCryptoTradesLatest = ( httpRequest: BaseHttpRequest, { symbols, @@ -89,7 +96,7 @@ export const getLatestTrades = ( exchange: "ERSX" | "CBSE" | "FTXU"; } ): CancelablePromise => - httpRequest.request({ + customBase(httpRequest).request({ method: "GET", url: "/v1beta3/crypto/us/trades/latest", query: { @@ -108,7 +115,7 @@ export const getLatestTrades = ( * @returns MultiBarsResponse Successful response * @throws ApiError */ -export const getBars = ( +export const getCryptoBars = ( httpRequest: BaseHttpRequest, { symbols, @@ -149,7 +156,7 @@ export const getBars = ( exchanges?: string; } ): CancelablePromise => - httpRequest.request({ + customBase(httpRequest).request({ method: "GET", url: "/v1beta3/crypto/us/bars", query: { @@ -169,7 +176,7 @@ export const getBars = ( * @returns LatestMultiBarsResponse OK * @throws ApiError */ -export const getLatestBars = ( +export const getCryptoBarsLatest = ( httpRequest: BaseHttpRequest, { symbols, @@ -185,7 +192,7 @@ export const getLatestBars = ( exchange: "ERSX" | "CBSE" | "FTXU"; } ): CancelablePromise => - httpRequest.request({ + customBase(httpRequest).request({ method: "GET", url: "/v1beta3/crypto/us/bars/latest", query: { @@ -204,7 +211,7 @@ export const getLatestBars = ( * @returns MultiQuotesReponse Successful response * @throws ApiError */ -export const getQuotes = ( +export const getCryptoQuotes = ( httpRequest: BaseHttpRequest, { symbols, @@ -240,7 +247,7 @@ export const getQuotes = ( pageToken?: string; } ): CancelablePromise => - httpRequest.request({ + customBase(httpRequest).request({ method: "GET", url: "/v1beta3/crypto/us/quotes", query: { @@ -259,7 +266,7 @@ export const getQuotes = ( * @returns LatestMultiQuotesResponse OK * @throws ApiError */ -export const getLatestQuotes = ( +export const getCryptoQuotesLatest = ( httpRequest: BaseHttpRequest, { symbols, @@ -275,7 +282,7 @@ export const getLatestQuotes = ( exchange: "ERSX" | "CBSE" | "FTXU"; } ): CancelablePromise => - httpRequest.request({ + customBase(httpRequest).request({ method: "GET", url: "/v1beta3/crypto/us/latest/quotes", query: { @@ -290,7 +297,7 @@ export const getLatestQuotes = ( * @returns MultiSnapshotResponse Successful response * @throws ApiError */ -export const getSnapshots = ( +export const getCryptoSnapshots = ( httpRequest: BaseHttpRequest, { exchange, @@ -306,7 +313,7 @@ export const getSnapshots = ( symbols: string; } ): CancelablePromise => - httpRequest.request({ + customBase(httpRequest).request({ method: "GET", url: "/v1beta3/crypto/us/snapshots", query: { diff --git a/src/services/index.ts b/src/services/index.ts index d7e3bbb..acc1e87 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -9,10 +9,12 @@ import * as watchlists from "./watchlists.js"; import * as crypto from "./crypto.js"; import * as screener from "./screener.js"; import * as logos from "./logos.js"; +import * as stocks from "./stocks.js"; export default { account, assets, + stocks, clock, calendar, news, diff --git a/src/services/stocks.ts b/src/services/stocks.ts index a700421..14653aa 100644 --- a/src/services/stocks.ts +++ b/src/services/stocks.ts @@ -1,35 +1,34 @@ -import type { BarsResponse } from "../entities/BarsResponse.js"; import type { ExchangesResponse } from "../entities/ExchangesResponse.js"; -import type { LatestBarResponse } from "../entities/LatestBarResponse.js"; import type { LatestMultiBarsResponse } from "../entities/LatestMultiBarsResponse.js"; import type { LatestMultiQuotesResponse } from "../entities/LatestMultiQuotesResponse.js"; import type { LatestMultiTradesResponse } from "../entities/LatestMultiTradesResponse.js"; -import type { LatestQuoteResponse } from "../entities/LatestQuoteResponse.js"; -import type { LatestTradeResponse } from "../entities/LatestTradeResponse.js"; import type { MultiBarsResponse } from "../entities/MultiBarsResponse.js"; import type { MultiQuotesReponse } from "../entities/MultiQuotesReponse.js"; import type { MultiSnapshotResponse } from "../entities/MultiSnapshotResponse.js"; import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; -import type { Snapshot } from "../entities/Snapshot.js"; -import type { TradesResponse } from "../entities/TradesResponse.js"; - import type { CancelablePromise } from "../rest/CancelablePromise.js"; import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; -export class Stocks { - constructor(public readonly httpRequest: BaseHttpRequest) {} +const BASE = "https://data.alpaca.markets"; + +const customBase = (httpRequest: BaseHttpRequest) => { + httpRequest.config.BASE = BASE; + return httpRequest; +}; - /** - * Get Bar data for multiple stock symbols - * The Multi Bars API returns aggregate historical data for multiple given ticker symbols over a specified time period. - * - * Returned results are sorted by symbol first then by Bar timestamp. This means that you are likely to see only one symbol in your first response if there are enough Bars for that symbol to hit the limit you requested on that request. - * - * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Bars were found for them. - * @returns MultiBarsResponse Successful response - * @throws ApiError - */ - public getBarsForMultipleSymbols({ +/** + * Get Bar data for multiple stock symbols + * The Multi Bars API returns aggregate historical data for multiple given ticker symbols over a specified time period. + * + * Returned results are sorted by symbol first then by Bar timestamp. This means that you are likely to see only one symbol in your first response if there are enough Bars for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Bars were found for them. + * @returns MultiBarsResponse Successful response + * @throws ApiError + */ +export const getStocksBars = ( + httpRequest: BaseHttpRequest, + { symbols, timeframe, start, @@ -71,30 +70,33 @@ export class Stocks { * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/bars", - query: { - symbols: symbols, - start: start, - end: end, - timeframe: timeframe, - limit: limit, - page_token: pageToken, - adjustment: adjustment, - feed: feed, - }, - }); } +): CancelablePromise => { + return customBase(httpRequest).request({ + method: "GET", + url: "/v2/stocks/bars", + query: { + symbols: symbols, + start: start, + end: end, + timeframe: timeframe, + limit: limit, + page_token: pageToken, + adjustment: adjustment, + feed: feed, + }, + }); +}; - /** - * Get Latest Bar data for multiple stock symbols - * The Bars API returns aggregate historical data for the requested security. Returns the latest bar data for the queried stock symbols. - * @returns LatestMultiBarsResponse OK - * @throws ApiError - */ - public getLatestBarsForMultipleSymbols({ +/** + * Get Latest Bar data for multiple stock symbols + * The Bars API returns aggregate historical data for the requested security. Returns the latest bar data for the queried stock symbols. + * @returns LatestMultiBarsResponse OK + * @throws ApiError + */ +export const getStocksBarsLatest = ( + httpRequest: BaseHttpRequest, + { symbols, feed, }: { @@ -106,126 +108,31 @@ export class Stocks { * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/bars/latest", - query: { - symbols: symbols, - feed: feed, - }, - }); - } - - /** - * Bars - * The Bars API returns aggregate historical data for the requested security. Returns bars for the queried stock symbol. - * @returns BarsResponse Successful response - * @throws ApiError - */ - public getBarsForSymbol({ - symbol, - timeframe, - start, - end, - limit, - pageToken, - feed, - adjustment, - }: { - /** - * The stock ticker symbol to query for. - */ - symbol: string; - /** - * Timeframe for the aggregation. Values are customizeable, frequently used examples: 1Min, 15Min, 1Hour, 1Day. Limits: 1Min-59Min, 1Hour-23Hour. - */ - timeframe: string; - /** - * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. - */ - start?: string; - /** - * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. - */ - end?: string; - /** - * Number of data points to return. Must be in range 1-10000, defaults to 1000. - */ - limit?: number; - /** - * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. - */ - pageToken?: string; - /** - * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription - */ - feed?: "iex" | "sip" | "otc"; - /** - * specifies the corporate action adjustment(s) for bars data - */ - adjustment?: "raw" | "split" | "dividend" | "all"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/{symbol}/bars", - path: { - symbol: symbol, - }, - query: { - start: start, - end: end, - timeframe: timeframe, - limit: limit, - page_token: pageToken, - feed: feed, - adjustment: adjustment, - }, - }); - } - - /** - * Get Latest Bars for Symbol - * The Bars API returns aggregate historical data for the requested security. Returns the latest bar data for the queried stock symbol. - * @returns LatestBarResponse OK - * @throws ApiError - */ - public getLatestBarForSymbol({ - symbol, - feed, - }: { - /** - * The stock ticker symbol to query for. - */ - symbol: string; - /** - * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription - */ - feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/{symbol}/bars/latest", - path: { - symbol: symbol, - }, - query: { - feed: feed, - }, - }); } +): CancelablePromise => { + return customBase(httpRequest).request({ + method: "GET", + url: "/v2/stocks/bars/latest", + query: { + symbols: symbols, + feed: feed, + }, + }); +}; - /** - * Get Trade data for multiple stock symbols - * The Multi Trades API provides historical trade data for multiple given ticker symbols over a specified time period. - * - * Returned results are sorted by symbol first then by Trade timestamp. This means that you are likely to see only one symbol in your first response if there are enough Trades for that symbol to hit the limit you requested on that request. - * - * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Trades were found for them. - * @returns MultiTradesResponse Successful response - * @throws ApiError - */ - public getTradesForMultipleSymbols({ +/** + * Get Trade data for multiple stock symbols + * The Multi Trades API provides historical trade data for multiple given ticker symbols over a specified time period. + * + * Returned results are sorted by symbol first then by Trade timestamp. This means that you are likely to see only one symbol in your first response if there are enough Trades for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Trades were found for them. + * @returns MultiTradesResponse Successful response + * @throws ApiError + */ +export const getStocksTrades = ( + httpRequest: BaseHttpRequest, + { symbols, start, end, @@ -257,28 +164,31 @@ export class Stocks { * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/trades", - query: { - symbols: symbols, - start: start, - end: end, - limit: limit, - page_token: pageToken, - feed: feed, - }, - }); } +): CancelablePromise => { + return customBase(httpRequest).request({ + method: "GET", + url: "/v2/stocks/trades", + query: { + symbols: symbols, + start: start, + end: end, + limit: limit, + page_token: pageToken, + feed: feed, + }, + }); +}; - /** - * Get Latest Trades data for multiple stock symbols - * Returns the latest trades data for the queried stock symbols. - * @returns LatestMultiTradesResponse OK - * @throws ApiError - */ - public getLatestTradesForMultipleSymbols({ +/** + * Get Latest Trades data for multiple stock symbols + * Returns the latest trades data for the queried stock symbols. + * @returns LatestMultiTradesResponse OK + * @throws ApiError + */ +export const getStocksTradesLatest = ( + httpRequest: BaseHttpRequest, + { symbols, feed, }: { @@ -290,115 +200,32 @@ export class Stocks { * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/trades/latest", - query: { - symbols: symbols, - feed: feed, - }, - }); } +): CancelablePromise => { + return customBase(httpRequest).request({ + method: "GET", + url: "/v2/stocks/trades/latest", + query: { + symbols: symbols, + feed: feed, + }, + }); +}; - /** - * Trades - * The Trades API provides historical trade data for a given ticker symbol on a specified date. Returns trades for the queried stock signal. - * @returns TradesResponse Successful response - * @throws ApiError - */ - public getTradesForSymbol({ - symbol, - start, - end, - limit, - pageToken, - feed, - }: { - /** - * The stock ticker symbol to query for. - */ - symbol: string; - /** - * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. - */ - start?: string; - /** - * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. - */ - end?: string; - /** - * Number of data points to return. Must be in range 1-10000, defaults to 1000. - */ - limit?: number; - /** - * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. - */ - pageToken?: string; - /** - * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription - */ - feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/{symbol}/trades", - path: { - symbol: symbol, - }, - query: { - start: start, - end: end, - limit: limit, - page_token: pageToken, - feed: feed, - }, - }); - } - - /** - * Latest Trade - * The Latest Trade API provides the latest trade data for a given ticker symbol. - * @returns LatestTradeResponse Successful response - * @throws ApiError - */ - public getLatestTradeForSymbol({ - symbol, - feed, - }: { - /** - * The stock ticker symbol to query for. - */ - symbol: string; - /** - * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription - */ - feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/{symbol}/trades/latest", - path: { - symbol: symbol, - }, - query: { - feed: feed, - }, - }); - } - - /** - * Get Quotes for multiple stock symbols - * The Multi Quotes API provides NBBO quotes for multiple given ticker symbols over a specified time period. - * - * Returned results are sorted by symbol first then by Quote timestamp. This means that you are likely to see only one symbol in your first response if there are enough Quotes for that symbol to hit the limit you requested on that request. - * - * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Quotes were found for them. - * @returns MultiQuotesReponse Successful response - * - * @throws ApiError - */ - public getQuotesForMultipleSymbols({ +/** + * Get Quotes for multiple stock symbols + * The Multi Quotes API provides NBBO quotes for multiple given ticker symbols over a specified time period. + * + * Returned results are sorted by symbol first then by Quote timestamp. This means that you are likely to see only one symbol in your first response if there are enough Quotes for that symbol to hit the limit you requested on that request. + * + * In these situations if you keep requesting again with the next_page_token you will eventually reach the next symbols if any Quotes were found for them. + * @returns MultiQuotesReponse Successful response + * + * @throws ApiError + */ +export const getStocksQuotes = ( + httpRequest: BaseHttpRequest, + { symbols, start, end, @@ -430,28 +257,31 @@ export class Stocks { * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/quotes", - query: { - symbols: symbols, - start: start, - end: end, - limit: limit, - page_token: pageToken, - feed: feed, - }, - }); } +): CancelablePromise => { + return customBase(httpRequest).request({ + method: "GET", + url: "/v2/stocks/quotes", + query: { + symbols: symbols, + start: start, + end: end, + limit: limit, + page_token: pageToken, + feed: feed, + }, + }); +}; - /** - * Get Latest Quotes for multiple stock symbols - * Returns the latest quotes data for the queried stock symbols. - * @returns LatestMultiQuotesResponse OK - * @throws ApiError - */ - public getLatestQuotesForMultipleSymbols({ +/** + * Get Latest Quotes for multiple stock symbols + * Returns the latest quotes data for the queried stock symbols. + * @returns LatestMultiQuotesResponse OK + * @throws ApiError + */ +export const getStocksQuotesLatest = ( + httpRequest: BaseHttpRequest, + { symbols, feed, }: { @@ -463,110 +293,27 @@ export class Stocks { * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/quotes/latest", - query: { - symbols: symbols, - feed: feed, - }, - }); } +): CancelablePromise => { + return customBase(httpRequest).request({ + method: "GET", + url: "/v2/stocks/quotes/latest", + query: { + symbols: symbols, + feed: feed, + }, + }); +}; - /** - * Get Quotes for stock symbol - * The Quotes API provides NBBO quotes for a single given ticker symbol at a specified date. Returns quotes (NBBOs) for the querried stock symbol. - * @returns QuotesResponse Successful response - * @throws ApiError - */ - public getQuotesForSymbol({ - symbol, - start, - end, - limit, - pageToken, - feed, - }: { - /** - * The stock ticker symbol to query for. - */ - symbol: string; - /** - * Filter data equal to or after this time in RFC-3339 format. Fractions of a second are not accepted. - */ - start?: string; - /** - * Filter data equal to or before this time in RFC-3339 format. Fractions of a second are not accepted. - */ - end?: string; - /** - * Number of data points to return. Must be in range 1-10000, defaults to 1000. - */ - limit?: number; - /** - * Pagination token to continue from. The value to pass here is returned in specific requests when more data is available than the request limit allows. - */ - pageToken?: string; - /** - * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription - */ - feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/{symbol}/quotes", - path: { - symbol: symbol, - }, - query: { - start: start, - end: end, - limit: limit, - page_token: pageToken, - feed: feed, - }, - }); - } - - /** - * Get Latest Quote for stock symbol - * The Latest Quote API provides the latest quote data for a given ticker symbol. - * @returns LatestQuoteResponse Successful response - * @throws ApiError - */ - public getLatestQuoteForSymbol({ - symbol, - feed, - }: { - /** - * The stock ticker symbol to query for. - */ - symbol: string; - /** - * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription - */ - feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/{symbol}/quotes/latest", - path: { - symbol: symbol, - }, - query: { - feed: feed, - }, - }); - } - - /** - * Get Snapshots for multiple stock symbols - * The Snapshot API for multiple tickers provides the latest trade, latest quote, minute bar daily bar and previous daily bar data for the given ticker symbols. - * @returns MultiSnapshotResponse Successful response - * @throws ApiError - */ - public getSnapshotsForMultipleSymbols({ +/** + * Get Snapshots for multiple stock symbols + * The Snapshot API for multiple tickers provides the latest trade, latest quote, minute bar daily bar and previous daily bar data for the given ticker symbols. + * @returns MultiSnapshotResponse Successful response + * @throws ApiError + */ +export const getStocksSnapshots = ( + httpRequest: BaseHttpRequest, + { symbols, feed, }: { @@ -578,72 +325,46 @@ export class Stocks { * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription */ feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/snapshots", - query: { - symbols: symbols, - feed: feed, - }, - }); } +): CancelablePromise => { + return customBase(httpRequest).request({ + method: "GET", + url: "/v2/stocks/snapshots", + query: { + symbols: symbols, + feed: feed, + }, + }); +}; - /** - * Get a Snapshot for a stock symbol - * The Snapshot API for one ticker provides the latest trade, latest quote, minute bar daily bar and previous daily bar data for a given ticker symbol. This endpoint returns the snapshot for the requested security. - * @returns Snapshot Successful response - * @throws ApiError - */ - public getSnapshotForSymbol({ - symbol, - feed, - }: { - /** - * The stock ticker symbol to query for. - */ - symbol: string; - /** - * Which feed to pull market data from. This is either `iex` or `sip`. `sip` and `otc` are only available to those with a subscription - */ - feed?: "iex" | "sip" | "otc"; - }): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/{symbol}/snapshot", - path: { - symbol: symbol, - }, - query: { - feed: feed, - }, - }); - } - - /** - * Get List of supported exchanges - * Returns a json object representing the exchanges we support. The keys are the short form codes you will see in our responses and the values are their respective full names. - * @returns ExchangesResponse OK - * @throws ApiError - */ - public getExchanges(): CancelablePromise { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/meta/exchanges", - }); - } +/** + * Get List of supported exchanges + * Returns a json object representing the exchanges we support. The keys are the short form codes you will see in our responses and the values are their respective full names. + * @returns ExchangesResponse OK + * @throws ApiError + */ +export const getStocksMetaExchanges = ( + httpRequest: BaseHttpRequest +): CancelablePromise => { + return customBase(httpRequest).request({ + method: "GET", + url: "/v2/stocks/meta/exchanges", + }); +}; - /** - * Get list of Conditions - * Each feed/exchange uses its own set of codes to identify trade and quote conditions, so the same condition may have a different code depending on the originator of the data. - * - * See [Our documentation](https://alpaca.markets/docs/market-data/#conditions) for more information - * @returns any OK - * - * Response is a JSON object mapping a condition to a plain text description - * @throws ApiError - */ - public getConditions({ +/** + * Get list of Conditions + * Each feed/exchange uses its own set of codes to identify trade and quote conditions, so the same condition may have a different code depending on the originator of the data. + * + * See [Our documentation](https://alpaca.markets/docs/market-data/#conditions) for more information + * @returns any OK + * + * Response is a JSON object mapping a condition to a plain text description + * @throws ApiError + */ +export const getStocksMetaConditions = ( + httpRequest: BaseHttpRequest, + { type, tape, }: { @@ -655,16 +376,16 @@ export class Stocks { * What kind of conditions to retrieve, "A" and "B" return CTS, where "C" will give you UTP */ tape: "A" | "B" | "C"; - }): CancelablePromise> { - return this.httpRequest.request({ - method: "GET", - url: "/v2/stocks/meta/conditions/{type}", - path: { - type: type, - }, - query: { - tape: tape, - }, - }); } -} +): CancelablePromise> => { + return customBase(httpRequest).request({ + method: "GET", + url: "/v2/stocks/meta/conditions/{type}", + path: { + type: type, + }, + query: { + tape: tape, + }, + }); +}; From ba4ec223c733c6e3538d76f640a6f489d1b384f1 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 8 Aug 2023 13:55:35 -0600 Subject: [PATCH 47/55] - fix: Update package versions - fix: Remove unnecessary dependencies and update conventional-changelog packages - fix: Updated dependencies - refactor: Remove unused dependencies and modules - chore: Remove unused dependencies - chore: Update dependencies - fix: Remove --- package-lock.json | 3474 ++------------------------------------------- package.json | 19 +- 2 files changed, 154 insertions(+), 3339 deletions(-) diff --git a/package-lock.json b/package-lock.json index 75e785e..b8425b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,639 +1,34 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.2-alpha", + "version": "7.0.11-alpha", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@master-chief/alpaca-ts", - "version": "7.0.2-alpha", + "version": "7.0.11-alpha", "license": "ISC", "dependencies": { - "abort-controller": "^3.0.0", "axios": "^1.4.0", - "bottleneck": "^2.19.5", - "bufferutil": "^4.0.3", - "eventemitter3": "^4.0.7", - "is-blob": "^2.1.0", - "isomorphic-unfetch": "^3.1.0", - "isomorphic-ws": "^4.0.1", - "node-fetch": "^3.3.1", "openapi-fetch": "^0.6.1", - "qs": "^6.9.6", - "utf-8-validate": "^5.0.4", - "ws": "^7.5.0" + "qs": "^6.9.6" }, "devDependencies": { - "@types/node-fetch": "^2.6.4", "@types/qs": "^6.9.5", - "@types/ws": "^7.4.0", - "openapi-typescript-codegen": "^0.25.0", "prettier": "^2.8.8", "rimraf": "^3.0.2", - "standard-version": "^9.1.1", - "typescript": "^4.4.3", - "vite": "^4.4.7" + "typescript": "^4.4.3" }, "engines": { "node": ">=14" } }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", - "dev": true, - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.16.tgz", - "integrity": "sha512-gCHjjQmA8L0soklKbLKA6pgsLk1byULuHe94lkZDzcO3/Ta+bbeewJioEn1Fr7kgy9NWNFy/C+MrBwC6I/WCug==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.16.tgz", - "integrity": "sha512-wsCqSPqLz+6Ov+OM4EthU43DyYVVyfn15S4j1bJzylDpc1r1jZFFfJQNfDuT8SlgwuqpmpJXK4uPlHGw6ve7eA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.16.tgz", - "integrity": "sha512-ldsTXolyA3eTQ1//4DS+E15xl0H/3DTRJaRL0/0PgkqDsI0fV/FlOtD+h0u/AUJr+eOTlZv4aC9gvfppo3C4sw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.16.tgz", - "integrity": "sha512-aBxruWCII+OtluORR/KvisEw0ALuw/qDQWvkoosA+c/ngC/Kwk0lLaZ+B++LLS481/VdydB2u6tYpWxUfnLAIw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.16.tgz", - "integrity": "sha512-6w4Dbue280+rp3LnkgmriS1icOUZDyPuZo/9VsuMUTns7SYEiOaJ7Ca1cbhu9KVObAWfmdjUl4gwy9TIgiO5eA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.16.tgz", - "integrity": "sha512-x35fCebhe9s979DGKbVAwXUOcTmCIE32AIqB9CB1GralMIvxdnMLAw5CnID17ipEw9/3MvDsusj/cspYt2ZLNQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.16.tgz", - "integrity": "sha512-YM98f+PeNXF3GbxIJlUsj+McUWG1irguBHkszCIwfr3BXtXZsXo0vqybjUDFfu9a8Wr7uUD/YSmHib+EeGAFlg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.16.tgz", - "integrity": "sha512-b5ABb+5Ha2C9JkeZXV+b+OruR1tJ33ePmv9ZwMeETSEKlmu/WJ45XTTG+l6a2KDsQtJJ66qo/hbSGBtk0XVLHw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.16.tgz", - "integrity": "sha512-XIqhNUxJiuy+zsR77+H5Z2f7s4YRlriSJKtvx99nJuG5ATuJPjmZ9n0ANgnGlPCpXGSReFpgcJ7O3SMtzIFeiQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.16.tgz", - "integrity": "sha512-no+pfEpwnRvIyH+txbBAWtjxPU9grslmTBfsmDndj7bnBmr55rOo/PfQmRfz7Qg9isswt1FP5hBbWb23fRWnow==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.16.tgz", - "integrity": "sha512-Zbnczs9ZXjmo0oZSS0zbNlJbcwKXa/fcNhYQjahDs4Xg18UumpXG/lwM2lcSvHS3mTrRyCYZvJbmzYc4laRI1g==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.16.tgz", - "integrity": "sha512-YMF7hih1HVR/hQVa/ot4UVffc5ZlrzEb3k2ip0nZr1w6fnYypll9td2qcoMLvd3o8j3y6EbJM3MyIcXIVzXvQQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.16.tgz", - "integrity": "sha512-Wkz++LZ29lDwUyTSEnzDaaP5OveOgTU69q9IyIw9WqLRxM4BjTBjz9un4G6TOvehWpf/J3gYVFN96TjGHrbcNQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.16.tgz", - "integrity": "sha512-LFMKZ30tk78/mUv1ygvIP+568bwf4oN6reG/uczXnz6SvFn4e2QUFpUpZY9iSJT6Qpgstrhef/nMykIXZtZWGQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.16.tgz", - "integrity": "sha512-3ZC0BgyYHYKfZo3AV2/66TD/I9tlSBaW7eWTEIkrQQKfJIifKMMttXl9FrAg+UT0SGYsCRLI35Gwdmm96vlOjg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.16.tgz", - "integrity": "sha512-xu86B3647DihHJHv/wx3NCz2Dg1gjQ8bbf9cVYZzWKY+gsvxYmn/lnVlqDRazObc3UMwoHpUhNYaZset4X8IPA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.16.tgz", - "integrity": "sha512-uVAgpimx9Ffw3xowtg/7qQPwHFx94yCje+DoBx+LNm2ePDpQXHrzE+Sb0Si2VBObYz+LcRps15cq+95YM7gkUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.16.tgz", - "integrity": "sha512-6OjCQM9wf7z8/MBi6BOWaTL2AS/SZudsZtBziXMtNI8r/U41AxS9x7jn0ATOwVy08OotwkPqGRMkpPR2wcTJXA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.16.tgz", - "integrity": "sha512-ZoNkruFYJp9d1LbUYCh8awgQDvB9uOMZqlQ+gGEZR7v6C+N6u7vPr86c+Chih8niBR81Q/bHOSKGBK3brJyvkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.16.tgz", - "integrity": "sha512-+j4anzQ9hrs+iqO+/wa8UE6TVkKua1pXUb0XWFOx0FiAj6R9INJ+WE//1/Xo6FG1vB5EpH3ko+XcgwiDXTxcdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.16.tgz", - "integrity": "sha512-5PFPmq3sSKTp9cT9dzvI67WNfRZGvEVctcZa1KGjDDu4n3H8k59Inbk0du1fz0KrAbKKNpJbdFXQMDUz7BG4rQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.16.tgz", - "integrity": "sha512-sCIVrrtcWN5Ua7jYXNG1xD199IalrbfV2+0k/2Zf2OyV2FtnQnMgdzgpRAbi4AWlKJj1jkX+M+fEGPQj6BQB4w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz", - "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw==", - "dev": true - }, - "node_modules/@types/node-fetch": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", - "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", - "dev": true - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", - "dev": true - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -668,11 +63,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -683,21 +73,6 @@ "concat-map": "0.0.1" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bufferutil": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.2.0" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -710,95 +85,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "node": ">= 0.8" } }, "node_modules/concat-map": { @@ -807,500 +102,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/conventional-changelog": { - "version": "3.1.24", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.24.tgz", - "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==", - "dev": true, - "dependencies": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", - "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-atom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", - "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-codemirror": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", - "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-config-spec": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", - "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", - "dev": true - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.5.0.tgz", - "integrity": "sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.3.tgz", - "integrity": "sha512-MwnZjIoMRL3jtPH5GywVNqetGILC7g6RQFvdb8LRU/fA/338JbeWAku3PZ8yQ+mtVRViiISqJlb0sOz0htBZig==", - "dev": true, - "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", - "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/conventional-changelog-core/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-ember": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", - "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-eslint": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", - "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-express": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", - "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-jquery": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", - "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-jshint": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", - "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.0.tgz", - "integrity": "sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g==", - "dev": true, - "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.6", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "dev": true, - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", - "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", - "dev": true, - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0", - "trim-off-newlines": "^1.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-recommended-bump": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", - "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", - "dev": true, - "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.3.4", - "conventional-commits-filter": "^2.0.7", - "conventional-commits-parser": "^3.2.0", - "git-raw-commits": "^2.0.8", - "git-semver-tags": "^4.1.1", - "meow": "^8.0.0", - "q": "^1.5.1" - }, - "bin": { - "conventional-recommended-bump": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1309,228 +110,6 @@ "node": ">=0.4.0" } }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotgitignore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", - "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/esbuild": { - "version": "0.18.16", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.16.tgz", - "integrity": "sha512-1xLsOXrDqwdHxyXb/x/SOyg59jpf/SH7YMvU5RNSU7z3TInaASNJWNFJ6iRvLvLETZMasF3d1DdZLg7sgRimRQ==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.16", - "@esbuild/android-arm64": "0.18.16", - "@esbuild/android-x64": "0.18.16", - "@esbuild/darwin-arm64": "0.18.16", - "@esbuild/darwin-x64": "0.18.16", - "@esbuild/freebsd-arm64": "0.18.16", - "@esbuild/freebsd-x64": "0.18.16", - "@esbuild/linux-arm": "0.18.16", - "@esbuild/linux-arm64": "0.18.16", - "@esbuild/linux-ia32": "0.18.16", - "@esbuild/linux-loong64": "0.18.16", - "@esbuild/linux-mips64el": "0.18.16", - "@esbuild/linux-ppc64": "0.18.16", - "@esbuild/linux-riscv64": "0.18.16", - "@esbuild/linux-s390x": "0.18.16", - "@esbuild/linux-x64": "0.18.16", - "@esbuild/netbsd-x64": "0.18.16", - "@esbuild/openbsd-x64": "0.18.16", - "@esbuild/sunos-x64": "0.18.16", - "@esbuild/win32-arm64": "0.18.16", - "@esbuild/win32-ia32": "0.18.16", - "@esbuild/win32-x64": "0.18.16" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", @@ -1550,1889 +129,223 @@ } } }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fs-access": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", - "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", - "dev": true, - "dependencies": { - "null-check": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-pkg-repo": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.1.2.tgz", - "integrity": "sha512-/FjamZL9cBYllEbReZkxF2IMh80d8TJoC4e3bmLNif8ibHw95aj0N/tzqK0kZz9eU/3w3dL6lF4fnnX/sDdW3A==", - "dev": true, - "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "meow": "^7.0.0", - "through2": "^2.0.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-pkg-repo/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-pkg-repo/node_modules/meow": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", - "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/get-pkg-repo/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/get-pkg-repo/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/get-pkg-repo/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-pkg-repo/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/git-raw-commits": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", - "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", - "dev": true, - "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", - "dev": true, - "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", - "dev": true, - "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", - "dev": true, - "dependencies": { - "ini": "^1.3.2" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-blob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", - "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "dev": true, - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", - "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" - } - }, - "node_modules/isomorphic-unfetch/node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-ref-parser": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==", - "deprecated": "Please switch to @apidevtools/json-schema-ref-parser", - "dev": true, - "dependencies": { - "@apidevtools/json-schema-ref-parser": "9.0.9" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/map-obj": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", - "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", - "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/openapi-fetch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/openapi-fetch/-/openapi-fetch-0.6.1.tgz", - "integrity": "sha512-CGWPqqtL31uC2e4eEU9NHoqYMXnJ7Jk4H/4Yguil4tO22MIZi91hlQJ/51E8CiaKdSTODh03yF4ndjIOABVHUw==" - }, - "node_modules/openapi-typescript-codegen": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/openapi-typescript-codegen/-/openapi-typescript-codegen-0.25.0.tgz", - "integrity": "sha512-nN/TnIcGbP58qYgwEEy5FrAAjePcYgfMaCe3tsmYyTgI3v4RR9v8os14L+LEWDvV50+CmqiyTzRkKKtJeb6Ybg==", - "dev": true, - "dependencies": { - "camelcase": "^6.3.0", - "commander": "^11.0.0", - "fs-extra": "^11.1.1", - "handlebars": "^4.7.7", - "json-schema-ref-parser": "^9.0.9" - }, - "bin": { - "openapi": "bin/index.js" - } - }, - "node_modules/openapi-typescript-codegen/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.26.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.3.tgz", - "integrity": "sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", - "dev": true - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/standard-version": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.1.tgz", - "integrity": "sha512-5qMxXw/FxLouC5nANyx/5RY1kiorJx9BppUso8gN07MG64q2uLRmrPb4KfXp3Ql4s/gxjZwZ89e0FwxeLubGww==", - "deprecated": "standard-version is deprecated. If you're a GitHub user, I recommend https://github.com/googleapis/release-please as an alternative.", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "conventional-changelog": "3.1.24", - "conventional-changelog-config-spec": "2.1.0", - "conventional-changelog-conventionalcommits": "4.5.0", - "conventional-recommended-bump": "6.1.0", - "detect-indent": "^6.0.0", - "detect-newline": "^3.1.0", - "dotgitignore": "^2.1.0", - "figures": "^3.1.0", - "find-up": "^5.0.0", - "fs-access": "^1.0.1", - "git-semver-tags": "^4.0.0", - "semver": "^7.1.1", - "stringify-package": "^1.0.1", - "yargs": "^16.0.0" - }, - "bin": { - "standard-version": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/standard-version/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-version/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-version/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/standard-version/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/standard-version/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/standard-version/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/standard-version/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-version/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/standard-version/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/standard-version/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/standard-version/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "function-bind": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4.0" } }, - "node_modules/standard-version/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/stringify-package": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", - "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", - "deprecated": "This module is not used anymore, and has been replaced by @npmcli/package-json", - "dev": true - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "ansi-regex": "^5.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "min-indent": "^1.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true, - "engines": { - "node": ">=0.10" + "node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "dependencies": { - "readable-stream": "3" + "wrappy": "1" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/openapi-fetch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/openapi-fetch/-/openapi-fetch-0.6.1.tgz", + "integrity": "sha512-CGWPqqtL31uC2e4eEU9NHoqYMXnJ7Jk4H/4Yguil4tO22MIZi91hlQJ/51E8CiaKdSTODh03yF4ndjIOABVHUw==" }, - "node_modules/trim-off-newlines": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz", - "integrity": "sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "prettier": "bin-prettier.js" }, "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", - "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" + "node": ">=10.13.0" }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unfetch": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", - "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.2.0" + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vite": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.7.tgz", - "integrity": "sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.26", - "rollup": "^3.25.2" + "glob": "^7.1.3" }, "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=4.2.0" } }, "node_modules/wrappy": { @@ -3440,89 +353,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true - }, - "node_modules/ws": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", - "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/package.json b/package.json index 54fd70c..1cbc0df 100644 --- a/package.json +++ b/package.json @@ -50,29 +50,14 @@ "extensions": "node ./scripts/addPathExtensions.js" }, "dependencies": { - "abort-controller": "^3.0.0", "axios": "^1.4.0", - "bottleneck": "^2.19.5", - "bufferutil": "^4.0.3", - "eventemitter3": "^4.0.7", - "is-blob": "^2.1.0", - "isomorphic-unfetch": "^3.1.0", - "isomorphic-ws": "^4.0.1", - "node-fetch": "^3.3.1", "openapi-fetch": "^0.6.1", - "qs": "^6.9.6", - "utf-8-validate": "^5.0.4", - "ws": "^7.5.0" + "qs": "^6.9.6" }, "devDependencies": { - "@types/node-fetch": "^2.6.4", "@types/qs": "^6.9.5", - "@types/ws": "^7.4.0", - "openapi-typescript-codegen": "^0.25.0", "prettier": "^2.8.8", "rimraf": "^3.0.2", - "standard-version": "^9.1.1", - "typescript": "^4.4.3", - "vite": "^4.4.7" + "typescript": "^4.4.3" } } From fc96db6055b65c291a51e4ebee9ee38a8b2a2084 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 8 Aug 2023 14:04:04 -0600 Subject: [PATCH 48/55] fix: Renamed functions in account.ts, assets.ts, and orders.ts --- package-lock.json | 34 ++++++++++++++++++++------------ package.json | 2 ++ src/entities/BarsResponse.ts | 13 ------------ src/entities/crypto_exchange.ts | 3 +-- src/entities/crypto_exchanges.ts | 2 +- src/entities/index.ts | 2 -- src/index.ts | 1 - src/services/account.ts | 10 +++++----- src/services/assets.ts | 2 +- src/services/logos.ts | 2 +- src/services/orders.ts | 2 +- src/services/screener.ts | 2 +- 12 files changed, 34 insertions(+), 41 deletions(-) delete mode 100644 src/entities/BarsResponse.ts diff --git a/package-lock.json b/package-lock.json index b8425b3..3cf159f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,12 @@ "license": "ISC", "dependencies": { "axios": "^1.4.0", + "form-data": "^4.0.0", "openapi-fetch": "^0.6.1", "qs": "^6.9.6" }, "devDependencies": { + "@types/node": "^20.4.8", "@types/qs": "^6.9.5", "prettier": "^2.8.8", "rimraf": "^3.0.2", @@ -23,6 +25,12 @@ "node": ">=14" } }, + "node_modules/@types/node": { + "version": "20.4.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", + "integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==", + "dev": true + }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -44,19 +52,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -129,6 +124,19 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", diff --git a/package.json b/package.json index 1cbc0df..24fe9da 100644 --- a/package.json +++ b/package.json @@ -51,10 +51,12 @@ }, "dependencies": { "axios": "^1.4.0", + "form-data": "^4.0.0", "openapi-fetch": "^0.6.1", "qs": "^6.9.6" }, "devDependencies": { + "@types/node": "^20.4.8", "@types/qs": "^6.9.5", "prettier": "^2.8.8", "rimraf": "^3.0.2", diff --git a/src/entities/BarsResponse.ts b/src/entities/BarsResponse.ts deleted file mode 100644 index fd24d73..0000000 --- a/src/entities/BarsResponse.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { Bar } from "./Bar.js"; - -export type BarsResponse = { - /** - * The array of Bar data - */ - bars: Array; - /** - * the stock ticker or crypto symbol this set of bar data is for - */ - symbol: string; - next_page_token: string | null; -}; diff --git a/src/entities/crypto_exchange.ts b/src/entities/crypto_exchange.ts index b441010..73f37ae 100644 --- a/src/entities/crypto_exchange.ts +++ b/src/entities/crypto_exchange.ts @@ -1,8 +1,7 @@ /** - * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE` */ export enum crypto_exchange { ERSX = "ERSX", CBSE = "CBSE", - FTXU = "FTXU", } diff --git a/src/entities/crypto_exchanges.ts b/src/entities/crypto_exchanges.ts index 70d4ee6..2706650 100644 --- a/src/entities/crypto_exchanges.ts +++ b/src/entities/crypto_exchanges.ts @@ -1,4 +1,4 @@ /** - * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` + * A comma separated list of which crypto exchanges to pull the data from. Alpaca currently supports `ERSX`, `CBSE` */ export type crypto_exchanges = string; diff --git a/src/entities/index.ts b/src/entities/index.ts index 75ba45b..df68cae 100644 --- a/src/entities/index.ts +++ b/src/entities/index.ts @@ -1,4 +1,3 @@ -// Exporting all types and constants from individual files export { Account } from "./Account.js"; export { AccountConfigurations } from "./AccountConfigurations.js"; export { AccountStatus } from "./AccountStatus.js"; @@ -7,7 +6,6 @@ export type { AddAssetToWatchlistRequest } from "./AddAssetToWatchlistRequest.js export { AssetClass } from "./AssetClass.js"; export { Assets } from "./Assets.js"; export { Bar } from "./Bar.js"; -export type { BarsResponse } from "./BarsResponse.js"; export { Calendar } from "./Calendar.js"; export type { CanceledOrderResponse } from "./CanceledOrderResponse.js"; export { Clock } from "./Clock.js"; diff --git a/src/index.ts b/src/index.ts index b755655..93cb14b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,7 +17,6 @@ export type { PositionClosedReponse, UpdateWatchlistRequest, Watchlist, - BarsResponse, crypto_exchanges, crypto_symbol, crypto_symbols, diff --git a/src/services/account.ts b/src/services/account.ts index c5812cf..576f719 100644 --- a/src/services/account.ts +++ b/src/services/account.ts @@ -12,7 +12,7 @@ import { Account } from "../entities/Account.js"; * @returns any returns an array of Account activities * @throws ApiError */ -export const getActivities = ( +export const getAccountActivities = ( httpRequest: BaseHttpRequest, { activityTypes, @@ -37,7 +37,7 @@ export const getActivities = ( * @returns any returns an array of Account activities * @throws ApiError */ -export const getActivitiesByType = ( +export const getAccountActivitiesByType = ( httpRequest: BaseHttpRequest, { activityType, @@ -120,7 +120,7 @@ export const getAccount = ( * @returns PortfolioHistory Successful response * @throws ApiError */ -export const getPortfolioHistory = ( +export const getAccountPortfolioHistory = ( httpRequest: BaseHttpRequest, { period, @@ -163,7 +163,7 @@ export const getPortfolioHistory = ( * @returns AccountConfigurations Successful response * @throws ApiError */ -export const getConfig = ( +export const getAccountConfigurations = ( httpRequest: BaseHttpRequest ): CancelablePromise => httpRequest.request({ @@ -177,7 +177,7 @@ export const getConfig = ( * @returns AccountConfigurations Successful response * @throws ApiError */ -export const patchConfig = ( +export const patchAccountConfigurations = ( httpRequest: BaseHttpRequest, { requestBody, diff --git a/src/services/assets.ts b/src/services/assets.ts index bb626d1..bb38c36 100644 --- a/src/services/assets.ts +++ b/src/services/assets.ts @@ -56,7 +56,7 @@ export const getAssets = ( * @returns Assets An Asset object * @throws ApiError */ -export const getBySymbolOrAssetId = ( +export const getAssetBySymbolOrId = ( httpRequest: BaseHttpRequest, { symbolOrAssetId, diff --git a/src/services/logos.ts b/src/services/logos.ts index 72e9ed1..0e754c4 100644 --- a/src/services/logos.ts +++ b/src/services/logos.ts @@ -7,7 +7,7 @@ import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; * @returns binary Returns the requested logo as an image. * @throws ApiError */ -export const getLogoForSymbol = ( +export const getLogo = ( httpRequest: BaseHttpRequest, { cryptoOrStockSymbol, diff --git a/src/services/orders.ts b/src/services/orders.ts index 85957f0..4a5774c 100644 --- a/src/services/orders.ts +++ b/src/services/orders.ts @@ -43,7 +43,7 @@ export const postOrder = ( * An array of Order objects * @throws ApiError */ -export const getAllOrders = ( +export const getOrders = ( httpRequest: BaseHttpRequest, { status, diff --git a/src/services/screener.ts b/src/services/screener.ts index a6a369a..714f05a 100644 --- a/src/services/screener.ts +++ b/src/services/screener.ts @@ -9,7 +9,7 @@ import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; * @returns MarketMoversResponse OK * @throws ApiError */ -export const getTopMoversByMarketType = ( +export const getScreenerMovers = ( httpRequest: BaseHttpRequest, { marketType, From 808cc4c0e6f085951410c21e4fe75ea657819e24 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 8 Aug 2023 14:34:12 -0600 Subject: [PATCH 49/55] refactor: Update client service variable assignments --- src/Client.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Client.ts b/src/Client.ts index ab71ff7..3090636 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -50,8 +50,16 @@ export class Client { } get v2() { - const { account, assets, clock, calendar, orders, positions, watchlists } = - services; + const { + account, + stocks, + assets, + clock, + calendar, + orders, + positions, + watchlists, + } = services; return prewrap( { @@ -60,6 +68,7 @@ export class Client { ...clock, ...calendar, ...orders, + ...stocks, ...positions, ...watchlists, }, From 7819bd6d246d4b71131ceddc5107c813c1caea4f Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Tue, 8 Aug 2023 16:47:47 -0600 Subject: [PATCH 50/55] feat(crypto): add temporary hack for customBase chore(package.json): update version to 7.0.12-alpha chore(package-lock.json): update version to 7.0.12-alpha refactor(positions): rename getAllOpenPositions to getPositions feat(stocks): add temporary hack for customBase --- package-lock.json | 17 +++++++++++++++-- package.json | 4 +++- src/services/crypto.ts | 9 ++++++--- src/services/positions.ts | 2 +- src/services/stocks.ts | 10 +++++++--- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3cf159f..df10696 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,22 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.11-alpha", + "version": "7.0.12-alpha", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@master-chief/alpaca-ts", - "version": "7.0.11-alpha", + "version": "7.0.12-alpha", "license": "ISC", "dependencies": { "axios": "^1.4.0", "form-data": "^4.0.0", + "lodash-es": "^4.17.21", "openapi-fetch": "^0.6.1", "qs": "^6.9.6" }, "devDependencies": { + "@types/lodash": "^4.14.196", "@types/node": "^20.4.8", "@types/qs": "^6.9.5", "prettier": "^2.8.8", @@ -25,6 +27,12 @@ "node": ">=14" } }, + "node_modules/@types/lodash": { + "version": "4.14.196", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz", + "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==", + "dev": true + }, "node_modules/@types/node": { "version": "20.4.8", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", @@ -219,6 +227,11 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", diff --git a/package.json b/package.json index 24fe9da..94dde67 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.11-alpha", + "version": "7.0.12-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ @@ -52,10 +52,12 @@ "dependencies": { "axios": "^1.4.0", "form-data": "^4.0.0", + "lodash-es": "^4.17.21", "openapi-fetch": "^0.6.1", "qs": "^6.9.6" }, "devDependencies": { + "@types/lodash": "^4.14.196", "@types/node": "^20.4.8", "@types/qs": "^6.9.5", "prettier": "^2.8.8", diff --git a/src/services/crypto.ts b/src/services/crypto.ts index 259dbc4..d0c5be7 100644 --- a/src/services/crypto.ts +++ b/src/services/crypto.ts @@ -7,12 +7,15 @@ import type { MultiSnapshotResponse } from "../entities/MultiSnapshotResponse.js import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; import type { CancelablePromise } from "../rest/CancelablePromise.js"; import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +import { cloneDeep } from "lodash-es"; const BASE = "https://data.alpaca.markets"; -const customBase = (httpRequest: BaseHttpRequest) => { - httpRequest.config.BASE = BASE; - return httpRequest; +// todo: this is a temporary hack +const customBase = (httpRequest: BaseHttpRequest): BaseHttpRequest => { + const clonedRequest = cloneDeep(httpRequest); + clonedRequest.config.BASE = BASE; + return clonedRequest; }; /** diff --git a/src/services/positions.ts b/src/services/positions.ts index acbdebd..080b5d2 100644 --- a/src/services/positions.ts +++ b/src/services/positions.ts @@ -13,7 +13,7 @@ import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; * @returns Position Successful response * @throws ApiError */ -export const getAllOpenPositions = ( +export const getPositions = ( httpRequest: BaseHttpRequest ): CancelablePromise> => { return httpRequest.request({ diff --git a/src/services/stocks.ts b/src/services/stocks.ts index 14653aa..66e0e6a 100644 --- a/src/services/stocks.ts +++ b/src/services/stocks.ts @@ -9,11 +9,15 @@ import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; import type { CancelablePromise } from "../rest/CancelablePromise.js"; import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +import { cloneDeep } from "lodash-es"; + const BASE = "https://data.alpaca.markets"; -const customBase = (httpRequest: BaseHttpRequest) => { - httpRequest.config.BASE = BASE; - return httpRequest; +// todo: this is a temporary hack +const customBase = (httpRequest: BaseHttpRequest): BaseHttpRequest => { + const clonedRequest = cloneDeep(httpRequest); + clonedRequest.config.BASE = BASE; + return clonedRequest; }; /** From 3be98b3dfb6c9664117162c8a5c8afc90260ff04 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 14 Aug 2023 15:12:51 -0600 Subject: [PATCH 51/55] fix: Import changes in AxiosHttpRequest.ts fix: Import changes in BaseHttpRequest.ts fix: URL changes in crypto.ts fix: Version update in package.json feat: Added prewrap function in prewrap.ts fix: Import changes in request.ts --- package.json | 2 +- src/rest/AxiosHttpRequest.ts | 7 ++++--- src/rest/BaseHttpRequest.ts | 3 ++- src/rest/prewrap.ts | 25 +++++++++++++++++++++++++ src/rest/request.ts | 10 ++++++---- src/services/crypto.ts | 2 +- 6 files changed, 39 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 94dde67..7904095 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.12-alpha", + "version": "7.0.13-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/src/rest/AxiosHttpRequest.ts b/src/rest/AxiosHttpRequest.ts index 7765f23..91b536f 100644 --- a/src/rest/AxiosHttpRequest.ts +++ b/src/rest/AxiosHttpRequest.ts @@ -1,8 +1,9 @@ -import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import { Config } from "../Client.js"; import { BaseHttpRequest } from "./BaseHttpRequest.js"; -import type { CancelablePromise } from "./CancelablePromise.js"; import { request as __request } from "./request.js"; -import { Config } from "../Client.js"; + +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; +import type { CancelablePromise } from "./CancelablePromise.js"; export class AxiosHttpRequest extends BaseHttpRequest { constructor(config: Config) { diff --git a/src/rest/BaseHttpRequest.ts b/src/rest/BaseHttpRequest.ts index cf15a36..b44a5e3 100644 --- a/src/rest/BaseHttpRequest.ts +++ b/src/rest/BaseHttpRequest.ts @@ -1,6 +1,7 @@ +import { Config } from "../Client.js"; + import type { ApiRequestOptions } from "./ApiRequestOptions.js"; import type { CancelablePromise } from "./CancelablePromise.js"; -import { Config } from "../Client.js"; export abstract class BaseHttpRequest { constructor(public readonly config: Config) {} diff --git a/src/rest/prewrap.ts b/src/rest/prewrap.ts index cf0c82b..a572b02 100644 --- a/src/rest/prewrap.ts +++ b/src/rest/prewrap.ts @@ -10,6 +10,31 @@ type PreWrapped = { : PreWrapped; }; +/** + * The `prewrap` function takes an object containing methods and a BaseHttpRequest instance, and returns a new object with the same structure but with the methods "wrapped" to include the BaseHttpRequest as their first argument. Essentially, it's transforming the methods so that they automatically include the given httpRequest when called. + * + * This function makes it convenient to bind a specific HTTP request object to a set of methods, so that the methods can easily access it without having to include it as a parameter every time. + * + * The implementation involves recursion, which allows this wrapping to be applied to methods that are deeply nested within objects. + * + * @param methods - An object containing methods (functions) that need to be wrapped. + * @param httpRequest - The BaseHttpRequest instance that should be the first argument of all the methods. + * @returns A new object with the same structure as the input, but with the methods wrapped to include `httpRequest` as their first argument. + * + * @template T - The type of the object containing the methods to be wrapped. + * + * @example + * const apiMethods = { + * getUser: (request, userId) => request.get(`/user/${userId}`), + * posts: { + * getPost: (request, postId) => request.get(`/post/${postId}`), + * }, + * }; + * const wrappedMethods = prewrap(apiMethods, myHttpRequest); + * wrappedMethods.getUser(userId); // myHttpRequest is automatically included + * wrappedMethods.posts.getPost(postId); // myHttpRequest is automatically included + */ + export function prewrap( methods: T, httpRequest: BaseHttpRequest diff --git a/src/rest/request.ts b/src/rest/request.ts index e957494..84fffe4 100644 --- a/src/rest/request.ts +++ b/src/rest/request.ts @@ -1,18 +1,20 @@ import axios from "axios"; +import FormData from "form-data"; + import type { AxiosError, AxiosRequestConfig, AxiosResponse, AxiosInstance, } from "axios"; -import FormData from "form-data"; +import { Config } from "../Client.js"; import { ApiError } from "./ApiError.js"; -import type { ApiRequestOptions } from "./ApiRequestOptions.js"; -import type { ApiResult } from "./ApiResult.js"; import { CancelablePromise } from "./CancelablePromise.js"; + import type { OnCancel } from "./CancelablePromise.js"; -import { Config } from "../Client.js"; +import type { ApiResult } from "./ApiResult.js"; +import type { ApiRequestOptions } from "./ApiRequestOptions.js"; export const isDefined = ( value: T | null | undefined diff --git a/src/services/crypto.ts b/src/services/crypto.ts index d0c5be7..f15b9cb 100644 --- a/src/services/crypto.ts +++ b/src/services/crypto.ts @@ -197,7 +197,7 @@ export const getCryptoBarsLatest = ( ): CancelablePromise => customBase(httpRequest).request({ method: "GET", - url: "/v1beta3/crypto/us/bars/latest", + url: "/v1beta3/crypto/us/latest/bars", query: { symbols, exchange, From 3cf051004b519326dd7dfb56346eb46ea327ea84 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 14 Aug 2023 15:14:32 -0600 Subject: [PATCH 52/55] fix: Renamed functions related to stocks API --- src/services/stocks.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/services/stocks.ts b/src/services/stocks.ts index 66e0e6a..a8685ef 100644 --- a/src/services/stocks.ts +++ b/src/services/stocks.ts @@ -30,7 +30,7 @@ const customBase = (httpRequest: BaseHttpRequest): BaseHttpRequest => { * @returns MultiBarsResponse Successful response * @throws ApiError */ -export const getStocksBars = ( +export const getStockBars = ( httpRequest: BaseHttpRequest, { symbols, @@ -98,7 +98,7 @@ export const getStocksBars = ( * @returns LatestMultiBarsResponse OK * @throws ApiError */ -export const getStocksBarsLatest = ( +export const getStockBarsLatest = ( httpRequest: BaseHttpRequest, { symbols, @@ -134,7 +134,7 @@ export const getStocksBarsLatest = ( * @returns MultiTradesResponse Successful response * @throws ApiError */ -export const getStocksTrades = ( +export const getStockTrades = ( httpRequest: BaseHttpRequest, { symbols, @@ -190,7 +190,7 @@ export const getStocksTrades = ( * @returns LatestMultiTradesResponse OK * @throws ApiError */ -export const getStocksTradesLatest = ( +export const getStockTradesLatest = ( httpRequest: BaseHttpRequest, { symbols, @@ -227,7 +227,7 @@ export const getStocksTradesLatest = ( * * @throws ApiError */ -export const getStocksQuotes = ( +export const getStockQuotes = ( httpRequest: BaseHttpRequest, { symbols, @@ -283,7 +283,7 @@ export const getStocksQuotes = ( * @returns LatestMultiQuotesResponse OK * @throws ApiError */ -export const getStocksQuotesLatest = ( +export const getStockQuotesLatest = ( httpRequest: BaseHttpRequest, { symbols, @@ -315,7 +315,7 @@ export const getStocksQuotesLatest = ( * @returns MultiSnapshotResponse Successful response * @throws ApiError */ -export const getStocksSnapshots = ( +export const getStockSnapshots = ( httpRequest: BaseHttpRequest, { symbols, @@ -347,7 +347,7 @@ export const getStocksSnapshots = ( * @returns ExchangesResponse OK * @throws ApiError */ -export const getStocksMetaExchanges = ( +export const getStockMetaExchanges = ( httpRequest: BaseHttpRequest ): CancelablePromise => { return customBase(httpRequest).request({ @@ -366,7 +366,7 @@ export const getStocksMetaExchanges = ( * Response is a JSON object mapping a condition to a plain text description * @throws ApiError */ -export const getStocksMetaConditions = ( +export const getStockMetaConditions = ( httpRequest: BaseHttpRequest, { type, From 3f9578d31e83f2b8fa0ff653ffc810c57fb55511 Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 14 Aug 2023 15:18:45 -0600 Subject: [PATCH 53/55] refactor: move from stocks.ts, move to stock.ts --- src/services/account.ts | 8 ++++---- src/services/assets.ts | 4 ++-- src/services/calendar.ts | 4 ++-- src/services/clock.ts | 4 ++-- src/services/crypto.ts | 15 ++++++++------- src/services/index.ts | 2 +- src/services/news.ts | 3 +-- src/services/orders.ts | 5 ++--- src/services/positions.ts | 5 ++--- src/services/screener.ts | 5 ++--- src/services/{stocks.ts => stock.ts} | 12 ++++++------ 11 files changed, 32 insertions(+), 35 deletions(-) rename src/services/{stocks.ts => stock.ts} (100%) diff --git a/src/services/account.ts b/src/services/account.ts index 576f719..7e7a2f9 100644 --- a/src/services/account.ts +++ b/src/services/account.ts @@ -1,10 +1,10 @@ -import { TradingActivities } from "../entities/TradingActivities.js"; -import { NonTradeActivities } from "../entities/NonTradeActivities.js"; +import { Account } from "../entities/Account.js"; import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +import { PortfolioHistory } from "../entities/PortfolioHistory.js"; import { CancelablePromise } from "../rest/CancelablePromise.js"; +import { TradingActivities } from "../entities/TradingActivities.js"; +import { NonTradeActivities } from "../entities/NonTradeActivities.js"; import { AccountConfigurations } from "../entities/AccountConfigurations.js"; -import { PortfolioHistory } from "../entities/PortfolioHistory.js"; -import { Account } from "../entities/Account.js"; /** * Get account activities of one type diff --git a/src/services/assets.ts b/src/services/assets.ts index bb38c36..c11f410 100644 --- a/src/services/assets.ts +++ b/src/services/assets.ts @@ -1,8 +1,8 @@ +import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; + import type { Assets } from "../entities/Assets.js"; import type { CancelablePromise } from "../rest/CancelablePromise.js"; -import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; - /** * Get Assets * The assets API serves as the master list of assets available for trade and data consumption from Alpaca. Assets are sorted by asset class, exchange and symbol. diff --git a/src/services/calendar.ts b/src/services/calendar.ts index 44a497d..891a19b 100644 --- a/src/services/calendar.ts +++ b/src/services/calendar.ts @@ -1,8 +1,8 @@ +import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; + import type { Calendar } from "../entities/Calendar.js"; import type { CancelablePromise } from "../rest/CancelablePromise.js"; -import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; - /** * Get Market Calendar info * The calendar API serves the full list of market days from 1970 to 2029. It can also be queried by specifying a start and/or end time to narrow down the results. In addition to the dates, the response also contains the specific open and close times for the market days, taking into account early closures. diff --git a/src/services/clock.ts b/src/services/clock.ts index 9b74dcf..80e5221 100644 --- a/src/services/clock.ts +++ b/src/services/clock.ts @@ -1,8 +1,8 @@ +import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; + import type { Clock } from "../entities/Clock.js"; import type { CancelablePromise } from "../rest/CancelablePromise.js"; -import { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; - /** * Get Market Clock info * The clock API serves the current market timestamp, whether the market is currently open, as well as the times of the next market open and close. diff --git a/src/services/crypto.ts b/src/services/crypto.ts index f15b9cb..89d235b 100644 --- a/src/services/crypto.ts +++ b/src/services/crypto.ts @@ -1,13 +1,14 @@ -import type { LatestMultiBarsResponse } from "../entities/LatestMultiBarsResponse.js"; -import type { LatestMultiQuotesResponse } from "../entities/LatestMultiQuotesResponse.js"; -import type { LatestMultiTradesResponse } from "../entities/LatestMultiTradesResponse.js"; +import { cloneDeep } from "lodash-es"; + +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; import type { MultiBarsResponse } from "../entities/MultiBarsResponse.js"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; import type { MultiQuotesReponse } from "../entities/MultiQuotesReponse.js"; -import type { MultiSnapshotResponse } from "../entities/MultiSnapshotResponse.js"; import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; -import type { CancelablePromise } from "../rest/CancelablePromise.js"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; -import { cloneDeep } from "lodash-es"; +import type { MultiSnapshotResponse } from "../entities/MultiSnapshotResponse.js"; +import type { LatestMultiBarsResponse } from "../entities/LatestMultiBarsResponse.js"; +import type { LatestMultiQuotesResponse } from "../entities/LatestMultiQuotesResponse.js"; +import type { LatestMultiTradesResponse } from "../entities/LatestMultiTradesResponse.js"; const BASE = "https://data.alpaca.markets"; diff --git a/src/services/index.ts b/src/services/index.ts index acc1e87..62e8f5f 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -9,7 +9,7 @@ import * as watchlists from "./watchlists.js"; import * as crypto from "./crypto.js"; import * as screener from "./screener.js"; import * as logos from "./logos.js"; -import * as stocks from "./stocks.js"; +import * as stocks from "./stock"; export default { account, diff --git a/src/services/news.ts b/src/services/news.ts index 277423b..e504127 100644 --- a/src/services/news.ts +++ b/src/services/news.ts @@ -1,7 +1,6 @@ import type { GetNewsResponse } from "../entities/GetNewsResponse.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise.js"; import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; /** * News API diff --git a/src/services/orders.ts b/src/services/orders.ts index 4a5774c..13f617b 100644 --- a/src/services/orders.ts +++ b/src/services/orders.ts @@ -1,9 +1,8 @@ -import type { CanceledOrderResponse } from "../entities/CanceledOrderResponse.js"; import type { Order } from "../entities/Order.js"; +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; import type { PatchOrderRequest } from "../entities/PatchOrderRequest.js"; - import type { CancelablePromise } from "../rest/CancelablePromise.js"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +import type { CanceledOrderResponse } from "../entities/CanceledOrderResponse.js"; /** * Order diff --git a/src/services/positions.ts b/src/services/positions.ts index 080b5d2..a23ff94 100644 --- a/src/services/positions.ts +++ b/src/services/positions.ts @@ -1,9 +1,8 @@ import type { Order } from "../entities/Order.js"; import type { Position } from "../entities/Position.js"; -import type { PositionClosedReponse } from "../entities/PositionClosedReponse.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise.js"; import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { PositionClosedReponse } from "../entities/PositionClosedReponse.js"; /** * All Open Positions diff --git a/src/services/screener.ts b/src/services/screener.ts index 714f05a..2c7071c 100644 --- a/src/services/screener.ts +++ b/src/services/screener.ts @@ -1,7 +1,6 @@ -import type { MarketMoversResponse } from "../entities/MarketMoversResponse.js"; - -import type { CancelablePromise } from "../rest/CancelablePromise.js"; import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; +import type { MarketMoversResponse } from "../entities/MarketMoversResponse.js"; /** * Get Top Market Movers by Market type diff --git a/src/services/stocks.ts b/src/services/stock.ts similarity index 100% rename from src/services/stocks.ts rename to src/services/stock.ts index a8685ef..08d0784 100644 --- a/src/services/stocks.ts +++ b/src/services/stock.ts @@ -1,13 +1,13 @@ +import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; import type { ExchangesResponse } from "../entities/ExchangesResponse.js"; -import type { LatestMultiBarsResponse } from "../entities/LatestMultiBarsResponse.js"; -import type { LatestMultiQuotesResponse } from "../entities/LatestMultiQuotesResponse.js"; -import type { LatestMultiTradesResponse } from "../entities/LatestMultiTradesResponse.js"; import type { MultiBarsResponse } from "../entities/MultiBarsResponse.js"; +import type { CancelablePromise } from "../rest/CancelablePromise.js"; import type { MultiQuotesReponse } from "../entities/MultiQuotesReponse.js"; -import type { MultiSnapshotResponse } from "../entities/MultiSnapshotResponse.js"; import type { MultiTradesResponse } from "../entities/MultiTradesResponse.js"; -import type { CancelablePromise } from "../rest/CancelablePromise.js"; -import type { BaseHttpRequest } from "../rest/BaseHttpRequest.js"; +import type { MultiSnapshotResponse } from "../entities/MultiSnapshotResponse.js"; +import type { LatestMultiBarsResponse } from "../entities/LatestMultiBarsResponse.js"; +import type { LatestMultiQuotesResponse } from "../entities/LatestMultiQuotesResponse.js"; +import type { LatestMultiTradesResponse } from "../entities/LatestMultiTradesResponse.js"; import { cloneDeep } from "lodash-es"; From 44dcb9c55774591a84682977f60698ad1473088a Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 14 Aug 2023 15:20:51 -0600 Subject: [PATCH 54/55] fix: Remove unused code fix: Update import path bump: Update package version --- package.json | 2 +- src/services/crypto.ts | 9 +-------- src/services/index.ts | 2 +- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 7904095..1a7ce2c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@master-chief/alpaca-ts", - "version": "7.0.13-alpha", + "version": "7.0.15-alpha", "description": "A TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams.", "author": "117", "contributors": [ diff --git a/src/services/crypto.ts b/src/services/crypto.ts index 89d235b..a05ee20 100644 --- a/src/services/crypto.ts +++ b/src/services/crypto.ts @@ -190,19 +190,12 @@ export const getCryptoBarsLatest = ( * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH */ symbols: string; - /** - * Which crypto exchange to pull the data from. Alpaca currently supports `ERSX`, `CBSE`, and `FTXU` - */ - exchange: "ERSX" | "CBSE" | "FTXU"; } ): CancelablePromise => customBase(httpRequest).request({ method: "GET", url: "/v1beta3/crypto/us/latest/bars", - query: { - symbols, - exchange, - }, + query: { symbols }, }); /** diff --git a/src/services/index.ts b/src/services/index.ts index 62e8f5f..5266096 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -9,7 +9,7 @@ import * as watchlists from "./watchlists.js"; import * as crypto from "./crypto.js"; import * as screener from "./screener.js"; import * as logos from "./logos.js"; -import * as stocks from "./stock"; +import * as stocks from "./stock.js"; export default { account, From f7568a597e10ed77764fdaa7845feca189c15c6d Mon Sep 17 00:00:00 2001 From: Nico G <16513382+117@users.noreply.github.com> Date: Mon, 14 Aug 2023 15:21:28 -0600 Subject: [PATCH 55/55] fix: Remove unused 'exchange' variable --- src/services/crypto.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/crypto.ts b/src/services/crypto.ts index a05ee20..f44c37d 100644 --- a/src/services/crypto.ts +++ b/src/services/crypto.ts @@ -184,7 +184,6 @@ export const getCryptoBarsLatest = ( httpRequest: BaseHttpRequest, { symbols, - exchange, }: { /** * The comma-separated list of crypto symbols to query for. Note, currently all crypto symbols must be appended with "USD", ie "BTCUSD,ETHUSD" would get both BTC and ETH